JavaScript must be enabled to play.
Browser lacks capabilities required to play.
Upgrade or switch to another browser.
Loading…
<<nobr>> <<set _cur_location = passage()>> <<set _temp = setup.locations.get_recur_attrib(_cur_location, "music")>> <<if def _temp && _temp != null && $enable_music>> <<if def $playing && $playing != "none" && _temp != $playing>> <<playlist $playing fadeoverto 0.3 0>> <<timed 300ms>> <<playlist $playing stop>> <<set $playing = _temp>> <<playlist _temp volume 1 loop shuffle play>> <</timed>> <<else>> /* In case load in save to resume */ <<playlist _temp volume 1 loop shuffle play>> <<set $playing = _temp>> <</if>> <</if>> <</nobr>>
<<nobr>> <div id="background" class="paper_border"> <div class="container threeCol" style="height: 100%; width: 100%;"> <div class="subbackground"> <center><h3>Music</h3></center> <div class="textpassage" style="margin-left: 20px; margin-right: 20px"> Enderal Soundtrack - <br> <div style="margin-left: 20px"> Marvin Kopp<br> Andreas Makusev<br> Simon W. Autenrieth<br> Sabastian Loebbers<br> Nicolas Samuel Lietzau </div> </div> </div> <div class="subbackground"> <center><h3>Inspiration</h3></center> <div class="textpassage" style="margin-left: 20px; margin-right: 20px"> Free Cities - FC Author<br> Masters of Raana - GrimDark </div> <br><hr><br> <center><<button Return Start>><</button>></center> <div class="license"> <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"> <img class="license" src="resources/images/license.png"> </a> <p class="license title">Mimus Studios, 2022</p> </div> </div> <div class="subbackground"> <center><h3>Top Supporters</h3></center> <div class="textpassage" style="margin-left: 20px; margin-right: 20px"> Darkmaniac7 FallenAngel_KShaj Gaetan </div> </div> </div> </div> <</nobr>>
<<nobr>> <div id="background" class="paper_border" style="position: relative"> <center><h1>Under Construction</h1></center> <p class="textpassage"> This passage is still under construction. If you would like to keep up to date with the latest updates you can join the <a href="https://discord.gg/xrynJUBksW">Discord</a>. Or if you would like to alpha test the latest versions you can subscribe to the SubscribeStar. </p> <div style="position: absolute; bottom: 100px; left: calc(50% - 82px);"> <<button Back>> <<set $in_menu = false>> <<goto $last_visited>> <<set $last_visited = "">> <</button>> </div> </div> <</nobr>>
<<set _char = $characters[$selected]>> <<set _to_append = "You greet " + setup.titleCase(_char.first_name) + ",<br>" + $player.dialogue("Could I ask you a couple of things?") + setup.titleCase(_char.first_name) + " eyes you up and down, wondering what you want.<br>\ What would you like to ask about?\ ">> <<set _options = "\ <ol>\ <li id=\"li1\">\"How are you feeling?\"</li>\ <li id=\"li2\">\"What do you like to do the most?\"</li>\ </ol>">> <<set _to_append += _options>> <<run setup.mainLog_append(_to_append)>> <<set _options = $(_options)>> <<set _disable_buttons = false>> <<disableactions _options>> <<set _disposition = _char.get_disposition()>> <<set _fn = setup.titleCase(_char.first_name)>> <<set _p = setup.PRONOUNS[_char.gender]>> /* Psuedoevent listener for action */ /* TODO: Implement */ <<silently>><<repeat 10ms>> <<if _action !== undefined>> <<if _char.limits.ask gt 0>> <<set _char.limits.ask -= 1>> <<switch _action>> <<case 1>> <<switch _disposition>> <<case "depressed">> <<set _responses = [ _fn + "\'s eyes drop to the ground and " + _p["?he"] + " lets out a long sigh,", _char.dialogue("Um... well, I\'m alive... does that answer your question? Perhaps \ not for too much longer though... Why do you even care anyways?") ]>> <<case "sad">> <<set _delt = { "slave_traits": { "obedience": 1 } }>> <<set _responses = [ _char.dialogue("Oh um, I am..."), _fn + "\'s eyes glaze over and she gets choked up. You can tell " + _p["?he"] + "is \ holding back tears.", _char.dialogue("I\'m okay, please just leave me alone..."), "Despite " + _p["?his"] + " plea for solitude, you can tell that " + _p["?he"] + "\'s glad \ someone cared enough to ask " + _char.print_delta(_delt) + "." ]>> <<run setup.apply_delta(_char, _delt)>> <<case "submissive">> <<if $player.slaves.contains(_char.key)>> <<set _response = "Well " + _char.address + ", I am very happy to be able to serve such a great \ master. I know that life outside is nothing pretty, so I am content with you using me all you want \ if it means continuing to serve under you.">> <<else>> <<set _response = "I\'m doing pretty good. I\'m also very happy to be able to help you in any way I can.">> <</if>> <<set _responses = [ _char.dialogue(_response) _fn + " runs " + _p["?his"] + " hands down " + _p["?his"] + " body seductively,", _char.dialogue("All of this is yours " + _char.address + ". Use it however you\'d like.") ]>> <<unset _response>> <<case "devoted">> <<if !$player.slaves.contains(_char.key)>> <<set _char.address = setup.titleCase($player.first_name)>> <</if>> <<set _responses = [ _fn + " immediately drops to " + _p["?his"] + " knees and scoots over to you,", _char.dialogue("As long as I have you I am okay. I... I..."), setup.titleCase(_p["?he"]) + " nervousely looks away for a split second,", _char.dialogue("I love you " + _char.address + ". Now please..."), setup.titleCase(_p["?he"]) + " opens " + _p["?his"] + " mouth wide, sticking out " + _p["?his"] + " tongue,", _char.dialogue("Please use me in any way you like.") ]>> <<case "scared">> <<set _responses = [ _char.dialogue("Um... I uh, am good... Everything is good!"), "From " + _fn + "\'s body language it\'s very obvious that she is very scared to answer in any way that \ may provoke you,", _char.dialogue("Um... can I go now?"), setup.titleCase(_p["?his"]) + " eyes are glued to your chin, unable to meet your gaze." ]>> <<case "cold">> <<set _responses = [ _fn + " quickly snaps back at your question,", _char.dialogue("I\'m fine."), "You can feel the distance and coldness in " + _fn + "\'s voice, as if " + _p["?he"] + " was lost in thought.", _char.dialogue("Sorry, did you need something else, or can I go now?") ]>> <<case "hateful">> <<set _responses = [ _fn + " gives you a look of utter disgust,", ]>> <<if $player.slaves.contains(_char.key)>> <<set _responses.push("Keeping " + _p["?his"] + " arms folded, " + _p["?he"] + " turns " + _p["?his"] + " head away in defiance and refuses to answer.")>> <<else>> <<set _responses.push(_char.dialogue("Why the fuck do you care? Go mind your own business."))>> <</if>> <<default>> <</switch>> <<run _button_fn()>> <<case 2>> /* No information shared if bad disposition */ <<if _disposition == "depressed" || _disposition == "sad">> <<set _responses = [ _fn + " sighs,", _char.dialogue("I don't like anything...") ]>> <<elseif _disposition == "submissive" || _disposition == "devoted" || _disposition == "scared">> /* Cum addiction trumps all */ <<if _char.mental_conditions.cum_addition gt 50>> <<set _responses = [ "As soon as " + _fn + " starts to think about it, " + _p["?he"] + " begins to drool,", _char.dialogue("I want cum... no I need cum in my mouth. I want to swirl it around my tongue. Please, make me \ lick it off the floor, or feed it too me on " + (($player.gender == 0) ? "your cock." : "a spoon.")), "The hunger in " + _fn + "\'s eyes make it clear that " + _p["?he"] + " is psychologically addicted to cum." ]>> <<else>> /* Find largest fetish */ <<set _max = -100>> <<set _max_fetish = setup.SEX_FETISHES[0]>> <<for _idx, _fetish range setup.SEX_FETISHES>> <<if _char.sex_fetishes[_fetish] gt _max>> <<set _max = _char.sex_fetishes[_fetish]>> <<set _max_fetish = _fetish>> <</if>> <</for>> <<if _max gt 50>> /* TODO: Implement other fetishes */ <<switch _max_fetish>> <<case "cum">> <<set _responses = [ "As soon as " + _fn + " starts to think about it, " + _p["?he"] + " begins to drool,", _char.dialogue("I want cum... no I need cum in my mouth. I want to swirl it around my tongue. Please, make me \ lick it off the floor, or feed it too me on " + (($player.gender == 0) ? "your cock." : "a spoon.")) ]>> <<case "feet">> <<set _responses = [ _fn + " bites " + _p["?his"] + " lips and looks downward,", _char.dialogue("I like really beautiful feet. I want them all in my mouth and all over me."), "You can tell that this conversation already has " + _fn + " aroused." ]>> <<default>> /* TODO: Finish flavor text */ <<set _responses = [ "fetish_" + _fetish + ". UNDER CONSTRUCTION." ]>> <</switch>> <</if>> /* Find largest preference */ <<set _max = -100>> <<set _max_pref = setup.SEX_PREFS[0]>> <<for _idx, _pref range setup.SEX_PREFS>> <<if _prefs == "libido">> <<continue>> <</if>> <<if _char.sex_prefs[_pref] gt _max>> <<set _max = _char.sex_prefs[_pref]>> <<set _max_pref = _pref>> <</if>> <</for>> <<if ndef _responses>> <<set _responses = []>> <</if>> <<if _char.sex_prefs.libido gt 70>> <<set _responses.push(_char.dialogue("I love sex, my favorite is " + _max_pref + " sex."))>> <<elseif _char.sex_prefs.libido gt 50>> <<set _responses.push(_char.dialogue("I also enjoy, my favorite is " + _max_pref + " sex."))>> <<else>> <<set _responses.push(_char.dialogue("I enjoy free time and spending time on my own."))>> <</if>> <</if>> <<if !_char.sex_prefs_known || !_char.sex_fetishes_known>> <<set _char.sex_prefs_known = true>> <<set _char.sex_fetishes_known = true>> <<notify>>Learned _fn's sex preferences.<</notify>> <</if>> <<elseif _disposition == "warm" || _disposition == "normal" || _disposition == "cold">> <<set _responses = [ _char.dialogue("Well I enjoy free time and work that isn\'t too tiring"), "You can tell that there is more to " + _fn + ", but " + _p["?he"] + " is not keen to reveal it." ]>> <<else>> <<if $player.slaves.contains(_char.key)>> <<set _responses = [ _fn + " rolls " + _p["?his"] + " eyes,", _char.dialogue("Nothing. I don\'t like anything... can I go now?") ]>> <<else>> <<set _responses = [ _fn + " rolls " + _p["?his"] + " eyes,", _char.dialogue("My favorite times are when you aren\'t present.") ]>> <</if>> <</if>> <<run _button_fn()>> <</switch>> <<else>> <<notify>>Already asked <<= setup.titleCase(_char.first_name)>> too many things today!<</notify>> <</if>> <<unset _action>> <</if>> <</repeat>><</silently>> <<script>> State.temporary.button_fn = () => { let _t = State.temporary; let _v = State.variables; if (_t.responses != null) { _t.disable_buttons = false; _t.options.find("#li" + _t.action).css("text-decoration", "line-through"); $.wiki("<<disableactions _options>>"); _t.responses.push(_t.options.clone()); setup.mainLog_append_delayed(_t.responses, _v.buttons, _v.buttons_extra); delete _t.responses; let roll = dice(1, 5) + 3; $.wiki("<<addmins " + roll + ">>"); } delete _t.action; } <</script>>
<<nobr>> /* Roll tact for success */ <<set _roll = $player.get_status_prop("tact") + 2 * (dice(1, 6 + $difficulty) - $difficulty) - _char.mental_conditions.anger + _char.slave_traits.trust / 20 >> <<set _max_roll = $player.get_status_prop("tact") + 2 * 6 - _char.mental_conditions.anger + _char.slave_traits.trust / 20>> /* Silver tongue title */ <<if $player.titles.has("silver_tongued")>> <<set _roll += 1>> <<set _max_roll += 1>> <</if>> <<set _thresh = 25 + 5 * (-1/100 * _char.slave_traits.obedience)>> <<if _roll gte _thresh>> <<set _success = true>> <<set _responses = [setup.pass("tact", false)]>> <<set _responses = _responses.concat( setup.influence.compliment.success.random())>> <<if _char.slave_traits.obedience gte 80>> <<set _responses.push(setup.titleCase(_char.first_name) + " smiles warmly,")>> <<set _response = _char.dialogue("Thanks!") + "(" + setup.titleCase(_char.first_name) + "\'s " + "Affection" + setup.show_change_html(0, 0.25) >> <<set _char.slave_traits.obedience += 0.25>> <<elseif _char.slave_traits.obedience gte 60>> <<set _responses.push(setup.titleCase(_char.first_name) + " smiles warmly,")>> <<set _response = _char.dialogue("Thanks!") + "(" + setup.titleCase(_char.first_name) + "\'s " + "Affection" + setup.show_change_html(0, 0.5) >> <<set _char.slave_traits.obedience += 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " is momentarily caught off guard,")>> <<set _response = _char.dialogue("Th... thanks, I guess.") + "(" + setup.titleCase(_char.first_name) + "\'s " + "Affection " + setup.show_change_html(0, 2) >> <<set _char.slave_traits.obedience += 2>> <</if>> <<if _char.mental_conditions.sadness gt 0>> <<set _response += "Sadness " + setup.show_change_html(0, -5, false)>> <<set _char.mental_conditions.sadness -= 5>> <</if>> <<set _response += ").">> <<else>> <<set _success = false>> <<set _responses = [setup.fail("tact", false)]>> <<set _responses = _responses.concat( setup.influence.compliment.fail.random())>> <<set _response = setup.titleCase(_char.first_name) + " looks at you with an \ unimpressed stare, but luckily it looks like your failed attempt has not \ lowered her opinion of you.">> <</if>> /* Check if was skillful roll */ <<if Math.abs(_max_roll - _thresh) lte 1 && (_max_roll - _roll) lte 1>> <<set _probability = setup.sigmoid(-1 * $difficulty)>> <<set _sub_roll = Math.random()>> <<if _roll lt _probability>> <<set _response += "<br><br>">> <<if _success>> <<set _response += "You can tell that compliment barely passed, but luckily your \ skill in speechcraft let you prevail. <span style=\'text: green\'>\ Your tact increased by 1!</span>">> <<else>> <<set _response += "You can tell that compliment almost landed, you\'ll have to \ work harder next time. <span style=\'text: green\'>\ Your tact increased by 1!</span>">> <</if>> <<set $player.stats.tact += 1>> <</if>> <<unset _probability>> <<unset _sub_roll>> <</if>> <<set _responses.push(_response)>> <<set _to_round = $selected>> <<include round>> <<if def _options>> <<set _responses.push(_options.clone())>> <</if>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <<unset _to_round>> <</nobr>>
<<nobr>> /* Roll tact for success */ <<set _roll = $player.get_status_prop("tact") + 2 * (dice(1, 6 + $difficulty) - $difficulty) - _char.mental_conditions.anger + _char.slave_traits.trust / 20 >> <<set _max_roll = $player.get_status_prop("tact") + 2 * 6 - _char.mental_conditions.anger + _char.slave_traits.trust / 20>> <<set _thresh = 27 + 5 * (-1/100 * _char.slave_traits.obedience)>> <<if _roll gte _thresh>> /* For simulation afterwards */ <<set $to_simulate.add(_char.key)>> <<set _success = true>> <<set _responses = [setup.pass("tact", false)]>> <<set _disposition = _char.get_disposition()>> <<if _disposition == "submissive" || _disposition == "devoted">> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s develops a slight blush and \ tightens their legs. You can tell that " + setup.PRONOUNS[_char.gender]["?he"] + " is already aroused just from your comment.")>> <<if _char.sex_fetishes.cum gte 50>> <<set _responses.push(_char.dialogue("Please let me have a taste of your cum, I\'ve been \ thinking about it all day!"))>> <<else>> <<set _responses.push(_char.dialogue("You... you can take me whenever you want."))>> <</if>> <<set _response = "(" + setup.titleCase(_char.first_name) + " Arousal " + setup.show_change_html(0, 5) + ").">> <<set _char.mental_conditions.arousal += 5>> <<else>> <<if _char.mental_conditions.arousal gte 10>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s already very aroused and \ your comment takes " + setup.PRONOUNS[_char.gender]["?him"] + " over the edge. You \ start to see droplets drip from " + setup.PRONOUNS[_char.gender]["?his"] + " crotch down " + setup.PRONOUNS[_char.gender]["?his"] + " leg.")>> <<set _responses.push(_char.dialogue("I don\'t know what has gotten into me, please excuse me."))>> <<set _response = setup.titleCase(_char.first_name) + " hurries off " + "(" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 3) + ", Willpower " + setup.show_change_html(0, -1, false) + ")." >> <<set _char.mental_conditions.arousal += 3>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " looks very flustered,")>> <<set _responses.push(_char.dialogue("Wh..what? I think I have to go."))>> <<set _response = setup.titleCase(_char.first_name) + " hurries off but you know your comment \ has affected " + setup.PRONOUNS[_char.gender]["?him"] + " " + "(" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 2) + ").">> <<set _char.mental_conditions.arousal += 2>> <</if>> <</if>> <<else>> <<set _success = false>> <<set _responses = [setup.fail("tact", false)]>> <<set _responses = _responses.concat( setup.influence.dirty_comment.fail.random())>> <<set _response = setup.titleCase(_char.first_name) + " looks at you with an \ unimpressed stare, but luckily it looks like your failed attempt has not \ lowered her opinion of you.">> <</if>> /* Check if was skillful roll */ <<if Math.abs(_max_roll - _thresh) lte 1 && (_max_roll - _roll) lte 1>> <<set _probability = setup.sigmoid(-1 * $difficulty)>> <<set _sub_roll = Math.random()>> <<if _roll lt _probability>> <<set _response += "<br><br>">> <<if _success>> <<set _response += "You can tell that comment barely passed, but luckily your \ skill in speechcraft let you prevail. <span style=\'text: green\'>\ Your tact increased by 1!</span>">> <<else>> <<set _response += "You can tell that comment almost landed, you\'ll have to \ work harder next time. <span style=\'text: green\'>\ Your tact increased by 1!</span>">> <</if>> <<set $player.stats.tact += 1>> <</if>> <<unset _probability>> <<unset _sub_roll>> <</if>> <<set _responses.push(_response)>> <<set _to_round = $selected>> <<include round>> <<if def _options>> <<set _responses.push(_options.clone())>> <</if>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <<unset _to_round>> <</nobr>>
<<nobr>> <<run setup.init_influence()>> <<script>> var player = State.variables.player; var char = State.variables.characters[State.variables.selected]; var div = $("<div></div>"); var html = " You approach " + setup.titleCase(char.first_name) + ",<br>" + "<em><b>" + setup.titleCase(player.first_name) + "</b>: \"Hey I wanted to discuss some \ things with you.\"</em>\ <br>" + setup.titleCase(char.first_name) + " eyes you up and down, wondering what you want.\ <br>\ How would you like to influence " + setup.PRONOUNS[char.gender]["?him"] + "?"; State.temporary.options = "<ol>\ <li>Compliment " + setup.PRONOUNS[char.gender]["?him"] + ".</li>\ <li>Tell a joke.</li>\ <li>Make a dirty comment.</li>"; if (char.is_slave && char.owner == "shintani_hiroyuki") { State.temporary.options += "<li>Tell " + setup.PRONOUNS[char.gender]["?him"] + " about your work with Shintani.</li>"; } State.temporary.options += "</ol>"; if (char.mental_conditions.anger > 0) { State.temporary.options = "<div style=\'color: red\'>\ (" + setup.titleCase(char.first_name) + " will be harder to influence since " + setup.PRONOUNS[char.gender]["?he"] + " is upset)\ </div>" + State.temporary.options; } html += State.temporary.options; State.temporary.options = $(State.temporary.options); div.html(html); setup.mainLog_append(div); <</script>> <<set _choices = 4>> <<disableactions>> /* Allow back and leave buttons */ <<removeclass "#events_actions_back" "hidden">> <<removeclass "#events_actions_leave" "hidden">> /* Psuedoevent listener for action */ <<silently>><<repeat 10ms>> <<if _action !== undefined>> <<set _char = $characters[$selected]>> <<if _char.limits.influence gt 0>> <<set _char.limits.influence -= 1>> <<switch _action>> <<case 1>> <<include complimentEngine>> <<case 2>> <<include jokeEngine>> <<case 3>> <<include dirtyCommentEngine>> <<case 4>> <<set _to_round = $selected>> <<set _responses = [ $player.dialogue("Have you heard about all the work Shintani has me doing?") ]>> <<set _disposition = _char.get_disposition()>> <<if _disposition == "submissive" || _disposition == "devoted">> <<set _responses.push(_char.dialogue("Yes! Your work has been most impressive thus far!"))>> <<else>> <<if $player.get_status(passage()) == "low_slave">> <<set _responses.push(_char.dialogue("You mean licking the shit off his boots? \ Know your place, you low slave."))>> <<else>> <<if _char.status == "high_slave" && $player.get_status(passage()) == "slave">> <<if $quests.the_nipon_economy.added>> <<set _responses.push(_char.dialogue("I honestly don\'t know why Shintani would \ assign you such an important task as testing the economy of Nipon. Don\'t get \ too comfortable and remember your place in front of a high slave."))>> <<set _responses.push("(" + setup.titleCase(_char.first_name) + "\'s Willpower " + setup.show_change_html(0, -2) + ").")>> <<set _char.slave_traits.willpower -= 2>> <<else>> <<set _responses.push(_char.dialogue("You mean licking the shit off his boots? \ Know your place in front of a high slave, you slave."))>> <</if>> <<elseif _char.status == "slave" && $player.get_status(passage()) == "slave">> <<if $quests.the_nipon_economy.added>> <<set _responses.push(_char.dialogue("I honestly don\'t know why Shintani would \ assign you such an important task as testing the economy of Nipon. Don\'t get \ too comfortable and remember your place in front of a high slave."))>> <<set _responses.push("(" + setup.titleCase(_char.first_name) + "\'s Willpower " + setup.show_change_html(0, -1) + ").")>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<set _responses.push(_char.dialogue("Just because you rose through the ranks quickly \ doesn\'t make you any special."))>> <</if>> <<elseif $player.get_status(passage()) == "high_slave">> <<set _responses.push(_char.dialogue("Yes, I heard you were doing quite well, especially \ seeing as how you quickly rose the ranks here."))>> <<set _responses.push("(" + setup.titleCase(_char.first_name) + "\'s Willpower " + setup.show_change_html(0, -1) + ").")>> <<set _char.slave_traits.willpower -= 1>> <<elseif _char.status == "low_slave" && $player.get_status(passage()) == "slave">> <<set _responses.push(_char.dialogue("Yes, I heard you were doing quite well, especially \ seeing as how you quickly rose the ranks here."))>> <<set _responses.push("(" + setup.titleCase(_char.first_name) + "\'s Willpower " + setup.show_change_html(0, -1) + ").")>> <<set _char.slave_traits.willpower -= 1>> <</if>> <</if>> <</if>> <<set _responses.push(_options)>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<include round>> <<unset _response>> <<unset _responses>> <<unset _to_round>> <</switch>> /* Advance time every time an ask is performed */ <<set _roll = dice(1, 5) + 5>> <<addmins _roll>> <<unset _roll>> <<else>> <<notify>>Already influenced <<= setup.titleCase(_char.first_name)>> too many times today!<</notify>> <</if>> <<unset _action>> <<unset _char>> <<elseif def _stop_loop && _stop_loop>> <<stop>> <</if>> <</repeat>><</silently>> <</nobr>>
<<nobr>> /* Roll tact for success */ <<set _roll = $player.get_status_prop("tact") + 2 * (dice(1, 6 + $difficulty) - $difficulty) - _char.mental_conditions.anger + _char.slave_traits.trust / 20 >> <<set _max_roll = $player.get_status_prop("tact") + 2 * 6 - _char.mental_conditions.anger + _char.slave_traits.trust / 20>> <<set _thresh = 22 + 5 * (-1/100 * _char.slave_traits.obedience)>> <<if _roll gte _thresh>> <<set _success = true>> <<set _responses = [setup.pass("tact", false)]>> <<set _responses = _responses.concat( setup.influence.joke.success.random())>> <<if _char.slave_traits.obedience gte 80>> <<set _responses.push(setup.titleCase(_char.first_name) + " laughs warmly,")>> <<set _response = _char.dialogue("You\'re always so funny!") + "(" + setup.titleCase(_char.first_name) + "\'s " + "Affection " + setup.show_change_html(0, 0.1) + ", Trust " + setup.show_change_html(0, 0.25) >> <<set _char.slave_traits.obedience += 0.1>> <<set _char.slave_traits.trust += 0.25>> <<elseif _char.slave_traits.obedience gte 60>> <<set _responses.push(setup.titleCase(_char.first_name) + " laughs warmly,")>> <<set _response = _char.dialogue("You\'re always so funny!") + "(" + setup.titleCase(_char.first_name) + "\'s " + "Affection " + setup.show_change_html(0, 0.25) + ", Trust " + setup.show_change_html(0, 0.5) >> <<set _char.slave_traits.obedience += 0.25>> <<set _char.slave_traits.trust += 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a slight chuckle, but \ you can\'t tell if it\'s out of pity.")>> <<set _response = _char.dialogue("Good one.") + "(" + setup.titleCase(_char.first_name) + "\'s " + "Affection " + setup.show_change_html(0, 1) + ", Trust " + setup.show_change_html(0, 1) >> <<set _char.slave_traits.obedience += 1>> <<set _char.slave_traits.trust += 1>> <</if>> <<if _char.mental_conditions.sadness gt 0>> <<set _response += "Sadness " + setup.show_change_html(0, -3, false)>> <<set _char.mental_conditions.sadness -= 3>> <</if>> <<set _response += ").">> <<else>> <<set _success = false>> <<set _responses = [setup.fail("tact", false)]>> <<set _responses = _responses.concat( setup.influence.joke.fail.random())>> <<set _response = setup.titleCase(_char.first_name) + " looks at you with an \ unimpressed stare, but luckily it looks like your failed attempt has not \ lowered her opinion of you.">> <</if>> /* Check if was skillful roll */ <<if Math.abs(_max_roll - _thresh) lte 1 && (_max_roll - _roll) lte 1>> <<set _probability = setup.sigmoid(-1 * $difficulty)>> <<set _sub_roll = Math.random()>> <<if _roll lt _probability>> <<set _response += "<br><br>">> <<if _success>> <<set _response += "You can tell that joke barely passed, but luckily your \ skill in speechcraft let you prevail. <span style=\'text: green\'>\ Your tact increased by 1!</span>">> <<else>> <<set _response += "You can tell that joke almost landed, you\'ll have to \ work harder next time. <span style=\'text: green\'>\ Your tact increased by 1!</span>">> <</if>> <<set $player.stats.tact += 1>> <</if>> <<unset _probability>> <<unset _sub_roll>> <</if>> <<set _responses.push(_response)>> <<set _to_round = $selected>> <<include round>> <<if def _options>> <<set _responses.push(_options.clone())>> <</if>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <<unset _to_round>> <</nobr>>
<<nobr>> <div id="molest_actions" class="action container row col longbutton fiveQuarters smalltext hidden" style="--rows: 4; --cols: 4"> @@#molest1;<<button "Remove blanket">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 1>> <<if !_is_molesting>> <<set _is_molesting = true>> <<set _char.limits.molest -= 1>> <</if>> <<if _molest_state.blanket>> <<set _molest_state.blanket = false>> <<run $("#molest1 button").html("Put on blanket")>> <<else>> <<set _molest_state.blanket = true>> <<run $("#molest1 button").html("Remove blanket")>> <</if>> <<set _molest_state_changed = true>> <<else>> <<notify>>Not enough stamina!<</notify>> <</if>> <</button>>@@ <<disable>> @@#molest2;<<button "Remove top">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 2>> <<if _molest_state.top>> <<set _molest_state.top = false>> <<run $("#molest2 button").html("Put on top")>> <<else>> <<set _molest_state.top = true>> <<run $("#molest2 button").html("Remove top")>> <</if>> <<set _molest_state_changed = true>> <<else>> <<notify>>Not enough stamina!<</notify>> <</if>> <</button>>@@ <</disable>><<disable>> @@#molest3;<<button "Remove bottom">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 3>> <<if _molest_state.bottom>> <<set _molest_state.bottom = false>> <<run $("#molest3 button").html("Put on bottom")>> <<else>> <<set _molest_state.bottom = true>> <<run $("#molest3 button").html("Remove bottom")>> <</if>> <<set _molest_state_changed = true>> <<else>> <<notify>>Not enough stamina!<</notify>> <</if>> <</button>>@@ <</disable>><<disable>> @@#molest4;<<button "Fondle boobs">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 4>> <<else>> <<notify>>Not enough stamina!<</notify>> <</if>> <</button>>@@ <</disable>><<disable>> @@#molest5;<<button "Finger pussy">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 5>> <<else>> <<notify>>Not enough stamina!<</notify>> <</if>> <</button>>@@ <</disable>><<disable>> @@#molest6;<<button "Finger ass">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 6>> <<else>> <<notify>>Not enough stamina!<</notify>> <</if>> <</button>>@@ <</disable>><<disable>> @@#molest7;<<button "Lick pussy">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 7>> <<else>> <<notify>>Not enough stamina!<</notify>> <</if>> <</button>>@@ <</disable>><<disable>> @@#molest8;<<button "Jack off">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 8>> <<else>> <<notify>>Not enough stamina!<</notify>> <</if>> <</button>>@@ <</disable>><<disable>> @@#molest9;<<button "Footjob">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 9>> <<else>> <<notify>>Not enough stamina!<</notify>> <</if>> <</button>>@@ <</disable>><<disable>> @@#molest10;<<button "Blowjob">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 10>> <<else>> <<notify>>Not enough stamina!<</notify>> <</if>> <</button>>@@ <</disable>><<disable>> @@#molest11;<<button "Fuck pussy">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 11>> <<else>> <<notify>>Not enough stamina!<</notify>> <</if>> <</button>>@@ <</disable>><<disable>> @@#molest12;<<button "Fuck ass">> <<if $player.conditions.stamina gt 10>> <<set _molest_action = 12>> <<else>> <<notify>>You are too tired!<</notify>> <</if>> <</button>>@@ <</disable>> <<set $molest_buttons = ["#molest_back", "#molest_leave"]>> <<for _i = 1; _i lte 12; _i++>> <<set $molest_buttons.push("#molest" + _i)>> <</for>> <div></div> @@#molest_back;<<button "Back" `passage()`>> <<set $enable_menu = true>> <</button>>@@ <<disable>> @@#molest_done;<<button "Done" `passage()`>> /* Increase suspicion based on how you left them */ <<set $_temp_to_log = "You quietly slip out of " + setup.titleCase(_char.first_name) + "\'s room.<br>">> <<if !_molest_state.aware>> <<if !_molest_state.top || !_molest_state.bottom>> <<set $_temp_to_log += "Because you left " + setup.titleCase(_char.first_name) + "\'s clothes \ off, " + setup.PRONOUNS[_char.gender]["?he"] + "\'ll be much more suspicious and concerned \ in the morning (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, 30, false) + ").<br>" >> <<set _char.mental_conditions.suspicion += 30>> <</if>> <</if>> <<if _molest_state.cum != "none">> <<if _molest_state.cum == "hair" || _molest_state.cum == "face" || _molest_state.cum == "lips" || _molest_state.cum == "in_mouth">> <<set $_temp_to_log += "Despite leaving evidence behind, with your cum close to " + setup.titleCase(_char.first_name) + "\'s nose, " + setup.PRONOUNS[_char.gender]["?he"] + " unconsciously grows more fond of your cum (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, 1) + ", Cum Fetish " + setup.show_change_html(0, 1) >> <<if !_molest_state.aware>> <<set $_temp_to_log += ", Suspicion " + setup.show_change_html(0, 10, false)>> <<set _char.mental_conditions.suspicion += 10>> <</if>> <<set $_temp_to_log += ").<br>">> <<set _char.slave_traits.obedience += 1>> <<set _char.sex_fetishes.cum += 1>> <<elseif !_molest_state.aware>> <<set $_temp_to_log += "While your cum shouldn\'t leave much of a trace by the morning " + setup.titleCase(_char.first_name) + " will still notice something is off (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, 5, false) + ").<br>" >> <</if>> <</if>> /* Stop molesting */ <<set _is_molesting = false>> /* Re-enable menu */ <<set $enable_menu = true>> /* Last round for good measure */ <<set _to_round = _char.key>> <<include round>> <</button>>@@ <</disable>> </div> <</nobr>>
<<nobr>> <div id="molest_cum_actions" class="action container row col longbutton fiveQuarters smalltext hidden" style="--rows: 4; --cols: 4"> @@#molest_cum1;<<button "In own pants">> <<set _responses = [ "You quickly tuck your cock back and cum into your pants." ]>> <<run _button_func()>> <</button>>@@ @@#molest_cum2;<<button "In own hand">> <<set _responses = [ "You quickly put your hand in front of your cock and catch your cum." ]>> <<run _button_func()>> <</button>>@@ @@#molest_cum3;<<button "On ground">> <<set _responses = [ "You make sure to aim away from " + setup.titleCase(_char.first_name) + " and \ cum directly onto the ground." ]>> <<run _button_func()>> <</button>>@@ @@#molest_cum4;<<button "On blanket">> <<set _responses = [ "You make sure to aim away from " + setup.titleCase(_char.first_name) + " and \ cum directly onto the blanket on the ground." ]>> <<set _molest_state.cum = "blanket">> <<run _button_func()>> <</button>>@@ @@#molest_cum5;<<button "On bottom">> <<set _responses = [ "You aim your cum towards " + setup.titleCase(_char.first_name) + "\'s bottoms \ and cum directly onto them." ]>> <<set _molest_state.cum = "bottom">> <<run _button_func()>> <</button>>@@ @@#molest_cum6;<<button "In hair">> <<set _responses = [ "You wrap your cock around " + setup.titleCase(_char.first_name) + "\'s " + _char.physical_traits.hair_color + " hair and cum into it." ]>> <<set _molest_state.cum = "hair">> <<run _button_func()>> <</button>>@@ @@#molest_cum7;<<button "On face">> <<set _responses = [ "You stroke your cock near " + setup.titleCase(_char.first_name) + "\'s face, \ unloading your cum onto " + setup.PRONOUNS[_char.gender]["?his"] + " " + _char.physical_traits.skin_color + " " + _char.physical_traits.ethnicity + " face." ]>> <<set _molest_state.cum = "face">> <<run _button_func()>> <</button>>@@ <<disable>> @@#molest_cum8;<<button "On chest">> <<set _responses = [ "You aim your cock at " + setup.titleCase(_char.first_name) + "\'s chest, \ unloading your cum onto " + setup.PRONOUNS[_char.gender]["?his"] + " " + _char.physical_traits.skin_color + " chest." ]>> <<set _molest_state.cum = "boobs">> <<run _button_func()>> <</button>>@@ <</disable>><<disable>> @@#molest_cum9;<<button "On pussy">> <<set _responses = [ "You aim your cock at " + setup.titleCase(_char.first_name) + "\'s pussy, \ unloading your cum onto " + setup.PRONOUNS[_char.gender]["?him"] + "." ]>> <<set _molest_state.cum = "pussy">> <<run _button_func()>> <</button>>@@ <</disable>><<disable>> @@#molest_cum10;<<button "In mouth">> <<set _responses = [ "You continue thrusting your cock deeper into " + setup.titleCase(_char.first_name) + "\'s throat, eventually cumming into " + setup.PRONOUNS[_char.gender]["?his"] + " mouth." ]>> <<set _molest_state.cum = "in_mouth">> <<run _button_func()>> <</button>>@@ <</disable>><<disable>> @@#molest_cum11;<<button "In pussy">> <<set _responses = [ "You continue fucking " + setup.titleCase(_char.first_name) + "\'s vagina, eventually cumming into " + setup.PRONOUNS[_char.gender]["?his"] + " pussy." ]>> <<set _molest_state.cum = "in_pussy">> <<run _button_func()>> <</button>>@@ <</disable>><<disable>> @@#molest_cum12;<<button "In ass">> <<set _responses = [ "You continue fucking " + setup.titleCase(_char.first_name) + "\'s ass, eventually cumming into " + setup.PRONOUNS[_char.gender]["?his"] + " anus." ]>> <<set _molest_state.cum = "in_ass">> <<run _button_func()>> <</button>>@@ <</disable>> </div> <<silently>><<script>> State.temporary.button_func = () => { let player = State.variables.player; let _t = State.temporary; player.mental_conditions.arousal = 0; player.conditions.stamina = (player.conditions.stamina - 20).clamp(0, 100); _t.molest_state.came = true; _t.is_cumming = false; _t.print_cum_prompt = false; _t.molest_state_changed = true; setup.mainLog_append_delayed(State.temporary.responses); delete _t.responses; $("#molest_actions").removeClass("hidden"); $("#molest_cum_actions").addClass("hidden"); }; <</script>><</silently>> <</nobr>>
<<nobr>> <div id="molest_info" class="subbackground hidden" style="grid-row: 1 / span 3; grid-column: 4 / span 1"> <div class="container threeRow" style="font-weight: normal; height: 100%; width: 100%"> <center> <h3 style="margin-bottom:0"><<= setup.locations.get(passage()).name>></h3> <p style="margin: 0"> <<= setup.locations.get_sub_address(passage())>> </p> <br> <div id="molest_datetime"> <<time12hr>> <br> <<date>> </div> </center> <center style="padding: 20px"> <strong id="molest_info_name"></strong> <div id="molest_bars"></div> <strong><<= setup.titleCase($player.first_name)>></strong> <div id="molest_player_bars"></div> </center> <center> ''Time passed'': <span id="molest_time"></span> minutes </center> </div> </div> <</nobr>>
<<nobr>> /* Cock for male, strap-on for female */ <<set _cock = "cock">> <<if $player.gender == 1>> <<set _cock = "strap-on">> <</if>> /* For ease of access */ <<set _char = $characters[$selected]>> <<set _higher_status = ($player.get_status("nipon") == "slave" && _char.status == "low_slave") || ($player.get_status("nipon") == "high_slave" && _char.status == "slave") || ($player.get_status("nipon") == "high_slave" && _char.status == "low_slave")>> /* Preround for bars */ <<set _to_round = _char.key>> <<include round>> <<set _molest_state = { "blanket": true, "top": true, "bottom": true, "cum": "none", "came": false, "aware": false, "awake": false }>> /* Disable menu */ <<set $enable_menu = false>> /* Time molesting */ <<set _molest_time = 0>> /* Add target to simulation queue */ <<set $to_simulate.add(_char.key)>> /* Molesting doesn't start till we act */ <<set _is_molesting = false>> /* Pre-cache all images for fast rendering */ <<script>> var char = State.temporary.char; const preload = [ "", "_noblanket", "_noblanket_nobottom", "_noblanket_nobottom_notop", "_noblanket_notop" ]; window._ImageCache = preload.map(function (url) { var image = document.createElement('img'); image.src = char.image_folder() + "sleeping/" + char.first_name.toLowerCase() + "_sleeping" + url + ".png"; return image; }); <</script>> <<script>> var player = State.variables.player; var char = State.temporary.char; $("#mainLogCharacterImage").css("background-image", "url(\"" + char.image_folder() + "sleeping/" + char.first_name.toLowerCase() + "_sleeping.png\")" ); var div = $("<div></div>"); var html = "You approach " + setup.titleCase(char.first_name) + "\'s bed, what do you do?"; div.html(html); setup.mainLog_append(div); <</script>> /* Show molest ui and atune to character */ <<removeclass "#molest_actions" "hidden">> <<run $("#molest_info_name").html(setup.titleCase(_char.first_name))>> <<run $("#molest_bars").wiki("\ <<showmeter \"char_arousal_bar\" `_char.mental_conditions.arousal/_char.mental_conditions.max_arousal`>>\ <<showmeter \"char_suspicion_bar\" `_char.mental_conditions.suspicion/50`>>\ ")>> <<run $("#molest_player_bars").wiki("\ <<showmeter \"player_arousal_bar\" `$player.mental_conditions.arousal/$player.mental_conditions.max_arousal`>>\ <<showmeter \"player_dexterity_bar\" `$player.stats.dexterity/100`>>\ <<showmeter \"player_stamina_bar\" `$player.conditions.stamina/$player.conditions.max_stamina`>>\ ")>> <<run $("#molest_time").html(_molest_time)>> <<removeclass "#molest_info" "hidden">> /* Change button text depending on character of molest target */ <<script>> let char = State.temporary.char; if (char.gender == 0) { $("#molest4 button").html("Caress chest"); $("#molest5 button").html("Stroke cock"); $("#molest7 button").html("Suck cock"); $("#molest11 button").html("Ride cock"); } <</script>> /* Allow back and leave buttons */ <<removeclass "#events_actions_back" "hidden">> <<removeclass "#events_actions_leave" "hidden">> /* Psuedoevent listener for changing molest_state for button enabling / disabling as well as changing the images based on the state */ <<silently>><<repeat 20ms>> <<if _molest_state_changed !== undefined && _molest_state_changed>> <<if _is_molesting>> <<addclass "#molest_back button" "disabled">> <<run $("#molest_back button").prop("disabled", true)>> <<removeclass "#molest_done button" "disabled">> <<run $("#molest_done button").prop("disabled", false)>> <</if>> <<if _molest_state.blanket>> /* Not able to do anything with blanket on */ <<for _i = 2; _i lte 12; _i++>> <<addclass `"#molest" + _i + " button"` "disabled">> <<run $("#molest" + _i + " button").prop("disabled", true)>> <</for>> <<else>> /* Enable top and bottom modification */ <<removeclass "#molest2 button" "disabled">> <<run $("#molest2 button").prop("disabled", false)>> <<removeclass "#molest3 button" "disabled">> <<run $("#molest3 button").prop("disabled", false)>> <<if (!_molest_state.came && $player.gender == 0) || (!_molest_state.came && $player.gender == 1 && $player.has_equipped("strap_on") != "none")>> /* Enalble feet, mouth and self*/ <<removeclass "#molest8 button" "disabled">> <<run $("#molest8 button").prop("disabled", false)>> <<removeclass "#molest9 button" "disabled">> <<run $("#molest9 button").prop("disabled", false)>> <<removeclass "#molest10 button" "disabled">> <<run $("#molest10 button").prop("disabled", false)>> <<else>> <<addclass "#molest8 button" "disabled">> <<run $("#molest8 button").prop("disabled", true)>> <<addclass "#molest9 button" "disabled">> <<run $("#molest9 button").prop("disabled", true)>> <<addclass "#molest10 button" "disabled">> <<run $("#molest10 button").prop("disabled", true)>> <</if>> <<if _molest_state.top>> /* Disable all upper actions */ <<addclass "#molest4 button" "disabled">> <<run $("#molest4 button").prop("disabled", true)>> <<else>> <<removeclass "#molest4 button" "disabled">> <<run $("#molest4 button").prop("disabled", false)>> <</if>> <<if _molest_state.bottom>> /* Disable all lower actions */ <<addclass "#molest5 button" "disabled">> <<run $("#molest5 button").prop("disabled", true)>> <<addclass "#molest6 button" "disabled">> <<run $("#molest6 button").prop("disabled", true)>> <<addclass "#molest7 button" "disabled">> <<run $("#molest7 button").prop("disabled", true)>> <<addclass "#molest11 button" "disabled">> <<run $("#molest11 button").prop("disabled", true)>> <<addclass "#molest12 button" "disabled">> <<run $("#molest12 button").prop("disabled", true)>> <<else>> <<removeclass "#molest5 button" "disabled">> <<run $("#molest5 button").prop("disabled", false)>> <<removeclass "#molest6 button" "disabled">> <<run $("#molest6 button").prop("disabled", false)>> <<removeclass "#molest7 button" "disabled">> <<run $("#molest7 button").prop("disabled", false)>> <<if !_molest_state.came && $player.gender == 0>> <<removeclass "#molest11 button" "disabled">> <<run $("#molest11 button").prop("disabled", false)>> <<removeclass "#molest12 button" "disabled">> <<run $("#molest12 button").prop("disabled", false)>> <<elseif !_molest_state.came && $player.gender == 1>> <<removeclass "#molest11 button" "disabled">> <<run $("#molest11 button").prop("disabled", false)>> <<if $player.has_equipped("strap_on") != "none">> <<removeclass "#molest12 button" "disabled">> <<run $("#molest12 button").prop("disabled", false)>> <</if>> <<else>> <<addclass "#molest11 button" "disabled">> <<run $("#molest11 button").prop("disabled", true)>> <<addclass "#molest12 button" "disabled">> <<run $("#molest12 button").prop("disabled", true)>> <</if>> <</if>> <</if>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _char.image_folder() + "sleeping/" + _char.first_name.toLowerCase() + "_sleeping" + setup.molest_state_to_string(_molest_state) + ".png\")" )>> <<unset _molest_state_changed>> <</if>> <</repeat>><</silently>> /* Global multiplier for suspicion */ <<set _sus_mult = 1>> <<if $player.titles.has("night_fox")>> <<set _sus_mult *= 0.8>> <</if>> /* Scale by difficulty */ <<set _sus_mult *= (1 + 0.1 * $difficulty)>> <<set _sus_fail = setup.round2(10 * _sus_mult)>> /* Multipliers for arousal increase of char based on player skills */ <<set _anal_mult_base = 1 + ($player.sex_skills.anal - 50) / 100>> <<set _oral_mult_base = 1 + ($player.sex_skills.oral - 50) / 100>> <<set _vaginal_mult_base = 1 + ($player.sex_skills.vaginal - 50) / 100>> <<set _other_mult_base = 1 + ($player.sex_skills.other - 50) / 100>> /* Multipliers for arousal increase of char based on preference */ <<set _anal_mult_base *= 1 + (_char.sex_prefs.anal) / 75>> <<set _oral_mult_base *= 1 + (_char.sex_prefs.oral) / 75>> <<set _vaginal_mult_base *= 1 + (_char.sex_prefs.vaginal) / 75>> /* Psuedoevent listener for _molest_action to update suspicion and arousal */ <<silently>><<repeat 20ms>> <<if _molest_action !== undefined>> /* Record the last action for cumEngine */ <<set _last_molest_action = _molest_action>> <<set _roll = $player.stats.dexterity + dice(1, 6 + $difficulty) - $difficulty>> /* Bypass dislikes if aroused enough */ <<if _char.mental_conditions.arousal gte 20>> <<set _anal_mult = Math.max(1, _anal_mult_base)>> <<set _oral_mult = Math.max(1, _oral_mult_base)>> <<set _vaginal_mult = Math.max(1, _vaginal_mult_base)>> <<set _other_mult = Math.max(1, _other_mult_base)>> <<else>> <<set _anal_mult = _anal_mult_base>> <<set _oral_mult = _oral_mult_base>> <<set _vaginal_mult = _vaginal_mult_base>> <<set _other_mult = _other_mult_base>> <</if>> <<switch _molest_action>> <<case 1>> <<if _roll gt 15 || _molest_state.aware>> <<if !_molest_state.blanket>> <<set _responses = [ "You carefully remove " + setup.titleCase(_char.first_name) + "\'s blanket." ]>> <<else>> <<set _responses = [ "You carefully put back " + setup.titleCase(_char.first_name) + "\'s blanket." ]>> <</if>> <<else>> <<if !_molest_state.blanket>> <<set _responses = [ "You carefully remove " + setup.titleCase(_char.first_name) + "\'s blanket, \ but fumble a bit in doing so (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ")." ]>> <<else>> <<set _responses = [ "You carefully put back " + setup.titleCase(_char.first_name) + "\'s blanket, \ but fumble a bit in doing so (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ")." ]>> <</if>> <<set _char.mental_conditions.suspicion += _sus_fail>> <</if>> <<case 2>> <<if _roll gt 20 || _molest_state.aware>> <<if !_molest_state.top>> <<set _responses = [ "You carefully remove " + setup.titleCase(_char.first_name) + "\'s top revealing " + setup.PRONOUNS[_char.gender]["?his"] + " bare chest." ]>> <<else>> <<set _responses = [ "You carefully put back " + setup.titleCase(_char.first_name) + "\'s top." ]>> <</if>> <<else>> <<if !_molest_state.top>> <<set _responses = [ "You carefully remove " + setup.titleCase(_char.first_name) + "\'s top, \ but fumble a bit in doing so (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ")." ]>> <<else>> <<set _responses = [ "You carefully put " + setup.titleCase(_char.first_name) + "\'s top, \ but fumble a bit in doing so (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ")." ]>> <</if>> <<set _char.mental_conditions.suspicion += _sus_fail>> <</if>> <<case 3>> <<if _roll gt 20 || _molest_state.aware>> <<if !_molest_state.bottom>> <<set _response = "\ You carefully remove " + setup.titleCase(_char.first_name) + "\'s bottoms revealing " + setup.PRONOUNS[_char.gender]["?his"] + " bare \ ">> <<if _char.gender == 0>> <<set _response += "cock.">> <<else>> <<set _response += "pussy.">> <</if>> <<if _char.mental_conditions.arousal gte 10>> <<set _response += " You can tell from " + setup.PRONOUNS[_char.gender]["?his"] + " arousal that it\'s already glistening with wetness.">> <</if>> <<set _responses = [_response]>> <<else>> <<set _responses = [ "You carefully put back " + setup.titleCase(_char.first_name) + "\'s bottoms." ]>> <</if>> <<else>> <<if !_molest_state.bottom>> <<set _responses = [ "You carefully remove " + setup.titleCase(_char.first_name) + "\'s bottoms, \ but fumble a bit in doing so (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ")." ]>> <<else>> <<set _responses = [ "You carefully put back " + setup.titleCase(_char.first_name) + "\'s bottoms, \ but fumble a bit in doing so (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ")." ]>> <</if>> <<set _char.mental_conditions.suspicion += _sus_fail>> <</if>> <<case 4>> <<set _response = "\ You gently caress " + setup.titleCase(_char.first_name) + "\'s chest and you feel " + setup.PRONOUNS[_char.gender]["?his"] + " nipples harden between your fingers">> <<if _roll gt 25 || _molest_state.aware>> <<else>> <<set _response += ", but you accidentally press a little too hard, stiring " + setup.PRONOUNS[_char.gender]["?him"] + " (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ")." >> <<set _char.mental_conditions.suspicion += _sus_fail>> <</if>> <<set _char.mental_conditions.arousal += 4 * _other_mult>> <<set _responses = [_response]>> <<case 5>> <<if _char.gender == 1>> <<set _response = "\ You carefully insert your fingers into " + setup.titleCase(_char.first_name) + "\'s pussy. Your fingers become slick with her juices">> <<else>> <<set _response = "\ You carefully start stroking " + setup.titleCase(_char.first_name) + "\'s cock. Your hand become slick with his precum">> <</if>> <<if _roll gt 30 || _molest_state.aware>> <<set _response += ".">> <<else>> <<set _response += ", but you accidentally thrust a bit too hard, making " + setup.PRONOUNS[_char.gender]["?him"] + " moan" + " (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ").">> <<set _char.mental_conditions.suspicion += _sus_fail>> <</if>> <<set _char.mental_conditions.arousal += 7 * _other_mult>> <<set _responses = [_response]>> <<case 6>> <<set _response = "\ You ease your fingers into " + setup.titleCase(_char.first_name) + "\'s ass. As you move them in and out, you smell a rich aroma of " + setup.PRONOUNS[_char.gender]["?his"]+ " juices and anus">> <<if _roll gt 40 || _molest_state.aware>> <<set _response += ".">> <<else>> <<set _response += ", but you accidentally thrust a bit too hard, making " + setup.PRONOUNS[_char.gender]["?him"] + " moan" + " (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ").">> <<set _char.mental_conditions.suspicion += _sus_fail>> <</if>> <<set _char.mental_conditions.arousal += 7 * _other_mult>> <<set _responses = [_response]>> <<case 7>> <<if _char.gender == 1>> <<set _response = "\ You lower your head in between " + setup.titleCase(_char.first_name) + "\'s legs and start licking her pussy. You can taste her juices as they slowly \ leak into your mouth">> <<else>> <<set _response = "\ You lower your head in between " + setup.titleCase(_char.first_name) + "\'s legs and start sucking his cock. You can taste his precum as they slowly \ leak into your mouth">> <</if>> <<if _roll gt 40 || _molest_state.aware>> <<set _response += ".">> <<else>> <<set _response += ", but while you were using your mouth to please " + setup.PRONOUNS[_char.gender]["?him"] + ", your teeth scratched " + setup.PRONOUNS[_char.gender]["?him"] + " causing " + setup.PRONOUNS[_char.gender]["?him"] + " to moan" + " (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ").">> <<set _char.mental_conditions.suspicion += _sus_fail>> <</if>> <<set _char.mental_conditions.arousal += 10 * _vaginal_mult>> <<set _responses = [_response]>> <<case 8>> <<set _response = "\ You touch yourself while imagining all the things you could do to poor " + setup.titleCase(_char.first_name) + " who\'s helplessly unaware of what\'s happening">> <<if _roll gt 15 || _molest_state.aware>> <<set _response += ".">> <<else>> <<set _response += ", but in your ferver you make too much noise " + " (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ").">> <<set _char.mental_conditions.suspicion += _sus_fail>> <</if>> <<set $player.mental_conditions.arousal += 7>> <<set _responses = [_response]>> <<case 9>> <<set _response = "\ You grab " + setup.titleCase(_char.first_name) + "\'s soft " + _char.physical_traits.skin_color + " feet and start stroking your " + _cock + " with it. You push your head gently between " + setup.PRONOUNS[_char.gender]["?his"] + " toes \ while licking " + setup.PRONOUNS[_char.gender]["?his"] + " other foot">> <<if _roll gt 25 || _molest_state.aware>> <<set _response += ".">> <<else>> <<set _response += ". You accidentally bite too hard on " + setup.PRONOUNS[_char.gender]["?his"] + " foot " + " (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(_sus_fail), false) + ").">> <<set _char.mental_conditions.suspicion += _sus_fail>> <</if>> <<set _foot_mult = 1 + (_char.sex_fetishes.feet / 50)>> <<set _char.mental_conditions.arousal += 3 * _foot_mult * _other_mult>> <<set $player.mental_conditions.arousal += 10>> <<set _responses = [_response]>> <<case 10>> <<set _response = "\ You grab " + setup.titleCase(_char.first_name) + "\'s head and slow insert your \ " + _cock + " into " + setup.PRONOUNS[_char.gender]["?his"] + " mouth. You can feel " + setup.PRONOUNS[_char.gender]["?his"] + " warm touch wrap around your member. You \ carefully slide in and out of " + setup.PRONOUNS[_char.gender]["?his"] + " throat">> <<if _roll gt 50 || _molest_state.aware>> <<set _response += ".">> <<else>> <<set _response += ", but you accidentally thrust a bit too hard, making " + setup.PRONOUNS[_char.gender]["?him"] + " choke a little" + " (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(1.2 * _sus_fail), false) + ").">> <<set _char.mental_conditions.suspicion += 1.2 * _sus_fail>> <</if>> <<set _char.mental_conditions.arousal += 5 * _oral_mult>> <<set $player.mental_conditions.arousal += 13>> <<set _responses = [_response]>> <<case 11>> <<if _char.gender == 1>> <<set _response = "\ You spread " + setup.titleCase(_char.first_name) + "\'s legs and slowly insert your \ " + _cock + " into " + setup.PRONOUNS[_char.gender]["?his"] + " pussy. You can feel the warm \ insides of her vagina wrap around your penis, guiding it with its juices. The air is \ surrounded by a lewd smell of mixed bodily fluids">> <<else>> <<set _response = "\ You slowly get onto of" + setup.titleCase(_char.first_name) + " and slowly insert his \ cock into your ass. You can feel the inside of your anus wrapping around his penis, \ guiding it with its juices. The air is surrounded by a lewd smell of mixed bodily fluids">> <</if>> <<if _roll gt 60 || _molest_state.aware>> <<set _response += ".">> <<else>> <<set _response += ", but you accidentally thrust a bit too hard, making " + setup.PRONOUNS[_char.gender]["?him"] + " moan" + " (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(1.5 * _sus_fail), false) + ").">> <<set _char.mental_conditions.suspicion += 1.5 * _sus_fail>> <</if>> <<set _char.mental_conditions.arousal += 12 * _vaginal_mult>> <<set $player.mental_conditions.arousal += 15>> <<set _responses = [_response]>> <<case 12>> <<set _response = "\ You spread " + setup.titleCase(_char.first_name) + "\'s ass cheecks and slowly insert your \ " + _cock + " into " + setup.PRONOUNS[_char.gender]["?his"] + " tight ass. " + setup.titleCase(setup.PRONOUNS[_char.gender]["?his"]) + " anus lets out some air, filling the \ room with a perverted aroma of bodily fluids and sweat">> <<if _roll gt 70>> <<set _response += ".">> <<else>> <<set _response += ". You accidentally thrust a bit too hard, making " + setup.PRONOUNS[_char.gender]["?him"] + " moan" + " (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, setup.round2(2 * _sus_fail), false) + ").">> <<set _char.mental_conditions.suspicion += 2 * _sus_fail>> <</if>> <<set _char.mental_conditions.arousal += 12 * _anal_mult>> <<set $player.mental_conditions.arousal += 20>> <<set _responses = [_response]>> <</switch>> <<script>> setup.mainLog_append_delayed(State.temporary.responses); <</script>> <<unset _molest_action>> <<set _mins = 1 + dice(1, 4)>> <<addmins _mins>> <<set _molest_time += _mins>> <<run $("#molest_time").html(_molest_time)>> <<set _to_round = _char.key>> <<include round>> <</if>> <</repeat>><</silently>> <<set _is_cumming = false>> <<set _print_cum_prompt = false>> /* Psuedoevent listener for arousal and suspicion thresholds */ <<silently>><<repeat 20ms>> <<if $player.mental_conditions.arousal gte $player.mental_conditions.max_arousal && !_is_cumming>> <<set _is_cumming = true>> <</if>> <<if _char.mental_conditions.suspicion gte 50 && !_molest_state.aware && !_is_cumming>> <<set _disposition = _char.get_disposition()>> <<switch _disposition>> <<case "submissive">> <<set _responses = [ setup.titleCase(_char.first_name) + " notices that you are molesting " + setup.PRONOUNS[_char.gender]["?him"] + " but is submissive enough to pretend " + "they are still sleeping (" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 10) + ")." ]>> <<script>> setup.mainLog_append_delayed(State.temporary.responses); <</script>> <<set _char.mental_conditions.suspicion = 0>> <<case "devoted">> <<set _responses = [ setup.titleCase(_char.first_name) + " notices that you are molesting " + setup.PRONOUNS[_char.gender]["?him"] + " but is devoted enough to pretend " + "they are still sleeping (" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 10) + ")." ]>> <<script>> setup.mainLog_append_delayed(State.temporary.responses); <</script>> <<set _char.mental_conditions.suspicion = 0>> <<case "scared">> <<set _responses = [ setup.titleCase(_char.first_name) + " notices that you are molesting " + setup.PRONOUNS[_char.gender]["?him"] + " but is scared enough to pretend " + "they are still sleeping (" + setup.titleCase(_char.first_name) + "\'s Willpower " + setup.show_change_html(0, -5, false) + ")." ]>> <<script>> setup.mainLog_append_delayed(State.temporary.responses); <</script>> <<set _char.mental_conditions.suspicion = 100>> <<default>> <<set _molest_state.awake = true>> <<set _molest_state_changed = true>> <<set _responses = [ setup.titleCase(_char.first_name) + " wakes up to you molesting " + setup.PRONOUNS[_char.gender]["?him"] + ",", _char.dialogue("What the FUCK are you doing?!!"), "Caught red-handed, you are a deer in the headlights, what do you do?\ <ol>\ <li>Apologize.</li>\ <li>Quickly dash out of the room.</li>\ <li>Force " + setup.PRONOUNS[_char.gender]["?him"] + " down and rape " + setup.PRONOUNS[_char.gender]["?him"] + ".</li>\ </ol>" ]>> /* Trigger event engine */ <<removeclass "#events_actions" "hidden">> <<addclass "#molest_actions" "hidden">> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 3>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons); <</script>> <<set _char.mental_conditions.suspicion = 100>> /* Psuedoevent listener for _action */ <<silently>><<repeat 20ms>> <<if def _action>> <<switch _action>> <<case 1>> <<unset _action>> /* Roll for tact */ <<set _roll = $player.get_status_prop("tact") + 2 * (dice(1, 6 + $difficulty) - $difficulty)>> <<if _roll gte 50>> <<set $_temp_to_log = setup.pass("tact") + $player.dialogue("I\'m so sorry, you are just so beautiful I couldn\'t help it. I \ promise this will never happen again!") + "While " + setup.titleCase(_char.first_name) + " is still very upset, you can tell \ you\'ve smoothed things over somewhat. You quickly leave the room \ (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -5) + ", Anger " + setup.show_change_html(0, 10, false) + ", Trust " + setup.show_change_html(0, -5) + ")." >> <<set _char.slave_traits.obedience -= 5>> /* Do not induce fear */ <<if _char.slave_traits.trust gt 0>> <<set _char.slave_traits.trust = Math.clamp(_char.slave_traits.trust - 5, 0, 100)>> <</if>> <<set _char.mental_conditions.anger += 10>> <<else>> <<set $_temp_to_log = setup.fail("tact") + $player.dialogue("I\'m so sorry, you are just... so hot, I couldn\'t help it. I \ promise this will never happen again!") + setup.titleCase(_char.first_name) + " is very upset and you can tell \ you\'ve only made things worse with your bad apology. You quickly leave the room \ (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -15) + ", Anger " + setup.show_change_html(0, 20, false) + ", Trust " + setup.show_change_html(0, -15) + ")." >> <<set _char.slave_traits.obedience -= 15>> /* Do not induce fear */ <<if _char.slave_traits.trust gt 0>> <<set _char.slave_traits.trust = Math.clamp(_char.slave_traits.trust - 15, 0, 100)>> <</if>> <<set _char.mental_conditions.anger += 20>> <</if>> /* Stop molesting */ <<set _is_molesting = false>> /* Re-enable menu */ <<set $enable_menu = true>> /* Last round for good measure */ <<set _to_round = _char.key>> <<include round>> <<goto `passage()`>> <<case 2>> <<unset _action>> <<set $_temp_to_log = "You quickly dash out of the room, leaving sleepy " + setup.titleCase(_char.first_name) + " to question what really just happened \ (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -10) + ", Anger " + setup.show_change_html(0, 15, false) + ", Trust " + setup.show_change_html(0, -10) + ")." >> <<set _char.slave_traits.obedience -= 10>> /* Do not induce fear */ <<if _char.slave_traits.trust gt 0>> <<set _char.slave_traits.trust = Math.clamp(_char.slave_traits.trust - 10, 0, 100)>> <</if>> <<set _char.mental_conditions.anger += 25>> /* Stop molesting */ <<set _is_molesting = false>> /* Re-enable menu */ <<set $enable_menu = true>> /* Last round for good measure */ <<set _to_round = _char.key>> <<include round>> <<goto `passage()`>> <<case 3>> <<unset _action>> <<set _roll = $player.stats.strength + dice(1, 6 + $difficulty) - $difficulty>> <<if _roll - _char.stats.strength gte 15>> <<set _responses = [ setup.pass("strength"), "You hold " + setup.titleCase(_char.first_name) + " down and overpower " + setup.PRONOUNS[_char.gender]["?him"] + ",", $player.dialogue("Shut the fuck up, and go back to bed. If I even doubt you\'re \ asleep for a single second, I\'ll crush your windpipe."), setup.titleCase(_char.first_name) + " lays back down with absolute fear (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -15) + ", Anger " + setup.show_change_html(0, 20, false) + ", Fear " + setup.show_change_html(0, 10) + ", Willpower " + setup.show_change_html(0, -10, false) + ")." ]>> <<set _char.slave_traits.obedience -= 15>> <<set _char.slave_traits.trust -= 10>> <<set _char.slave_traits.willpower -= 10>> <<set _char.mental_conditions.anger += 20>> <<set _char.mental_conditions.suspicion = 100>> <<set _to_round = _char.key>> <<include round>> <<removeclass "#molest_actions" "hidden">> <<addclass "#events_actions" "hidden">> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.molest_buttons); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _molest_state.awake = false>> <<set _molest_state_changed = true>> <<stop>> <</if>><</repeat>><</silently>> <<stop>> <<elseif _higher_status>> <<set _responses = [ setup.pass("status"), "You hold " + setup.titleCase(_char.first_name) + " down and remind " + setup.PRONOUNS[_char.gender]["?him"] + " of " + setup.PRONOUNS[_char.gender]["?him"] + " \ place in this household,", $player.dialogue("Shut the fuck up, and go back to bed. If I even doubt you\'re \ asleep for a single second, I\'ll crush your windpipe."), setup.titleCase(_char.first_name) + " lays back down with absolute fear (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -15) + ", Anger " + setup.show_change_html(0, 20, false) + ", Fear " + setup.show_change_html(0, 10) + ", Willpower " + setup.show_change_html(0, -10, false) + ")." ]>> <<set _char.slave_traits.obedience -= 15>> <<set _char.slave_traits.trust -= 10>> <<set _char.slave_traits.willpower -= 10>> <<set _char.mental_conditions.anger += 20>> <<set _char.mental_conditions.suspicion = 100>> <<set _to_round = _char.key>> <<include round>> <<removeclass "#molest_actions" "hidden">> <<addclass "#events_actions" "hidden">> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.molest_buttons); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _molest_state.awake = false>> <<set _molest_state_changed = true>> <<stop>> <</if>><</repeat>><</silently>> <<stop>> <<else>> <<set $_temp_to_log = setup.fail("strength") + "You try to pin " + setup.titleCase(_char.first_name) + " down, but " + setup.PRONOUNS[_char.gender]["?he"] + " overpowers you in an instant.<br>" + _char.dialogue("You fucking piece of garbage, let me show you what happens \ when you try something on me.") + setup.titleCase(_char.first_name) + " proceeds to crush you and kick you in the \ genitals. After what seems like forever " + setup.PRONOUNS[_char.gender]["?he"] + " \ shoves you out the door " + "(Health " + setup.show_change_html(0, -20) + ", Willpower " + setup.show_change_html(0, -10) + ") " + "(" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -15) + ", Anger " + setup.show_change_html(0, 20, false) + ", Trust " + setup.show_change_html(0, -15) + ")." >> <<set $player.conditions.health -= 20>> <<set $player.slave_traits.willpower -= 10>> <<set _char.slave_traits.obedience -= 15>> /* Do not induce fear */ <<if _char.slave_traits.trust gt 0>> <<set _char.slave_traits.trust = Math.clamp(_char.slave_traits.trust - 15, 0, 100)>> <</if>> <<set _char.mental_conditions.anger += 20>> /* Stop molesting */ <<set _is_molesting = false>> /* Re-enable menu */ <<set $enable_menu = true>> /* Last round for good measure */ <<set _to_round = _char.key>> <<include round>> <<goto `passage()`>> <</if>> <</switch>> <</if>> <</repeat>><</silently>> <</switch>> <<set _molest_state.aware = true>> <<set _sus_mult = 0>> <<else>> <<if _char.mental_conditions.arousal gte _char.mental_conditions.max_arousal && !_molest_state.awake>> <<set _response = setup.titleCase(_char.first_name) + "\'s body jolts, letting out multiples \ moans. " + setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " orgasm \ squirting some liquid onto the bed. This fills the already lewd air with an \ even stronger aroma of bodily fluids." >> <<if _last_molest_action == 5 || _last_molest_action == 7 || _last_molest_action == 11>> <<if _char.gender == 1>> <<set _response += " Making " + setup.titleCase(_char.first_name) + " orgasm \ by direct contact with her pussy increased her preference for vaginal sex \ (" + setup.titleCase(_char.first_name) + "\'s Vaginal Preference " + setup.show_change_html(0, 1) + ").">> <<set _char.sex_prefs.vaginal += 1>> <<else>> <<set _response += " Making " + setup.titleCase(_char.first_name) + " orgasm \ by direct contact with his cock increased his preference for sex \ (" + setup.titleCase(_char.first_name) + "\'s Sex Drive " + setup.show_change_html(0, 1) + ").">> <</if>> <<elseif _last_molest_action == 6 || _last_molest_action == 12>> <<set _response += " Making " + setup.titleCase(_char.first_name) + " orgasm \ through " + setup.PRONOUNS[_char.gender]["?his"] + " ass increased " + setup.PRONOUNS[_char.gender]["?his"] + " preference for anal sex \ (" + setup.titleCase(_char.first_name) + "\'s Anal Preference " + setup.show_change_html(0, 1) + ").">> <<set _char.sex_prefs.anal += 1>> <<elseif _last_molest_action == 9>> <<set _response += " Making " + setup.titleCase(_char.first_name) + " orgasm \ through " + setup.PRONOUNS[_char.gender]["?his"] + " feet increased " + setup.PRONOUNS[_char.gender]["?his"] + " fetish for feet \ (" + setup.titleCase(_char.first_name) + "\'s Foot Fetish " + setup.show_change_html(0, 1) + ").">> <<set _char.sex_fetishes.feet += 1>> <<elseif _last_molest_action == 10>> <<set _response += " Making " + setup.titleCase(_char.first_name) + " orgasm \ through " + setup.PRONOUNS[_char.gender]["?his"] + " mouth increased " + setup.PRONOUNS[_char.gender]["?his"] + " preference for oral sex \ (" + setup.titleCase(_char.first_name) + "\'s Oral Preference " + setup.show_change_html(0, 1) + ").">> <<set _char.sex_prefs.oral += 1>> <</if>> <<set _char.mental_conditions.arousal = 0>> <<set _responses = [_response]>> <<script>> setup.mainLog_append_delayed(State.temporary.responses); <</script>> <<unset _response>> <<unset _responses>> <<set _to_round = _char.key>> <<include round>> <</if>> <<if $player.mental_conditions.arousal gte $player.mental_conditions.max_arousal && !_molest_state.awake && !_print_cum_prompt>> <<set _print_cum_prompt = true>> <<set _responses = ["Molesting " + setup.titleCase(_char.first_name) + " is too much for you \ and you have to cum immediately!"]>> /* Toggle cum options based on last action and molest state */ <<if !_molest_state.top>> <<removeclass "#molest_cum8 button" "disabled">> <<run $("#molest_cum8 button").prop("disabled", false)>> <</if>> <<if _molest_state.bottom>> <<removeclass "#molest_cum5 button" "disabled">> <<run $("#molest_cum5 button").prop("disabled", false)>> <<else>> <<removeclass "#molest_cum9 button" "disabled">> <<run $("#molest_cum9 button").prop("disabled", false)>> <</if>> <<if _last_molest_action == 10 || _last_molest_action == 11 || _last_molest_action == 12>> <<removeclass `"#molest_cum" + _last_molest_action + " button"` "disabled">> <<run $("#molest_cum" + _last_molest_action + " button").prop("disabled", false)>> <</if>> <<script>> setup.mainLog_append_delayed(State.temporary.responses); <</script>> <<unset _responses>> <<removeclass "#molest_cum_actions" "hidden">> <<addclass "#molest_actions" "hidden">> <</if>> <</if>> <</repeat>><</silently>> <</nobr>>
<<nobr>> <<script>> var player = State.variables.player; var char = State.variables.characters[State.variables.selected]; var div = $("<div></div>"); var html = " You approach " + setup.titleCase(char.first_name) + ",<br>" + "<em><b>" + setup.titleCase(player.first_name) + "</b>: \"Hey I wanted to discuss some \ things with you.\"</em>\ <br>" + setup.titleCase(char.first_name) + " eyes you up and down, wondering what you want.\ <br>\ What would you like to request from " + setup.PRONOUNS[char.gender]["?him"] + "?"; State.temporary.options = "<ol>\ <li id=\"li1\">A hug.</li>\ <li id=\"li2\">A strip tease.</li>\ <li id=\"li3\">A handjob.</li>\ <li id=\"li4\">A footjob.</li>\ <li id=\"li5\">A blowjob.</li>\ <li id=\"li6\">Vaginal sex.</li>\ <li id=\"li7\">Anal sex.</li>"; State.temporary.options += "</ol>"; if (char.mental_conditions.anger > 0) { State.temporary.options = "<div style=\'color: red\'>\ (" + setup.titleCase(char.first_name) + " will be less prone to agree to requests since " + setup.PRONOUNS[char.gender]["?he"] + " is upset)\ </div>" + State.temporary.options; } html += State.temporary.options; State.temporary.options = $(State.temporary.options); div.html(html); setup.mainLog_append(div); <</script>> <<set _disable_buttons = false>> <<disableactions _options>> <<silently>><<repeat 10ms>> <<if _action !== undefined>> <<set _char = $characters[$selected]>> <<notify>>UNDER CONSTRUCTION<</notify>> <<unset _action>> <<unset _char>> <</if>> <</repeat>><</silently>> <<script>> <</script>> <</nobr>>
<<nobr>> /* Decrease search limit */ <<set _char.limits.search -= 1>> <<set _delta_trust = 0>> /* Roll for dexterity */ <<set _roll = $player.stats.dexterity + dice(1, 6 + $difficulty) - $difficulty - _char.mental_conditions.suspicion>> <<if _roll gte 80>> /* Finds a modest amount of lari + a percentage of inventory lari */ <<set $_temp_to_log = setup.pass("dexterity")>> <<set $_temp_to_log += "You search around " + setup.titleCase(_char.first_name) + "\'s room finding a most of the lari before " + setup.PRONOUNS[_char.gender]["?he"] + " notices something is wrong. You were luckily able to quickly exit the room in \ before they saw anyone in their room">> <<set _delta_sus = 0>> <<set _found_lari = dice(1, 50 - $difficulty)>> <<set _found_lari += Math.clamp(0.05 * UInv.BagHasItem(_char.key, "lari"), 0, 50)>> <<elseif _roll gte 50>> /* Finds a modest amount of lari */ <<set $_temp_to_log = setup.partial("dexterity")>> <<set $_temp_to_log += "You search around " + setup.titleCase(_char.first_name) + "\'s room finding a modest amount of lari before " + setup.PRONOUNS[_char.gender]["?he"] + " notices something is wrong. You were luckily able to quickly exit the room in \ before they saw anyone in their room">> <<set _delta_sus = 1>> <<set _found_lari = dice(1, 50 - $difficulty)>> <<elseif _roll gte 25>> /* Finds a couple of lari */ <<set $_temp_to_log = setup.partial("dexterity")>> <<set $_temp_to_log += "You try searching around " + setup.titleCase(_char.first_name) + "\'s room but only find a couple lari before " + setup.PRONOUNS[_char.gender]["?he"] + " notices something is wrong. You were luckily able to quickly exit the room in \ before they saw anyone in their room">> <<set _delta_sus = 5>> <<set _found_lari = dice(1, 10 - $difficulty)>> <<elseif _roll gte 15>> /* Fail to find anything */ <<set $_temp_to_log = setup.fail("dexterity")>> <<set $_temp_to_log += "You try searching around " + setup.titleCase(_char.first_name) + "\'s room but can\'t find anything before " + setup.PRONOUNS[_char.gender]["?he"] + " notices something is wrong. You were luckily able to quickly exit the room in \ before they saw anyone in their room">> <<set _delta_sus = 10>> <<else>> /* Wakes up target */ <<set $_temp_to_log = setup.fail("dexterity")>> <<if _char.mental_conditions.suspicion gt 50>> <<set $_temp_to_log += "You try searching around " + setup.titleCase(_char.first_name) + "\'s room but make too much noise. Already suspicios, " + setup.titleCase(_char.first_name) + " catches you red handed, pushing you out the room">> <<set _delta_trust = -5>> <<else>> <<set $_temp_to_log += "You try searching around " + setup.titleCase(_char.first_name) + "\'s room but make too much noise, luckily you quickly sneak out before they see \ who you are">> <<set _delta_sus = 20>> <</if>> <<set _found_lari = 0>> <</if>> <<if _delta_sus lt 0>> <<set $_temp_to_log += " (" + setup.titleCase(_char.first_name) + "\'s Suspicion " + setup.show_change_html(0, _delta_sus, false)>> <<set _char.mental_conditions.suspicion += _delta_sus>> <<set $to_simulate.add(_char.key)>> <<if _delta_trust lt 0>> <<set $_temp_to_log += ", ">> <</if>> <<elseif _delta_trust lt 0>> <<set $_temp_to_log += "(" + setup.titleCase(_char.first_name) + "\'s ">> <</if>> <<if _delta_trust lt 0>> <<set $_temp_to_log += "Trust " + setup.show_change_html(0, _delta_trust)>> <<set _char.slave_traits.trust -= 5>> <</if>> <<set $_temp_to_log += ")">> <<if $player.titles.has("thief")>> <<set _found_lari *= (1 + randomFloat(0.2))>> <</if>> <<set _found_lari = setup.round2(_found_lari)>> <<if _found_lari gt 0>> <<set $_temp_to_log += " (Lari " + setup.show_change_html(0, _found_lari) + ")">> <<addmoney _found_lari>> <<audio coins_sound play>> <</if>> <<set $_temp_to_log += ".">> <<set _to_round = _char.key>> <<include round>> /* For quest "power struggles" */ <<if _char.key == "shintani_hiroyuki" && ($quests.power_struggles.stage == 2 || $quests.power_struggles.stage == 3) && _roll gte 25>> <<if $quests.power_struggles.stage == 2>> <<set $_temp_to_log += "<br>You search through Shintani\'s office and find a large stack of \ what seems to be transaction logs. Unfortunatly you have no idea which ones are the correct ones \ perhaps you should look for some clues in the library first.">> <<elseif $quests.power_struggles.stage == 3>> <<set $_temp_to_log += "<br>You search through Shintani\'s office and find a large stack of \ transaction logs. You quickly leaf through them to find one with a watermark matching the \ symbol on the inside of the registry from the library. You quickly grab this and slip out.<br>\ <span class=\"success\">(Acquired Nipon Transaction Logs)</span>">> <<run UInv.AddItem("inventory", "nipon_transaction_log")>> <<set $quests.power_struggles.stage = 4>> <</if>> <</if>> /* Attaining strap-on from Himari */ <<if _char.key == "himari_hironaka" && _roll gte 25 && UInv.BagHasItem("inventory", "strap_on") == 0>> <<set $_temp_to_log += "<br>You find in a tattered old box a large strap-on made of soft silicon.<br>\ <span class=\"success\">(Acquired Strap On)</span>">> <<run UInv.AddItem("inventory", "strap_on")>> <</if>> <<goto `passage()`>> <</nobr>>
<<nobr>> <div id="sex_actions" class="action container row col longbutton fiveQuarters smalltext hidden" style="--rows: 4; --cols: 4"> @@#sex1;<<button "Caress">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You try to hug " + setup.titleCase(_char.first_name) + " but " + setup.PRONOUNS[_char.gender]["?he"] + " recoils, shaking " + setup.PRONOUNS[_char.gender]["?his"] + " head.">> <<if _query_action("caress", 0, _query_str)>> <<set _responses = [ "You wrap " + setup.titleCase(_char.first_name) + " in your arms and hold " + setup.PRONOUNS[_char.gender]["?him"] + " tightly in your arms." ]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes are fixed far away, apprehensive about what\'s to \ come next.")>> <<set _char.mental_conditions.discomfort += 1>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes are fixed onto yours, both excited and nervous about what\'s to \ come next.")>> <<set _char.mental_conditions.discomfort -= 1>> <</if>> <<set _mins = 1 + dice(1, 1)>> <<addmins _mins>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = [ "You wrap " + setup.titleCase(_char.first_name) + " in your arms and hold " + setup.PRONOUNS[_char.gender]["?him"] + " tightly in your arms." ]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes are fixed far away, apprehensive about what\'s to \ come next.")>> <<set _char.mental_conditions.discomfort += 1>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes are fixed onto yours, both excited and nervous about what\'s to \ come next.")>> <<set _char.mental_conditions.discomfort -= 1>> <</if>> <<set _mins = 1 + dice(1, 1)>> <<addmins _mins>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ @@#sex2;<<button "Kiss">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You try to kiss " + setup.titleCase(_char.first_name) + " but " + setup.PRONOUNS[_char.gender]["?he"] + " recoils, pulling back in shock.">> <<if _query_action("kiss", 5, _query_str)>> <<set _responses = [ "You kiss " + setup.titleCase(_char.first_name) + " sticking your tongue into " + setup.PRONOUNS[_char.gender]["?his"] + " mouth." ]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes are glaze over with tears as " + setup.PRONOUNS[_char.gender]["?his"] + " mouth is continually assaulted and filled with your saliva.")>> <<set _char.mental_conditions.discomfort += 2>> <<set _char.slave_traits.willpower -= 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " responds by also pushing " + setup.PRONOUNS[_char.gender]["?his"] + " tongue into your mouth \ creating a wet sensual dance of saliva.")>> <<set _char.mental_conditions.discomfort -= 1>> <<set _char.mental_conditions.arousal += 2>> <<set $player.mental_conditions.arousal += 2>> <</if>> <<set _mins = 1 + dice(1, 2)>> <<addmins _mins>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = [ "You kiss " + setup.titleCase(_char.first_name) + " sticking your tongue into " + setup.PRONOUNS[_char.gender]["?his"] + " mouth." ]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes are glaze over with tears as " + setup.PRONOUNS[_char.gender]["?his"] + " mouth is continually assaulted and filled with your saliva.")>> <<set _char.mental_conditions.discomfort += 2>> <<set _char.slave_traits.willpower -= 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " responds by also pushing " + setup.PRONOUNS[_char.gender]["?his"] + " tongue into your mouth \ creating a wet sensual dance of saliva.")>> <<set _char.mental_conditions.discomfort -= 1>> <<set _char.mental_conditions.arousal += 2>> <<set $player.mental_conditions.arousal += 2>> <</if>> <<set _mins = 1 + dice(1, 2)>> <<addmins _mins>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ @@#sex3;<<button "Undress">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You start taking off " + setup.titleCase(_char.first_name) + "\'s clothes but " + setup.PRONOUNS[_char.gender]["?he"] + " pulls away, clearly not comfortable being completely naked in front of you.">> <<if _query_action("undress", 15, _query_str)>> <<set _responses = [ "You ferociously undress " + setup.titleCase(_char.first_name) + " revealing " + setup.PRONOUNS[_char.gender]["?his"] + " " + _char.physical_traits.skin_color + " skin." ]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes jolt down and " + setup.PRONOUNS[_char.gender]["?he"] + " uses " + setup.PRONOUNS[_char.gender]["?his"] + " arms and hands to try to cover as much skin as possible.")>> <<set _char.mental_conditions.discomfort += 3>> <<set _char.slave_traits.willpower -= 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " helps you undress " + setup.PRONOUNS[_char.gender]["?him"] + "self. As " + setup.PRONOUNS[_char.gender]["?his"] + " clothes come off you can already smell the lewd juices coalescing.")>> <<set _char.mental_conditions.discomfort -= 1>> <<set _char.mental_conditions.arousal += 2>> <<set $player.mental_conditions.arousal += 2>> <</if>> <<set _sex_state.top = false>> <<set _sex_state.bottom = false>> <<set _mins = 2 + dice(1, 2)>> <<addmins _mins>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = [ "You ferociously undress " + setup.titleCase(_char.first_name) + " revealing " + setup.PRONOUNS[_char.gender]["?his"] + " " + _char.physical_traits.skin_color + " skin." ]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes jolt down and " + setup.PRONOUNS[_char.gender]["?he"] + " uses " + setup.PRONOUNS[_char.gender]["?his"] + " arms and hands to try to cover as much skin as possible.")>> <<set _char.mental_conditions.discomfort += 3>> <<set _char.slave_traits.willpower -= 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " helps you undress " + setup.PRONOUNS[_char.gender]["?him"] + "self. As " + setup.PRONOUNS[_char.gender]["?his"] + " clothes come off you can already smell the lewd juices coalescing.")>> <<set _char.mental_conditions.discomfort -= 1>> <<set _char.mental_conditions.arousal += 2>> <<set $player.mental_conditions.arousal += 2>> <</if>> <<set _sex_state.top = false>> <<set _sex_state.bottom = false>> <<set _mins = 2 + dice(1, 2)>> <<addmins _mins>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ @@#sex4;<<button "Remove top">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You start slowly taking off " + setup.titleCase(_char.first_name) + "\'s top but " + setup.PRONOUNS[_char.gender]["?he"] + " pulls away, clearly not comfortable bearing their chest in front of you.">> <<if _query_action("top", 7, _query_str)>> <<set _str = "You remove " + setup.titleCase(_char.first_name) + "\'s top revealing " + setup.PRONOUNS[_char.gender]["?his"] + " " + _char.physical_traits.skin_color + " ">> <<if _char.gender == 0>> <<set _str += "chest.">> <<else>> <<set _str += "perky boobs.">> <</if>> <<set _responses = [_str]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes jolt down and " + setup.PRONOUNS[_char.gender]["?he"] + " uses " + setup.PRONOUNS[_char.gender]["?his"] + " arms and hands to try to cover as much skin as possible.")>> <<set _char.mental_conditions.discomfort += 2>> <<set _char.slave_traits.willpower -= 0.3>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " removes " + setup.PRONOUNS[_char.gender]["?his"] + " top with a lustful look in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes.")>> <<set _char.mental_conditions.discomfort -= 1>> <<set _char.mental_conditions.arousal += 1.5>> <<set $player.mental_conditions.arousal += 1.5>> <</if>> <<set _sex_state.top = false>> <<set _mins = 1 + dice(1, 2)>> <<addmins _mins>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _str = "You remove " + setup.titleCase(_char.first_name) + "\'s top revealing " + setup.PRONOUNS[_char.gender]["?his"] + " " + _char.physical_traits.skin_color + " ">> <<if _char.gender == 0>> <<set _str += "chest.">> <<else>> <<set _str += "perky boobs.">> <</if>> <<set _responses = [_str]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes jolt down and " + setup.PRONOUNS[_char.gender]["?he"] + " uses " + setup.PRONOUNS[_char.gender]["?his"] + " arms and hands to try to cover as much skin as possible.")>> <<set _char.mental_conditions.discomfort += 2>> <<set _char.slave_traits.willpower -= 0.3>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " removes " + setup.PRONOUNS[_char.gender]["?his"] + " top with a lustful look in " + setup.PRONOUNS[_char.gender]["?his"] + "eyes.")>> <<set _char.mental_conditions.discomfort -= 1>> <<set _char.mental_conditions.arousal += 1.5>> <<set $player.mental_conditions.arousal += 1.5>> <</if>> <<set _sex_state.top = false>> <<set _mins = 1 + dice(1, 2)>> <<addmins _mins>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ @@#sex5;<<button "Remove bottoms">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You start slowly taking off " + setup.titleCase(_char.first_name) + "\'s bottoms but " + setup.PRONOUNS[_char.gender]["?he"] + " pulls away, clearly not comfortable bearing their genitals in front of you.">> <<if _query_action("bottom", 12, _query_str)>> <<set _str = "You remove " + setup.titleCase(_char.first_name) + "\'s bottom revealing " + setup.PRONOUNS[_char.gender]["?his"] + " " + _char.physical_traits.skin_color + " ">> <<if _char.gender == 1>> <<set _str += "pussy.">> <<else>> <<set _str += "cock.">> <</if>> <<set _responses = [_str]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes jolt down and " + setup.PRONOUNS[_char.gender]["?he"] + " uses " + setup.PRONOUNS[_char.gender]["?his"] + " arms and hands to try to cover as much skin as possible.")>> <<set _char.mental_conditions.discomfort += 2>> <<set _char.slave_traits.willpower -= 0.3>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " removes " + setup.PRONOUNS[_char.gender]["?his"] + " bottoms revealing a \ precum dripping down " + setup.PRONOUNS[_char.gender]["?his"] + " legs. The air fills with a smell of sexual opulence.")>> <<set _char.mental_conditions.discomfort -= 1>> <<set _char.mental_conditions.arousal += 1.5>> <<set $player.mental_conditions.arousal += 1.5>> <</if>> <<set _sex_state.bottom = false>> <<set _mins = 1 + dice(1, 2)>> <<addmins _mins>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _str = "You remove " + setup.titleCase(_char.first_name) + "\'s bottom revealing " + setup.PRONOUNS[_char.gender]["?his"] + " " + _char.physical_traits.skin_color + " ">> <<if _char.gender == 1>> <<set _str += "pussy.">> <<else>> <<set _str += "cock.">> <</if>> <<set _responses = [_str]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes jolt down and " + setup.PRONOUNS[_char.gender]["?he"] + " uses " + setup.PRONOUNS[_char.gender]["?his"] + " arms and hands to try to cover as much skin as possible.")>> <<set _char.mental_conditions.discomfort += 2>> <<set _char.slave_traits.willpower -= 0.3>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " removes " + setup.PRONOUNS[_char.gender]["?his"] + " bottoms revealing a \ precum dripping down " + setup.PRONOUNS[_char.gender]["?his"] + " legs. The air fills with a smell of sexual opulence.")>> <<set _char.mental_conditions.discomfort -= 1>> <<set _char.mental_conditions.arousal += 1.5>> <<set $player.mental_conditions.arousal += 1.5>> <</if>> <<set _sex_state.bottom = false>> <<set _mins = 1 + dice(1, 2)>> <<addmins _mins>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ <<disable>> @@#sex6;<<button "Fondel boobs">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You reach for " + setup.titleCase(_char.first_name) + "\'s " + _char_chest + ", but " + setup.PRONOUNS[_char.gender]["?he"] + " pulls away in reflex, clearly uncomfortable with being groped.">> <<if _query_action("fondel", 15, _query_str)>> <<set _responses = ["You cup your hands on " + setup.titleCase(_char.first_name) + "\'s " + _char.physical_traits.skin_color + " " + _char_chest + ", interlacing " + setup.PRONOUNS[_char.gender]["?his"] + " nipples in your fingers."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes glaze over with tears as " + setup.PRONOUNS[_char.gender]["?he"] + " gets forcefully groped.")>> <<set _char.mental_conditions.discomfort += 3>> <<set _char.slave_traits.willpower -= 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as their nipples harden under your touch.")>> <<set _char.mental_conditions.discomfort -= 2>> <<set _char.mental_conditions.arousal += 2.5>> <<set $player.mental_conditions.arousal += 1>> <</if>> <<set _mins = 1 + dice(1, 2)>> <<addmins _mins>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = ["You cup your hands on " + setup.titleCase(_char.first_name) + "\'s " + _char.physical_traits.skin_color + " " + _char_chest + ", interlacing " + setup.PRONOUNS[_char.gender]["?his"] + " nipples in your fingers."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s eyes glaze over with tears as " + setup.PRONOUNS[_char.gender]["?he"] + " gets forcefully groped.")>> <<set _char.mental_conditions.discomfort += 3>> <<set _char.slave_traits.willpower -= 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as their nipples harden under your touch.")>> <<set _char.mental_conditions.discomfort -= 2>> <<set _char.mental_conditions.arousal += 2.5>> <<set $player.mental_conditions.arousal += 1>> <</if>> <<set _mins = 1 + dice(1, 2)>> <<addmins _mins>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ <</disable>><<disable>> @@#sex7;<<button "Finger pussy">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You slide your hand down " + setup.titleCase(_char.first_name) + " body then back up " + setup.PRONOUNS[_char.gender]["?his"] + " leg, approaching " + setup.PRONOUNS[_char.gender]["?his"] + " ">> <<if _char.gender == 0>> <<set _query_str += "cock,">> <<else>> <<set _query_str += "pussy,">> <</if>> <<set _query_str += " but " + setup.PRONOUNS[_char.gender]["?he"] + " pushes your hand away, clearly uninterested in you \ groping " + setup.PRONOUNS[_char.gender]["?his"] + " ">> <<if _char.gender == 0>> <<set _query_str += "penis.">> <<else>> <<set _query_str += "vagina.">> <</if>> <<if _query_action("finger", 20, _query_str)>> <<if _char.gender == 0>> /* TODO: Implement for male */ <<set _responses = []>> <<else>> <<set _responses = ["You insert your fingers one-by-one into " + setup.titleCase(_char.first_name) + "\'s wet \ pussy, sliding over her clitorus making her slightly squirm."]>> <</if>> <<if _sex_state.rape>> <<if _char.gender == 0>> <<set _responses.push("Under construction for males.")>> <<else>> <<set _responses.push("Tears drip down " + setup.titleCase(_char.first_name) + " face as she can\'t help but moan \ and feel pleasure from your touch.")>> <<set _responses.push(_char.dialogue("Please stop it, I\'m begging you..."))>> <<set _responses.push(setup.titleCase(setup.PRONOUNS[_char.gender]["?his"]) + " pleading gets interrupted by a moan.")>> <</if>> <<set _char.mental_conditions.discomfort += 3>> <<set _char.mental_conditions.arousal += 2>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<if _char.gender == 0>> <<set _responses.push("Under construction for males.")>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as squelshing sounds of her pussy \ echo through the air.")>> <</if>> <<set _char.mental_conditions.discomfort -= 2>> <<set _char.mental_conditions.arousal += 4>> <<set $player.mental_conditions.arousal += 1>> <</if>> <<set _mins = 2 + dice(1, 3)>> <<addmins _mins>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<if _char.gender == 0>> /* TODO: Implement for male */ <<set _responses = []>> <<else>> <<set _responses = ["You insert your fingers one-by-one into " + setup.titleCase(_char.first_name) + "\'s wet \ pussy, sliding over her clitorus making her slightly squirm."]>> <</if>> <<if _sex_state.rape>> <<if _char.gender == 0>> <<set _responses.push("Under construction for males.")>> <<else>> <<set _responses.push("Tears drip down " + setup.titleCase(_char.first_name) + " face as she can\'t help but moan \ and feel pleasure from your touch.")>> <<set _responses.push(_char.dialogue("Please stop it, I\'m begging you..."))>> <<set _responses.push(setup.titleCase(setup.PRONOUNS[_char.gender]["?his"]) + " pleading gets interrupted by a moan.")>> <</if>> <<set _char.mental_conditions.discomfort += 3>> <<set _char.mental_conditions.arousal += 2>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<if _char.gender == 0>> <<set _responses.push("Under construction for males.")>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as squelshing sounds of her pussy \ echo through the air.")>> <</if>> <<set _char.mental_conditions.discomfort -= 2>> <<set _char.mental_conditions.arousal += 4>> <<set $player.mental_conditions.arousal += 1>> <</if>> <<set _mins = 2 + dice(1, 3)>> <<addmins _mins>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ <</disable>><<disable>> @@#sex8;<<button "Lick pussy">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You lower your head down inbetween " + setup.titleCase(_char.first_name) + "\'s legs but" + setup.PRONOUNS[_char.gender]["?he"] + " quickly closes them, weary of your attempt at licking " + setup.PRONOUNS[_char.gender]["?his"]>> <<if _char.gender == 0>> <<set _query_str += " cock.">> <<else>> <<set _query_str += " pussy.">> <</if>> <<if _query_action("lick", 25, _query_str)>> <<if _char.gender == 0>> /* TODO: Implement for male */ <<set _responses = []>> <<else>> <<set _responses = ["You plunge your tongue into " + setup.titleCase(_char.first_name) + "\'s pussy, tasting \ her aroma and all of her juices."]>> <</if>> <<if _sex_state.rape>> <<if _char.gender == 0>> <<set _responses.push("Under construction for males.")>> <<else>> <<set _responses.push("Tears drip down " + setup.titleCase(_char.first_name) + " face as she can\'t help but moan \ and feel pleasure from your tongue swirling in her pussy.")>> <<set _responses.push(_char.dialogue("Please stop it, I\'m begging you... not... there..."))>> <<set _responses.push(setup.titleCase(setup.PRONOUNS[_char.gender]["?his"]) + " pleading gets interrupted by several moans as she bites \ her lips to stop from screaming.")>> <</if>> <<set _char.mental_conditions.discomfort += 2>> <<set _char.mental_conditions.arousal += 6>> <<set _char.slave_traits.willpower -= 2>> <<else>> <<if _char.gender == 0>> <<set _responses.push("Under construction for males.")>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " bites her lip to stop herself from screaming out in pleasure,")>> <<set _responses.push(_char.dialogue("Ohhh yess!! Just like that, don\'t stop!"))>> <</if>> <<set _char.mental_conditions.discomfort -= 6>> <<set _char.mental_conditions.arousal += 10>> <<set $player.mental_conditions.arousal += 3>> <</if>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<if _char.gender == 0>> /* TODO: Implement for male */ <<set _responses = []>> <<else>> <<set _responses = ["You plunge your tongue into " + setup.titleCase(_char.first_name) + "\'s pussy, tasting \ her aroma and all of her juices."]>> <</if>> <<if _sex_state.rape>> <<if _char.gender == 0>> <<set _responses.push("Under construction for males.")>> <<else>> <<set _responses.push("Tears drip down " + setup.titleCase(_char.first_name) + " face as she can\'t help but moan \ and feel pleasure from your tongue swirling in her pussy.")>> <<set _responses.push(_char.dialogue("Please stop it, I\'m begging you... not... there..."))>> <<set _responses.push(setup.titleCase(setup.PRONOUNS[_char.gender]["?his"]) + " pleading gets interrupted by several moans as she bites \ her lips to stop from screaming.")>> <</if>> <<set _char.mental_conditions.discomfort += 2>> <<set _char.mental_conditions.arousal += 6>> <<set _char.slave_traits.willpower -= 2>> <<else>> <<if _char.gender == 0>> <<set _responses.push("Under construction for males.")>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " bites her lip to stop herself from screaming out in pleasure,")>> <<set _responses.push(_char.dialogue("Ohhh yess!! Just like that, don\'t stop!"))>> <</if>> <<set _char.mental_conditions.discomfort -= 6>> <<set _char.mental_conditions.arousal += 10>> <<set $player.mental_conditions.arousal += 3>> <</if>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ <</disable>> @@#sex9;<<button "Footjob">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You grab " + setup.titleCase(_char.first_name) + "\'s " + _char.physical_traits.skin_color + "feet and position your " + _cock + " between them, but " + setup.PRONOUNS[_char.gender]["?he"] + " pulls back, \ clearly uncomfortable.">> <<if _query_action("footjob", 30, _query_str)>> <<set _responses = ["You slide your wet " + _cock + " between " + setup.titleCase(_char.first_name) + "\'s feet and \ toes which have become wet with your spit and precum."]>> <<if _sex_state.rape>> <<if _char.sex_fetishes.feet gt 30>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s looks at you with dead eyes, but having a foot fetish, " + setup.PRONOUNS[_char.gender]["?he"] + " is secretly getting very turned on.")>> <<set _char.mental_conditions.arousal += 4>> <<set _char.slave_traits.willpower -= 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s looks at you with dead eyes, and hates that " + setup.PRONOUNS[_char.gender]["?he"] + " is being humiliated like this.")>> <<set _char.mental_conditions.discomfort += 4>> <<set _char.slave_traits.willpower -= 0.5>> <</if>> <<else>> <<if _char.sex_fetishes.feet gt 30>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as their toes get fucked by you.")>> <<set _char.mental_conditions.arousal += 5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " enjoys having their feet be used as sex objects.")>> <<set _char.mental_conditions.arousal += 2>> <<set _char.sex_fetishes.feet += 1>> <</if>> <<set _char.mental_conditions.discomfort -= 2>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 1 + dice(1, 2)>> <<addmins _mins>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = ["You slide your wet " + _cock + " between " + setup.titleCase(_char.first_name) + "\'s feet and \ toes which have become wet with your spit and precum."]>> <<if _sex_state.rape>> <<if _char.sex_fetishes.feet gt 30>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s looks at you with dead eyes, but having a foot fetish, " + setup.PRONOUNS[_char.gender]["?he"] + " is secretly getting very turned on.")>> <<set _char.mental_conditions.arousal += 4>> <<set _char.slave_traits.willpower -= 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s looks at you with dead eyes, and hates that " + setup.PRONOUNS[_char.gender]["?he"] + " is being humiliated like this.")>> <<set _char.mental_conditions.discomfort += 4>> <<set _char.slave_traits.willpower -= 0.5>> <</if>> <<else>> <<if _char.sex_fetishes.feet gt 30>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as their toes get fucked by you.")>> <<set _char.mental_conditions.arousal += 5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " enjoys having their feet be used as sex objects.")>> <<set _char.mental_conditions.arousal += 2>> <<set _char.sex_fetishes.feet += 1>> <</if>> <<set _char.mental_conditions.discomfort -= 2>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 1 + dice(1, 2)>> <<addmins _mins>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ @@#sex10;<<button "Oral sex">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You grab your " + _cock + " out of your pants and pull " + setup.titleCase(_char.first_name) + "\'s " + _char.physical_traits.hair_color + " hair to line up " + setup.PRONOUNS[_char.gender]["?his"] + " head, but " + setup.PRONOUNS[_char.gender]["?he"] + " clearly tries to pull way, not fond of the idea of giving you a blowjob.">> <<if _query_action("oral", 40, _query_str)>> <<set _responses = ["You insert your " + _cock + " into " + setup.titleCase(_char.first_name) + "\'s mouth."]>> <<if _sex_state.rape>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face, but being a cumslut, " + setup.PRONOUNS[_char.gender]["?she"] + " looks \ forward to being filled with your cum.")>> <<set _char.mental_conditions.arousal += 4>> <<set _char.slave_traits.willpower -= 1>> <<set _char.slave_traits.trust -= 2>> <<else>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face as you start to orally rape " + setup.PRONOUNS[_char.gender]["?him"] + ".")>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 2>> <<set _char.slave_traits.obedience -= 10>> <<set _char.slave_traits.trust -= 2>> <<set _char.sex_prefs.oral -= 1>> <</if>> <<else>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as your precum touches their tongue. As \ a cumslut they are gushing wet just thinking about your cum.")>> <<set _responses.push(_char.dialogue("Please give me your cum; I want to bath and be filled with it!"))>> <<set _char.mental_conditions.arousal += 5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " takes in your " + _cock + " with hunger in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes.")>> <<set _char.mental_conditions.arousal += 3>> <</if>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_oral_actions" "hidden">> <<addclass "#sex_actions" "hidden">> <<set _open_menu = "#sex_oral_actions">> <<set _sex_state.last_action = "oral">> <<set _sex_state.bottom = false>> <<set _sex_state.top = false>> <<stop>> <</if>><</repeat>><</silently>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = ["You insert your " + _cock + " into " + setup.titleCase(_char.first_name) + "\'s mouth."]>> <<if _sex_state.rape>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face, but being a cumslut, " + setup.PRONOUNS[_char.gender]["?she"] + " looks \ forward to being filled with your cum.")>> <<set _char.mental_conditions.arousal += 4>> <<set _char.slave_traits.willpower -= 1>> <<set _char.slave_traits.trust -= 2>> <<else>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face as you start to orally rape " + setup.PRONOUNS[_char.gender]["?him"] + ".")>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 2>> <<set _char.slave_traits.obedience -= 10>> <<set _char.slave_traits.trust -= 2>> <<set _char.sex_prefs.oral -= 1>> <</if>> <<else>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as your precum touches their tongue. As \ a cumslut they are gushing wet just thinking about your cum.")>> <<set _responses.push(_char.dialogue("Please give me your cum; I want to bath and be filled with it!"))>> <<set _char.mental_conditions.arousal += 5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " takes in your " + _cock + " with hunger in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes.")>> <<set _char.mental_conditions.arousal += 3>> <</if>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_oral_actions" "hidden">> <<addclass "#sex_actions" "hidden">> <<set _open_menu = "#sex_oral_actions">> <<set _sex_state.last_action = "oral">> <<set _sex_state.bottom = false>> <<set _sex_state.top = false>> <<stop>> <</if>><</repeat>><</silently>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ <<disable>> @@#sex11;<<button "Vaginal sex">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You grab your " + _cock + " out of your pants and line it up with " + setup.titleCase(_char.first_name) + "\'s vagina.">> <<if _query_action("vaginal", 50, _query_str)>> <<set _responses = ["You insert your " + _cock + " into " + setup.titleCase(_char.first_name) + "\'s wet pussy."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Anything but that! Please!..."))>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 3>> <<set _char.slave_traits.obedience -= 15>> <<set _char.slave_traits.trust -= 7>> <<set _char.sex_prefs.vaginal -= 1>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck me!"))>> <<set _char.mental_conditions.arousal += 7>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_vaginal_actions" "hidden">> <<addclass "#sex_actions" "hidden">> <<set _open_menu = "#sex_vaginal_actions">> <<set _sex_state.last_action = "vaginal">> <<set _sex_state.bottom = false>> <<set _sex_state.top = false>> <<stop>> <</if>><</repeat>><</silently>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = ["You insert your " + _cock + " into " + setup.titleCase(_char.first_name) + "\'s wet pussy."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Anything but that! Please!..."))>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 3>> <<set _char.slave_traits.obedience -= 15>> <<set _char.slave_traits.trust -= 7>> <<set _char.sex_prefs.vaginal -= 1>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck me!"))>> <<set _char.mental_conditions.arousal += 7>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_vaginal_actions" "hidden">> <<addclass "#sex_actions" "hidden">> <<set _open_menu = "#sex_vaginal_actions">> <<set _sex_state.last_action = "vaginal">> <<set _sex_state.bottom = false>> <<set _sex_state.top = false>> <<stop>> <</if>><</repeat>><</silently>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ <</disable>><<disable>> @@#sex12;<<button "Anal sex">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You grab your " + _cock + " out of your pants and line it up with " + setup.titleCase(_char.first_name) + "\'s asshole.">> <<if _query_action("anal", 65, _query_str)>> <<set _responses = ["You insert your " + _cock + " into " + setup.titleCase(_char.first_name) + "\'s tight asshole."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Not my ass, it hurts so much! Please!..."))>> <<set _char.mental_conditions.anger += 20>> <<set _char.mental_conditions.discomfort += 20>> <<set _char.slave_traits.willpower -= 5>> <<set _char.slave_traits.obedience -= 20>> <<set _char.slave_traits.trust -= 10>> <<set _char.sex_prefs.anal -= 2>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck my ass!"))>> <<set _char.mental_conditions.arousal += 8>> <</if>> <<set $player.mental_conditions.arousal += 15>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_anal_actions" "hidden">> <<addclass "#sex_actions" "hidden">> <<set _open_menu = "#sex_anal_actions">> <<set _sex_state.last_action = "anal">> <<set _sex_state.bottom = false>> <<set _sex_state.top = false>> <<stop>> <</if>><</repeat>><</silently>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = ["You insert your " + _cock + " into " + setup.titleCase(_char.first_name) + "\'s tight asshole."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Not my ass, it hurts so much! Please!..."))>> <<set _char.mental_conditions.anger += 20>> <<set _char.mental_conditions.discomfort += 20>> <<set _char.slave_traits.willpower -= 5>> <<set _char.slave_traits.obedience -= 20>> <<set _char.slave_traits.trust -= 10>> <<set _char.sex_prefs.anal -= 2>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck my ass!"))>> <<set _char.mental_conditions.arousal += 8>> <</if>> <<set $player.mental_conditions.arousal += 15>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_anal_actions" "hidden">> <<addclass "#sex_actions" "hidden">> <<set _open_menu = "#sex_anal_actions">> <<set _sex_state.last_action = "anal">> <<set _sex_state.bottom = false>> <<set _sex_state.top = false>> <<stop>> <</if>><</repeat>><</silently>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ <</disable>> <div></div> @@#sex_back;<<button "Back">> <<set $enable_menu = true>> <<if def _back_action && (ndef _refresh || !_refresh)>> <<addclass "#sex_actions" "hidden">> <<removeclass `_back_action` "hidden">> <<addclass "#sex_info" "hidden">> <<removeclass "#info" "hidden">> <<else>> <<goto `passage()`>> <</if>> <</button>>@@ <<disable>> @@#sex_done;<<button "Done" `passage()`>> <<if _sex_state.orgasm>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties.<br>" + _char.dialogue("That was great, let\'s do that again sometime...") + "(" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, 5) + ")">> <<set _char.slave_traits.obedience += 5>> <<elseif _char.mental_conditions.arousal gt 20 && _char.mental_conditions.discomfort lt _char.mental_conditions.arousal>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties. You can tell that " + setup.PRONOUNS[_char.gender]["?he"] + " found the experience quite pleasurable (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, (_char.mental_conditions.arousal - _char.mental_conditions.discomfort) / 10) + ").">> <<set _char.slave_traits.obedience += (_char.mental_conditions.arousal - _char.mental_conditions.discomfort) / 10>> <<elseif _char.mental_conditions.discomfort gt _char.mental_conditions.arousal>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties. You can tell that " + setup.PRONOUNS[_char.gender]["?he"] + " did not find the experience pleasurable (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, _char.mental_conditions.arousal - _char.mental_conditions.discomfort) + ").">> <<set _char.slave_traits.obedience += (_char.mental_conditions.arousal - _char.mental_conditions.discomfort)>> <<else>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties.">> <</if>> /* Re-enable menu */ <<set $enable_menu = true>> <<set $to_simulate.add(_char.key)>> /* Last round for good measure */ <<set _to_round = _char.key>> <<include round>> <<run _get_changes()>> <</button>>@@ <</disable>> /* Specifications for logging */ <<set _sex_buttons = ["#sex_back", "#sex_done", "#sex_oral_back", "#sex_oral_done", "#sex_vaginal_back", "#sex_vaginal_done", "#sex_anal_back", "#sex_anal_done", "#sex_vaginal_oral", "#sex_vaginal_anal", "#sex_anal_oral", "#sex_anal_vaginal", "#sex_oral_vaginal", "#sex_oral_anal"]>> <<for _i = 1; _i lte 12; _i++>> <<set _sex_buttons.push("#sex" + _i)>> <<set _sex_buttons.push("#sex_oral" + _i)>> <<set _sex_buttons.push("#sex_vaginal" + _i)>> <<set _sex_buttons.push("#sex_anal" + _i)>> <</for>> </div> /* Include the other actions */ <<include sexOralActions>> <<include sexVaginalActions>> <<include sexAnalActions>> <<include sexRejectionActions>> <<timed 50ms>><<script>> var _t = State.temporary; _t.calc_thresh = (action) => { let char = State.temporary.char; let player = State.variables.player; let thresh = (char.slave_traits.obedience - 60 + char.slave_traits.trust - char.mental_conditions.anger + char.mental_conditions.arousal * (3 - State.variables.difficulty) - char.mental_conditions.discomfort); if (action == "oral" || action == "vaginal" || action == "anal") { thresh += player.sex_skills[action] + char.sex_prefs[action]; } else { } if (_t.sex_state.orgasm) { thresh += 1000; } return thresh; }; _t.query_action = (action, modifier, text) => { _t.check_fucking(); let sex_state = _t.sex_state; _t.thresh = modifier - _t.calc_thresh(action); if (sex_state.rape || (action in sex_state.boundaries && sex_state.boundaries[action]) || _t.thresh < 0) { sex_state.boundaries[action] = true; return true; } else { if (text !== "undefined") { if (!_t.is_fucking) { setup.mainLog_append_delayed([text + "<br>" + _t.char.dialogue("Uh, what the fuck are you doing?")]); } else { setup.mainLog_append_delayed([text + "<br>" + _t.char.dialogue("Um... no.")]); } } _t.rejection_processed = false; _t.action = action; $.wiki("<<include sexRejectionEngine>>"); return false; } }; _t.update_state = () => { let _t = State.temporary; let char = _t.char; let player = State.variables.player; if (_t.is_fucking) { $("#sex_back button").addClass("disabled"); $("#sex_back button").prop("disabled", true); $("#sex_done button").removeClass("disabled"); $("#sex_done button").prop("disabled", false); } if (!_t.sex_state.top) { $("#sex4 button").addClass("disabled"); $("#sex4 button").prop("disabled", true); $("#sex6 button").removeClass("disabled"); $("#sex6 button").prop("disabled", false); } if (!_t.sex_state.bottom) { $("#sex5 button").addClass("disabled"); $("#sex5 button").prop("disabled", true); $("#sex7 button").removeClass("disabled"); $("#sex7 button").prop("disabled", false); $("#sex8 button").removeClass("disabled"); $("#sex8 button").prop("disabled", false); if (player.gender == 0) { if (char.gender != 0) { $("#sex11 button").removeClass("disabled"); $("#sex11 button").prop("disabled", false); } $("#sex12 button").removeClass("disabled"); $("#sex12 button").prop("disabled", false); } else { if (char.gender == 0 && (player.has_equipped("strap-on") != "none")) { $("#sex12 button").removeClass("disabled"); $("#sex12 button").prop("disabled", false); } } } if (!_t.sex_state.top && !_t.sex_state.bottom) { $("#sex3 button").addClass("disabled"); $("#sex3 button").prop("disabled", true); } }; $("#sex_actions").find("button").on("click", (event) => { var self = $(event.currentTarget); if (self.html() != "Back" && self.html() != "Done") { let _t = State.temporary; let char = _t.char; let player = State.variables.player; _t.to_round = _t.char.key; $.wiki("<<include round>>"); $.wiki("<<include updateBars>>"); } }); _t.check_fucking = () => { let _t = State.temporary; let char = _t.char; if (!_t.is_fucking) { _t.is_fucking = true; char.limits.fuck -= 1; } }; _t.check_arousal = () => { let _t = State.temporary; let char = _t.char; let player = State.variables.player; _t.update_state(); if (char.mental_conditions.arousal >= char.mental_conditions.max_arousal) { if (_t.sex_state.last_action in char.sex_prefs) { char.sex_prefs[_t.sex_state.last_action] += 1; } } if (player.mental_conditions.arousal >= player.mental_conditions.max_arousal && char.mental_conditions.arousal >= char.mental_conditions.max_arousal) { let str = "This pushes both you and " + setup.titleCase(char.first_name) + " off the edge, resulting \ in a simultaneous orgasm of euphoria."; if (player.gender == 0) { str += " You quickly grab your cock and need to cum."; _t.is_cumming = true; } _t.responses.push(str); str = "Fuck that was so good!"; if (player.gender == 0) { str += " Give it to me!"; } _t.responses.push(char.dialogue(str)); _t.responses.push("Where do you cum?"); _t.sex_state.orgasm = true; char.mental_conditions.arousal = 0; char.conditions.stamina -= 30; let loop = () => { setTimeout(() => { if (_t.done_appending !== "undefined" && _t.done_appending) { $(_t.open_menu).addClass("hidden"); $("#action_bar").wiki("<<include sexCumActions>>"); } else { loop(); } }, 20); }; setTimeout(() => { loop(); }, 50); } else if (player.mental_conditions.arousal >= player.mental_conditions.max_arousal) { let str = "This pushes both you off the edge, making you move into orgasm."; if (player.gender == 0) { str += " You quickly grab your cock and need to cum."; _t.is_cumming = true; } _t.responses.push(str); _t.responses.push("Where do you cum?"); let loop = () => { setTimeout(() => { if (_t.done_appending !== "undefined" && _t.done_appending) { $(_t.open_menu).addClass("hidden"); $("#action_bar").wiki("<<include sexCumActions>>"); } else { loop(); } }, 20); }; setTimeout(() => { loop(); }, 50); } else if (char.mental_conditions.arousal >= char.mental_conditions.max_arousal) { _t.responses.push("This pushes " + setup.titleCase(char.first_name) + " off the edge, making " + setup.PRONOUNS[char.gender]["?him"] + " orgasm immediately."); _t.responses.push(char.dialogue("Fuck that was so good!")); _t.sex_state.orgasm = true; char.mental_conditions.arousal = 0; char.conditions.stamina -= 30; } char.conditions.stamina -= 5 * (1 + State.variables.difficulty / 10); setup.mainLog_append_delayed(_t.responses, _t.sex_buttons); delete _t.responses; }; _t.get_changes = () => { let _t = State.temporary; let char = _t.char; let prechar = _t.prechar; $.wiki("<<showChanges \'Player Changes\'>>"); let ret = "<div><b>" + setup.titleCase(char.first_name) + " Changes</b>"; let change_str = "<ul class=\"mainLogChanges\">"; for (let condition of setup.CONDITIONS) { if (char.conditions[condition] != prechar.conditions[condition]) { if (condition in setup.POSITIVES.character) { change_str += "<li>" + setup.titleCase(condition) + ": " + setup.show_change_html(prechar.conditions[condition], char.conditions[condition], setup.POSITIVES.character[condition]) } else { change_str += "<li>" + setup.titleCase(condition) + ": " + setup.show_change(prechar.conditions[condition], char.conditions[condition]) } } } for (let slave_trait of setup.SLAVE_TRAITS) { if (char.slave_traits[slave_trait] != prechar.slave_traits[slave_trait]) { let tit = setup.titleCase(slave_trait); if (slave_trait == "obedience") { tit = "Affection"; } if (slave_trait == "trust" && (char.slave_traits[slave_trait] > prechar.slave_traits[slave_trait])) { change_str += "<li>" + tit + ": " + setup.show_change_html(prechar.slave_traits[slave_trait], char.slave_traits[slave_trait]); } else { if (slave_trait in setup.POSITIVES.character) { change_str += "<li>" + tit + ": " + setup.show_change_html(prechar.slave_traits[slave_trait], char.slave_traits[slave_trait], setup.POSITIVES.character[slave_trait]); } else { change_str += "<li>" + tit + ": " + setup.show_change(prechar.slave_traits[slave_trait], char.slave_traits[slave_trait]); } } change_str += "</li>"; } } for (let condition of setup.MENTAL_CONDITIONS) { if (condition == "arousal") { continue; } if (char.mental_conditions[condition] != prechar.mental_conditions[condition]) { if (condition in setup.POSITIVES.character) { change_str += "<li>" + setup.titleCase(condition) + ": " + setup.show_change_html(prechar.mental_conditions[condition], char.mental_conditions[condition], setup.POSITIVES.character[condition]); } else { change_str += "<li>" + setup.titleCase(condition) + ": " + setup.show_change(prechar.mental_conditions[condition], char.mental_conditions[condition]); } change_str += "</li>"; } } for (let sex_pref of setup.SEX_PREFS) { if (char.sex_prefs[sex_pref] != prechar.sex_prefs[sex_pref]) { if (sex_pref in setup.POSITIVES.character) { change_str += "<li>" + setup.titleCase(sex_pref) + " Preference: " + setup.show_change_html(prechar.sex_prefs[sex_pref], char.sex_prefs[sex_pref], setup.POSITIVES.character[sex_pref]); } else { change_str += "<li>" + setup.titleCase(sex_pref) + " Preference: " + setup.show_change(prechar.sex_prefs[sex_pref], char.sex_prefs[sex_pref]); } change_str += "</li>"; } } for (let sex_fetish of setup.SEX_FETISHES) { if (char.sex_fetishes[sex_fetish] != prechar.sex_fetishes[sex_fetish]) { if (sex_fetish in setup.POSITIVES.character) { change_str += "<li>" + setup.titleCase(sex_fetish) + " Fetish: " + setup.show_change_html(prechar.sex_fetishes[sex_fetish], char.sex_fetishes[sex_fetish], setup.POSITIVES.character[sex_fetish]); } else { change_str += "<li>" + setup.titleCase(sex_fetish) + " Fetish: " + setup.show_change(prechar.sex_fetishes[sex_fetish], char.sex_fetishes[sex_fetish]); } change_str += "</li>"; } } change_str += "</ul></div>"; ret += change_str; State.variables._temp_to_log += ret; }; <</script>><</timed>> <</nobr>>
<<nobr>> <div id="sex_anal_actions" class="action container row col longbutton fiveQuarters smalltext hidden" style="--rows: 4; --cols: 4"> @@#sex_anal1;<<button "Continue">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _thresh = _calc_thresh("anal", 65)>> <<set _responses = [ "You continue fucking " + setup.titleCase(_char.first_name) + "\'s ass. As you thrust in and out \ air is pumped into her anal cavity," ]>> <<if _sex_state.rape>> <<set _responses.push(_char.dialogue(either([ "Please stop you\'re going to tear me apart!", "It hurts! It hurts!!", "Just fucking kill me already please just end it!" ])))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.willpower -= 1>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.trust -= 2>> <<set _char.sex_prefs.anal -= 0.5>> <<else>> <<set _responses.push(_char.dialogue(either([ "Yes! Please keep fucking me just like that!", "Fuck me harder!", "Please don\'t stop!", "Ahhh fuck that\'s so good!" ])))>> <<set _char.mental_conditions.arousal += 7>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_anal2;<<button "Choke">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _thresh = _calc_thresh("anal", 70)>> <<set _responses = [ "As you continue fucking " + setup.titleCase(_char.first_name) + "\'s ass, you put your hands around " + setup.PRONOUNS[_char.gender]["?him"] + " neck restricting her breath." ]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s face grows red and tears stream down " + setup.PRONOUNS[_char.gender]["?his"] + " cheek,")>> <<set _responses.push(_char.dialogue(either([ "What the fuck! Let go of me!", "It hurts! It hurts!!", "Just fucking kill me already please just end it, choke me to death right here." ])))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.trust -= 2>> <<set _char.sex_prefs.anal -= 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s face grows red and " + setup.PRONOUNS[_char.gender]["?his"] + " eyes roll back in bliss,")>> <<set _responses.push(_char.dialogue(either([ "Yes! Choke me " + _char.address + ", harder!", "Fuck me harder!", "Ack... Fuck... Keep going.", "Ahhh fuck that\'s so good!" ])))>> <<set _char.mental_conditions.arousal += 7>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _char.slave_traits.willpower -= 1>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_anal3;<<button "Insult">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _thresh = _calc_thresh("anal", 75)>> <<set _responses = [ "You continue thrusting in " + setup.titleCase(_char.first_name) + "\'s ass." ]>> <<set _responses.push($player.dialogue(either([ "You\'re such a fucking disgusting little whore.", "You little bitch aren\'t worth anything except a little piece of shit for me to fuck.", "Take it you fucking cunt.", "I bet this is the only reason anyone keeps you around, you fucking shit.", "You\'re nothing just a little fuck toy aren\'t you?" ])))>> <<if _sex_state.rape>> <<set _responses.push("You can tell from the tears forming in " + setup.titleCase(_char.first_name) + "\'s eyes that \ you went too far.")>> <<set _responses.push(_char.dialogue("What the fu..."))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<set _responses.push(_char.dialogue("Yeah, that\'s right, ahhhh!"))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 2>> <</if>> <<set _responses.push(setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " gets cut off by your continual pounding of " + setup.PRONOUNS[_char.gender]["?his"] + " ass.")>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_anal4;<<button "Spit in mouth">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _thresh = _calc_thresh("anal", 80)>> <<set _responses = [ "As you continue thrusting in " + setup.titleCase(_char.first_name) + "\'s ass, you force open " + setup.PRONOUNS[_char.gender]["?his"] + " mouth and spit into it." ]>> <<set _responses.push($player.dialogue(either([ "Drink my fucking spit you ugly pig.", "You like that you disgusting piece of shit?", "You\'re nothing, just a piece of trash to spit and cum on." ])))>> <<if _sex_state.rape>> <<set _responses.push("You can tell from the tears forming in " + setup.titleCase(_char.first_name) + "\'s eyes that \ you went too far.")>> <<set _responses.push(_char.dialogue("What the fu..."))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<set _responses.push(_char.dialogue("Yeah, that\'s right, give me more I deser..."))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 3>> <</if>> <<set _responses.push(setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " gets cut off by your continual pounding of " + setup.PRONOUNS[_char.gender]["?his"] + " ass.")>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_anal5;<<button "Slap">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _thresh = _calc_thresh("anal", 85)>> <<set _responses = [ "As you are drilling " + setup.titleCase(_char.first_name) + "\'s wet pussy you slap " + setup.PRONOUNS[_char.gender]["?him"] + " across the face." ]>> <<if _sex_state.rape>> <<set _responses.push(_char.dialogue("Ow what the fuck! That fucking hurt!"))>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.obedience -= 10>> <<set _char.slave_traits.willpower -= 2>> <<else>> <<set _responses.push(_char.dialogue("Oh my god yes! Punish me! Slap me more like a little whore!"))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 5>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_anal6;<<button "Spank">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _thresh = _calc_thresh("anal", 70)>> <<set _responses = [$player.dialogue(either([ "You\'re such a bad little whore.", "You\'ve been naughty and need to be punished.", ]))]>> <<set _responses.push( "You start spanking " + setup.titleCase(_char.first_name) + " ass until it\'s red," )>> <<if _sex_state.rape>> <<set _responses.push(_char.dialogue("Ow! Stop that hurts!"))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<set _responses.push(_char.dialogue("Oh my god yes! Punish me!"))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 3>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_anal_vaginal;<<button "Oral sex">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You take your " + _cock + " out of " + setup.titleCase(_char.first_name) + "\'s asshole and pull " + setup.titleCase(_char.first_name) + "\'s " + _char.physical_traits.hair_color + " hair to line up " + setup.PRONOUNS[_char.gender]["?his"] + " head, but " + setup.PRONOUNS[_char.gender]["?he"] + " clearly tries to pull way, not fond of the idea of giving you a blowjob.">> <<if _query_action("oral", 40, _query_str)>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s juices into " + setup.PRONOUNS[_char.gender]["?his"] + " mouth."]>> <<if _sex_state.rape>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face, but being a cumslut, " + setup.PRONOUNS[_char.gender]["?she"] + " looks \ forward to being filled with your cum.")>> <<set _char.mental_conditions.arousal += 4>> <<set _char.slave_traits.willpower -= 1>> <<set _char.slave_traits.trust -= 2>> <<else>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face as you start to orally rape " + setup.PRONOUNS[_char.gender]["?him"] + ".")>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 2>> <<set _char.slave_traits.obedience -= 10>> <<set _char.slave_traits.trust -= 2>> <<set _char.sex_prefs.oral -= 1>> <</if>> <<else>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as your precum touches their tongue. As \ a cumslut they are gushing wet just thinking about your cum.")>> <<set _responses.push(_char.dialogue("Please give me your cum; I want to bath and be filled with it!"))>> <<set _char.mental_conditions.arousal += 5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " takes in your " + _cock + " with hunger in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes.")>> <<set _char.mental_conditions.arousal += 3>> <</if>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_oral_actions" "hidden">> <<addclass "#sex_anal_actions" "hidden">> <<stop>> <</if>><</repeat>><</silently>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s juices into " + setup.PRONOUNS[_char.gender]["?his"] + " mouth."]>> <<if _sex_state.rape>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face, but being a cumslut, " + setup.PRONOUNS[_char.gender]["?she"] + " looks \ forward to being filled with your cum.")>> <<set _char.mental_conditions.arousal += 4>> <<set _char.slave_traits.willpower -= 1>> <<set _char.slave_traits.trust -= 2>> <<else>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face as you start to orally rape " + setup.PRONOUNS[_char.gender]["?him"] + ".")>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 2>> <<set _char.slave_traits.obedience -= 10>> <<set _char.slave_traits.trust -= 2>> <<set _char.sex_prefs.oral -= 1>> <</if>> <<else>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as your precum touches their tongue. As \ a cumslut they are gushing wet just thinking about your cum.")>> <<set _responses.push(_char.dialogue("Please give me your cum; I want to bath and be filled with it!"))>> <<set _char.mental_conditions.arousal += 5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " takes in your " + _cock + " with hunger in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes.")>> <<set _char.mental_conditions.arousal += 3>> <</if>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_anal_actions" "hidden">> <<addclass "#sex_oral_actions" "hidden">> <<stop>> <</if>><</silently>><</repeat>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ @@#sex_anal_anal;<<button "Vaginal sex">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You pull your " + _cock + " out of " + setup.titleCase(_char.first_name) + "\'s asshole and line it up with ">> <<if _query_action("vaginal", 50, _query_str)>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s anal juices into " + setup.PRONOUNS[_char.gender]["?his"] + " wet pussy."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Anything but that! Please!..."))>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 3>> <<set _char.slave_traits.obedience -= 15>> <<set _char.slave_traits.trust -= 7>> <<set _char.sex_prefs.vaginal -= 1>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck me!"))>> <<set _char.mental_conditions.arousal += 7>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_vaginal_actions" "hidden">> <<addclass "#sex_anal_actions" "hidden">> <<set _open_menu = "#sex_vaginal_actions">> <<set _sex_state.last_action = "vaginal">> <<stop>> <</if>><</repeat>><</silently>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s anal juices into " + setup.PRONOUNS[_char.gender]["?his"] + " wet pussy."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Anything but that! Please!..."))>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 3>> <<set _char.slave_traits.obedience -= 15>> <<set _char.slave_traits.trust -= 7>> <<set _char.sex_prefs.vaginal -= 1>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck me!"))>> <<set _char.mental_conditions.arousal += 7>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_vaginal_actions" "hidden">> <<addclass "#sex_anal_actions" "hidden">> <<set _open_menu = "#sex_vaginal_actions">> <<set _sex_state.last_action = "vaginal">> <<stop>> <</if>><</repeat>><</silently>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ <div style="grid-row: 4; grid-column: 2"> @@#sex_anal_back;<<button "Back">> <<run setup.mainLog_append_delayed(["You take your " + _cock + " out of " + setup.titleCase(_char.first_name) + "\'s ass."])>> <<removeclass "#sex_actions" "hidden">> <<addclass "#sex_anal_actions" "hidden">> <</button>>@@ </div> <div style="grid-row: 4; grid-column: 3"> @@#sex_anal_done;<<button "Done" `passage()`>> <<if _sex_state.orgasm>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties.<br>" + _char.dialogue("That was great, let\'s do that again sometime...") + "(" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, 5) + ")">> <<set _char.slave_traits.obedience += 5>> <<elseif _char.mental_conditions.arousal gt 20 && _char.mental_conditions.discomfort lt _char.mental_conditions.arousal>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties. You can tell that " + setup.PRONOUNS[_char.gender]["?he"] + " found the experience quite pleasurable (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, (_char.mental_conditions.arousal - _char.mental_conditions.discomfort) / 10) + ").">> <<set _char.slave_traits.obedience += (_char.mental_conditions.arousal - _char.mental_conditions.discomfort) / 10>> <<elseif _char.mental_conditions.discomfort gt _char.mental_conditions.arousal>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties. You can tell that " + setup.PRONOUNS[_char.gender]["?he"] + " did not find the experience pleasurable (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, _char.mental_conditions.arousal - _char.mental_conditions.discomfort) + ").">> <<set _char.slave_traits.obedience += (_char.mental_conditions.arousal - _char.mental_conditions.discomfort)>> <<else>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties.">> <</if>> /* Re-enable menu */ <<set $enable_menu = true>> <<set $to_simulate.add(_char.key)>> /* Last round for good measure */ <<set _to_round = _char.key>> <<include round>> <<run _get_changes()>> <</button>>@@ </div> <<timed 50ms>><<script>> $("#sex_anal_actions").find("button").on("click", (event) => { var self = $(event.currentTarget); if (self.html() != "Back" && self.html() != "Done") { let _t = State.temporary; let char = _t.char; let player = State.variables.player; _t.to_round = _t.char.key; $.wiki("<<include round>>"); $.wiki("<<include updateBars>>"); if (self.html() != "Oral sex" && self.html() != "Vaginal sex" && self.html() != "Anal sex") { let thresh = setup.progressive_gain_chance(player.sex_skills.anal, 100, "root_inverse"); let roll = randomFloat(1.0); if (roll < thresh) { player.sex_skills.anal += 1 } } } }); <</script>><</timed>> </div> <</nobr>>
<<nobr>> <div id="sex_cum_actions" class="action container row col longbutton fiveQuarters smalltext" style="--rows: 4; --cols: 4"> @@#sex_cum1;<<button "On ground">> <<set $_temp_to_log = "You pull back and cum all over the ground. ">> <</button>>@@ @@#sex_cum2;<<button "On face">> <<set _thresh = _calc_thresh("cum", 100)>> <<set $_temp_to_log = "You cum all over " + setup.titleCase(_char.first_name) + "\'s face. ">> <<if _thresh gt 0 && !_sex_state.rape>> /* TODO, add different text for fails */ <<else>> <<set _char.sex_fetishes.cum += 1>> <</if>> <</button>>@@ @@#sex_cum3;<<button "In mouth">> <<set _thresh = _calc_thresh("cum", 100)>> <<set $_temp_to_log = "You cum directly into " + setup.titleCase(_char.first_name) + "\'s mouth. ">> <<if _thresh gt 0 && !_sex_state.rape>> <<else>> <<set _char.sex_fetishes.cum += 1>> <<set _char.mental_conditions.cum_addition += 1>> <</if>> <</button>>@@ <<disable>> @@#sex_cum4;<<button "In throat">> <<set _thresh = _calc_thresh("cum", 100)>> <<set $_temp_to_log = "You cum directly into " + setup.titleCase(_char.first_name) + "\'s throat. ">> <<if _thresh gt 0 && !_sex_state.rape>> <<else>> <<set _char.sex_fetishes.cum += 1>> <<set _char.mental_conditions.cum_addition += 1>> <</if>> <</button>>@@ <</disable>><<disable>> @@#sex_cum5;<<button "In pussy">> <<set $_temp_to_log = "You cum directly into " + setup.titleCase(_char.first_name) + "\'s pussy. ">> <</button>>@@ <</disable>><<disable>> @@#sex_cum6;<<button "In ass">> <<set $_temp_to_log = "You cum directly into " + setup.titleCase(_char.first_name) + "\'s ass. ">> <</button>>@@ <</disable>> </div> <<for _i = 1; _i lte 6; _i++>> <<set _sex_buttons.push("#sex_cum" + _i)>> <</for>> <<timed 50ms>> <<if _sex_state.last_action == "oral">> <<removeclass "#sex_cum4 button" "disabled">> <<run $("#sex_cum4 button").prop("disabled", false)>> <<elseif _sex_state.last_action == "vaginal">> <<removeclass "#sex_cum5 button" "disabled">> <<run $("#sex_cum5 button").prop("disabled", false)>> <<elseif _sex_state.last_action == "anal">> <<removeclass "#sex_cum6 button" "disabled">> <<run $("#sex_cum6 button").prop("disabled", false)>> <</if>> <<script>> $("#sex_cum_actions").find("button").on("click", () => { let _t = State.temporary; let _v = State.variables; let char = _t.char; let sex_state = _t.sex_state; let player = _v.player; if (sex_state.orgasm) { _v._temp_to_log += "You leave " + setup.titleCase(char.first_name) + " to " + setup.PRONOUNS[char.gender]["?his"] + " duties.<br>" + char.dialogue("That was great, let\'s do that again sometime...") + "(" + setup.titleCase(char.first_name) + "\'s Affection " + setup.show_change_html(0, 5) + ")"; char.slave_traits.obedience += 5; } else if (char.mental_conditions.arousal > 20 && char.mental_conditions.discomfort < char.mental_conditions.arousal) { _v._temp_to_log += "You leave " + setup.titleCase(char.first_name) + " to " + setup.PRONOUNS[char.gender]["?his"] + " duties. You can tell that " + setup.PRONOUNS[char.gender]["?he"] + " found the experience quite pleasurable (" + setup.titleCase(char.first_name) + "\'s Affection " + setup.show_change_html(0, (char.mental_conditions.arousal - char.mental_conditions.discomfort) / 10) + ")."; char.slave_traits.obedience += (char.mental_conditions.arousal - char.mental_conditions.discomfort) / 10; } else if (char.mental_conditions.discomfort > char.mental_conditions.arousal) { _v._temp_to_log += "You leave " + setup.titleCase(char.first_name) + " to " + setup.PRONOUNS[char.gender]["?his"] + " duties. You can tell that " + setup.PRONOUNS[char.gender]["?he"] + " did not find the experience pleasurable (" + setup.titleCase(char.first_name) + "\'s Affection " + setup.show_change_html(0, char.mental_conditions.arousal - char.mental_conditions.discomfort) + ")."; char.slave_traits.obedience += (char.mental_conditions.arousal - char.mental_conditions.discomfort); } else { _v._temp_to_log += "You leave " + setup.titleCase(char.first_name) + " to " + setup.PRONOUNS[char.gender]["?his"] + " duties."; } player.mental_conditions.arousal = 0; _v.enable_menu = true; _v.to_simulate.add(char.key); _t.to_round = char.key; $.wiki("<<include round>>"); _t.get_changes(); $.wiki("<<goto `passage()`>>"); }); <</script>> <</timed>> <</nobr>>
<<nobr>> <div id="sex_info" class="subbackground hidden" style="grid-row: 1 / span 3; grid-column: 4 / span 1"> <div class="container threeRow" style="font-weight: normal; height: 100%; width: 100%"> <center> <h3 style="margin-bottom:0"><<= setup.locations.get(passage()).name>></h3> <p style="margin: 0"> <<= setup.locations.get_sub_address(passage())>> </p> <br> <div id="sex_datetime"> <<time12hr>> <br> <<date>> </div> </center> <center style="padding: 20px"> <strong id="sex_info_name"></strong> <div id="sex_bars"></div> <strong><<= setup.titleCase($player.first_name)>></strong> <div id="sex_player_bars"></div> </center> </div> </div> <</nobr>>
<<nobr>> <div id="sex_oral_actions" class="action container row col longbutton fiveQuarters smalltext hidden" style="--rows: 4; --cols: 4"> @@#sex_oral1;<<button "Continue">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _thresh = _calc_thresh("oral", 40)>> <<set _responses = [ "You continue fucking " + setup.titleCase(_char.first_name) + "\'s face. As you thrust in and out \ saliva drips from her mouth," ]>> <<if _sex_state.rape>> <<set _responses.push(_char.dialogue(either([ "Hurk... ack... Please... ack... stop... please...", "I can\'t... ack... breath... stop...", ])))>> <<set _char.mental_conditions.anger += 2>> <<set _char.mental_conditions.discomfort += 3>> <<set _char.slave_traits.willpower -= 1>> <<set _char.slave_traits.obedience -= 2>> <<set _char.slave_traits.trust -= 0.5>> <<set _char.sex_prefs.oral -= 0.5>> <<else>> <<set _responses.push(_char.dialogue(either([ "MMmmmm, you taste so good!", "I love choking on your cock!", "Mmmm... ack... don\'t... hurk... stop..." ])))>> <<set _char.mental_conditions.arousal += 5>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_oral2;<<button "Deep throat">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _thresh = _calc_thresh("oral", 75)>> <<set _responses = [ "You push " + setup.titleCase(_char.first_name) + "\'s head all the way to the base of your " + _cock + " and \ hold " + setup.PRONOUNS[_char.gender]["?him"] + " down." ]>> <<if _sex_state.rape>> <<set _responses.push(_char.dialogue(either([ "Hurk... ack... Please... ack... stop... please...", "I can\'t... ack... breath... stop...", ])))>> <<set _char.mental_conditions.anger += 7>> <<set _char.mental_conditions.discomfort += 7>> <<set _char.slave_traits.willpower -= 1>> <<set _char.slave_traits.obedience -= 7>> <<set _char.slave_traits.trust -= 2>> <<set _char.sex_prefs.oral -= 2>> <<else>> <<set _responses.push(_char.dialogue(either([ "MMmmmm, you taste so good!", "I love choking on your cock!", "Mmmm... ack... don\'t... hurk... stop..." ])))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 2>> <</if>> <<set $player.mental_conditions.arousal += 15>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_oral3;<<button "Insult">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _thresh = _calc_thresh("oral", 45)>> <<set _responses = [ "You continue thrusting into " + setup.titleCase(_char.first_name) + "\'s mouth." ]>> <<set _responses.push($player.dialogue(either([ "You\'re such a fucking disgusting little whore.", "You little bitch aren\'t worth anything except a little piece of shit for me to fuck.", "Take it you fucking cunt.", "I bet this is the only reason anyone keeps you around, you fucking shit.", "You\'re nothing just a little fuck toy aren\'t you?" ])))>> <<if _sex_state.rape>> <<set _responses.push("You can tell from the tears forming in " + setup.titleCase(_char.first_name) + "\'s eyes that \ you went too far.")>> <<set _responses.push(_char.dialogue("What the fu..."))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<set _responses.push(_char.dialogue("Yeah, that\'s rig..."))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 2>> <</if>> <<set _responses.push(setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " gets cut off by you shoving your " + _cock + " back into " + setup.PRONOUNS[_char.gender]["?his"] + " mouth.")>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_oral4;<<button "Spit in mouth">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _thresh = _calc_thresh("oral", 50)>> <<set _responses = [ "You momentarily take your " + _cock + " out of " + setup.titleCase(_char.first_name) + "\'s mouth and spit into it." ]>> <<set _responses.push($player.dialogue(either([ "Drink my fucking spit you ugly pig.", "You like that you disgusting piece of shit?", "You\'re nothing, just a piece of trash to spit and cum on." ])))>> <<if _sex_state.rape>> <<set _responses.push("You can tell from the tears forming in " + setup.titleCase(_char.first_name) + "\'s eyes that \ you went too far.")>> <<set _responses.push(_char.dialogue("What the fu..."))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<set _responses.push(_char.dialogue("Yeah, that\'s right, give me more I deser..."))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 3>> <</if>> <<set _responses.push(setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " gets cut off by you shoving your " + _cock + " back into " + setup.PRONOUNS[_char.gender]["?his"] + " mouth.")>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_oral5;<<button "Slap">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _thresh = _calc_thresh("oral", 55)>> <<set _responses = [ "As you are face fucking " + setup.titleCase(_char.first_name) + ", you slap " + setup.PRONOUNS[_char.gender]["?him"] + " across the face." ]>> <<if _sex_state.rape>> <<set _responses.push(_char.dialogue("Ow what the fuck! That fucking hurt!"))>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.obedience -= 10>> <<set _char.slave_traits.willpower -= 2>> <<else>> <<set _responses.push(_char.dialogue("Oh my god yes! Punish me! Slap me more like a little whore!"))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 5>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_oral6;<<button "Spank">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<set _thresh = _calc_thresh("oral", 45)>> <<set _responses = [$player.dialogue(either([ "You\'re such a bad little whore.", "You\'ve been naughty and need to be punished.", ]))]>> <<set _responses.push( "You start spanking " + setup.titleCase(_char.first_name) + " ass until it\'s red," )>> <<if _sex_state.rape>> <<set _responses.push(_char.dialogue("Ow! Stop that hurts!"))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<set _responses.push(_char.dialogue("Oh my god yes! Punish me!"))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 3>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</if>> <</button>>@@ @@#sex_oral_vaginal;<<button "Vaginal sex">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You pull your " + _cock + " out of " + setup.titleCase(_char.first_name) + "\'s mouth and line it up with ">> <<if _query_action("vaginal", 50, _query_str)>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s saliva into " + setup.PRONOUNS[_char.gender]["?his"] + " wet pussy."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Anything but that! Please!..."))>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 3>> <<set _char.slave_traits.obedience -= 15>> <<set _char.slave_traits.trust -= 7>> <<set _char.sex_prefs.vaginal -= 1>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck me!"))>> <<set _char.mental_conditions.arousal += 7>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_vaginal_actions" "hidden">> <<addclass "#sex_oral_actions" "hidden">> <<set _open_menu = "#sex_vaginal_actions">> <<set _sex_state.last_action = "vaginal">> <<stop>> <</if>><</repeat>><</silently>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s saliva into " + setup.PRONOUNS[_char.gender]["?his"] + " wet pussy."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Anything but that! Please!..."))>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 3>> <<set _char.slave_traits.obedience -= 15>> <<set _char.slave_traits.trust -= 7>> <<set _char.sex_prefs.vaginal -= 1>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck me!"))>> <<set _char.mental_conditions.arousal += 7>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_vaginal_actions" "hidden">> <<addclass "#sex_oral_actions" "hidden">> <<set _open_menu = "#sex_vaginal_actions">> <<set _sex_state.last_action = "vaginal">> <<stop>> <</if>><</repeat>><</silently>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ @@#sex_oral_anal;<<button "Anal sex">> <<if $player.conditions.stamina lt 5>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 5>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You grab your " + _cock + " out of " + setup.titleCase(_char.first_name) + "\'s mouth and line it up with " + setup.PRONOUNS[_char.gender]["?his"] + " asshole.">> <<if _query_action("anal", 65, _query_str)>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s saliva into " + setup.PRONOUNS[_char.gender]["?his"] + " tight asshole."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Not my ass, it hurts so much! Please!..."))>> <<set _char.mental_conditions.anger += 20>> <<set _char.mental_conditions.discomfort += 20>> <<set _char.slave_traits.willpower -= 5>> <<set _char.slave_traits.obedience -= 20>> <<set _char.slave_traits.trust -= 10>> <<set _char.sex_prefs.anal -= 2>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck my ass!"))>> <<set _char.mental_conditions.arousal += 8>> <</if>> <<set $player.mental_conditions.arousal += 15>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_anal_actions" "hidden">> <<addclass "#sex_oral_actions" "hidden">> <<set _open_menu = "#sex_anal_actions">> <<set _sex_state.last_action = "anal">> <<stop>> <</if>><</repeat>><</silently>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s saliva into " + setup.PRONOUNS[_char.gender]["?his"] + " tight asshole."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Not my ass, it hurts so much! Please!..."))>> <<set _char.mental_conditions.anger += 20>> <<set _char.mental_conditions.discomfort += 20>> <<set _char.slave_traits.willpower -= 5>> <<set _char.slave_traits.obedience -= 20>> <<set _char.slave_traits.trust -= 10>> <<set _char.sex_prefs.anal -= 2>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck my ass!"))>> <<set _char.mental_conditions.arousal += 8>> <</if>> <<set $player.mental_conditions.arousal += 15>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_anal_actions" "hidden">> <<addclass "#sex_oral_actions" "hidden">> <<set _open_menu = "#sex_anal_actions">> <<set _sex_state.last_action = "anal">> <<stop>> <</if>><</repeat>><</silently>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ <div style="grid-row: 4; grid-column: 2"> @@#sex_oral_back;<<button "Back">> <<run setup.mainLog_append_delayed(["You take your " + _cock + " out of " + setup.titleCase(_char.first_name) + "\'s mouth."])>> <<removeclass "#sex_actions" "hidden">> <<addclass "#sex_oral_actions" "hidden">> <</button>>@@ </div> <div style="grid-row: 4; grid-column: 3"> @@#sex_oral_done;<<button "Done" `passage()`>> <<if _sex_state.orgasm>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties.<br>" + _char.dialogue("That was great, let\'s do that again sometime...") + "(" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, 5) + ")">> <<set _char.slave_traits.obedience += 5>> <<elseif _char.mental_conditions.arousal gt 20 && _char.mental_conditions.discomfort lt _char.mental_conditions.arousal>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties. You can tell that " + setup.PRONOUNS[_char.gender]["?he"] + " found the experience quite pleasurable (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, (_char.mental_conditions.arousal - _char.mental_conditions.discomfort) / 10) + ").">> <<set _char.slave_traits.obedience += (_char.mental_conditions.arousal - _char.mental_conditions.discomfort) / 10>> <<elseif _char.mental_conditions.discomfort gt _char.mental_conditions.arousal>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties. You can tell that " + setup.PRONOUNS[_char.gender]["?he"] + " did not find the experience pleasurable (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, _char.mental_conditions.arousal - _char.mental_conditions.discomfort) + ").">> <<set _char.slave_traits.obedience += (_char.mental_conditions.arousal - _char.mental_conditions.discomfort)>> <<else>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties.">> <</if>> /* Re-enable menu */ <<set $enable_menu = true>> <<set $to_simulate.add(_char.key)>> /* Last round for good measure */ <<set _to_round = _char.key>> <<include round>> <<run _get_changes()>> <</button>>@@ </div> </div> <<timed 50ms>><<script>> $("#sex_oral_actions").find("button").on("click", (event) => { var self = $(event.currentTarget); if (self.html() != "Back" && self.html() != "Done") { let _t = State.temporary; let char = _t.char; let player = State.variables.player; _t.to_round = _t.char.key; $.wiki("<<include round>>"); $.wiki("<<include updateBars>>"); if (self.html() != "Oral sex" && self.html() != "Vaginal sex" && self.html() != "Anal sex") { let thresh = setup.progressive_gain_chance(player.sex_skills.oral, 100, "root_inverse"); let roll = randomFloat(1.0); if (roll < thresh) { player.sex_skills.oral += 1 } } } }); <</script>><</timed>> <</nobr>>
<<nobr>> <div id="sex_rejection_actions" class="action container row col longbutton fiveQuarters smalltext hidden" style="--rows: 4; --cols: 4"> @@#sexRejection1;<<button "Nevermind">> <<set _rejection_response = false>> <<set _responses = [ $player.dialogue("Nevermind.") ]>> <</button>>@@ @@#sexRejection2;<<button "Convince">> <<set _roll = dice(1, $player.get_status_prop("manipulation") + $difficulty) - $difficulty>> <<if _roll gt _thresh>> <<set _rejection_response = true>> <<set _responses = [ setup.pass("manipulation"), $player.dialogue("Come on... it\'s me..."), _char.dialogue("Hm... okay... you\'ve convinced me.") ]>> <<set _sex_state.boundaries[_action] = true>> <<else>> <<set _rejection_response = false>> <<if _sex_state.convince_num == 0>> <<set _responses = [ setup.fail("manipulation"), $player.dialogue("Come on... it\'s me...") ]>> <<if _is_fucking>> <<set _responses.push(_char.dialogue("No... maybe next time, but not right now."))>> <<else>> <<set _responses.push(_char.dialogue("Are you joking?"))>> <</if>> <<elseif _sex_state.convince_num == 1>> <<set _responses = [ setup.fail("manipulation"), $player.dialogue("Come on... it\'s me..."), _char.dialogue("Stop trying to push my boundaries."), "(" + setup.titleCase(_char.first_name) + "\'s Anger " + setup.show_change_html(0, 3, false) + ", Willpower " + setup.show_change_html(0, 1, false) + ")." ]>> <<set _char.mental_conditions.anger += 3>> <<set _char.slave_traits.willpower += 1>> <<elseif _sex_state.convince_num == 2>> <<set _responses = [ setup.fail("manipulation"), $player.dialogue("Come on... it\'s me..."), _char.dialogue("I told you to quit pushing me, I\'m warning you."), "(" + setup.titleCase(_char.first_name) + "\'s Anger " + setup.show_change_html(0, 5, false) + ", Willpower " + setup.show_change_html(0, 4, false) + ")." ]>> <<set _char.mental_conditions.anger += 5>> <<set _char.slave_traits.willpower += 4>> <<elseif _sex_state.convince_num gt 2>> <<set $_temp_to_log = _char.dialogue("Get the fuck away from me!") + setup.titleCase(_char.first_name) + " pushes you and walks away (" + setup.titleCase(_char.first_name) + "\'s Anger " + setup.show_change_html(0, 10, false) + ", Willpower " + setup.show_change_html(0, 6, false) + ").">> <<set _char.mental_conditions.anger += 10>> <<set _char.slave_traits.willpower += 6>> /* Re-enable menu */ <<set $enable_menu = true>> /* Last round for good measure */ <<set _to_round = _char.key>> <<include round>> <<goto `passage()`>> <</if>> <<set _sex_state.convince_num += 1>> <</if>> <</button>>@@ @@#sexRejection3;<<button "Use Force">> <<if _higher_status>> <<set _sex_state.rape = true>> <<set _responses = [ "You look " + setup.PRONOUNS[_char.gender]["?him"] + " dead in the eyes, reminding " + setup.PRONOUNS[_char.gender]["?him"] + " of your status. Tears weld up in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes as " + setup.PRONOUNS[_char.gender]["?he"] + " sinks down and complies (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -15) + ", Anger " + setup.show_change_html(0, 20, false) + ", Fear " + setup.show_change_html(0, 10) + ", Willpower " + setup.show_change_html(0, -10, false) + ")." ]>> <<set _rejection_response = true>> <<elseif $player.slaves.contains(_char.key)>> <<set _sex_state.rape = true>> <<set _responses = [ "You look " + setup.PRONOUNS[_char.gender]["?him"] + " dead in the eyes, reminding " + setup.PRONOUNS[_char.gender]["?him"] + " that you own them. Tears weld up in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes as " + setup.PRONOUNS[_char.gender]["?he"] + " sinks down and complies (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -15) + ", Anger " + setup.show_change_html(0, 20, false) + ", Fear " + setup.show_change_html(0, 10) + ", Willpower " + setup.show_change_html(0, -10, false) + ")." ]>> <<set _rejection_response = true>> <<else>> <<set _roll = $player.stats.strength + dice(1, 6 + $difficulty) - $difficulty>> <<if _roll - _char.stats.strength gte 15>> <<set _sex_state.rape = true>> <<set _responses = [ "You quickly overpower " + setup.PRONOUNS[_char.gender]["?him"] + " making it obvious that if " + setup.PRONOUNS[_char.gender]["?he"] + " resisted anymore it would put " + setup.PRONOUNS[_char.gender]["?his"] + " life in danger (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -15) + ", Anger " + setup.show_change_html(0, 20, false) + ", Fear " + setup.show_change_html(0, 10) + ", Willpower " + setup.show_change_html(0, -10, false) + ")." ]>> <<set _rejection_response = true>> <<else>> <<set _responses = []>> <<set $_temp_to_log = setup.fail("strength") + "You try to pin " + setup.titleCase(_char.first_name) + " down, but " + setup.PRONOUNS[_char.gender]["?he"] + " overpowers you in an instant.<br>" + _char.dialogue("You fucking piece of garbage, let me show you what happens \ when you try something on me.") + setup.titleCase(_char.first_name) + " proceeds to crush you and kick you in the \ genitals. After what seems like forever " + setup.PRONOUNS[_char.gender]["?he"] + " \ shoves you away " + "(Health " + setup.show_change_html(0, -20) + ", Willpower " + setup.show_change_html(0, -10) + ") " + "(" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -15) + ", Anger " + setup.show_change_html(0, 20, false) + ", Trust " + setup.show_change_html(0, -15) + ")." >> <<set _responses = []>> <<set $player.conditions.health -= 20>> <<set $player.slave_traits.willpower -= 10>> <<set _char.slave_traits.obedience -= 15>> /* Do not induce fear */ <<if _char.slave_traits.trust gt 0>> <<set _char.slave_traits.trust = Math.clamp(_char.slave_traits.trust - 15, 0, 100)>> <</if>> <<set _char.mental_conditions.anger += 20>> /* Re-enable menu */ <<set $enable_menu = true>> /* Last round for good measure */ <<set _to_round = _char.key>> <<include round>> <<run _get_changes()>> <<goto `passage()`>> <</if>> <</if>> <<if _rape>> <<set _char.slave_traits.obedience -= 15>> <<set _char.slave_traits.trust -= 10>> <<set _char.slave_traits.willpower -= 10>> <<set _char.mental_conditions.anger += 20>> <<set _char.mental_conditions.suspicion = 100>> <<set _to_round = _char.key>> <<include round>> <</if>> <</button>>@@ </div> <<timed 50ms>><<silently>><<script>> $("#sex_rejection_actions").find("button").on("click", (event) => { let _t = State.temporary; setup.mainLog_append_delayed(_t.responses, _t.sex_buttons); let loop = () => { setTimeout(() => { if (_t.done_appending != "undefined" && _t.done_appending) { _t.rejection_processed = true; $(_t.open_menu).removeClass("hidden"); $("#sex_rejection_actions").addClass("hidden"); delete _t.action; } else { loop(); } }, 20); }; loop(); }); <</script>><</silently>><</timed>> <</nobr>>
<<nobr>> /* Hide sex actions and show UI */ <<removeclass "#sex_rejection_actions" "hidden">> <<addclass _open_menu "hidden">> <</nobr>>
<<nobr>> <<set _char = $characters[$selected]>> /* Preround for bars */ <<set _to_round = _char.key>> <<include round>> /* Presex copy of character for assessing changes */ <<set _prechar = clone(_char)>> <<set _player = clone($player)>> /* Disable menu */ <<set $enable_menu = false>> /* Show sex ui and atune to character */ <<run $("#action_bar").wiki("<<include sexActions>>")>> <<set _open_menu = "#sex_actions">> <<removeclass "#sex_actions" "hidden">> <<run $("#sex_info_name").html(setup.titleCase(_char.first_name))>> <<run $("#sex_bars").wiki("\ <<showmeter \"char_anger_bar\" `_char.mental_conditions.anger/100`>>\ <<showmeter \"char_arousal_bar\" `_char.mental_conditions.arousal/50`>>\ <<showmeter \"char_discomfort_bar\" `_char.mental_conditions.discomfort/50`>>\ <<showmeter \"char_stamina_bar\" `_char.conditions.stamina/_char.conditions.max_stamina`>>\ <<showmeter \"char_willpower_bar\" `_char.slave_traits.willpower/100`>>\ ")>> <<run $("#sex_player_bars").wiki("\ <<showmeter \"player_arousal_bar\" `$player.mental_conditions.arousal/50`>>\ <<showmeter \"player_stamina_bar\" `$player.conditions.stamina/$player.conditions.max_stamina`>>\ ")>> <<removeclass "#sex_info" "hidden">> /* Whether player is higher status than player */ <<set _higher_status = ($player.get_status("nipon") == "slave" && _char.status == "low_slave") || ($player.get_status("nipon") == "high_slave" && _char.status == "slave") || ($player.get_status("nipon") == "high_slave" && _char.status == "low_slave")>> /* Cock for male, strap-on for female */ <<set _cock = "cock">> <<if $player.gender == 1>> <<set _cock = "strap-on">> <</if>> <<set _char_cock = "cock">> <<if _char.gender == 1>> <<set _char_cock = "strap-on">> <</if>> <<set _chest = "chest">> <<if $player.gender == 1>> <<set _chest = "boobs">> <</if>> <<set _char_chest = "chest">> <<if _char.gender == 1>> <<set _char_chest = "boobs">> <</if>> /* Whether the sex as started */ <<set _is_fucking = false>> <<set _sex_state = { "rape": false, "top": true, "bottom": true, "convince_num": 0, "boundaries": { "kiss": false, "fondel": false, "finger": false, "lick": false, "footjob": false, "oral": false, "vaginal": false, "anal": false }, "orgasm": false, "last_action": "none" }>> /* TODO: Implement for males */ /* Initial prompt for user action */ <<set _responses = ["You approach " + setup.titleCase(_char.first_name) + " with a lustful look in your eye,"]>> <<run setup.mainLog_append_delayed(_responses)>> <</nobr>>
<<nobr>> <div id="sex_vaginal_actions" class="action container row col longbutton fiveQuarters smalltext hidden" style="--rows: 4; --cols: 4"> @@#sex_vaginal1;<<button "Continue">> <<set _thresh = _calc_thresh("vaginal", 50)>> <<set _responses = [ "You continue fucking " + setup.titleCase(_char.first_name) + "\'s wet pussy. As you thrust in and out \ the air fills with a scent of opulent lewdness." ]>> <<if _sex_state.rape>> <<set _responses.push(_char.dialogue(either([ "Please stop it! It hurts so mu...", "I beg you to stop! I promise I\'ll be a better sla...", ])))>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s begging is interrupted by a moan.")>> <<set _char.mental_conditions.anger += 2>> <<set _char.mental_conditions.arousal += 2>> <<set _char.slave_traits.willpower -= 1>> <<set _char.slave_traits.obedience -= 2>> <<set _char.slave_traits.trust -= 0.5>> <<else>> <<set _responses.push(_char.dialogue(either([ "Yes yes yes yes yes, don\'t stop!!", "Fuck me harder!", "Give it to me, please fill me up!" ])))>> <<set _char.mental_conditions.arousal += 7>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</button>>@@ @@#sex_vaginal2;<<button "Choke">> <<set _thresh = _calc_thresh("vaginal", 55)>> <<set _responses = [ "As you continue fucking " + setup.titleCase(_char.first_name) + "\'s pussy, you put your hands around " + setup.PRONOUNS[_char.gender]["?him"] + " neck restricting " + setup.PRONOUNS[_char.gender]["?his"] + " breath." ]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s face grows red and tears stream down " + setup.PRONOUNS[_char.gender]["?his"] + " cheek,")>> <<set _responses.push(_char.dialogue(either([ "What the fuck! Let go of me!", "It hurts! It hurts!!", "Just fucking kill me already please just end it, choke me to death right here." ])))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.trust -= 2>> <<set _char.sex_prefs.vaginal -= 0.5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + "\'s face grows red and " + setup.PRONOUNS[_char.gender]["?his"] + " eyes roll back in bliss,")>> <<set _responses.push(_char.dialogue(either([ "Yes! Choke me " + _char.address + ", harder!", "Fuck me harder!", "Ack... Fuck... Keep going.", "Ahhh fuck that\'s so good!" ])))>> <<set _char.mental_conditions.arousal += 7>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _char.slave_traits.willpower -= 1>> <<run _check_arousal()>> <</button>>@@ @@#sex_vaginal3;<<button "Insult">> <<set _thresh = _calc_thresh("vaginal", 60)>> <<set _responses = [ "You continue thrusting " + setup.titleCase(_char.first_name) + "\'s pussy." ]>> <<set _responses.push($player.dialogue(either([ "You\'re such a fucking disgusting little whore.", "You little bitch aren\'t worth anything except a little piece of shit for me to fuck.", "Take it you fucking cunt.", "I bet this is the only reason anyone keeps you around, you fucking shit.", "You\'re nothing just a little fuck toy aren\'t you?" ])))>> <<if _sex_state.rape>> <<set _responses.push("You can tell from the tears forming in " + setup.titleCase(_char.first_name) + "\'s eyes that \ you went too far.")>> <<set _responses.push(_char.dialogue("What the fu..."))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<set _responses.push(_char.dialogue("Yeah, that\'s right, ahhhh!"))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 2>> <</if>> <<set _responses.push(setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " gets cut off by your continual pounding of " + setup.PRONOUNS[_char.gender]["?his"] + " wet pussy.")>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</button>>@@ @@#sex_vaginal4;<<button "Spit in mouth">> <<set _thresh = _calc_thresh("anal", 65)>> <<set _responses = [ "As you continue thrusting in " + setup.titleCase(_char.first_name) + "\'s wet pussy, you force open " + setup.PRONOUNS[_char.gender]["?his"] + " mouth and spit into it." ]>> <<set _responses.push($player.dialogue(either([ "Drink my fucking spit you ugly pig.", "You like that you disgusting piece of shit?", "You\'re nothing, just a piece of trash to spit and cum on." ])))>> <<if _sex_state.rape>> <<set _responses.push("You can tell from the tears forming in " + setup.titleCase(_char.first_name) + "\'s eyes that \ you went too far.")>> <<set _responses.push(_char.dialogue("What the fu..."))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<set _responses.push(_char.dialogue("Yeah, that\'s right, give me more I deser..."))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 3>> <</if>> <<set _responses.push(setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " gets cut off by your continual pounding of " + setup.PRONOUNS[_char.gender]["?his"] + " vagina.")>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</button>>@@ @@#sex_vaginal5;<<button "Slap">> <<set _thresh = _calc_thresh("anal", 85)>> <<set _responses = [ "As you are drilling " + setup.titleCase(_char.first_name) + "\'s wet pussy you slap " + setup.PRONOUNS[_char.gender]["?him"] + " across the face." ]>> <<if _sex_state.rape>> <<set _responses.push(_char.dialogue("Ow what the fuck! That fucking hurt!"))>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.obedience -= 10>> <<set _char.slave_traits.willpower -= 2>> <<else>> <<set _responses.push(_char.dialogue("Oh my god yes! Punish me! Slap me more like a little whore!"))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 5>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</button>>@@ @@#sex_vaginal6;<<button "Spank">> <<set _thresh = _calc_thresh("vaginal", 55)>> <<set _responses = [$player.dialogue(either([ "You\'re such a bad little whore.", "You\'ve been naughty and need to be punished.", ]))]>> <<set _responses.push( "You start spanking " + setup.titleCase(_char.first_name) + " ass until it\'s red," )>> <<if _sex_state.rape>> <<set _responses.push(_char.dialogue("Ow! Stop that hurts!"))>> <<set _char.mental_conditions.anger += 5>> <<set _char.mental_conditions.discomfort += 5>> <<set _char.slave_traits.obedience -= 5>> <<set _char.slave_traits.willpower -= 1>> <<else>> <<set _responses.push(_char.dialogue("Oh my god yes! Punish me!"))>> <<set _char.mental_conditions.arousal += 7>> <<set _char.slave_traits.willpower -= 3>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<run _check_arousal()>> <</button>>@@ @@#sex_vaginal_oral;<<button "Oral sex">> <<if $player.conditions.stamina lt 10>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 10>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You take your " + _cock + " out of " + setup.titleCase(_char.first_name) + "\'s wet pussy and pull " + setup.titleCase(_char.first_name) + "\'s " + _char.physical_traits.hair_color + " hair to line up " + setup.PRONOUNS[_char.gender]["?his"] + " head, but " + setup.PRONOUNS[_char.gender]["?he"] + " clearly tries to pull way, not fond of the idea of giving you a blowjob.">> <<if _query_action("oral", 40, _query_str)>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s juices into " + setup.PRONOUNS[_char.gender]["?his"] + " mouth."]>> <<if _sex_state.rape>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face, but being a cumslut, " + setup.PRONOUNS[_char.gender]["?she"] + " looks \ forward to being filled with your cum.")>> <<set _char.mental_conditions.arousal += 4>> <<set _char.slave_traits.willpower -= 1>> <<set _char.slave_traits.trust -= 2>> <<else>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face as you start to orally rape " + setup.PRONOUNS[_char.gender]["?him"] + ".")>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 2>> <<set _char.slave_traits.obedience -= 10>> <<set _char.slave_traits.trust -= 2>> <<set _char.sex_prefs.oral -= 1>> <</if>> <<else>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as your precum touches their tongue. As \ a cumslut they are gushing wet just thinking about your cum.")>> <<set _responses.push(_char.dialogue("Please give me your cum; I want to bath and be filled with it!"))>> <<set _char.mental_conditions.arousal += 5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " takes in your " + _cock + " with hunger in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes.")>> <<set _char.mental_conditions.arousal += 3>> <</if>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_oral_actions" "hidden">> <<addclass "#sex_vaginal_actions" "hidden">> <<set _open_menu = "#sex_oral_actions">> <<set _sex_state.last_action = "oral">> <<stop>> <</if>><</repeat>><</silently>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s juices into " + setup.PRONOUNS[_char.gender]["?his"] + " mouth."]>> <<if _sex_state.rape>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face, but being a cumslut, " + setup.PRONOUNS[_char.gender]["?she"] + " looks \ forward to being filled with your cum.")>> <<set _char.mental_conditions.arousal += 4>> <<set _char.slave_traits.willpower -= 1>> <<set _char.slave_traits.trust -= 2>> <<else>> <<set _responses.push("Tears stream down " + setup.titleCase(_char.first_name) + "\'s face as you start to orally rape " + setup.PRONOUNS[_char.gender]["?him"] + ".")>> <<set _char.mental_conditions.anger += 10>> <<set _char.mental_conditions.discomfort += 10>> <<set _char.slave_traits.willpower -= 2>> <<set _char.slave_traits.obedience -= 10>> <<set _char.slave_traits.trust -= 2>> <<set _char.sex_prefs.oral -= 1>> <</if>> <<else>> <<if _char.sex_fetishes.cum gt 30>> <<set _responses.push(setup.titleCase(_char.first_name) + " lets out a moan of bliss as your precum touches their tongue. As \ a cumslut they are gushing wet just thinking about your cum.")>> <<set _responses.push(_char.dialogue("Please give me your cum; I want to bath and be filled with it!"))>> <<set _char.mental_conditions.arousal += 5>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " takes in your " + _cock + " with hunger in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes.")>> <<set _char.mental_conditions.arousal += 3>> <</if>> <</if>> <<set $player.mental_conditions.arousal += 10>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_oral_actions" "hidden">> <<addclass "#sex_vaginal_actions" "hidden">> <<set _open_menu = "#sex_oral_actions">> <<set _sex_state.last_action = "oral">> <<stop>> <</if>><</silently>><</repeat>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ @@#sex_vaginal_anal;<<button "Anal sex">> <<if $player.conditions.stamina lt 10>> <<notify>>You are too tired!<</notify>> <<elseif _char.conditions.stamina lt 10>> <<notify>><<= setup.titleCase(_char.first_name)>> is too tired!<</notify>> <<else>> <<set _query_str = "You grab your " + _cock + " out of " + setup.titleCase(_char.first_name) + "\'s wet pussy and line it up with " + setup.PRONOUNS[_char.gender]["?his"] + " asshole.">> <<if _query_action("anal", 65, _query_str)>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s pussy juices into " + setup.PRONOUNS[_char.gender]["?his"] + " tight asshole."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Not my ass, it hurts so much! Please!..."))>> <<set _char.mental_conditions.anger += 20>> <<set _char.mental_conditions.discomfort += 20>> <<set _char.slave_traits.willpower -= 5>> <<set _char.slave_traits.obedience -= 20>> <<set _char.slave_traits.trust -= 10>> <<set _char.sex_prefs.anal -= 2>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck my ass!"))>> <<set _char.mental_conditions.arousal += 8>> <</if>> <<set $player.mental_conditions.arousal += 15>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_anal_actions" "hidden">> <<addclass "#sex_vaginal_actions" "hidden">> <<set _open_menu = "#sex_anal_actions">> <<set _sex_state.last_action = "anal">> <<stop>> <</if>><</repeat>><</silently>> <<run _check_arousal()>> <<else>><<silently>><<repeat 20ms>><<if _rejection_processed>> <<if _rejection_response>> <<set _responses = ["You insert your " + _cock + " slick with " + setup.titleCase(_char.first_name) + "\'s pussy juices into " + setup.PRONOUNS[_char.gender]["?his"] + " tight asshole."]>> <<if _sex_state.rape>> <<set _responses.push(setup.titleCase(_char.first_name) + " screams and chokes on her tears.")>> <<set _responses.push(_char.dialogue("Please! please! Not my ass, it hurts so much! Please!..."))>> <<set _char.mental_conditions.anger += 20>> <<set _char.mental_conditions.discomfort += 20>> <<set _char.slave_traits.willpower -= 5>> <<set _char.slave_traits.obedience -= 20>> <<set _char.slave_traits.trust -= 10>> <<set _char.sex_prefs.anal -= 2>> <<else>> <<set _responses.push(setup.titleCase(_char.first_name) + " pulls you in and begs for more.")>> <<set _responses.push(_char.dialogue("Yes yes! Please fuck my ass!"))>> <<set _char.mental_conditions.arousal += 8>> <</if>> <<set $player.mental_conditions.arousal += 15>> <<set _mins = 3 + dice(1, 4)>> <<addmins _mins>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#sex_anal_actions" "hidden">> <<addclass "#sex_vaginal_actions" "hidden">> <<set _open_menu = "#sex_anal_actions">> <<set _sex_state.last_action = "anal">> <<stop>> <</if>><</repeat>><</silently>> <<else>> <<set _responses = []>> <</if>> <<unset _rejection_processed>> <<unset _rejection_response>> <<run _check_arousal()>> <<stop>> <</if>><</repeat>><</silently>><</if>> <</if>> <</button>>@@ <div style="grid-row: 4; grid-column: 2"> @@#sex_vaginal_back;<<button "Back">> <<run setup.mainLog_append_delayed(["You take your " + _cock + " out of " + setup.titleCase(_char.first_name) + "\'s pussy."])>> <<removeclass "#sex_actions" "hidden">> <<addclass "#sex_vaginal_actions" "hidden">> <</button>>@@ </div> <div style="grid-row: 4; grid-column: 3"> @@#sex_vaginal_done;<<button "Done" `passage()`>> <<if _sex_state.orgasm>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties.<br>" + _char.dialogue("That was great, let\'s do that again sometime...") + "(" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, 5) + ")">> <<set _char.slave_traits.obedience += 5>> <<elseif _char.mental_conditions.arousal gt 20 && _char.mental_conditions.discomfort lt _char.mental_conditions.arousal>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties. You can tell that " + setup.PRONOUNS[_char.gender]["?he"] + " found the experience quite pleasurable (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, (_char.mental_conditions.arousal - _char.mental_conditions.discomfort) / 10) + ").">> <<set _char.slave_traits.obedience += (_char.mental_conditions.arousal - _char.mental_conditions.discomfort) / 10>> <<elseif _char.mental_conditions.discomfort gt _char.mental_conditions.arousal>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties. You can tell that " + setup.PRONOUNS[_char.gender]["?he"] + " did not find the experience pleasurable (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, _char.mental_conditions.arousal - _char.mental_conditions.discomfort) + ").">> <<set _char.slave_traits.obedience += (_char.mental_conditions.arousal - _char.mental_conditions.discomfort)>> <<else>> <<set $_temp_to_log = "You leave " + setup.titleCase(_char.first_name) + " to " + setup.PRONOUNS[_char.gender]["?his"] + " duties.">> <</if>> /* Re-enable menu */ <<set $enable_menu = true>> <<set $to_simulate.add(_char.key)>> /* Last round for good measure */ <<set _to_round = _char.key>> <<include round>> <<run _get_changes()>> <</button>>@@ </div> <<timed 50ms>><<script>> $("#sex_vaginal_actions").find("button").on("click", (event) => { var self = $(event.currentTarget); if (self.html() != "Back" && self.html() != "Done") { let _t = State.temporary; let char = _t.char; let player = State.variables.player; _t.to_round = _t.char.key; $.wiki("<<include round>>"); $.wiki("<<include updateBars>>"); if (self.html() != "Oral sex" && self.html() != "Vaginal sex" && self.html() != "Anal sex") { let thresh = setup.progressive_gain_chance(player.sex_skills.vaginal, 100, "root_inverse"); let roll = randomFloat(1.0); if (roll < thresh) { player.sex_skills.vaginal += 1 } } } }); <</script>><</timed>> </div> <</nobr>>
<<nobr>> /* Check if player can pay costs first */ <<for _idx, _to_simulate range $to_simulate_day>> <<set _char = $characters[_to_simulate]>> <<if _char.assignment != "none">> <<set _slave_changes[_to_simulate].flavor_text += "Today " + _char.name() + " " + setup.assignments[_char.assignment].flavor_text + " ">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _slave_changes[_to_simulate].cost += 25 * setup.HEIRARCHY[_char.status]>> <</if>> <<if ("cost" in setup.assignments[_char.assignment])>> <<set _slave_changes[_to_simulate].cost += setup.assignments[_char.assignment].cost>> <</if>> <<set _total_profit -= _slave_changes[_to_simulate].cost>> <</if>> /* Push into to_simulate */ <<set $to_simulate.add(_to_simulate)>> <</for>> /* Special charges */ <<for _idx, _to_simulate range $to_simulate_day>> <<set _char = $characters[_to_simulate]>> <<if _char.assignment == "solBrothel">> <<set _sex_value = setup.round2(_char.sex_value().clamp(0, 1000))>> <<set _rev = _sex_value * _char.efficiency()>> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _slave_changes[_to_simulate].cost -= 0.4 * _rev>> <<set _total_profit += 0.4 * _rev>> <<else>> <<set _slave_changes[_to_simulate].cost -= _rev>> <<set _total_profit += _rev>> <</if>> <<elseif _char.assignment == "mines">> <<set _rev = (2 * _char.stats.strength) * _char.efficiency()>> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _slave_changes[_to_simulate].cost -= 0.4 * _rev>> <<set _total_profit += 0.4 * _rev>> <<else>> <<set _slave_changes[_to_simulate].cost -= _rev>> <<set _total_profit += _rev>> <</if>> <</if>> <</for>> /* If not enough money, no changes occur and roles reset */ <<if _total_profit lt 0 && Math.abs(_total_profit) gt $player.get_money()>> <<set _afford = false>> <<for _idx, _to_simulate range $to_simulate_day>> <<set _char = $characters[_to_simulate]>> <<set _char.assignment = "none">> <</for>> <<else>> /* Generic changes */ <<for _idx, _to_simulate range $to_simulate_day>> <<set _char = $characters[_to_simulate]>> <<if _char.assignment != "none">> /* Begin by adding and performing all non-special rolls */ <<if ("self" in setup.assignments[_char.assignment])>> <<for _key, _val range setup.assignments[_char.assignment].self>> <<for _sub_key, _sub_val range _val>> <<if _key == "understand">> <<if _char[_sub_key + "_known"]>> <<continue>> <<else>> <<set _roll = randomFloat(1.0)>> <<if _roll lt _sub_val>> <<set _char[_sub_key + "_known"] = true>> <<if _sub_key == "sex_prefs">> <<set _flavor_name = "sexual preferences">> <<else>> <<set _flavor_name = "sexual fetishes">> <</if>> <<set _slave_changes[_to_simulate].special.push( "<span class=\"success\">You learned " + setup.titleCase(_char.first_name) + "\'s " + _flavor_name + ".</span>" )>> <</if>> <</if>> <<else>> <<if _sub_key.startsWith("min") || _sub_key.startsWith("max")>> <<continue>> <</if>> <<if Math.abs(_sub_val) gte 1>> <<set _delta = _sub_val>> <<else>> /* Simulate probability */ <<set _roll = randomFloat(1.0)>> <<if _roll lt Math.abs(_sub_val)>> <<set _delta = Math.sign(_sub_val)>> <<else>> <<set _delta = 0>> <</if>> <</if>> /* Do straight addition with clamping */ <<set _prev = _char[_key][_sub_key]>> <<if ("min_" + _sub_key) in setup.assignments[_char.assignment].self[_key] && _delta lt 0>> <<if _prev gt setup.assignments[_char.assignment].self[_key]["min_" + _sub_key]>> <<set _char[_key][_sub_key] += _delta>> <<set _char[_key][_sub_key] = _char[_key][_sub_key].clamp(setup.assignments[_char.assignment].self[_key]["min_" + _sub_key], 100)>> <</if>> <<elseif _delta lt 0>> /* No minimum */ <<set _char[_key][_sub_key] += _delta>> <<elseif ("max_" + _sub_key) in setup.assignments[_char.assignment].self>> /* _delta > 0 */ <<if _prev lt setup.assignments[_char.assignment].self[_key]["max_" + _sub_key]>> <<set _char[_key][_sub_key] += _delta>> <<set _char[_key][_sub_key] = _char[_key][_sub_key].clamp(-100, setup.assignments[_char.assignment].self[_key]["max_" + _sub_key])>> <</if>> <<else>> /* No maximum */ <<set _char[_key][_sub_key] += _delta>> <</if>> /* Push in change */ <<if !(_sub_key in _slave_changes[_to_simulate].self[_key])>> <<set _slave_changes[_to_simulate].self[_key][_sub_key] = 0>> <</if>> <<if _char[_key][_sub_key] - _prev != 0>> <<set _slave_changes[_to_simulate].self[_key][_sub_key] += _char[_key][_sub_key] - _prev>> <</if>> <</if>> <</for>> <</for>> <</if>> <<if ("player" in setup.assignments[_char.assignment])>> <<for _key, _val range setup.assignments[_char.assignment].player>> <<for _sub_key, _sub_val range _val>> <<if _sub_key.startsWith("min") || _sub_key.startsWith("max")>> <<continue>> <</if>> <<if Math.abs(_sub_val) gte 1>> <<set _delta = _sub_val>> <<else>> /* Simulate probability */ <<set _roll = randomFloat(1.0)>> <<if _roll lt Math.abs(_sub_val)>> <<set _delta = Math.sign(_sub_val)>> <<else>> <<set _delta = 0>> <</if>> <</if>> /* Do straight addition with clamping */ <<set $player[_key][_sub_key] += _delta>> <</for>> <</for>> <</if>> <</if>> <</for>> <</if>> <</nobr>>
<<nobr>> <<for _idx, _to_simulate range $to_simulate_day>> <<set _char = $characters[_to_simulate]>> <<if _char.diet.amount != "regular">> <<set _slave_changes[_to_simulate].flavor_text += "You make sure that " + setup.titleCase(_char.first_name) + " " + setup.diets.amount[_char.diet.amount].flavor_text + " ">> <<set _changes = setup.apply_delta(_slave_changes[_to_simulate].self, setup.diets.amount[_char.diet.amount].self)>> <<run setup.apply_delta(_char, _changes)>> <</if>> <<if _char.diet.additives != "none">> <<set _slave_changes[_to_simulate].flavor_text += setup.titleCase(_char.first_name) + setup.diets.additives[_char.diet.additives].flavor_text + " ">> /* Begin by adding and performing all non-special rolls */ <<set _changes = setup.apply_delta(_slave_changes[_to_simulate].self, setup.diets.additives[_char.diet.additives].self)>> <<run setup.apply_delta(_char, _changes)>> <<run setup.apply_delta($player, setup.diets.additives[_char.diet.additives].player)>> /* Now for special diet additives */ <<if _char.diet.additives == "cumBased">> <<if _char.sex_fetishes.cum gt 50 || _char.mental_conditions.cum_addiction gt 50>> <<set _char.slave_traits.obedience += 1>> <<set _slave_changes[_to_simulate].self.slave_traits.obedience += 1>> <<set _char.mental_conditions.cum_addiction += 3>> <<set _slave_changes[_to_simulate].self.mental_conditions.cum_addiction += 3>> <<set _char.sex_fetishes.cum += 2>> <<set _slave_changes[_to_simulate].self.sex_fetishes.cum += 2>> <<else>> <<set _char.slave_traits.obedience -= 10>> <<set _slave_changes[_to_simulate].self.slave_traits.obedience -= 10>> <<set _char.mental_conditions.cum_addiction -= 3>> <<set _slave_changes[_to_simulate].self.mental_conditions.cum_addiction -= 3>> <<set _char.sex_fetishes.cum -= 3>> <<set _slave_changes[_to_simulate].self.sex_fetishes.cum -= 3>> <</if>> <</if>> <</if>> <</for>> <</nobr>>
<<for _idx, _to_simulate range $to_simulate_day>> <<set _char = $characters[_to_simulate]>> /* Degree */ <<set _degree_changes = setup.rules.degree[_char.rules.degree](_char)>> <<set _slave_changes[_char.key].flavor_text += _degree_changes.flavor_text>> /* Punishments */ <<set _punishment_changes = setup.rules.punishment[_char.rules.punishment](_char)>> <<set _slave_changes[_char.key].flavor_text += " " + _punishment_changes.flavor_text>> <<set _changes = setup.apply_delta(_slave_changes[_char.key], _punishment_changes)>> <<if "self" in _changes>> <<run setup.apply_delta(_char, _changes.self)>> <</if>> /* Rewards */ <<set _reward_changes = setup.rules.reward[_char.rules.reward](_char)>> <<set _slave_changes[_char.key].flavor_text += " " + _reward_changes.flavor_text>> <<set _changes = setup.apply_delta(_slave_changes[_char.key], _reward_changes)>> <<if "self" in _changes>> <<run setup.apply_delta(_char, _changes.self)>> <</if>> <</for>>
<<nobr>> <<set _slave_changes = {}>> <<set _total_profit = 0>> <<set _afford = true>> /* Remove slaves who are at default setting */ <<set _to_delete = []>> <<for _idx, _to_simulate range $to_simulate_day>> <<set _char = $characters[_to_simulate]>> <<if (_char.assignment == "none" && _char.diet.amount == "regular" && _char.diet.additives == "none") && !$player.slaves.includes(_char.key)>> <<set _to_delete.push(_to_simulate)>> <<else>> <<set _slave_changes[_to_simulate] = { "self": { "stats": {}, "physical_traits": {}, "slave_traits": {}, "conditions": {}, "mental_conditions": {}, "sex_skills": {}, "skills": {}, "sex_prefs": {}, "sex_fetishes": {}, }, "cost": 0, "special": [], "flavor_text": "" }>> <<for _idx2, _key range Object.keys(_slave_changes[_to_simulate].self)>> <<for _idx3, _val2 range setup[_key.toUpperCase()]>> <<if typeof _char[_key][_val2] === "number">> <<set _slave_changes[_to_simulate].self[_key][_val2] = 0>> <</if>> <</for>> <</for>> <</if>> <</for>> <<for _idx, _to_del range _to_delete>> <<set $to_simulate_day.delete(_to_del)>> <<run delete $player.finances.slaves[_to_del]>> <</for>> <<unset _to_delete>> /* Simulate */ <<include assignmentEngine>> <<include dietEngine>> <<include rulesEngine>> <</nobr>>
<<nobr>> <<set _temp = new Date($gameDate)>> <<set _temp.setMinutes(_temp.getMinutes() - $_to_advance)>> <<if (_temp.getDay() != $gameDate.getDay() && $gameDate.getHours() gte 7) || (_temp.getDay() == $gameDate.getDay() && $gameDate.getHours() gte 7 && _temp.getHours() lt 7)>> <<set $player.mental_conditions.arousal = 0>> <<for _key, _val range $characters>> <<run _val.reset_limits()>> <<set _val.conditions.stamina += 50 + _val.stats.strength>> <<set _to_round = _key>> <<include round>> <</for>> <</if>> <<unset _temp>> <<set _to_delete = []>> <<for _idx, _to_simulate range $to_simulate>> <<set $characters[_to_simulate].mental_conditions.anger += -10 / 1440 * $_to_advance>> <<set $characters[_to_simulate].mental_conditions.sadness += -10 / 1440 * $_to_advance>> <<set $characters[_to_simulate].mental_conditions.arousal += -30 / 1440 * $_to_advance>> <<set $characters[_to_simulate].mental_conditions.discomfort += -30 / 1440 * $_to_advance>> <<set $characters[_to_simulate].mental_conditions.illness += -10 / 1440 * $_to_advance>> <<if _is_molesting>> <<set _delta_suspicion = (100 - $player.stats.dexterity) / 120 * $_to_advance>> <<if def _sus_mult>> <<set _delta_suspicion *= _sus_mult>> <</if>> <<set $characters[_to_simulate].mental_conditions.suspicion += _delta_suspicion>> <<else>> <<set $characters[_to_simulate].mental_conditions.suspicion += -25 / 1440 * $_to_advance>> <</if>> <<set _to_round = _to_simulate>> <<include round>> <<if $characters[_to_simulate].mental_conditions.anger == 0 && $characters[_to_simulate].mental_conditions.sadness == 0 && $characters[_to_simulate].mental_conditions.arousal == 0 && $characters[_to_simulate].mental_conditions.discomfort == 0 && $characters[_to_simulate].mental_conditions.illness == 0 && $characters[_to_simulate].mental_conditions.suspicion == 0>> <<set _to_delete.push(_to_simulate)>> <</if>> <</for>> <<for _idx, _to_del range _to_delete>> <<set $to_simulate.delete(_to_del)>> <</for>> <<unset _to_del>> <<unset _to_delete>> <</nobr>>
<<nobr>> <<set _year_start = new Date($gameDate.getFullYear(), 0, 0)>> <<set _diff = $gameDate - _year_start>> <<set _day = _diff / (1000 * 60 * 60 * 24)>> <<for _key, _val range $commodities>> <<if _val.type == "semi-stable">> <<set _sigma = _val.stable_price * _val.sigma_ratio>> <<set _mu = _sigma * Math.sin(2 * Math.PI / 356 * _day + _val.mu_phase) + _val.stable_price>> <<set _theta = Math.exp(-1 * $difficulty)>> <<set _days_left = $_to_advance / (60 * 24)>> <<for _days_left gte 1 / 24>> <<set $commodities[_key].price += setup.ou_step($commodities[_key].price, _theta, _mu, _sigma, 1/24)>> <<set _days_left -= 1/24>> <</for>> <<set $commodities[_key].price += setup.ou_step($commodities[_key].price, _theta, _mu, _sigma, _days_left)>> <<unset _theta>> <<unset _mu>> <<unset _sigma>> <<unset _days_left>> <</if>> <</for>> <<unset _year_start>> <<unset _diff>> <<unset _day>> <</nobr>>
<<nobr>> <<if $player.is_working || $player.is_slaving>> <<set $_mult = 3>> <<else>> <<set $_mult = 1>> <</if>> <<if $player.is_outside>> <<set $_mult *= 2>> <</if>> <<if (def _is_molesting && _is_molesting) || (def _is_fucking && _is_fucking)>> <<set $_mult *= 5>> <<if def _is_fucking && _is_fucking>> <<if _sex_state.rape>> /* Expend more energy when raping */ <<set $_mult *= 1.1>> <</if>> <</if>> <</if>> <<if $difficulty gt -1>> <<set $_mult *= (1 + setup.randn_bm() / 10 * ($difficulty + 1))>> <</if>> <<if !$player.is_sleeping>> /* Decay while not sleeping */ /* d Health = -100 / 1440 * 1[stamina == 0] dt (in minutes) */ <<if $player.conditions.stamina == 0>> <<script>> const mult = State.variables._mult; var player = State.variables.player; var _to_advance = State.variables._to_advance; var delta_health = mult * -100 / 1440 * _to_advance; player.conditions.health = player.conditions.health + delta_health; <</script>> <</if>> /* d Stamina = (3 / 10 * strength - time_awake / 1440 * 300) / 1440 dt (in minutes) */ /* delta Stamina = delta_t * mult * ((3/10 * strength - C * time_awake) - C * delta_t / 2) / 1440 */ <<script>> const mult = State.variables._mult; var player = State.variables.player; const time_awake = State.variables.time_awake; let _to_advance = State.variables._to_advance; const C = 200 / 1440; var delta_stamina = mult * _to_advance * ((3/10 * player.stats.strength - C * time_awake) - C * _to_advance / 2) / 1440; player.conditions.stamina = player.conditions.stamina + delta_stamina; <</script>> /* Accumulate time awake */ <<set $time_awake += $_to_advance>> <<else>> /* Recover while sleeping */ /* d Health = 3 * (3 / 10 * strength + 20) / 1440 dt */ <<script>> const mult = State.variables._mult; var player = State.variables.player; var _to_advance = State.variables._to_advance; var delta_health = mult * 3 * (3 / 10 * player.stats.strength + 20) / 1440 * _to_advance; player.conditions.health = player.conditions.health + delta_health; <</script>> /* d Stamina = 3 * 50 / 1440 dt */ <<script>> const mult = State.variables._mult; var player = State.variables.player; var _to_advance = State.variables._to_advance; var delta_stamina = mult * 3 * 50 / 1440 * _to_advance; player.conditions.stamina = player.conditions.stamina + delta_stamina; <</script>> <</if>> /* Player death */ <<if $player.conditions.health lte 0>> <<goto "deathMenu">> <</if>> <</nobr>>
/* Date & Time Widget Setup */ <<nobr>> <<set window.GameDays to [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ]; window.GameMonths to [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; /* Below we have to use the multi-parameter version of the Date constructor, rather than the date string version, because the date string version treats a missing timezone offset as UTC. While there are ways to determine players' timezone offsets, so they could be added to a date string, it's more convenient simply to use the multi-parameter constructor. The point of this is so that you can simply initialize the game world clock to whatever date and time you wish without having to worry about the players' timezone offsets, while still ensuring that they all see the same game world dates and times. */ /* params: year , month(0-based) , day , hour(24H) , minute [, second ] */ $gameDate to new Date(200, 1, 1, 12, 0); /* e.g. Mar 17, 2015 03:24 */ >> /* Updates datetime element */ <<widget "updatetime">> /* Update money as well (why not) */ <<script>> var player = State.variables.player; var gameDate = State.variables.gameDate; var time_element; if (State.temporary.is_molesting) { time_element = $("#molest_datetime"); } else { time_element = $("#datetime"); } if (time_element.length) { var temp = "<div id=\"datetime\">"; temp += setup.print_time12hr(gameDate); temp += "<br>"; temp += setup.print_date(gameDate); temp += "</div>"; time_element[0].innerHTML = temp; } var money_element = $("#money"); if (money_element.length) { var temp = "<div id=\"money\">"; temp += "<b>Money</b>: ¤" + player.get_money() + "</div>"; money_element[0].innerHTML = temp; } <</script>> <</widget>> /* Date & Time Advancement Widget Definitions */ /* Adds the specified number of minutes. */ <<widget "addmins">> <<script>> var to_add = State.variables.args[0]; State.variables.gameDate.setMinutes(State.variables.gameDate.getMinutes() + to_add); State.variables._to_advance = to_add; <</script>> /* Simulate dynamics */ <<include slaveTraitDynamics>> <<include conditionDynamics>> <<include characterDynamics>> <<include commodityDynamics>> /* Round values */ <<include round>> /* Update time */ <<updatetime>> <</widget>> /* Adds the specified number of hours. */ <<widget "addhours">> <<addmins `$args[0] * 60`>> <</widget>> /* Adds the specified number of days. */ <<widget "adddays">> <<addhours `$args[0] * 24`>> <</widget>> /* Goes to next day. */ <<widget "advanceday">> <<script>> var cur_date = State.variables.gameDate; var dest = new Date(cur_date.getTime()); if (cur_date.getHours() < 7) { dest.setHours(7); } else { dest.setHours(dest.getHours() + 24); dest.setHours(7); } dest.setMinutes(0); var diff = (dest - cur_date) / (1000 * 60); State.variables._to_advance = diff; <</script>> <<addmins $_to_advance>> <</widget>> /* Date & Time Printing Widget Definitions */ /* Prints the current date ("{weekday} {month} {day}, {year}"). */ <<widget "date">> <<print setup.print_date($gameDate)>> <</widget>> <<widget "year">> <<print String.format("{3}", GameDays[$gameDate.getDay()], GameMonths[$gameDate.getMonth()], $gameDate.getDate(), $gameDate.getFullYear() )>> <</widget>> /* Prints the current time (12H). */ <<widget "time12hr">> <<print setup.print_time12hr($gameDate)>> <</widget>> /* Prints the current time (24H). */ <<widget "time24hr">> <<if $gameDate.getHours() lt 10>>0<</if>><<print $gameDate.getHours()>>: <<if $gameDate.getMinutes() lt 10>>0<</if>><<print $gameDate.getMinutes()>> <</widget>> <</nobr>>
<<nobr>> <<if $player.is_slave>> <<if $player.is_slaving>> <<set $_mult = 2>> <<else>> <<if !("hours_worked" in $player)>> <<set $player.hours_worked = 0>> <</if>> <<if $player.is_sleeping>> <<if ($difficulty == -2) || ($difficulty == -1 && $player.hours_worked gte 1) || ($player.hours_worked gte 4)>> <<set $_mult = 0>> <<set $_obedient_sleep = true>> <<else>> <<set $_mult = -1>> <<set $_obedient_sleep = false>> <</if>> <<else>> <<set $_mult = -1>> <</if>> <</if>> <<if !$player.is_home>> <<set $_mult = -1>> <</if>> <<if $difficulty gt -1>> <<set $_mult *= (1 + setup.randn_bm() / 10 * ($difficulty + 1))>> <</if>> /* Apply sloth title */ <<if $player.titles.has("sloth")>> <<set _obedience_mult = 0.5>> <<else>> <<set _obedience_mult = 1>> <</if>> <<if $player.is_home && $_mult != 0>> /* mult = 2 if working else -1 */ /* d Obedience = mult * 10 + 1 / 10 * manipulation / 1440 dt (in minutes) */ <<script>> const mult = State.variables._mult; var player = State.variables.player; var _to_advance = State.variables._to_advance; var delta_obedience = (mult * 15 + 1 / 10 * player.get_status_prop("manipulation")) / 1440 * _to_advance; delta_obedience *= State.temporary.obedience_mult; player.slave_traits.obedience = Math.clamp(player.slave_traits.obedience + delta_obedience, 0, 100); <</script>> /* d Willpower = mult * - 15 + 1 / 5 * intelligence / 1440 dt (in minutes) */ <<script>> const mult = State.variables._mult; var player = State.variables.player; var _to_advance = State.variables._to_advance; var delta_willpower = (mult * -15 + 1/5 * player.stats.intelligence) / 1440 * _to_advance; player.slave_traits.willpower = Math.clamp(player.slave_traits.willpower + delta_willpower, 0, 100); <</script>> <<elseif $_mult != 0>> /* If player is outside Shintani cannot observe thus obedience does not drop */ <<script>> const mult = State.variables._mult; var player = State.variables.player; var _to_advance = State.variables._to_advance; var delta_willpower = (mult * -15 + 1/5 * player.stats.intelligence) / 1440 * _to_advance; player.slave_traits.willpower = Math.clamp(player.slave_traits.willpower + delta_willpower, 0, 100); <</script>> <</if>> <</if>> <</nobr>>
<<set Config.saves.version = setup.VERSION>> <<script>> Config.saves.autosave = () => { return setup.locations.has(passage()); } Config.history.maxStates = 1; Save.onSave.add((save, details) => { var gameDate = State.variables.gameDate; var locations = setup.locations; var player = State.variables.player; var passage_name = ""; if (locations.has(passage())) { passage_name = locations.get(passage()).name; } else if (State.variables.in_menu) { if (State.variables.last_visited != "undefined" && locations.has(State.variables.last_visited)) { passage_name = locations.get(State.variables.last_visited).name; } } save.title = setup.titleCase(player.first_name) + " | " + passage_name + ": " + setup.print_time12hr(gameDate) + ", " + setup.print_date(gameDate) + " | Version " + setup.VERSION; }); Save.onLoad.add((save) => { if (setup.VERSION != save.version) { var str = "\ <<popover>><b>As the game is very new, using old saves is currently not officially \ supported (though it is technically built-in). Depending on the size of the last update, \ this may break your game.</b>\ "; str += "<br><br><b><h3>Mimis' auto-upgrade tool:</h3></b><br>"; try { let added = []; // Push in any game variables that don't exist for (const [key, value] of Object.entries(State.variables)) { if (!(key in save.state.history[save.state.index].variables)) { save.state.history[save.state.index].variables[key] = clone(value); added.push(key); } } // Update status and location for pre 0.0.1.7 if ("has_access" in save.state.history[save.state.index].variables) { str += "Updated access structure <br>"; let prev_access = save.state.history[save.state.index].variables.has_access; prev_access.forEach(x => save.state.history[save.state.index].variables.locations[x].access = true); delete save.state.history[save.state.index].variables.has_access; } if ("location_status" in save.state.history[save.state.index].variables) { str += "Updated status structure <br>"; let prev_status = save.state.history[save.state.index].variables.location_status.nipon; save.state.history[save.state.index].variables.locations.nipon.status = prev_status; delete save.state.history[save.state.index].variables.location_status; } let updated = []; // Update substructure recursively let recursive_update = function(target, source) { let updated = false; if (!Array.isArray(target) && typeof target === 'object') { for (let key in source) { if (!(key in target)) { target[key] = clone(source[key]); updated = true; } else { updated |= recursive_update(target[key], source[key]); } } } return updated; } for (const [key, value] of Object.entries(State.variables)) { // Skip bag if (key == "UInvBags") { continue; } if (recursive_update(save.state.history[save.state.index].variables[key], value)) { updated.push(key) } } // Specifically for 0.0.1.6 if (!("finances" in save.state.history[save.state.index].variables.player) || !("businesses" in save.state.history[save.state.index].variables.player.finances) || !("slaves" in save.state.history[save.state.index].variables.player.finances)) { save.state.history[save.state.index].variables.player.finances = { "total_earned": 0, "slaves": {}, "businesses": {} }; str += "Finances added to player. Assignments need to be reset for effect to take place.<br>" } // Add in any characters for (let char in State.variables.characters) { if (!(char in save.state.history[save.state.index].variables.characters)) { save.state.history[save.state.index].variables.characters[char] = clone(State.variables.characters[char]); str += "Added in character " + char + "<br>"; } } // Specifically for bug in 0.0.1.7 save.state.history[save.state.index].variables.player.physical_traits.weight = 0; // Specifically for 0.0.1.8, if loading then they've entered Shintani's save.state.history[save.state.index].variables.locations.shintaniHome.data.entered = true; // Specifically for 0.0.1.8.1, enable key binds save.state.history[save.state.index].variables.enable_keybinds = true; // Shuffle slaves save.state.history[save.state.index].variables.shuffle_slaves = true; // Delete any trash variables let to_delete = []; for (const [key, value] of Object.entries(save.state.history[save.state.index].variables)) { if (!(key in State.variables)) { to_delete.push(key); } } to_delete.forEach(key => delete save.state.history[save.state.index].variables[key]); str += "Added in story variables: " + added.join(", ") + "<br>"; str += "Recursively updated story variables: " + updated.join(", ") + "<br>" str += "Removed story variables: " + to_delete.join(", ") + "<br>"; // Update the version str += "Version updated to " + setup.VERSION + " (not verified).<br>" str += "This is not an error. Auto-migration suceeded. Please save to update changes." } catch (ex) { str += "FAILED. <br>Stack trace:<br>" + ex.stack; } str += "<</popover>>"; $.wiki(str); } SimpleAudio.stop(); try { if (SimpleAudio) { if (typeof SimpleAudio.volume === 'function') { SimpleAudio.volume(save.state.history[save.state.index].variables.volume); } else { SimpleAudio.volume = save.state.history[save.state.index].variables.volume; } } else { throw new Error('Cannot access audio API.'); } } catch (err) { // fall back to the wikifier if we have to console.error(err.message, err); $.wiki('<<masteraudio volume ' + save.state.history[save.state.index].variables.volume + '>>'); } }); <</script>> <<preload "resources/images/backgrounds/cloth_border.png">> <<preload "resources/images/backgrounds/cloth_rough.png">> <<preload "resources/images/backgrounds/cloth.png">> <<preload "resources/images/backgrounds/blackwood.jpg">> /* Master volume */ <<set $volume = 100>> /* Difficulty */ <<set $difficulty = 0>> /* Text speed */ <<set $words_per_sec = 5.5>> /* Whether or not the game as started */ <<set $enable_keybinds = false>> /* Password */ <<set $testing_password = "password">> /* Initliaze player */ <<include initPlayer>> /* Health and stamina bars */ <<include initBars>> /* Initialize keybinds */ <<include initKeybinds>> /* Initialize locations */ <<include initLocations>> /* Initialize audio sources */ <<include initAudio>> /* Initialize Shintani's slaves */ <<include initCharacters>> /* Initialize inventories */ <<include initInventories>> /* Initialize quest object */ <<include initQuests>> /* Initialize world prices for commodities */ <<include initCommodities>>
<<nobr>> <<cacheaudio "bgm_intro_track" "resources/audio/music/Special - Intro.ogg">> <<createplaylist "bgm_intro">> <<track "bgm_intro_track">> <</createplaylist>> /* Shintani's home should be wistful */ <<cacheaudio "bgm_shintaniHome_track1" "resources/audio/music/World Explore - Deceptive Peace - Truegerischer Frieden.ogg">> <<cacheaudio "bgm_shintaniHome_track2" "resources/audio/music/World Explore - In the Twilight - Im Zwielicht.ogg">> <<cacheaudio "bgm_shintaniHome_track3" "resources/audio/music/World Explore - The Land Is Grey And Cold.ogg">> <<createplaylist "bgm_shintaniHome">> <<track "bgm_shintaniHome_track1">> <<track "bgm_shintaniHome_track2">> <<track "bgm_shintaniHome_track3">> <</createplaylist>> /* Nipon itself should be hopeful */ <<cacheaudio "bgm_nipon_track2" "resources/audio/music/City Explore - Home Of The Blessed.ogg">> <<cacheaudio "bgm_nipon_track3" "resources/audio/music/City Explore - Homecoming.ogg">> <<cacheaudio "bgm_nipon_track4" "resources/audio/music/City Explore - Lampman.ogg">> <<cacheaudio "bgm_nipon_track5" "resources/audio/music/City Explore - Sunrise over the City.ogg">> <<cacheaudio "bgm_nipon_track6" "resources/audio/music/City Explore - Trade Roads - Handelswege.ogg">> <<createplaylist "bgm_nipon">> <<track "bgm_nipon_track2">> <<track "bgm_nipon_track3">> <<track "bgm_nipon_track4">> <<track "bgm_nipon_track5">> <<track "bgm_nipon_track6">> <</createplaylist>> /* Current playing main-track */ <<set $playing = "none">> /* Whether or not to enable music */ <<set $enable_music = true>> /* Sounds */ <<cacheaudio "wooden_door_sound" "resources/audio/sounds/wooden_door.wav">> <<cacheaudio "wooden_container_sound" "resources/audio/sounds/wooden_container.wav">> <<cacheaudio "coins_sound" "resources/audio/sounds/coins.wav">> <<cacheaudio "quest_added_sound" "resources/audio/sounds/quest_add.mp3">> <</nobr>>
<<nobr>> <<newmeter "player_health_bar" 1>> <<label "Health ($player.round.conditions.health)">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> <<newmeter "player_stamina_bar" 1>> <<label "Stamina ($player.round.conditions.stamina)">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> <<newmeter "player_arousal_bar" 1>> <<label "Arousal ($player.round.mental_conditions.arousal)">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> <<newmeter "player_dexterity_bar" 1>> <<label "Dexterity ($player.round.stats.dexterity)">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> /* Char bars */ <<newmeter "char_health_bar" 1>> <<label "Health (_char.round.conditions.health)">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> <<newmeter "char_stamina_bar" 1>> <<label "Stamina (_char.round.conditions.stamina)">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> <<newmeter "char_anger_bar" 1>> <<label "Anger">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> <<newmeter "char_arousal_bar" 1>> <<label "Arousal">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> <<newmeter "char_discomfort_bar" 1>> <<label "Discomfort">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> <<newmeter "char_suspicion_bar" 1>> <<label "Suspicion">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> <<newmeter "char_willpower_bar" 1>> <<label "Willpower">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> /* Player slave bars */ <<newmeter "player_willpower_bar" 0>> <<label "Willpower ($player.round.slave_traits.willpower)">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> <<newmeter "player_trust_bar" 0>> <<label "Trust ($player.round.slave_traits.trust)">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> <<newmeter "player_obedience_bar" 0>> <<label "Obedience ($player.round.slave_traits.obedience)">> <<colors "#e6dd9a" "#e6dd9a">> <</newmeter>> /* Generated rounded values for display */ <<include round>> <</nobr>>
<<nobr>> /* Dynamic list of characters that need to be simulated by gameclock engine */ <<set $to_simulate = new Set()>> /* Dynamic list of characters that need to be simulated day by day by sleep engine */ <<set $to_simulate_day = new Set()>> <<set $characters = {"shintani_hiroyuki": new setup.Character("shintani_hiroyuki", true, 80), "himari_hironaka": new setup.Character("himari_hironaka", true, 60), "mei_hironaka": new setup.Character("mei_hironaka", true, 20), "jae_hironaka": new setup.Character("jae_hironaka", true, 40), "lia_hiroyuki": new setup.Character("lia_hiroyuki", true, 80), "emily_namm": new setup.Character("emily_namm", true, 50), "ronda_stike": new setup.Character("ronda_stike", true, 80)}>> /* Shintani */ <<set $characters.shintani_hiroyuki.set_properties( new Date(200 - 35, 12, 10), 0, "Shintani", "Hiroyuki" )>> <<set $characters.shintani_hiroyuki.stats = { 'dexterity': 20, 'intelligence': 63, 'manipulation': 89, 'strength': 34, 'tact': 53 }>> <<set $characters.shintani_hiroyuki.physical_traits = { 'beauty': 54, 'weight': 5, 'height': 175, 'eye_color': "brown", 'hair_color': "black", 'ethnicity': "japanese", 'skin_color': "light", 'hair_length': 15, }>> <<set $characters.shintani_hiroyuki.slave_traits.willpower = 100>> <<set $characters.shintani_hiroyuki.status = "rich citizen">> <<set $characters.shintani_hiroyuki.slaves = [ "himari_hironaka", "mei_hironaka", "jae_hironaka" ]>> <<set $characters.shintani_hiroyuki.slave_traits.obedience = 30>> <<set $characters.shintani_hiroyuki.skills.education = 70>> /* Himari */ <<set $characters.himari_hironaka.set_properties( new Date(200 - 23, 5, 3), 1, "Himari", "Hironaka", true, "shintani_hiroyuki" )>> <<set $characters.himari_hironaka.stats = { 'dexterity': 20, 'intelligence': 50, 'manipulation': 10, 'strength': 24, 'tact': 72 }>> <<set $characters.himari_hironaka.physical_traits = { 'beauty': 80, 'weight': -8, 'height': 165, 'eye_color': "brown", 'hair_color': "black", 'ethnicity': "Japanese", 'skin_color': "very fair", 'hair_length': 40, }>> /* This is towards the player */ <<set $characters.himari_hironaka.slave_traits.trust = 0>> <<set $characters.himari_hironaka.slave_traits.obedience = 30>> <<set $characters.himari_hironaka.slave_traits.willpower = 100>> <<set $characters.himari_hironaka.status = "high_slave">> <<set $characters.himari_hironaka.skills.education = 70>> /* Mei */ <<set $characters.mei_hironaka.set_properties( new Date(200 - 21, 11, 23), 1, "Mei", "Hironaka", true, "shintani_hiroyuki" )>> <<set $characters.mei_hironaka.stats = { 'dexterity': 31, 'intelligence': 20, 'manipulation': 29, 'strength': 24, 'tact': 23 }>> <<set $characters.mei_hironaka.physical_traits = { 'beauty': 60, 'weight': 2, 'height': 172, 'eye_color': "brown", 'hair_color': "black", 'ethnicity': "Chinese", 'skin_color': "fair", 'hair_length': 30, }>> <<set $characters.mei_hironaka.slave_traits.trust = 0>> <<set $characters.mei_hironaka.slave_traits.obedience = 30>> <<set $characters.mei_hironaka.slave_traits.willpower = 78>> <<set $characters.mei_hironaka.status = "low_slave">> <<set $characters.mei_hironaka.skills.education = 30>> /* Hina */ <<set $characters.jae_hironaka.set_properties( new Date(200 - 19, 10, 2), 1, "Jae", "Hironaka", true, "shintani_hiroyuki" )>> <<set $characters.jae_hironaka.stats = { 'dexterity': 5, 'intelligence': 10, 'manipulation': 78, 'strength': 15, 'tact': 12 }>> <<set $characters.jae_hironaka.physical_traits = { 'beauty': 70, 'weight': -8, 'height': 151, 'eye_color': "green", 'hair_color': "blonde", 'skin_color': "light", 'ethnicity': "Korean", 'hair_length': 35, }>> <<set $characters.jae_hironaka.slave_traits.trust = 0>> <<set $characters.jae_hironaka.slave_traits.obedience = 30>> <<set $characters.jae_hironaka.slave_traits.willpower = 90>> <<set $characters.jae_hironaka.status = "slave">> <<set $characters.jae_hironaka.skills.education = 50>> /* Lia */ <<set $characters.lia_hiroyuki.set_properties( new Date(200 - 24, 11, 4), 1, "Lia", "Hiroyuki" )>> <<set $characters.lia_hiroyuki.stats = { 'dexterity': 20, 'intelligence': 76, 'manipulation': 32, 'strength': 22, 'tact': 76 }>> <<set $characters.lia_hiroyuki.physical_traits = { 'beauty': 97, 'weight': -7, 'height': 160, 'eye_color': "blue", 'hair_color': "black", 'ethnicity': "chinese", 'skin_color': "pale", 'hair_length': 20, }>> <<set $characters.lia_hiroyuki.slave_traits.obedience = 50>> <<set $characters.lia_hiroyuki.slave_traits.willpower = 100>> <<set $characters.lia_hiroyuki.slave_traits.trust = 20>> <<set $characters.lia_hiroyuki.status = "rich citizen">> <<set $characters.lia_hiroyuki.skills.education = 90>> /* Emily */ <<set $characters.emily_namm.set_properties( new Date(200 - 26, 7, 22), 1, "Emily", "Namm" )>> <<set $characters.emily_namm.stats = { 'dexterity': 68, 'intelligence': 36, 'manipulation': 22, 'strength': 74, 'tact': 12 }>> <<set $characters.emily_namm.physical_traits = { 'beauty': 58, 'weight': 7, 'height': 160, 'eye_color': "brown", 'hair_color': "light brown", 'ethnicity': "caucasian", 'skin_color': "olive" }>> <<set $characters.emily_namm.slave_traits.obedience = 30>> <<set $characters.emily_namm.slave_traits.willpower = 100>> <<set $characters.emily_namm.slave_traits.trust = 0>> <<set $characters.emily_namm.status = "citizen">> <<set $characters.emily_namm.skills.education = 70>> /* Ronda */ <<set $characters.ronda_stike.set_properties( new Date(200 - 32, 2, 12), 1, "Ronda", "Stike" )>> <<set $characters.ronda_stike.physical_traits = { 'beauty': 66, 'weight': 12, 'height': 155, 'eye_color': "brown", 'hair_color': "brown", 'ethnicity': "african", 'skin_color': "brown" }>> <<set $characters.ronda_stike.slave_traits.obedience = 30>> <<set $characters.ronda_stike.slave_traits.willpower = 100>> <<set $characters.ronda_stike.slave_traits.trust = 0>> <<set $characters.ronda_stike.status = "rich citizen">> <</nobr>>
<<nobr>> <<set $commodities = { "gold": { "name": "Gold Ingots", "type": "semi-stable", "stable_price": 500, "price": 500, "mu_phase": 0, "sigma_ratio": 0.1 }, "silver": { "name": "Silver Ingots", "type": "semi-stable", "stable_price": 200, "price": 200, "mu_phase": 0.01, "sigma_ratio": 0.15 }, "iron": { "name": "Iron Ingots", "type": "semi-stable", "stable_price": 20, "price": 20, "mu_phase": 1, "sigma_ratio": 0.12 }, }>> <</nobr>>
<<nobr>> <<set $equities = { "SOS": { "name": "Slave Owner Shares", "type": "stochastic", "price": 100, "sigma": 12 } "TUS": { "name": "Trade Union Shares", "type": "stochastic", "price": 200, "sigma": 10 }, }>> <</nobr>>
<<nobr>> /* Initialize player inventory */ <<set $player.inventory = "inventory">> <<run UInv.CreateBag("inventory")>> <<run UInv.SetBagPropertyValue("inventory", "maxCarryWeight", $player.stats.strength)>> /* Initialize character inventories (no max carry weight) */ <<for _key, _val range $characters>> <<set _val.inventory = _val.key>> <<run UInv.CreateBag(_val.key)>> <</for>> <</nobr>>
<<nobr>> <<set $last_visited = "">> <<set $enable_menu = false>> <<on "keydown">> <<which 67>> <<if $enable_keybinds>> /* Key binding to see controls (C) */ <<script>>Dialog.close();<</script>> <<popover>> <<include controls>> <</popover>> <</if>> <<which 69>> /* Key binding to go to character menu (E) */ <<script>>Dialog.close();<</script>> <<if $enable_menu && $enable_keybinds>> <<if !$in_menu>> <<set $last_visited = passage()>> <<set $in_menu = true>> <<saveVars>> <<goto playerMenu>> <<elseif passage() != "playerMenu">> <<goto playerMenu>> <<else>> <<set $in_menu = false>> <<goto $last_visited>> <<set $last_visited = "">> <</if>> <</if>> <<which 81>> <<if $enable_keybinds>> /* Key binding for quest journal (Q) */ <<script>>Dialog.close();<</script>> <<popover>> <<include questMenu>> <</popover>> <</if>> <<which 83>> <<if $enable_keybinds>> /* Key binding for saves (S) */ <<if $enable_menu>> <<ui "saves">> <</if>> <</if>> <<which 84>> <<if $enable_keybinds>> /* Key binding to see tutorial for passage (T) */ <<script>>Dialog.close();<</script>> <<if tale.has(passage() + "Tutorial")>> <<popover>> <<include `passage() + "Tutorial"`>> <</popover>> <</if>> <</if>> <<which 27>> /* Key binding to go to save and settings menu (ESC / X) */ <<script>>Dialog.close();<</script>> <<if $enable_menu && $enable_keybinds>> <<if !$in_menu>> <<set $last_visited = passage()>> <<set $in_menu = true>> <<saveVars>> <<goto settingsMenu>> <<elseif passage() != "settingsMenu">> <<goto settingsMenu>> <<else>> <<set $in_menu = false>> <<goto $last_visited>> <<set $last_visited = "">> <</if>> <</if>> <<which 88>> /* Key binding to go to save and settings menu (ESC / X) */ <<script>>Dialog.close();<</script>> <<if $enable_menu && $enable_keybinds>> <<if !$in_menu>> <<set $last_visited = passage()>> <<set $in_menu = true>> <<saveVars>> <<goto settingsMenu>> <<elseif passage() != "settingsMenu">> <<goto settingsMenu>> <<else>> <<set $in_menu = false>> <<goto $last_visited>> <<set $last_visited = "">> <</if>> <</if>> <</on>> /* Click listener for speeding up dialogue */ <<on "click">> <<if def _in_dialogue && _in_dialogue && def _timeout_id>> <<run triggerTimeout(_timeout_id)>> <</if>> <</on>> <</nobr>>
<<nobr>> /* Set of locations the player has access to */ <<set _has_access = [ "shintaniHome", "niponAcademy", "niponArena", "niponBarracks", "niponCentralDocks", "solBrothel", "niponTownHall", "yukisGourmet", "niponMarket", "niponAuctionHouse", "niponBlacksmith", "niponFarms", "niponMarketDocks", "niponMines", "niponStalls", "niponTheater", "niponTradeUnion", "niponSlums", "niponCampGrounds", "divineTouchBrothel", "sonderVille", "valeCommunity" ]>> /* Location-Status key-pair */ <<set $location_status = { "nipon": "low_slave" }>> /* Location data */ <<set $locations = {}>> <<for _idx, _val range setup.locations.get_all()>> <<set $locations[_val] = { "access": _has_access.contains(_val), "data": {} }>> <</for>> <<set $locations["nipon"] = {"status": "low_slave"}>> <</nobr>>
<<nobr>> /* Player dictionary to store information */ <<set $player = new setup.Character("player")>> /* Player titles */ <<set $player['titles'] = new Set()>> /* Player conditions */ <<set _base_cond = 100>> <<for _i = 0; _i lt setup.CONDITIONS.length; _i++>> <<set $player['conditions']["max_" + setup.CONDITIONS[_i]] = _base_cond>> <<set $player['conditions'][setup.CONDITIONS[_i]] = _base_cond>> <</for>> /* Player stats */ <<set _base_stat = 10>> <<for _i = 0; _i lt setup.STATS.length; _i++>> <<set $player['stats'][setup.STATS[_i]] = _base_stat>> <</for>> /* Player skills */ <<set _base_skill = 5>> <<for _i = 0; _i lt setup.SKILLS.length; _i++>> <<set $player['skills'][setup.SKILLS[_i]] = _base_skill>> <</for>> <<for _i = 0; _i lt setup.SEX_SKILLS.length; _i++>> <<set $player['sex_skills'][setup.SEX_SKILLS[_i]] = _base_skill>> <</for>> /* Whether or not we are a slave */ <<set $player.is_slave = true>> /* Player slave dynamics */ <<for _i = 0; _i lt setup.SLAVE_TRAITS.length; _i++>> <<set $player.slave_traits[setup.SLAVE_TRAITS[_i]] = 2 * _base_stat>> <</for>> /* Whether or not player is sleeping */ <<set $player.is_sleeping = false>> /* Whether or not player is working */ <<set $player.is_working = false>> /* Whether or not the player is slaving */ <<set $player.is_slaving = false>> /* Whether or not the player is home */ <<set $player.is_home = false>> /* Whether or not the player is outside */ <<set $player.is_outside = false>> /* Time awake */ <<set $time_awake = 0>> /* Hours worked per day */ <<set $player.hours_worked = 0>> /* Player slaves */ <<set $player.slaves = []>> /* Player finance tracking */ <<set $player.finances = { "total_earned": 0, "businesses": {}, "slaves": {} }>> /* Player book reading progress */ <<set $player.books = {}>> <<for _key, _val range setup.books>> <<set $player.books[_key] = 0>> <</for>> <<set $player.physical_traits.weight = 0>> <<set $player.physical_traits.beauty = 0>> <</nobr>>
<<nobr>> <<set $quest_journal = {"ongoing": [], "completed": [], "failed": []}>> <<set $quests = {}>> <<for _key, _val range setup.quests>> <<set $quests[_key] = { "stage": 0, "added": false, "data": {} }>> <</for>> <</nobr>>
<<nobr>> /* Add in stat and condition changes from titles */ <<for _i, _title range $player.titles>> <<for _key, _val range setup.titles[_title]['stat_changes']>> <<set $player.stats[_key] += _val>> <</for>> <<for _key, _val range setup.titles[_title]['condition_changes']>> <<set $player.conditions[_key] += _val>> <<set $player.conditions["max_" + _key] += _val>> <</for>> <<for _key, _val range setup.titles[_title]['skill_changes']>> <<set $player.skills[_key] += _val>> <</for>> <</for>> <div id="background" class="paper_border notext"> <div class="main container threeCol twoRow"> <div class="subbackground" style="grid-row: 1 / span 2; grid-column: 1"> <center> <h3 style="margin-bottom: 0; padding-bottom: 0">$player['first_name'] Hironaka</h3> <<if $player['last_name'] != "Hironaka">> <span style="font-size: smaller">(<<= $player['last_name']>>)</span> <</if>> </center> <hr> <div class="container twoCol"> <div style="text-align: left; margin-left: 20px"> Sex <br> Age <br> <<for _i = 0; _i lt setup.CONDITIONS.length; _i++>> <<= setup.titleCase(setup.CONDITIONS[_i])>> <br> <</for>> <br> <<for _i = 0; _i lt setup.STATS.length; _i++>> <<= setup.titleCase(setup.STATS[_i])>> <br> <</for>> </div> <div style="text-align: right; margin-right: 20px"> <<if $player.gender == 0>> Male <<else>> Female <</if>> <br> <<= $player.age()>> <br> <<for _i = 0; _i lt setup.CONDITIONS.length; _i++>> <<= $player.conditions[setup.CONDITIONS[_i]].toString().padStart(3, '\u2000')>> <br> <</for>> <br> <<for _i = 0; _i lt setup.STATS.length; _i++>> (<<= setup.show_change(10, $player.stats[setup.STATS[_i]])>>) <<= $player.stats[setup.STATS[_i]].toString().padStart(3, '\u2000')>> <br> <</for>> </div> </div> <center>Titles <hr> <div id="titles"></div> /* Prints all titles and assigns a unique div id to them */ <<set $done_setup = false>> <<script>> setTimeout(function(){ var html = ""; var titles = Array.from(State.variables.player.titles); for (var i = 0; i < titles.length; i++) { html += ("\ <div id=\"char_" + titles[i] + "\" class=\"tooltip\">" + setup.titleCase(titles[i]) + "</div><br>\ "); } document.getElementById("titles").innerHTML = html; State.variables.done_setup = true; }, 1); <</script>> /* Creates artificial event-listener for setup of script above */ <<repeat 10ms>> <<if $done_setup>> <<for _idx, _title range $player.titles>> <<capture _title>> <<script>> var title = State.temporary.title; $("#char_" + title).click( function(){ State.temporary.selected_title = title; $.wiki("<<popover>><<include titleTutorial>><</popover>>") } ); <</script>> <</capture>> <</for>> <<stop>> <<unset $done_setup>> <</if>> <</repeat>> </center> </div> <<set _difficulties = ["Very Easy", "Easy", "Normal", "Hard", "Very Hard"]>> <<set _contents = ["Economic", "Domestic", "Submissive"]>> <<set _selected_difficulty = _difficulties[$difficulty + 2]>> <<set _selected_content = _contents[$tasks]>> <div id="finalization_summary" class="subbackground" style="grid-row: 1 / span 1; grid-column: 2 / span 2"> <div class="textpassage" style="margin-top: 20px; margin-bottom: 20px"> You are a <<if $player.gender == 0>> man <<else>> woman <</if>> of age <<= $player.age()>> who is <<= setup.get($player, "height")>>cm tall with <<= setup.get($player, "hair_color")>> hair and <<= setup.get($player, "eye_color")>> eyes. You are ethnically <<= setup.get($player, "ethnicity")>>. You are set to be a slave serving under //Shintani Hiroyuki// in <<if $difficulty == -1>> an <<else>> a <</if>> ''_selected_difficulty'' world in the settlement of //Nipon// where the focus is ''_selected_content'' slavery. <<for _idx, _title range $player.titles>> <br><br> <<= setup.titles[_title].preposition>> <b><<= setup.titleCase(_title)>></b>, <<= setup.titles[_title].flavor_text>> <</for>> </div> </div> <div class="subbackground" style="grid-row: 2 / span 1; grid-column: 2 / span 2"> <center><h3>Game Settings</h3> Difficulty: _selected_difficulty <br> Starting Content: _selected_content <br><br><br> <center> <<button "Confirm" shintaniHome>> /* Stop playing intro music */ <<audio ":all" stop>> <<set $enable_keybinds = true>> /* Initialize things that depend on the player */ <<run setup.init_influence()>> <</button>> <<button "Reset" intro1>><</button>> </center> </center> </div> </div> </div> <</nobr>>
<<nobr>> <center id="logo" style="display: none"> <img class="logo" src="resources/images/Mimus Studios-logos_white_presents.png"> </center> <h1 id="title" class="logo">Free Cities: Origins</h1> /* Reset player to base state */ <<include initPlayer>> <<playlist "bgm_intro" loop shuffle play>> <div id="background" class="paper_border" style="display: none"> <center><h1>In the Beginning</h1></center> <p class="textpassage"> With the crumbling of sea walls and destruction of major infrastructure, the growing fear of annihilation strengthened between the major powers. All it took was one misjudged detonation for the tenents of mutually assured destruction to get thrown out the window. Alliances that were formed in the golden-age of humanity saw their last signs of life, as the black clouds of soot clouded the atmosphere and chilled the earth, it was as if time itself was at a standstill. </p> <p class="textpassage"> From these shattered nations arose settlements that were independantly managed by either luck, fortune, or talent. These settlements were terrible excuses for societies, often more dangerous than the shanky slums that dotted the world. This is the world you find yourself in; one of despair, starvation, and fear. </p> <p class="textpassage"><div class="tooltip">How bad was it? <span class="tooltiptext right" style="top: -170%"> Determines the difficulty of the game as well as the predictability. An easier game will have less randomness as well as some bonuses while a harder game will have less predictability and some penalities. </span> </div></p> <br> <center class="option"> <<button "It was barely noticable" intro2>><<set $difficulty = -2>><</button>> <<button "It was not that bad" intro2>><<set $difficulty = -1>><</button>> <<button "It was as bad as they say" intro2>><<set $difficulty = 0>><</button>> <<button "It was a bit worse" intro2>><<set $difficulty = 1>><</button>> <<button "It was way worse" intro2>><<set $difficulty = 2>><</button>> </center> </div> <<script>> setTimeout(function() { $("#logo").fadeIn(2000); $("#logo").fadeOut(1000); setTimeout(function() { $("#title").fadeIn(2000); $("#title").fadeOut(1000); setTimeout(function() { $("#background").fadeIn(2000); }, 3000); }, 3000); }, 10); <</script>> <</nobr>>
<<nobr>> <div id="background" class="paper_border"> <center><h1>But then There Came</h1></center> <p class="textpassage"> A crack in the cold ashen dirt allowing a sprout of hope to emerge. You are a <<cycle "$player.gender">> <<option "man" 0 selected>> <<option "woman" 1>> <</cycle>> who found yourself amid this chaotic world as a <<cycle "$player.birthdate">> <<option "young" `new Date(200 - 18, 1, 1, 12, 0)` selected>> <<option "mid" `new Date(200 - 30, 1, 1, 12, 0)`>> <<option "old" `new Date(200 - 45, 1, 1, 12, 0)`>> <</cycle>> <span class="tooltip">aged <span class="tooltiptext bottom"> Young age favors ability to learn while old age favors higher intellect and respect. </span> </span> person of interest. As you stumble across the land in search of yourself, you think back and remember the teachings of your long deceased relatives. They not only taught you about the world, but also set you up for your next journey in life. </p> <p class="textpassage"> <<link "They were scholars who studied the vast developing cultures of the world." intro3>> <<set $player['titles'].add('past_scholar')>> <</link>> <br> <<link "They were slavers who saved and reveled in the fates of the less fortunate." intro3>> <<set $player['titles'].add('past_slaver')>> <</link>> <br> <<link "They were mercenaries who only looked out for their pockets and family." intro3>> <<set $player['titles'].add('past_mercenary')>> <</link>> <br> <<link "They were slaves who did anything to avoid the wrath of their masters." intro3>> <<set $player['titles'].add('past_slave')>> <</link>> <br> <<link "They were fallen royalty from the bygones of past national states." intro3>> <<set $player['titles'].add('past_royal')>> <</link>> </p> </div> <</nobr>>
<<nobr>> <div id="background" class="paper_border"> <center><h1>You Reflect</h1></center> <p class="textpassage"> And your mind fills with images of who you are. You recall that in this world every part of who you are is not only tested, but constantly judged. The humans of the world, without any larger meaning, cling onto anything that could differentiate them from others. This had led, for example, to rampant racism, bandit gangs who only admit people with blonde hair, and persecution against people with green eyes. Among this reality of indiscriminate discrimination, who are you? </p> <br> <div class="container twoCol" style="row-gap: 5%;"> <center>''Height (cm)''</center> <center>''Hair Color''</center> <<textbox "$player.physical_traits.height" "170">> <<textbox "$player.physical_traits.hair_color" "Brown">> <center>''Eye Color''</center> <center>''Ethnicity''</center> <<textbox "$player.physical_traits.eye_color" "Brown">> <<textbox "$player.physical_traits.ethnicity" "Stateless">> </div> <br><br><br><br> <center> <<button "Next">> <<set _success = true>> <<if Number.isInteger(Number($player.physical_traits.height))>> <<set $player.physical_traits.height = Number($player.physical_traits.height)>> <<if $player.physical_traits.height lte 0>> <<set _success = false>> <</if>> <<else>> <<set _success = false>> <</if>> <<set $player.physical_traits.hair_color = $player.physical_traits.hair_color.trim().toLowerCase()>> <<set $player.physical_traits.eye_color = $player.physical_traits.eye_color.trim().toLowerCase()>> <<set $player.physical_traits.ethnicity = $player.physical_traits.ethnicity.trim().toLowerCase()>> <<if $player.physical_traits.hair_color.length == 0 || $player.physical_traits.eye_color.length == 0 || $player.physical_traits.ethnicity.length == 0>> <<set _success = false>> <</if>> <<if _success>> <<run Engine.play("intro4")>> <<else>> <<notify>> Invalid values! <</notify>> <</if>> <</button>> </center> </div> <</nobr>>
<<nobr>> <div id="background" class="paper_border"> <center><h1>The Spark in You Shined</h1></center> <p class="textpassage"> Brighter than the simplicity of your upbringing. While you know it is your actions that determines who you are, unbeknownst to you, you carry with you the fate of humanity. What do you get in exchange for carrying such a burden? (Choose up to two). </p> <<set _titles_to_add = []>> <<set _num_selected = 0>> <div id="attribute_selection"> <div class="subbackground"> ''Hearty''<br> +10 Health<br> +5 Stamina<br> @@#1;<<button "Select">> <<addclass "#1 button" "selected">> <<run $("#1 button").prop("disabled", true)>> <<set _titles_to_add.push("hearty")>> <<set _num_selected += 1>> <<if _num_selected gte 2>> /* Disables all buttons */ <<for _i = 1; _i lte 10; _i++>> <<addclass `"#" + _i + " button"` "disabled">> <<run $("#" + _i + " button").prop("disabled", true)>> <</for>> <</if>> <<removeclass `"#reset button"` "disabled">> <<run $("#reset button").prop("disabled", false)>> <</button>>@@ </div> <div class="subbackground"> ''Nimble''<br> +5 Dexterity<br> -5 Stamina<br> @@#2;<<button "Select">> <<addclass "#2 button" "selected">> <<run $("#2 button").prop("disabled", true)>> <<set _titles_to_add.push("nimble")>> <<set _num_selected += 1>> <<if _num_selected gte 2>> <<for _i = 1; _i lte 10; _i++>> <<addclass `"#" + _i + " button"` "disabled">> <<run $("#" + _i + " button").prop("disabled", true)>> <</for>> <</if>> <<removeclass `"#reset button"` "disabled">> <<run $("#reset button").prop("disabled", false)>> <</button>>@@ </div> <div class="subbackground"> ''Silver Tongued''<br> +2 Manipulation<br> +2 Tact<br> @@#3;<<button "Select">> <<addclass "#3 button" "selected">> <<run $("#3 button").prop("disabled", true)>> <<set _titles_to_add.push("silver_tongued")>> <<set _num_selected += 1>> <<if _num_selected gte 2>> <<for _i = 1; _i lte 10; _i++>> <<addclass `"#" + _i + " button"` "disabled">> <<run $("#" + _i + " button").prop("disabled", true)>> <</for>> <</if>> <<removeclass `"#reset button"` "disabled">> <<run $("#reset button").prop("disabled", false)>> <</button>>@@ </div> <div class="subbackground"> ''Sharpshooter''<br> +5 Ranged<br><br> @@#4;<<button "Select">> <<addclass "#4 button" "selected">> <<run $("#4 button").prop("disabled", true)>> <<set _titles_to_add.push("sharpshooter")>> <<set _num_selected += 1>> <<if _num_selected gte 2>> <<for _i = 1; _i lte 10; _i++>> <<addclass `"#" + _i + " button"` "disabled">> <<run $("#" + _i + " button").prop("disabled", true)>> <</for>> <</if>> <<removeclass `"#reset button"` "disabled">> <<run $("#reset button").prop("disabled", false)>> <</button>>@@ </div> <div class="subbackground"> ''Curious''<br> +2 Intelligence<br> +2 Tact<br> @@#5;<<button "Select">> <<addclass "#5 button" "selected">> <<run $("#5 button").prop("disabled", true)>> <<set _titles_to_add.push("curious")>> <<set _num_selected += 1>> <<if _num_selected gte 2>> <<for _i = 1; _i lte 10; _i++>> <<addclass `"#" + _i + " button"` "disabled">> <<run $("#" + _i + " button").prop("disabled", true)>> <</for>> <</if>> <<removeclass `"#reset button"` "disabled">> <<run $("#reset button").prop("disabled", false)>> <</button>>@@ </div> <div class="subbackground"> ''Lost Knowledge''<br> Start with knowledge of the lost tongues<br> @@#6;<<button "Select">> <<addclass "#6 button" "selected">> <<run $("#6 button").prop("disabled", true)>> <<set _titles_to_add.push("lost_knowledge")>> <<set _num_selected += 1>> <<if _num_selected gte 2>> <<for _i = 1; _i lte 10; _i++>> <<addclass `"#" + _i + " button"` "disabled">> <<run $("#" + _i + " button").prop("disabled", true)>> <</for>> <</if>> <<removeclass `"#reset button"` "disabled">> <<run $("#reset button").prop("disabled", false)>> <</button>>@@ </div> <div class="subbackground"> ''Well Connected''<br> -50% spread when trading commodities<br> @@#7;<<button "Select">> <<addclass "#7 button" "selected">> <<run $("#7 button").prop("disabled", true)>> <<set _titles_to_add.push("well_connected")>> <<set _num_selected += 1>> <<if _num_selected gte 2>> <<for _i = 1; _i lte 10; _i++>> <<addclass `"#" + _i + " button"` "disabled">> <<run $("#" + _i + " button").prop("disabled", true)>> <</for>> <</if>> <<removeclass `"#reset button"` "disabled">> <<run $("#reset button").prop("disabled", false)>> <</button>>@@ </div> <div class="subbackground"> ''Sloth''<br> Lose and gain obedience twice as slow<br> @@#8;<<button "Select">> <<addclass "#8 button" "selected">> <<run $("#8 button").prop("disabled", true)>> <<set _titles_to_add.push("sloth")>> <<set _num_selected += 1>> <<if _num_selected gte 2>> <<for _i = 1; _i lte 10; _i++>> <<addclass `"#" + _i + " button"` "disabled">> <<run $("#" + _i + " button").prop("disabled", true)>> <</for>> <</if>> <<removeclass `"#reset button"` "disabled">> <<run $("#reset button").prop("disabled", false)>> <</button>>@@ </div> <div class="subbackground"> ''Thief''<br> Find more loot when stealing<br> @@#9;<<button "Select">> <<addclass "#9 button" "selected">> <<run $("#9 button").prop("disabled", true)>> <<set _titles_to_add.push("thief")>> <<set _num_selected += 1>> <<if _num_selected gte 2>> <<for _i = 1; _i lte 10; _i++>> <<addclass `"#" + _i + " button"` "disabled">> <<run $("#" + _i + " button").prop("disabled", true)>> <</for>> <</if>> <<removeclass `"#reset button"` "disabled">> <<run $("#reset button").prop("disabled", false)>> <</button>>@@ </div> <div class="subbackground"> ''Night Fox''<br> -20% likelyhood to get caught molesting<br> @@#10;<<button "Select">> <<addclass "#10 button" "selected">> <<run $("#10 button").prop("disabled", true)>> <<set _titles_to_add.push("night_fox")>> <<set _num_selected += 1>> <<if _num_selected gte 2>> <<for _i = 1; _i lte 10; _i++>> <<addclass `"#" + _i + " button"` "disabled">> <<run $("#" + _i + " button").prop("disabled", true)>> <</for>> <</if>> <<removeclass "#reset button" "disabled">> <<run $("#reset button").prop("disabled", false)>> <</button>>@@ </div> </div> <center class="fiveQuarters"> <br> <<disable>> @@#reset;<<button "Reset">> /* Removes titles */ <<set _titles_to_add = []>> <<set _num_selected = 0>> <<for _i = 1; _i lte 10; _i++>> /* Enables all buttons */ <<removeclass `"#" + _i + " button"` "disabled">> <<run $("#" + _i + " button").prop("disabled", false)>> /* Remove selection */ <<removeclass `"#" + _i + " button"` "selected">> <</for>> <<addclass "#reset button" "disabled">> <<run $("#reset button").prop("disabled", true)>> <</button>>@@ <</disable>> @@#next;<<button "Next" intro5>> <<for _idx, _title range _titles_to_add>> <<set $player.titles.add(_title)>> <</for>> <<unset _titles_to_add>> <<unset _num_selected>> <</button>>@@ </center> </div> <</nobr>>
<<nobr>> <div id="background" class="paper_border"> <center><h1>And so You Pushed</h1></center> <p class="textpassage"> Forwards into the vast world. Despite the notion that you are sailing the winds of fate, no main character has ever been without adversity. This is the excuse you muster up as you find yourself without shelter and parched in the Great Desert. As vultures begin to circle overhead, you see a man approach whose porcelain white skin reflects a nobility that should be long gone in this world. </p> <p class="textpassage"> Through your blurry vision you could barely make out <<if $player['titles'].has('past_scholar')>> his features. You thought it was impossible, as you've learned in your extensive past studies that they had all been wiped out, but a man of japanese descent now stands in front of you. <<elseif $player['titles'].has('past slaver')>> his whip slighting poking out of his holder on his right hip. Normally you would be glad to see someone who hails from the same background as you, but you realize that your current presentation might lead to unintended consequences. Apprehension fills you as this man now stands next to you. <<elseif $player['titles'].has('past merc')>> the glimmer of some gold poking out from a pouch fastened to his belt. Normally this would be prime clientele that would provide the coin to feed your family for a whole fortnight, but you realize that you are in no position to make such an offer. He now stands next to you. <<elseif $player['titles'].has('past slave')>> his whip slighting poking out of his holder on his right hip. Memories flood back as you remember this sight before many tears, screams and beatings. Apprehension fills you as this man now stands next to you. <<elseif $player['titles'].has('past royal')>> his seemingly polished nails and perfectly trimmed eyebrows. You are no stranger to how the old world used to treat the upper class and royalty, but you had thought this was a relic of the past. Regardless, he now stands next to you. <</if>> </p> <p class="textpassage"> "There isn't food or water for miles," he says as he eyes the vultures above. As you lock eyes with him, a sickly smirk suddenly emerges as he says "Come with me and be my slave. I will save you." Not wanting your story to end here, you regrettably accept. </p> <p class="textpassage"><div class="tooltip">He starts leading you to a town focusing on <span class="tooltiptext right" style="top: -250%"> Determines the content of the early game and what requests you will have to fulfill as a slave. Not super important but prevents some content you might not enjoy from appearing. Economics: you're basically any assistant. Domestic: perform chores and tasks. Sexual: Self explainatory. </span> </div></p> <br> <center class="option"> <<button "Mainly\neconomics" intro6>><<set $tasks = 0>><</button>> <<disable>> <<button "Domestic\nslavery" intro6>><<set $tasks = 1>><</button>> <</disable>> <<disable>> <<button "Sexual\nslavery" intro6>><<set $tasks = 2>><</button>> <</disable>> </center> </div> <</nobr>>
<<nobr>> <div id="background" class="paper_border"> <center><h1>He Speaks</h1></center> <p class="textpassage"> Ideals that seem out of place both in the past and present. "Free Cities," he says as he waves his hands in the air as if to allude to curtains openning on a stage. "That's my dream. We at Nipon are the only ones I know of that have solved the food issue. The questions humans must keep asking are those of meaning." He stops and looks at your puzzled face. <<if $player['titles'].has('past_scholar')>> Despite your past studies you have never <<else>> Never have you <</if>> thought past the next month. This world was too chaotic for that. He goes on, "What keeps us different from those vultures is an ability to ask for meaning." </p> <p class="textpassage"> He stops his monologue realizing something important, "Oh right! My name is Shintani Hiroyuki, but most people call me Shin. Of course, to you, I'll be master or sir." He looks you up and down again, "what do I call you?" </p> <p id="name_output" class="fade-out" style="--time: 0.4s"></p> <span id="name_confirm" class="fade-out" style="--time: 0.4s"> [["Continue forward."|finalization]] </span> <span id="name_input" class="container threeCol" style="--time: 0.4s"> <center>''FIRST NAME''</center> <center>''LAST NAME''</center> <span></span> <<textbox "$player['first_name']" "">> <<textbox "$player['last_name']" "">> <center> <<button "Submit">> <<set $player['first_name'] = $player['first_name'].trim()>> <<set $player['last_name'] = $player['last_name'].trim()>> <<script>> var name_input = document.getElementById("name_input"); name_input.classList.add("fade-out"); var name_output = document.getElementById("name_output"); setTimeout(function(){ var player = State.variables.player; if (player['first_name'] == "") { player['first_name'] = player['gender'] == 0 ? "Markus" : "Sierra"; name_output.innerHTML = "\ \"No name? Or maybe you just prefer not to tell me. Well \ you get the honor of bearing a name chosen by me. From here \ on out you will carry the name \'" + player['first_name'] + "\'."; if (player['last_name'] == "") { player['last_name'] = "Hironaka"; name_output.innerHTML += " \ You shall also carry on my lineage with the honorable vassal surname \ of Hironaka.\"\ " } else { name_output.innerHTML += " \ Your past that got you here is now irrelevant. You shall carry on \ my lineage with the honorable vassal surname of Hironaka.\"\ " } } else { player['first_name'] = setup.titleCase(player['first_name']); if (player['last_name'] == "") { player['last_name'] = "Hironaka"; name_output.innerHTML+= "\ \"Very well " + player['first_name'] + ". You shall carry on \ my lineage with the honorable vassal surname of Hironaka.\"\ " } else { name_output.innerHTML+= "\ \"Very well " + player['first_name'] + ". However, your past that \ got you here is now irrelevant; you shall carry on \ my lineage with the honorable vassal surname of Hironaka.\"\ " } } name_output.classList.add('fade-in'); name_output.classList.remove('fade-out'); name_confirm.classList.add('fade-in'); name_confirm.classList.remove('fade-out'); player['last_name'] = setup.titleCase(player['last_name']); }, 500); <</script>> <</button>> </center> </span> </div> <</nobr>>
<<nobr>> <div id="assignment" class="subbackground" style="padding-bottom: 25px;"> <hr> <center><h3>Assignment</h3></center> <<if $player.slaves.contains(_char.key)>> <center id="assignment_buttons" class="threeHalfs smalltext longbutton column"> <<if $player.is_slave>> @@#serveShintani;<<button "Serve Shintani">><</button>>@@ <</if>> @@#maid;<<button "Maid">><</button>>@@ @@#mines;<<button "Mines">><</button>>@@ @@#serveYou;<<button "Serve You">><</button>>@@ @@#solBrothel;<<button "Sol Brothel">><</button>>@@ @@#fuckToy;<<button "Fuck Toy">><</button>>@@ <hr> <h3>Self Improvement</h3> @@#freeTime;<<button "Free Time">><</button>>@@ @@#study;<<button "Study">><</button>>@@ @@#train;<<button "Train">><</button>>@@ <hr> <h3>Punishment</h3> @@#confinement;<<button "Confinement">><</button>>@@ @@#publicHumiliation;<<button "Public Humiliation">><</button>>@@ @@#humanToilet;<<button "Human Toilet">><</button>>@@ </center> <center class="threeHalfs smalltext longbutton column"> <hr> <<button "Done">><<script>> $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); <</script>><</button>> </center> <<elseif $player.is_slave && $characters.shintani_hiroyuki.slaves.contains(_char.key)>> <<if _higher_status>> <center id="assignment_buttons" class="threeHalfs smalltext longbutton column"> @@#shintanisOrders;<<button "Shintani\'s Orders">><</button>>@@ @@#serveShintani;<<button "Serve Shintani">><</button>>@@ @@#maid;<<button "Maid">><</button>>@@ @@#mines;<<button "Mines">><</button>>@@ @@#serveYou;<<button "Serve You">><</button>>@@ @@#solBrothel;<<button "Sol Brothel">><</button>>@@ @@#fuckToy;<<button "Fuck Toy">><</button>>@@ <hr> <h3>Self Improvement</h3> @@#freeTime;<<button "Free Time">><</button>>@@ @@#study;<<button "Study">><</button>>@@ @@#train;<<button "Train">><</button>>@@ <hr> <h3>Punishment</h3> <span class="fail">(Shintani's paternalist views prevents extreme health-threatening punishments)</span> @@#confinement;<<button "Confinement">><</button>>@@ @@#publicHumiliation;<<button "Public Humiliation">><</button>>@@ <<disable>>@@#humanToilet;<<button "Human Toilet">><</button>>@@<</disable>> </center> <center class="threeHalfs smalltext longbutton column"> <hr> <<button "Done">><<script>> $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); <</script>><</button>> </center> <<else>> <div class="textpassage"> You do not have a higher status than this person! </div> <</if>> <<else>> <div class="textpassage"> This person is not your slave! </div> <</if>> </div> <<silently>><<timed 50ms>> <<if $player.slaves.includes(_char.key)>> <<if _char.assignment == "none">> <<set _char.assignment = "freeTime">> <</if>> <<run $("#assignment_buttons").find("#" + _char.assignment + " button").addClass("disabled")>> <<run $("#assignment_buttons").find("#" + _char.assignment + " button").prop("disabled", true)>> <<elseif $player.is_slave && $characters.shintani_hiroyuki.slaves.contains(_char.key) && _higher_status>> <<if _char.assignment == "none">> <<addclass "#shintanisOrders button" "disabled">> <<run $("#shintanisOrders button").prop("disabled", true)>> <<else>> <<run $("#assignment_buttons").find("#" + _char.assignment + " button").addClass("disabled")>> <<run $("#assignment_buttons").find("#" + _char.assignment + " button").prop("disabled", true)>> <</if>> <</if>> <<script>> let char = State.temporary.char; let player = State.variables.player; $("#assignment_buttons").find("button").on("click", (event) => { let _t = State.temporary; let _v = State.variables; $("#assignment_buttons").find("button").removeClass("disabled"); $("#assignment_buttons").find("button").prop("disabled", false); if (_v.characters.shintani_hiroyuki.slaves.contains(char.key)) { $("#humanToilet button").addClass("disabled"); $("#humanToilet button").prop("disabled", true); } var self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); var assignment = setup.camelize(self.html()); const assignment_passage = "assignment" + assignment.toLocaleUpperFirst(); if (tale.has(assignment_passage)) { $.wiki("<<include " + assignment_passage + ">>"); $("#characterMenuCenterDetails").removeClass("hidden"); $("#characterMenuCenter").addClass("hidden"); $("#characterMenuLeft").addClass("hidden"); State.temporary.char.assignment = assignment; if (!(char.key in player.finances.slaves)) { player.finances.slaves[char.key] = {}; } if (!player.slaves.contains(char.key)) { player.finances.slaves[char.key].assignment = -25 * setup.HEIRARCHY[char.status]; } if ("cost" in setup.assignments[assignment]) { player.finances.slaves[char.key].assignment -= setup.assignments[assignment].cost; } if (assignment == "solBrothel") { if (char.owner == "shintani_hiroyuki") { player.finances.slaves[char.key].assignment += 0.4 * char.sex_value().clamp(0, 1000); } else { player.finances.slaves[char.key].assignment += char.sex_value().clamp(0, 1000); } } else if (assignment == "mines") { if (char.owner == "shintani_hiroyuki") { player.finances.slaves[char.key].assignment += 0.4 * (2 * char.stats.strength) * char.efficiency(); } else { player.finances.slaves[char.key].assignment += (2 * char.stats.strength) * char.efficiency(); } } State.variables.to_simulate_day.add(char.key); } else { $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); if (_v.player.slaves.contains(_t.char.key)) { _t.char.assignment = "freeTime"; } else { _t.char.assignment = "none"; } if (char.key in player.finances.slaves) { player.finances.slaves[char.key].assignment = 0; } } }); <</script>> <</timed>><</silently>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Punish with Confinement");>> <<set _flavor_text = "\ You lock " + setup.titleCase(_char.first_name) + " in a small room without any outside interaction \ until further notice. This will significantly decrease " + setup.PRONOUNS[_char.gender]["?his"] + " affection and willpower whilst increasing " + setup.PRONOUNS[_char.gender]["?his"] + " fear. \ Keeping " + setup.PRONOUNS[_char.gender]["?him"] + " confined for too long might make " + setup.PRONOUNS[_char.gender]["?him"] + " develop long-term mental ailments such as \ depression or becoming completely broken with a shattered ego. Finally, with a lack of movement in the \ confinement cell, " + setup.PRONOUNS[_char.gender]["?his"] + " muscles may deteriorate.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _flavor_text += "\ <ul>\ <li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, -3) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Fear: " + setup.show_change_html(0, 1, false) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Willpower: " + setup.show_change_html(0, -1, false) + " per day.</li>\ <li>Decrease strength chance: <span class=\"fail\">10%</span> per day.</li>\ ">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "<li>Opportunity cost: <span class=\"fail\">" + setup.LARI + _opportunity + "</span> per day.</li>">> <</if>> <<set _flavor_text += "</ul>">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Free Time");>> <<set _flavor_text = "\ You let " + setup.titleCase(_char.first_name) + " take some well deserved time off until \ further notice. This allows " + setup.titleCase(_char.first_name) + " to recover from illness, \ injury, as well as builds " + setup.PRONOUNS[_char.gender]["?his"] + " affection for you.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _flavor_text += "\ <ul>\ <li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, 2) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Willpower: " + setup.show_change_html(0, 1, false) + " per day.</li>\ <li>Reduces negative mental effects such as anger, sadness, and suspicion.</li>\ ">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "<li>Opportunity cost: <span class=\"fail\">" + setup.LARI + _opportunity + "</span> per day.</li>">> <</if>> <<set _flavor_text += "</ul>">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Fuck Toy");>> <<set _flavor_text = "\ You assigned " + setup.titleCase(_char.first_name) + " to be your personal fuck toy until \ further notice. Such an action has a chance to increase " + setup.PRONOUNS[_char.gender]["?his"] + " sex skills as well as reveal her fetishes. However, if her affection is not high enough it \ may also lower " + setup.PRONOUNS[_char.gender]["?his"] + " sexual preferences.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _flavor_text += "\ <ul>\ <li>Sex skills increase chance: <span class=\"success\">5%</span> per day.</li>">> <<if !_char.sex_prefs_know>> <<set _flavor_text += "<li>Understand preferences chance: <span class=\"success\">10%</span> per day.</li>">> <</if>> <<if !_char.fetishes_known>> <<set _flavor_text += "<li>Understand fetishes chance: <span class=\"success\">5%</span> per day.</li>">> <</if>> <<if _char.slave_traits.obedience lt 60>> <<set _flavor_text += "<li>Reduce sexual preferences chance: <span class=\"fail\">5%</span> per day.</li>">> <<else>> <<set _flavor_text += "<li>Increase sexual preferences chance: <span class=\"success\">5%</span> per day.</li>">> <</if>> <<set _flavor_text += "<li>" + setup.titleCase(_char.first_name) + "\'s Willpower: " + setup.show_change_html(0, -1, false) + " per day (bound by 40).</li>\ ">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "<li>Opportunity cost: <span class=\"fail\">" + setup.LARI + _opportunity + "</span> per day.</li>">> <</if>> <<set _flavor_text += "</ul>">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Punish with Confinement");>> <<set _flavor_text = "\ You make " + setup.titleCase(_char.first_name) + " serve as a human toilet, bathing-in, drinking, and eating \ all your excrement until further notice. This will significantly decrease " + setup.PRONOUNS[_char.gender]["?his"] + " affection and willpower whilst increasing " + setup.PRONOUNS[_char.gender]["?his"] + " fear. \ This significantly increases the chances of developing long-term mental ailments such as \ depression or becoming completely broken with a shattered ego. Finally, such an unsanitary assignment increases \ the chance for permanent injuries, disease, and death.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _flavor_text += "\ <ul>\ <li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, -7) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Fear: " + setup.show_change_html(0, 2, false) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Willpower: " + setup.show_change_html(0, -5, false) + " per day.</li>\ ">> <<set _flavor_text += "</ul>">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Serve as a Maid");>> <<set _flavor_text = "\ You assign " + setup.titleCase(_char.first_name) + " to serve as a regular maid until \ further notice. Of all the jobs you could assign " + setup.PRONOUNS[_char.gender]["?him"] + " both of you know this is the least demanding.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _flavor_text += "\ <ul>\ <li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, 1) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Fear: " + setup.show_change_html(0, -1, false) + " per day.</li>\ ">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "<li>Opportunity cost: <span class=\"fail\">" + setup.LARI + _opportunity + "</span> per day.</li>">> <</if>> <<set _flavor_text += "</ul>">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Labor in the Mines");>> <<set _flavor_text = "\ You assign " + setup.titleCase(_char.first_name) + " to be a worker at the mines until \ further notice. This jobs requires hard labor and always has a chance of injury due to the unpredictability \ of the mines. The revenue is dependent on both their efficiency (which is a function of their intelligence, \ education, and disposition) and strength.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _flavor_text += "\ <ul>\ <li>Raise strength chance: <span class=\"success\">3%</span> per day.</li>\ <li>Injury chance: <span class=\"fail\">2%</span> per day.</li>\ ">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "<li>Opportunity cost: <span class=\"fail\">" + setup.LARI + "" + _opportunity + "</span> per day.</li>">> <</if>> <<set _rev = (2 * _char.stats.strength) * _char.efficiency()>> <<set _flavor_text += "\ <li>Revenue: <span class=\"success\">" + setup.LARI + "" + setup.round2(_rev) + "</span> per day.</li>\ ">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "\ <li>Shintani\'s cut: <span class=\"fail\">" + setup.LARI + "" + setup.round2(0.6 * _rev) + "</span> per day.</li>\ ">> <<if 0.4 * _rev gt _opportunity>> <<set _flavor_text += "<li>Total profit: <span class=\"success\">" + setup.LARI + "" + setup.round2(0.4 * _rev - _opportunity) + "</span> per day.</li>">> <<else>> <<set _flavor_text += "<li>Total profit: <span class=\"fail\">-" + setup.LARI + "" + Math.abs(setup.round2(0.4 * _rev - _opportunity)) + "</span> per day.</li>">> <</if>> <<else>> <<set _flavor_text += "<li>Total profit: <span class=\"success\">" + setup.LARI + setup.round2(_rev) + "</span> per day.</li>">> <</if>> <<set _flavor_text += "</ul>">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Public Humiliation");>> <<set _flavor_text = "\ You force " + setup.titleCase(_char.first_name) + " to walk though town naked with your cum smeared all over " + setup.PRONOUNS[_char.gender]["?his"] + " face. This will greatly decrease " + setup.PRONOUNS[_char.gender]["?his"] + " affection and willpower whilst increasing " + setup.PRONOUNS[_char.gender]["?his"] + " fear. \ This increases the chances of developing long-term mental ailments such as depression or becoming \ completely broken with a shattered ego. There\'s a chance such an assignment may \ end up sparking " + setup.titleCase(_char.first_name) + "\'s interest in humiliation.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _flavor_text += "\ <ul>\ <li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, -7) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Fear: " + setup.show_change_html(0, 2, false) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Willpower: " + setup.show_change_html(0, -5, false) + " per day.</li>\ ">> <<set _flavor_text += "</ul>">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Serve Shintani");>> <<set _flavor_text = "\ You assigned " + setup.titleCase(_char.first_name) + " to serving Shintani until \ further notice. Such an action will help you build his trust in you, but will take " + setup.titleCase(_char.first_name) + " away from " + setup.PRONOUNS[_char.gender]["?his"] + " other duties.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _flavor_text += "\ <ul>\ <li>Trust : " + setup.show_change_html(0, 2) + " per day.</li>\ ">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "<li>Opportunity cost: <span class=\"fail\">" + setup.LARI + _opportunity + "</span> per day.</li>">> <</if>> <<set _flavor_text += "</ul>">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Serve You");>> <<set _flavor_text = "\ You assigned " + setup.titleCase(_char.first_name) + " to serve you to your every whim and need until \ further notice. Such an action will lower " + setup.PRONOUNS[_char.gender]["?his"] + " affection and willpower towards you, but of course this takes " + setup.titleCase(_char.first_name) + " away from " + setup.PRONOUNS[_char.gender]["?his"] + " other duties.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _flavor_text += "\ <ul>\ <li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, -2) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Willpower: " + setup.show_change_html(0, -2, false) + " per day (bound by 40).</li>\ ">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "<li>Opportunity cost: <span class=\"fail\">" + setup.LARI + _opportunity + "</span> per day.</li>">> <</if>> <<set _flavor_text += "</ul>">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Whore at Sol Brothel");>> <<set _flavor_text = "\ You assigned " + setup.titleCase(_char.first_name) + " work at the Sol Brothel until \ further notice. Such an action will net you 40% of " + setup.PRONOUNS[_char.gender]["?his"] + " profits (the other 60% going to Shintani). " + setup.titleCase(setup.PRONOUNS[_char.gender]["?his"]) + " profitability is determined by " + setup.PRONOUNS[_char.gender]["?his"] + " beauty, sex preferences, skills, fetishes and disposition.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _sex_value = setup.round2(_char.sex_value().clamp(0, 1000))>> <<set _rev = _sex_value * _char.efficiency()>> <<set _flavor_text += "<ul>">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "<li>Opportunity cost: <span class=\"fail\">" + setup.LARI + "" + _opportunity + "</span> per day.</li>">> <</if>> <<set _flavor_text += "\ <li>Revenue: <span class=\"success\">" + setup.LARI + "" + setup.round2(_rev) + "</span> per day.</li>\ ">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "\ <li>Shintani\'s cut: <span class=\"fail\">" + setup.LARI + "" + setup.round2(0.6 * _rev) + "</span> per day.</li>\ ">> <<if 0.4 * _rev gt _opportunity>> <<set _flavor_text += "<li>Total profit: <span class=\"success\">" + setup.LARI + "" + setup.round2(0.4 * _rev - _opportunity) + "</span> per day.</li>">> <<else>> <<set _flavor_text += "<li>Total profit: <span class=\"fail\">-" + setup.LARI + "" + Math.abs(setup.round2(0.4 * _rev - _opportunity)) + "</span> per day.</li>">> <</if>> <<else>> <<set _flavor_text += "<li>Total profit: <span class=\"success\">" + setup.LARI + setup.round2(_rev) + "</span> per day.</li>">> <</if>> <<set _flavor_text += "</ul>">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Study in Hiroyuki Library");>> <<set _flavor_text = "\ You make " + setup.titleCase(_char.first_name) + " study in Shintani\'s library until \ further notice. This allows " + setup.titleCase(_char.first_name) + " to gradually increase \ " + setup.PRONOUNS[_char.gender]["?his"] + " intelligence which will allow her to push \ back the ideals of slavery and believe you are her savior.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _flavor_text += "\ <ul>\ <li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, 2) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Trust: " + setup.show_change_html(0, 1) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Willpower: " + setup.show_change_html(0, 1, false) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Trust towards Shintani: " + setup.show_change_html(0, -1, false) + " per day.</li>\ <li>Raise intelligence chance: <span class=\"success\">5%</span> per day (capped at 40).</li>\ <li>Raise education chance: <span class=\"success\">10%</span> per day (capped at 60).</li>">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "<li>Opportunity cost: <span class=\"fail\">" + setup.LARI + _opportunity + "</span> per day.</li>">> <</if>> <<set _flavor_text += "\ <li>Learning materials: <span class=\"fail\">" + setup.LARI + "25</span> per day.</li>\ <li>Total Profit: <span class=\"fail\">-" + setup.LARI + (_opportunity + 25) + "</span> per day.</li>\ </ul>\ ">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Train at Nipon Barracks");>> <<set _flavor_text = "\ You make " + setup.titleCase(_char.first_name) + " train at the Nipon barracks until \ further notice. This allows " + setup.titleCase(_char.first_name) + " to gradually increase \ " + setup.PRONOUNS[_char.gender]["?his"] + " strength, dexterity, and physical skills.">> <<set _opportunity = 25 * setup.HEIRARCHY[_char.status]>> <<if $player.slaves.contains(_char.key)>> <<set _opportunity = 0>> <</if>> <<set _flavor_text += "\ <ul>\ <li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, 2) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Trust: " + setup.show_change_html(0, 1) + " per day.</li>\ <li>" + setup.titleCase(_char.first_name) + "\'s Willpower: " + setup.show_change_html(0, 1, false) + " per day.</li>\ <li>Raise dexterity chance: <span class=\"success\">5%</span> per day.</li>\ <li>Raise strength chance: <span class=\"success\">5%</span> per day.</li>\ <li>Raise physical skills chance: <span class=\"success\">5%</span> per day.</li>">> <<if $characters.shintani_hiroyuki.slaves.includes(_char.key)>> <<set _flavor_text += "<li>Opportunity cost: <span class=\"fail\">" + setup.LARI + _opportunity + "</span> per day.</li>">> <</if>> <<set _flavor_text += "\ <li>Training fee: <span class=\"fail\">" + setup.LARI + "50</span> per day.</li>\ <li>Total Profit: <span class=\"fail\">-" + setup.LARI + (_opportunity + 50) + "</span> per day.</li>\ </ul>\ ">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> <<updatestatus>> <<set _char = $characters[$selected]>> <<set _higher_status = ($player.get_status("nipon") == "slave" && _char.status == "low_slave") || ($player.get_status("nipon") == "high_slave" && _char.status == "slave") || ($player.get_status("nipon") == "high_slave" && _char.status == "low_slave")>> <<set _to_round = $selected>> <<include round>> <div class="charside left"> <div id="description_actions" class="mapaction fiveQuarters smalltext"> <hr> <<disable>> @@#summary_but;<<button "Summary">> <</button>>@@ <</disable>> @@#stats_but;<<button "Stats">> <</button>>@@ @@#skills_but;<<button "Skills">> <</button>>@@ @@#sex_skills_but;<<button "Sex Prefs">> <</button>>@@ <<set _left_selection = "summary">> </div> </div> <div id="background" class="paper_border notext"> <div class="main container threeCol" style="height: 100%; width: 100%;"> <div id="characterMenuLeft"> <<include characterMenuSummary>> <<include characterMenuStats>> <<include characterMenuSkills>> <<include characterMenuSexPrefs>> </div> <div id="characterMenuCenter" class="subbackground"> <center> <h2 id="characterMenuFullName" style="margin-top:20px; margin-bottom: 20px"> <<= setup.titleCase(_char.first_name)>> <<= setup.titleCase(_char.last_name)>> </h2> <div id="characterMenuImage"></div> </center> <<if $player.slaves.includes(_char.key)>> <<script>> var char = State.temporary.char; setTimeout(() => { $("#characterMenuImage").css("background-image", "url(resources/images/characters/player/" + char.gender + ".png)"); }, 20); <</script>> <<else>> <<script>> var char = State.temporary.char; setTimeout(() => { $("#characterMenuImage").css("background-image", "url(\"" + char.image_folder() + char.first_name.toLowerCase() + ".png\")") }, 20); <</script>> <</if>> <div style="margin: 15px; margin-left: 30px; margin-right: 30px"> <<showmeter "char_health_bar" `_char.conditions.health/_char.conditions.max_health`>> <<showmeter "char_stamina_bar" `_char.conditions.stamina/_char.conditions.max_stamina`>> </div> <center class="twoThirds"> <<button "Back">> <<set $enable_keybinds = true>> <<set $in_menu = false>> <<goto $last_visited>> <<set $last_visited = "">> <</button>> </center> </div> <div id="characterMenuCenterDetails" class="subbackground hidden centerDetails"> <hr> <center><h3 id="characterMenuCenterDetailsTitle">Title</h3></center> <div id="characterMenuCenterDetailsBody" class="textpassage"></div> </div> <<include characterMenuAssignment>> <<include characterMenuDiet>> <<include characterMenuFinances>> <<include characterMenuInventory>> <<include characterMenuNaming>> <<include characterMenuOutfit>> <<include characterMenuRules>> <<include characterMenuSalon>> <<include characterMenuSurgery>> </div> </div> <div class="charside right"> <div id="slave_actions" class="mapaction fiveQuarters smalltext"> <hr> <<disable>> @@#assignment_but;<<button "Assignment">><</button>>@@ <</disable>> @@#diet_but;<<button "Diet">><</button>>@@ @@#finances_but;<<button "Finances">><</button>>@@ @@#inventory_but;<<button "Inventory">><</button>>@@ @@#naming_but;<<button "Naming">><</button>>@@ @@#outfit_but;<<button "Outfit">><</button>>@@ @@#rules_but;<<button "Rules">><</button>>@@ /* TODO */ @@#salon_but;<<button "Salon">><</button>>@@ @@#surgery_but;<<button "Surgery">><</button>>@@ <<set _right_selection = "assignment">> </div> </div> /* Disable all slave_actions if they are not your slave. */ <<if $player.slaves.contains($selected)>> <<elseif $player.is_slave && $characters.shintani_hiroyuki.slaves.contains(_char.key)>> <<if !_higher_status>> <<script>> setTimeout(() => { var buttons = $("#slave_actions").find("button"); buttons.addClass("disabled"); buttons.prop("disabled", true); }, 20); <</script>> <</if>> <<else>> <<script>> setTimeout(() => { var buttons = $("#slave_actions").find("button"); buttons.addClass("disabled"); buttons.prop("disabled", true); }, 20); <</script>> <</if>> <<timed 50ms>><<silently>><<script>> $("#description_actions").find("button").on("click", (event) => { $("#description_actions").find("button").removeClass("disabled"); $("#description_actions").find("button").prop("disabled", false); var self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); var desc = setup.camelize(self.html()); $("#" + desc).removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenter").removeClass("hidden"); $("#" + State.temporary.left_selection).addClass("hidden"); State.temporary.left_selection = desc; $("#characterMenuCenterDetails").addClass("hidden"); }); $("#slave_actions").find("button").on("click", (event) => { $("#slave_actions").find("button").removeClass("disabled"); $("#slave_actions").find("button").prop("disabled", false); var self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); var desc = setup.camelize(self.html()); $("#" + desc).removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenter").removeClass("hidden"); $("#" + State.temporary.right_selection).addClass("hidden"); State.temporary.right_selection = desc; $("#characterMenuCenterDetails").addClass("hidden"); }); <</script>><</silently>><</timed>> <</nobr>>
<<nobr>> <div id="diet" class="subbackground hidden" style="padding-bottom: 25px;"> <hr> <center><h3>Diet</h3></center> <<if $player.slaves.contains(_char.key) || ($player.is_slave && $characters.shintani_hiroyuki.slaves.contains(_char.key))>> <<if $player.slaves.contains(_char.key) || _higher_status>> <center id="diet_buttons" class="threeHalfs smalltext longbutton column"> <<if $player.slaves.contains(_char.key)>> <div id="diet_amount_buttons"> @@#limited;<<button "Limited">><</button>>@@ @@#regular;<<button "Regular">><</button>>@@ @@#abundant;<<button "Abundant">><</button>>@@ </div> <<else>> <span class="fail">(Shintani's paternalist views prevents extreme starvation or gorging)</span> <<disable>>@@#limited;<<button "Limited">><</button>>@@<</disable>> <<disable>>@@#regular;<<button "Regular">><</button>>@@<</disable>> <<disable>>@@#abundant;<<button "Abundant">><</button>>@@<</disable>> <</if>> <hr> <h3>Additives</h3> <div id="diet_additives_buttons"> @@#noAdditives;<<button "None">><</button>>@@ @@#cumAdded;<<button "Cum Added">><</button>>@@ @@#cumBased;<<button "Cum Based">><</button>>@@ @@#milkAdded;<<button "Milk Added">><</button>>@@ @@#milkBased;<<button "Milk Based">><</button>>@@ </div> </center> <center class="threeHalfs smalltext longbutton column"> <hr> <<button "Done">><<script>> $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); <</script>><</button>> </center> <<else>> <div class="textpassage"> You do not have a higher status than this person! </div> <</if>> <<else>> <div class="textpassage"> This person is not your slave! </div> <</if>> </div> <<if ($player.is_slave && $characters.shintani_hiroyuki.slaves.contains(_char.key) && _higher_status) || $player.slaves.contains(_char.key)>> <<silently>><<timed 50ms>> <<run $("#diet_amount_buttons").find("#" + _char.diet.amount + " button").addClass("disabled")>> <<run $("#diet_amount_buttons").find("#" + _char.diet.amount + " button").prop("disabled", true)>> <<if _char.diet.additives == "none">> <<addclass "#noAdditives button" "disabled">> <<run $("#noAdditives button").prop("disabled", true)>> <<else>> <<run $("#diet_additives_buttons").find("#" + _char.diet.additives + " button").addClass("disabled")>> <<run $("#diet_additives_buttons").find("#" + _char.diet.additives + " button").prop("disabled", true)>> <</if>> <<script>> let _t = State.temporary; let _v = State.variables; var player = State.variables.player; var char = State.temporary.char; $("#diet_amount_buttons").find("button").on("click", (event) => { $("#diet_amount_buttons").find("button").removeClass("disabled"); $("#diet_amount_buttons").find("button").prop("disabled", false); var self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); var diet_amount = setup.camelize(self.html()); char.diet.amount = diet_amount; const diet_passage = "diet" + diet_amount.toLocaleUpperFirst(); if (tale.has(diet_passage)) { $.wiki("<<include " + diet_passage + ">>"); $("#characterMenuCenterDetails").removeClass("hidden"); $("#characterMenuCenter").addClass("hidden"); $("#characterMenuLeft").addClass("hidden"); } else { $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); } State.variables.to_simulate_day.add(char.key); }); $("#diet_additives_buttons").find("button").on("click", (event) => { $("#diet_additives_buttons").find("button").removeClass("disabled"); $("#diet_additives_buttons").find("button").prop("disabled", false); var self = $(event.currentTarget); var diet_additives = setup.camelize(self.html()); char.diet.additives = diet_additives; const diet_passage = "diet" + diet_additives.toLocaleUpperFirst(); var to_notify = ""; if (diet_additives.contains("cum") && player.gender == 1) { to_notify = "No way to produce cum!"; } else if (diet_additives.contains("milk") && player.gender == 0) { to_notify = "No way to produce milk!"; } if (to_notify == "") { self.addClass("disabled"); self.prop("disabled", true); char.diet.additives = diet_additives; if (tale.has(diet_passage)) { $.wiki("<<include " + diet_passage + ">>"); $("#characterMenuCenterDetails").removeClass("hidden"); $("#characterMenuCenter").addClass("hidden"); $("#characterMenuLeft").addClass("hidden"); } else { $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); } State.variables.to_simulate_day.add(char.key); } else { $.wiki("<<notify>>" + to_notify + "<</notify>>"); $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); $("#noAdditives button").addClass("disabled"); $("#noAdditives button").prop("disabled", true); State.temporary.char.diet.additives = "none"; } }); <</script>> <</timed>><</silently>> <</if>> <</nobr>>
/* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Limited Diet");>> <<set _flavor_text = "\ You take conscious effort in filling " + setup.titleCase(_char.first_name) + "\'s meals with an over-abundance of \ calories in order to increase their weight. This effectively keeps them constantly gorged and uncomfortable, decreasing \ their affection and health over time. Supplementing this diet with additives weakens addiction, intertwining discomfort of \ gorging and said additive.">> <<set _flavor_text += "\ <ul>\ <li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, -2) + " per day.</li>\ <li>Decrease maximum health chance: <span class=\"fail\">1%</span> per day.</li>\ <li>Increase weight chance: <span>40%</span> per day.</li>\ </ul>\ ">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Cum Added");>> <<set _flavor_text = "\ You secretly cum into " + setup.titleCase(_char.first_name) + "\'s food before every meal until \ further notice. This allows " + setup.titleCase(_char.first_name) + " to associate your cum with \ sustenance and furthers " + setup.PRONOUNS[_char.gender]["?his"] + " cum fetish as well as addiction. \ Unfortunately without any menial slaves of your own, you have to produce this cum yourself.">> <<set _flavor_text += "\ <ul>\ <li>Stamina: " + setup.show_change_html(0, -10) + " per day.</li>\ <li>Increase cum fetish chance: <span>50%</span> per day.</li>\ <li>Increase cum addiction chance: <span>30%</span> per day.</li>\ </ul>\ ">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
<<nobr>> /* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Cum Based");>> <<set _flavor_text = "\ You now cum throughout the day to prepare " + setup.titleCase(_char.first_name) + "\'s meals. \ If " + setup.titleCase(_char.first_name) + " does not have a cum fetish this will severely decrease " + setup.PRONOUNS[_char.gender]["?his"] + " affection for you as well as make them despise cum. \ However, for the cum loving this is a perfect way to build psychological addiction and happiness. \ Unfortunately without any menial slaves of your own, \ you have to produce this cum yourself.">> <<set _flavor_text += "\ <ul>\ <li>Stamina: " + setup.show_change_html(0, -30) + " per day.</li>">> <<if _char.sex_fetishes.cum gt 50>> <<set _flavor_text += "<li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, 1) + " per day.</li>">> <<set _flavor_text += "<li>" + setup.titleCase(_char.first_name) + "\'s Cum Addiction: " + setup.show_change_html(0, 3) + " per day.</li>">> <<set _flavor_text += "<li>" + setup.titleCase(_char.first_name) + "\'s Cum Fetish: " + setup.show_change_html(0, 2) + " per day.</li>">> <<else>> <<set _flavor_text += "<li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, -10) + " per day.</li>">> <<set _flavor_text += "<li>" + setup.titleCase(_char.first_name) + "\'s Cum Addiction: " + setup.show_change_html(0, -3) + " per day.</li>">> <<set _flavor_text += "<li>" + setup.titleCase(_char.first_name) + "\'s Cum Fetish: " + setup.show_change_html(0, -3) + " per day.</li>">> <</if>> <<set _flavor_text += "</ul>">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>> <</nobr>>
/* Set title */ <<run $("#characterMenuCenterDetailsTitle").html("Limited Diet");>> <<set _flavor_text = "\ You take conscious effort in restricting " + setup.titleCase(_char.first_name) + "\'s caloric and nutritional \ intake in order to reduce their weight. This effectively keeps them constantly hungry, decreasing their affection \ and strength over time. Supplementing this diet with additives boosts addiction, intertwining the dopamine hit of \ nutrition and said additive.">> <<set _flavor_text += "\ <ul>\ <li>" + setup.titleCase(_char.first_name) + "\'s Affection: " + setup.show_change_html(0, -2) + " per day.</li>\ <li>Decrease strength chance: <span class=\"fail\">10%</span> per day.</li>\ <li>Decrease weight chance: <span>40%</span> per day.</li>\ </ul>\ ">> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>>
<<nobr>> <div id="finances" class="subbackground hidden"> <hr> <center><h3>Finances</h3> <<if $player.slaves.contains(_char.key)>> <div class ="textpassage"> Date acquired: <<= setup.print_date(_char.date_acquired)>><br> Total earned: <<= setup.round2(_char.finances.total_earned)>><br> Purchase cost: <<= setup.round2(_char.finances.purchase_cost)>><br> Total costs: <<= setup.round2(_char.finances.cost + _char.finances.purchase_cost)>><br> <br> Efficiency: <<= setup.round2(_char.efficiency() * 100)>>%<br> Estimate sex value: <<= setup.round2(_char.sex_value())>><br> Estimated value: <<= setup.round2(_char.value())>><br> <br> Estimated net: <<= setup.round2(_char.finances.total_earned - (_char.finances.cost + _char.finances.purchase_cost) + _char.value())>> </div> <<else>> <div class="textpassage"> You do not own <<= setup.titleCase(_char.first_name)>> and cannot view their financial records. </div> <</if>> </center> </div> <</nobr>>
<<nobr>> <div id="inventory" class="subbackground hidden"> <hr> <center><h3>Inventory</h3> <<if $player.slaves.contains(_char.key) || ($player.is_slave && _higher_status)>> <<set _items = UInv.GetItemsArrayWithoutAnyItemTags(_char.key, "type", ["money", "quest_item", "armor", "accessory"])>> <div class="container twoCol" style="font-weight: normal"> <div style="text-align: left; margin-left: 20px"> <<for _i = 0; _i lt _items.length; _i++>> <<= setup.titleCase(UInv.GetItemPropertyValue(_char.key, _items[_i], "name"))>> <br> <</for>> </div> <div style="text-align: right; margin-right: 20px; font-weight: normal"> <<for _i = 0; _i lt _items.length; _i++>> <<= UInv.BagHasItem(_char.key, _items[_i])>> <br> <</for>> </div> </div> <<else>> <div class="textpassage"> You do not have permission to view <<= setup.titleCase(_char.first_name)>>'s inventory. </div> <</if>> </center> </div> <</nobr>>
<<run $("#characterMenuCenterDetailsTitle").html("Addressing You")>> <<run $("#characterMenuCenterDetailsBody").html("")>> <<set $enable_keybinds = false>> You call in <<= setup.titleCase(_char.first_name)>> and examine <<= setup.PRONOUNS[_char.gender]["?him"]>>. <<= setup.titleCase(setup.PRONOUNS[_char.gender]["?he"])>> <<set _disposition = _char.get_disposition()>> <<switch _disposition>> <<case "hateful">> stares daggers at you. <<case "depressed">> keeps <<= (setup.PRONOUNS[_char.gender]["?his"])>> sight fixed on the floor, disinterested in <<= (setup.PRONOUNS[_char.gender]["?his"])>> surroundings. <<case "scared">> holds <<= (setup.PRONOUNS[_char.gender]["?his"])>> body tightly, scared of what's to come next. <<default>> stands curiously, wondering what you wanted. <</switch>> <<set _temp_address = setup.titleCase(_char.address)>> <br> <<= $player.dialogue("You\'re to address me as...")>><br> <center> <<textbox "_temp_address" _temp_address>> <br><br> <<button "Confirm">> <<if _temp_address.trim().length == 0>> <<notify>>Invalid name.<</notify>> <<elseif _temp_address.trim().toLowerCase() == _char.address.toLowerCase()>> <<script>> $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); $("#naming").find("button").removeClass("disabled"); $("#naming").find("button").prop("disabled", false); <</script>> <<else>> <<set _char.address = _temp_address.trim().toLowerCase()>> <<set _response = "">> <<switch _disposition>> <<case "hateful">> <<set _response = _char.dialogue("Yes... " + setup.titleCase(_char.address) + "...")>> <<case "devoted">> <<set _response = _char.dialogue("Yes, " + setup.titleCase(_char.address) + "! I\'m always happy to call you \ whatever you ask me to.")>> <<default>> <<set _response = _char.dialogue("Yes, " + setup.titleCase(_char.address) + ".")>> <</switch>> <<run $("#characterMenuCenterDetailsBody").html("")>> <<run $("#characterMenuCenterDetailsBody").wiki(_response)>> <<run $("#characterMenuCenterDetailsBody").wiki("<br><br><center><<button \"Done\">>\ <<script>>\ $(\"#characterMenuCenter\").removeClass(\"hidden\");\ $(\"#characterMenuLeft\").removeClass(\"hidden\");\ $(\"#characterMenuCenterDetails\").addClass(\"hidden\");\ $(\"#naming\").find(\"button\").removeClass(\"disabled\");\ $(\"#naming\").find(\"button\").prop(\"disabled\", false);\ <</script>>\ <<set $enable_keybinds = true>>\ <" + "</button>></center>")>> <</if>> <</button>> <<button "Back">> <<script>> $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); $("#naming").find("button").removeClass("disabled"); $("#naming").find("button").prop("disabled", false); <</script>> <<set $enable_keybinds = true>> <</button>> </center>
<<run $("#characterMenuCenterDetailsTitle").html("Changing First Name")>> <<run $("#characterMenuCenterDetailsBody").html("")>> <<set $enable_keybinds = false>> You call in <<= setup.titleCase(_char.first_name)>> and examine <<= setup.PRONOUNS[_char.gender]["?him"]>>. <<= setup.titleCase(setup.PRONOUNS[_char.gender]["?he"])>> <<set _disposition = _char.get_disposition()>> <<switch _disposition>> <<case "hateful">> stares daggers at you. <<case "depressed">> keeps <<= (setup.PRONOUNS[_char.gender]["?his"])>> sight fixed on the floor, disinterested in <<= (setup.PRONOUNS[_char.gender]["?his"])>> surroundings. <<case "scared">> holds <<= (setup.PRONOUNS[_char.gender]["?his"])>> body tightly, scared of what's to come next. <<default>> stands curiously, wondering what you wanted. <</switch>> <<set _temp_first_name = setup.titleCase(_char.first_name)>> <br> <<= $player.dialogue("Perhaps it would be better if you were called...")>><br> <center> <<textbox "_temp_first_name" _temp_first_name>> <br><br> <<button "Confirm">> <<if _temp_first_name.trim().length == 0>> <<notify>>Invalid name.<</notify>> <<elseif _temp_first_name.trim().toLowerCase() == _char.first_name.toLowerCase()>> <<script>> $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); $("#naming").find("button").removeClass("disabled"); $("#naming").find("button").prop("disabled", false); <</script>> <<else>> <<set _char.first_name = _temp_first_name.trim().toLowerCase()>> <<run $("#characterMenuFullName").html(setup.titleCase(_char.first_name) + " " + setup.titleCase(_char.last_name))>> <<set _response = "">> <<switch _disposition>> <<case "hateful">> <<set _response = setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " nods " + setup.PRONOUNS[_char.gender]["?his"] + " head and accepts " + setup.PRONOUNS[_char.gender]["?his"] + " new name, but you can tell there is resentment in " + setup.PRONOUNS[_char.gender]["?his"] " eyes that scream against the further wiping of " + setup.PRONOUNS[_char.gender]["?his"] + " identity " + _char.print_delta({"obedience": -1}) + ".">> <<set _char.slave_traits.obedience -= 1>> <<case "devoted">> <<set _response = setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " nods " + setup.PRONOUNS[_char.gender]["?his"] + " head and accepts " + setup.PRONOUNS[_char.gender]["?his"] + " new name with utmost pleasure. You can tell that " + " being given a new name by " + setup.PRONOUNS[_char.gender]["?his"] + " master brings " + setup.PRONOUNS[_char.gender]["?him"] + " joy.">> <<default>> <<set _response = setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " nods " + setup.PRONOUNS[_char.gender]["?his"] + " head and accepts " + setup.PRONOUNS[_char.gender]["?his"] + " new name.">> <</switch>> <<run $("#characterMenuCenterDetailsBody").html("")>> <<run $("#characterMenuCenterDetailsBody").wiki(_response)>> <<run $("#characterMenuCenterDetailsBody").wiki("<br><br><center><<button \"Done\">>\ <<script>>\ $(\"#characterMenuCenter\").removeClass(\"hidden\");\ $(\"#characterMenuLeft\").removeClass(\"hidden\");\ $(\"#characterMenuCenterDetails\").addClass(\"hidden\");\ $(\"#naming\").find(\"button\").removeClass(\"disabled\");\ $(\"#naming\").find(\"button\").prop(\"disabled\", false);\ <</script>>\ <" + "</button>></center>")>> <</if>> <</button>> <<button "Back">> <<script>> $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); $("#naming").find("button").removeClass("disabled"); $("#naming").find("button").prop("disabled", false); <</script>> <</button>> </center>
<<run $("#characterMenuCenterDetailsTitle").html("Changing Last Name")>> <<run $("#characterMenuCenterDetailsBody").html("")>> <<set $enable_keybinds = false>> You call in <<= setup.titleCase(_char.first_name)>> and examine <<= setup.PRONOUNS[_char.gender]["?him"]>>. <<= setup.titleCase(setup.PRONOUNS[_char.gender]["?he"])>> <<set _disposition = _char.get_disposition()>> <<switch _disposition>> <<case "hateful">> stares daggers at you. <<case "depressed">> keeps <<= (setup.PRONOUNS[_char.gender]["?his"])>> sight fixed on the floor, disinterested in <<= (setup.PRONOUNS[_char.gender]["?his"])>> surroundings. <<case "scared">> holds <<= (setup.PRONOUNS[_char.gender]["?his"])>> body tightly, scared of what's to come next. <<default>> stands curiously, wondering what you wanted. <</switch>> Since the crumbling of most structure in the world, family names are very symbolic and important. You can choose to give your slaves a vassal name, or perhaps even your own surname if you want them to carry your legacy. <<set _temp_last_name = setup.titleCase(_char.last_name)>> <br> <<= $player.dialogue("Perhaps it would be better if you were called...")>><br> <center> <<textbox "_temp_last_name" _temp_last_name>> <br><br> <<button "Confirm">> <<set _temp_last_name = _temp_last_name.trim().toLowerCase()>> <<if _temp_last_name.length == 0>> <<notify>>Invalid name.<</notify>> <<elseif _temp_last_name == "hiroyuki" || _temp_last_name == "namm" || _temp_last_name == "sike">> <<notify>>You do not have the authority to bestow this family name.<</notify>> <<elseif _temp_last_name.trim().toLowerCase() == _char.last_name.toLowerCase()>> <<script>> $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); $("#naming").find("button").removeClass("disabled"); $("#naming").find("button").prop("disabled", false); <</script>> <<else>> <<set _char.last_name = _temp_last_name.trim().toLowerCase()>> <<run $("#characterMenuFullName").html(setup.titleCase(_char.first_name) + " " + setup.titleCase(_char.last_name))>> <<set _response = "">> <<switch _disposition>> <<case "hateful">> <<set _response = setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " nods " + setup.PRONOUNS[_char.gender]["?his"] + " head and accepts " + setup.PRONOUNS[_char.gender]["?his"] + " new name, but you can tell there is resentment in " + setup.PRONOUNS[_char.gender]["?his"] " eyes that scream against the further wiping of " + setup.PRONOUNS[_char.gender]["?his"] + " identity " + _char.print_delta({"obedience": -2}) + ".">> <<set _char.slave_traits.obedience -= 2>> <<case "devoted">> <<set _response = setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " nods " + setup.PRONOUNS[_char.gender]["?his"] + " head and accepts " + setup.PRONOUNS[_char.gender]["?his"] + " new name with utmost pleasure. You can tell that " + " being given a new name by " + setup.PRONOUNS[_char.gender]["?his"] + " master brings " + setup.PRONOUNS[_char.gender]["?him"] + " joy.">> <<default>> <<set _response = setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " nods " + setup.PRONOUNS[_char.gender]["?his"] + " head and accepts " + setup.PRONOUNS[_char.gender]["?his"] + " new name.">> <</switch>> <<run $("#characterMenuCenterDetailsBody").html("")>> <<run $("#characterMenuCenterDetailsBody").wiki(_response)>> <<run $("#characterMenuCenterDetailsBody").wiki("<br><br><center><<button \"Done\">>\ <<script>>\ $(\"#characterMenuCenter\").removeClass(\"hidden\");\ $(\"#characterMenuLeft\").removeClass(\"hidden\");\ $(\"#characterMenuCenterDetails\").addClass(\"hidden\");\ $(\"#naming\").find(\"button\").removeClass(\"disabled\");\ $(\"#naming\").find(\"button\").prop(\"disabled\", false);\ <</script>>\ <" + "</button>></center>")>> <</if>> <</button>> <<button "Back">> <<script>> $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); $("#naming").find("button").removeClass("disabled"); $("#naming").find("button").prop("disabled", false); <</script>> <</button>> </center>
<div id="naming" class="subbackground hidden"> <hr> <center><h3>Naming</h3> <<if $player.slaves.contains(_char.key)>> <div id="slaveName" class="threeHalfs smalltext longbutton column"> @@#firstName;<<button "First Name">><</button>>@@ @@#lastName;<<button "Last Name">><</button>>@@ </div> <div id="playerName" class="threeHalfs smalltext longbutton column"> @@#address;<<button "Address">><</button>>@@ </div> <<else>> <div class="textpassage"> You do not own <<= setup.titleCase(_char.first_name)>> or have their permission to modify them in any way. </div> <</if>> </center> </div> <<silently>><<timed 50ms>><<script>> let _t = State.temporary; let _v = State.variables; let player = State.variables.player; let char = State.temporary.char; $("#naming").find("button").on("click", (event) => { $("#naming").find("button").removeClass("disabled"); $("#naming").find("button").prop("disabled", false); let self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); let passage = "naming" + setup.camelize(self.html()).toLocaleUpperFirst(); if (tale.has(passage)) { $("#characterMenuCenterDetailsBody").wiki("<<include " + passage + ">>"); $("#characterMenuCenterDetails").removeClass("hidden"); $("#characterMenuCenter").addClass("hidden"); $("#characterMenuLeft").addClass("hidden"); } else { $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); /* TODO: Implement */ $.wiki("<<notify>>WIP<</notify>>") } }); <</script>><</timed>><</silently>>
<div id="outfit" class="subbackground hidden"> <hr> <center><h3>Outfit</h3> <div id="outfitNormal" class="threeHalfs smalltext longbutton column"> @@#ownChoice;<<button "Own Choice">><</button>>@@ </div> <hr> <h3>Humiliating</h3> <div id="outfitHumiliating" class="threeHalfs smalltext longbutton column"> @@#naked;<<button "Naked">><</button>>@@ </div> </center> </div> <<silently>><<timed 50ms>><<script>> let _t = State.temporary; let _v = State.variables; let player = State.variables.player; let char = State.temporary.char; $("#outfit").find("#" + char.outfit + " button").addClass("disabled"); $("#outfit").find("#" + char.outfit + " button").prop("disabled", true); $("#outfit").find("button").on("click", (event) => { $("#outfit").find("button").removeClass("disabled"); $("#outfit").find("button").prop("disabled", false); let self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); let outfit = setup.camelize(self.html()); char.outfit = outfit; }); <</script>><</timed>><</silently>>
<<run $("#characterMenuCenterDetailsTitle").html("Rule Enforcement");>> <<set _flavor_text = "\ The level of enforcement or <em>degree</em> of the rules acts as a multiplier for the other rules. A lax \ degree of enforcement makes punishments less severe and rewards more common, while a strict degree of enforcement \ does the opposite." >> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>>
<<run $("#characterMenuCenterDetailsTitle").html("Punishment - Chastity");>> <<set _flavor_text = "\ As punishment for misbehavior you can force " + setup.titleCase(_char.first_name) + " to be completely devoid of sexual gratification \ for an extended period of time. Note that this punishment only works for those that are interestered in sex or have a high libido. \ Also completely ineffective for those with a chastity cage equipped." >> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>>
<<run $("#characterMenuCenterDetailsTitle").html("Punishment - Whipping");>> <<set _flavor_text = "\ The most classical of punishments is whipping. While it is very efficient at instilling fear and overall obedience, it does so \ at a steep price. Depending on how often one in punished, they may suffer from mental ailments such as depression, or suffer \ permanent physical injuries." >> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>>
<<run $("#characterMenuCenterDetailsTitle").html("Reward - Free Time");>> <<set _flavor_text = "\ The most classical of rewards is allowing " + setup.titleCase(_char.first_name) + " to have extra free time at the end of the day. \ This reward while increasing willpower, works especially well for those with high intelligence. It builds a good amount of obedience \ through time as well as acting as a counter measure against any possible developing mental ailments. Overall, this reward will increase \ " + setup.titleCase(_char.first_name) + "\'s happiness without too much adversarial effects." >> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>>
<<run $("#characterMenuCenterDetailsTitle").html("Reward - Orgasm");>> <<set _flavor_text = "\ As a reward for good behavior, you can make " + setup.titleCase(_char.first_name) + " orgasm. This reward is especially effective when \ paired with chastity or having a chastity cage equipped. Overtime, the pleasure of orgasm will be invariably linked with good behavior \ causing both an increase in libido as well as obedience." >> <<run $("#characterMenuCenterDetailsBody").html(_flavor_text)>>
<div id="rules" class="subbackground hidden" style="padding-bottom: 25px;"> <hr> <center><h3>Rules</h3> <div id="rulesDegree" class="threeHalfs smalltext longbutton column"> @@#lax;<<button "Lax">><</button>>@@ @@#normal;<<button "Normal">><</button>>@@ @@#strict;<<button "Strict">><</button>>@@ </div> <hr> <h3>Punishments</h3> <div id="rulesPunishments" class="threeHalfs smalltext longbutton column"> @@#balanced;<<button "Balanced">><</button>>@@ @@#chastity;<<button "Chastity">><</button>>@@ @@#whipping;<<button "Whipping">><</button>>@@ </div> <hr> <h3>Rewards</h3> <div id="rulesRewards" class="threeHalfs smalltext longbutton column"> @@#balanced;<<button "Balanced">><</button>>@@ @@#orgasm;<<button "Orgasm">><</button>>@@ @@#freeTime;<<button "Free Time">><</button>>@@ </div> /* TODO: Masturbation, realtions, etc. */ <center class="threeHalfs smalltext longbutton column"> <hr> <<button "Done">><<script>> $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); <</script>><</button>> </center> </center> </div> <<silently>><<timed 50ms>> <<script>> let _t = State.temporary; let _v = State.variables; let player = State.variables.player; let char = State.temporary.char; $("#rulesDegree").find("#" + char.rules.degree + " button").addClass("disabled"); $("#rulesDegree").find("#" + char.rules.degree + " button").prop("disabled", true); $("#rulesPunishments").find("#" + char.rules.punishment + " button").addClass("disabled"); $("#rulesPunishments").find("#" + char.rules.punishment + " button").prop("disabled", true); $("#rulesRewards").find("#" + char.rules.reward + " button").addClass("disabled"); $("#rulesRewards").find("#" + char.rules.reward + " button").prop("disabled", true); $("#rulesDegree").find("button").on("click", (event) => { $("#rulesDegree").find("button").removeClass("disabled"); $("#rulesDegree").find("button").prop("disabled", false); let self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); let degree = setup.camelize(self.html()); char.rules.degree = degree; $.wiki("<<include rulesDegree>>"); $("#characterMenuCenterDetails").removeClass("hidden"); $("#characterMenuCenter").addClass("hidden"); $("#characterMenuLeft").addClass("hidden"); }); $("#rulesPunishments").find("button").on("click", (event) => { $("#rulesPunishments").find("button").removeClass("disabled"); $("#rulesPunishments").find("button").prop("disabled", false); let self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); let punishment = setup.camelize(self.html()); char.rules.punishment = punishment; let passage = "rulesPunishments" + punishment.toLocaleUpperFirst(); if (tale.has(passage)) { $.wiki("<<include " + passage + ">>"); $("#characterMenuCenterDetails").removeClass("hidden"); $("#characterMenuCenter").addClass("hidden"); $("#characterMenuLeft").addClass("hidden"); } else { $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); } }); $("#rulesRewards").find("button").on("click", (event) => { $("#rulesRewards").find("button").removeClass("disabled"); $("#rulesRewards").find("button").prop("disabled", false); let self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); let reward = setup.camelize(self.html()); char.rules.reward = reward; let passage = "rulesRewards" + reward.toLocaleUpperFirst(); if (tale.has(passage)) { $.wiki("<<include " + passage + ">>"); $("#characterMenuCenterDetails").removeClass("hidden"); $("#characterMenuCenter").addClass("hidden"); $("#characterMenuLeft").addClass("hidden"); } else { $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); } }); <</script>> <</timed>><</silently>>
<div id="salon" class="subbackground hidden"> <hr> <center><h3>Salon</h3> <<if $player.slaves.contains(_char.key)>> <div id="salon_buttons" class="threeHalfs smalltext longbutton column"> @@#hair;<<button "Hair">><</button>>@@ @@#makeUp;<<button "Make Up">><</button>>@@ @@#nails;<<button "Nails">><</button>>@@ @@#piercings;<<button "Piercings">><</button>>@@ @@#tattoos;<<button "Tattoos">><</button>>@@ </div> <<else>> <div class="textpassage"> You do not own <<= setup.titleCase(_char.first_name)>> or have their permission to modify them in any way. </div> <</if>> </center> </div> <<silently>><<timed 50ms>><<script>> let _t = State.temporary; let _v = State.variables; let player = State.variables.player; let char = State.temporary.char; $("#salon_buttons").find("button").on("click", (event) => { $("#salon_buttons").find("button").removeClass("disabled"); $("#salon_buttons").find("button").prop("disabled", false); let self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); let passage = "salon" + setup.camelize(self.html()).toLocaleUpperFirst(); if (tale.has(passage)) { $.wiki("<<include " + passage + ">>"); $("#characterMenuCenterDetails").removeClass("hidden"); $("#characterMenuCenter").addClass("hidden"); $("#characterMenuLeft").addClass("hidden"); } else { $("#characterMenuCenter").removeClass("hidden"); $("#characterMenuLeft").removeClass("hidden"); $("#characterMenuCenterDetails").addClass("hidden"); /* TODO: Implement */ $.wiki("<<notify>>WIP<</notify>>"); } }); <</script>><</timed>><</silently>>
<<nobr>> <div id="sexPrefs" class="subbackground hidden"> <hr> <center><h3>Sex Preferences</h3></center> <<if _char.sex_prefs_known>> <div class="container twoCol"> <div style="text-align: left; margin-left: 20px"> <<for _i = 0; _i lt setup.SEX_PREFS.length; _i++>> <<= setup.titleCase(setup.SEX_PREFS[_i])>> <br> <</for>> </div> <div style="text-align: right; margin-right: 20px"> <<for _i = 0; _i lt setup.SEX_PREFS.length; _i++>> <<= setup.round2(_char.sex_prefs[setup.SEX_PREFS[_i]]).toString().padStart(3, '\u2000')>> <br> <</for>> </div> </div> <<else>> <div class="textpassage"> You do not know <<= setup.titleCase(_char.first_name)>>'s sex likes or dislikes. </div> <</if>> <<if _char.fetishes_known>> <div class="container twoCol"> <div style="text-align: left; margin-left: 20px"> <<for _i = 0; _i lt setup.SEX_FETISHES.length; _i++>> <<= setup.titleCase(setup.SEX_FETISHES[_i])>> <br> <</for>> </div> <div style="text-align: right; margin-right: 20px"> <<for _i = 0; _i lt setup.SEX_FETISHES.length; _i++>> <<= setup.round2(_char.sex_fetishes[setup.SEX_FETISHES[_i]]).toString().padStart(3, '\u2000')>> <br> <</for>> </div> </div> <<else>> <div class="textpassage"> You do not know <<= setup.titleCase(_char.first_name)>>'s fetishes. </div> <</if>> </div> <</nobr>>
<<nobr>> <div id="skills" class="subbackground hidden"> <hr> <center><h3>Skills</h3></center> <<if _char.skills_known>> <div class="container twoCol"> <div style="text-align: left; margin-left: 20px"> <<for _i = 0; _i lt setup.SKILLS.length; _i++>> <<= setup.titleCase(setup.SKILLS[_i])>> <br> <</for>> </div> <div style="text-align: right; margin-right: 20px"> <<for _i = 0; _i lt setup.SKILLS.length; _i++>> <<= setup.round2(_char.skills[setup.SKILLS[_i]]).toString().padStart(3, '\u2000')>> <br> <</for>> </div> </div> <hr> <center><h3>Sex Skills</h3></center> <div class="container twoCol"> <div style="text-align: left; margin-left: 20px"> <<for _i = 0; _i lt setup.SEX_SKILLS.length; _i++>> <<= setup.titleCase(setup.SEX_SKILLS[_i])>> <br> <</for>> </div> <div style="text-align: right; margin-right: 20px"> <<for _i = 0; _i lt setup.SEX_SKILLS.length; _i++>> <<= setup.round2(_char.sex_skills[setup.SEX_SKILLS[_i]]).toString().padStart(3, '\u2000')>> <br> <</for>> </div> </div> <<else>> <div class="textpassage"> You do not know <<= setup.titleCase(_char.first_name)>>'s skills. </div> <</if>> </div> <</nobr>>
<<nobr>> <div id="stats" class="subbackground hidden"> <hr> <center><h3>Stats</h3></center> <<if _char.stats_known>> <div class="container twoCol"> <div style="text-align: left; margin-left: 20px"> Sex <br> Age <br> <br> <<for _i = 0; _i lt setup.STATS.length; _i++>> <<= setup.titleCase(setup.STATS[_i])>> <br> <</for>> </div> <div style="text-align: right; margin-right: 20px"> <<if _char.gender == 0>> Male <<else>> Female <</if>> <br> <<= _char.age()>> <br> <br> <<for _i = 0; _i lt setup.STATS.length; _i++>> <<= setup.titleCase(_char.get_descriptor(setup.STATS[_i]))>> <br> <</for>> </div> </div> <<else>> <div class="textpassage"> You do not know <<= setup.titleCase(_char.first_name)>>'s stats. </div> <</if>> </div> <</nobr>>
<<nobr>> <div id="summary" class="subbackground"> <hr> <center><h3>Summary</h3></center> <div class="textpassage"> <<= _char.toString(true)>> </div> </div> <</nobr>>
<<nobr>> <div id="surgery" class="subbackground hidden"> <hr> <center><h3>Surgery</h3> <<if $player.slaves.contains(_char.key)>> <div class="textpassage"> You do not have the equipment or resources to perform surgey on <<= setup.titleCase(_char.first_name)>>. </div> <<else>> <div class="textpassage"> You do not own <<= setup.titleCase(_char.first_name)>> and cannot perform surgery on them. </div> <</if>> </center> </div> <</nobr>>
<<nobr>> <div id="background" class="paper_border" style="position: relative"> <center><h1 style="color: red">You Died</h1></center> <p id="death_summary" class="textpassage" style="display: none"> The harsh world has claimed your life whether it was exhaustion, injury, or sickness, <<= $player.name()>> has perished in this land. Since you do not have any next of kin, your story ends here, burried in the sands ashes of yesterday. <br><br> <center> <<button Saves>> <<script>> UI.saves(); <</script>> <</button>> <<button Quit>> <<run Engine.restart()>> <</button>> </center> </p> </div> <<script>> setTimeout(() => { $("#death_summary").fadeIn(); }, 500); <</script>> /* Reset awake counter */ <<set $time_awake = 0>> <<include round>> <</nobr>>
<<nobr>> <div id="equipOverlay" class="hidden" style="position: relative; width: 0; height: 0; margin-left: -5px"> <div class="equipOverlay"> <div id="armor"> <div id="headLine"></div> <div id="head" class="equipButton"> <<button "">><</button>> </div> <div id="chestLine"></div> <div id="chest" class="equipButton"> <<button "">><</button>> </div> <div id="legsLine"></div> <div id="legs" class="equipButton"> <<button "">><</button>> </div> <div id="feetLine"></div> <div id="feet" class="equipButton"> <<button "">><</button>> </div> </div> <div id="accessories"> <div id="neckLine"></div> <div id="neck" class="equipButton"> <<button "">><</button>> </div> <div id="weaponLine"></div> <div id="weapon1" class="equipButton"> <<button "">><</button>> </div> <div id="weapon2" class="equipButton"> <<button "">><</button>> </div> <div id="groinLine"></div> <div id="groin1" class="equipButton"> <<button "">><</button>> </div> <div id="groin2" class="equipButton"> <<button "">><</button>> </div> </div> </div> </div> <<timed 50ms>><<silently>><<script>> let player = State.variables.player; let equipButtons = $(".equipButton"); for (let _i = 0; _i < equipButtons.length; _i++) { let id = equipButtons[_i].id; if (player.equipment[id] != "none") { $(equipButtons[_i]).find("button").html("E"); } $(equipButtons[_i]).find("button").on("click", (event) => { $(".equipButton button").removeClass("disabled"); $(".equipButton button").prop("disabled", false); $("#equip_list").children().fadeOut(0.1); if (player.is_slave) { $("#neck button").addClass("disabled"); $("#neck button").prop("disabled", true); } let self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); $("#default_list").fadeOut(0.1); State.temporary.slot = id; $("#" + State.temporary.slot.replace(/[0-9]/g, '') + "_list").fadeIn(0.1); }); } if (player.is_slave) { $("#neck button").addClass("disabled"); $("#neck button").prop("disabled", true); } <</script>><</silently>><</timed>> <</nobr>>
<<nobr>> <div id="equipment" class="subbackground hidden"> <div id="default_list"> <hr> <center><h3 id="armors_title" class="tool">Armor</h3> <<set _armors = UInv.GetItemsArrayByItemTag("inventory", "type", "armor")>> <div id="armors_list" class="list container twoCol"> <div id="armors_list_names" style="text-align: left; margin-left: 20px"> </div> <div style="text-align: right; margin-right: 20px; font-weight: normal"> <<for _i = 0; _i lt _armors.length; _i++>> <<= UInv.BagHasItem("inventory", _armors[_i])>> <br> <</for>> </div> </div> </center> <hr> <center><h3 id="weapons_title" class="tool">Weapons</h3> <<set _weapons = UInv.GetItemsArrayByItemTag("inventory", "type", "weapon")>> <div id="weapons_list" class="list container twoCol" style="font-weight: normal"> <div id="weapons_list_names" style="text-align: left; margin-left: 20px"> </div> <div style="text-align: right; margin-right: 20px; font-weight: normal"> <<for _i = 0; _i lt _weapons.length; _i++>> <<= UInv.BagHasItem("inventory", _weapons[_i])>> <br> <</for>> </div> </div> </center> <hr> <center><h3 id="accessories_title" class="tool">Accessories</h3> <<set _accessories = UInv.GetItemsArrayByItemTag("inventory", "type", "accessory")>> <div id="accessories_list" class="list container twoCol" style="font-weight: normal"> <div id="accessories_list_names" style="text-align: left; margin-left: 20px"> </div> <div style="text-align: right; margin-right: 20px; font-weight: normal"> <<for _i = 0; _i lt _accessories.length; _i++>> <<= UInv.BagHasItem("inventory", _accessories[_i])>> <br> <</for>> </div> </div> </center> </div> <div id="equip_list"> <center id="head_list"><hr><h3>Head</h3> <div id="head_list_items" style="text-align: left; margin-left: 20px; font-weight: normal;"></div> </center> <center id="chest_list"><hr><h3>Chest</h3> <div id="chest_list_items" style="text-align: left; margin-left: 20px; font-weight: normal;"></div> </center> <center id="legs_list"><hr><h3>Legs</h3> <div id="legs_list_items" style="text-align: left; margin-left: 20px; font-weight: normal;"></div> </center> <center id="feet_list"><hr><h3>Feet</h3> <div id="feet_list_items" style="text-align: left; margin-left: 20px; font-weight: normal;"></div> </center> <center id="neck_list"><hr><h3>Neck</h3> <div id="neck_list_items" style="text-align: left; margin-left: 20px; font-weight: normal;"></div> </center> <center id="weapon_list"><hr><h3>Weapons</h3> <div id="weapon_list_items" style="text-align: left; margin-left: 20px; font-weight: normal;"></div> </center> <center id="groin_list"><hr><h3>Groin</h3> <div id="groin_list_items" style="text-align: left; margin-left: 20px; font-weight: normal;"></div> </center> </div> </div> <<timed 50ms>><<silently>><<script>> function refresh_list(place) { let place_list = $("#" + place + "_list_items"); let item = $("<div class=\"tool\">None</div>"); item.on("click", (event) => { let slot = State.temporary.slot; player.equipment[slot] = "none"; $("#" + slot + " button").html(""); $("#equip_list").children().fadeOut(0.1); $("#default_list").fadeIn(0.1); $(".equipButton button").removeClass("disabled"); $(".equipButton button").prop("disabled", false); $("#equip_list").children().fadeOut(0.1); if (player.is_slave) { $("#neck button").addClass("disabled"); $("#neck button").prop("disabled", true); } place_list.empty(); refresh_list(place); }); place_list.append(item); place_list.append("<br>"); let items = UInv.GetItemsArrayByItemTag("inventory", "place", place); for (let x of items) { let item_str = setup.titleCase(UInv.GetItemPropertyValue("inventory", x, "name")); let equipped_slot = player.has_equipped(x); if (equipped_slot != "none") { item_str += " (E" + equipped_slot.replace(/\D/g,'') + ")"; } let item = $("<div class=\"tool\" title=\"" + x + "\">" + item_str + "</div>"); item.on("click", (event) => { let slot = State.temporary.slot; let self = $(event.currentTarget); player.equipment[slot] = self.prop("title"); $("#" + slot + " button").html("E"); if (equipped_slot != "none") { $("#" + equipped_slot + " button").html(""); player.equipment[equipped_slot] = "none"; } $("#equip_list").children().fadeOut(0.1); $("#default_list").fadeIn(0.1); $(".equipButton button").removeClass("disabled"); $(".equipButton button").prop("disabled", false); if (player.is_slave) { $("#neck button").addClass("disabled"); $("#neck button").prop("disabled", true); } place_list.empty(); refresh_list(place); }); place_list.append(item); place_list.append("<br>"); } let types = {"armor": "armors", "weapon": "weapons", "accessory": "accessories"}; for (let type in types) { let item_list = $("#" + types[type] + "_list_names"); item_list.empty(); let items = UInv.GetItemsArrayByItemTag("inventory", "type", type); for (let x of items) { let item_str = setup.titleCase(UInv.GetItemPropertyValue("inventory", x, "name")); let equipped_slot = player.has_equipped(x); if (equipped_slot != "none") { equipped_slot = equipped_slot.replace(/\D/g,''); item_str += " (E" + equipped_slot + ")"; } let item = $("<div class=\"tool\">" + item_str + "</div>"); item.on("click", (event) => { $.wiki("\ <<popover>>" + "<h2>" + UInv.GetItemPropertyValue("inventory", x, "name") + "</h2>" + UInv.GetItemPropertyValue("inventory", x, "description") + "<</popover>>\ "); }); item_list.append(item); item_list.append("<br>"); } } } let player = State.variables.player; $("#armors_title").on("click", (event) => { $("#armors_list").fadeToggle(0.1); }); $("#weapons_title").on("click", (event) => { $("#weapons_list").fadeToggle(0.1); }); $("#accessories_title").on("click", (event) => { $("#accessories_list").fadeToggle(0.1); }); $("#equip_list").children().fadeOut(0.1); let places = ["head", "chest", "legs", "feet", "neck", "weapon", "groin"]; for (let place of places) { refresh_list(place); } <</script>><</silently>><</timed>> <</nobr>>
<<nobr>> <<set _total_income = 0>> <<for _key, _val range $player.finances.businesses>> <<set _total_income += _val>> <</for>> <<for _key, _val range $player.finances.slaves>> <<set _slave_income = 0>> <<for _sub_key, _sub_val range _val>> <<if _sub_key == "total">> <<continue>> <</if>> <<set _slave_income += _sub_val>> <</for>> <<set _total_income += _slave_income>> <<set $player.finances.slaves[_key].total = _slave_income>> <</for>> <div id="finances" class="subbackground hidden"> <hr> <center><h3>Finances</h3> <div class="container twoCol" style="font-weight: normal"> <div style="text-align: left; margin-left: 20px"> Money: <br> Passive income: <br> </div> <div style="text-align: right; margin-right: 20px; font-weight: normal"> <<= setup.LARI>><<money>><br> <<= setup.show_money_change_html(0, _total_income)>><br> </div> </div> </center> <hr> <center><h3 id="businesses_title" class="tool">Businesses</h3> <div id="businesses_list" class="container twoCol" style="font-weight: normal"> <div style="text-align: left; margin-left: 20px"> <<for _key, _val range $player.finances.businesses>> <<= setup.titleCase(_key)>>: <br> <</for>> </div> <div style="text-align: right; margin-right: 20px; font-weight: normal"> <<for _key, _val range $player.finances.businesses>> <<= setup.show_money_change_html(0, _val)>><br> <</for>> </div> </div> </center> <hr> <center><h3 id="slaves_title" class="tool">Slaves</h3> <div id="slaves_list" class="container twoCol" style="font-weight: normal"> <div style="text-align: left; margin-left: 20px"> <<for _key, _val range $player.finances.slaves>> <<= $characters[_key].name()>>: <br> <</for>> </div> <div style="text-align: right; margin-right: 20px; font-weight: normal"> <<for _key, _val range $player.finances.slaves>> <<= setup.show_money_change_html(0, $player.finances.slaves[_key].total)>><br> <</for>> </div> </div> </center> </div> <<timed 50ms>><<script>> $("#businesses_title").on("click", (event) => { $("#businesses_list").fadeToggle(0.1); }); $("#slaves_title").on("click", (event) => { $("#slaves_list").fadeToggle(0.1); }); <</script>><</timed>> <</nobr>>
<<nobr>> <div id="inventory" class="subbackground"> <hr> <center><h3 id="inventory_title" class="tool">Inventory</h3> <<set _items = UInv.GetItemsArrayWithoutAnyItemTags("inventory", "type", ["money", "quest_item", "armor", "accessory", "book"])>> <div id="inventory_list" class="container twoCol" style="font-weight: normal"> <div style="text-align: left; margin-left: 20px"> <<for _i = 0; _i lt _items.length; _i++>> <<= setup.titleCase(UInv.GetItemPropertyValue("inventory", _items[_i], "name"))>> <br> <</for>> </div> <div style="text-align: right; margin-right: 20px; font-weight: normal"> <<for _i = 0; _i lt _items.length; _i++>> <<= UInv.BagHasItem("inventory", _items[_i])>> <br> <</for>> </div> </div> </center> <<set _books = UInv.GetItemsArrayByItemTag("inventory", "type", "book")>> <hr> <center><h3 id="books_title" class="tool">Books</h3> <div id="books_list" style="text-align: left; margin-left: 20px; font-weight: normal"> </div> </center> <<set _quest_items = UInv.GetItemsArrayByItemTag("inventory", "type", "quest_item")>> <hr> <center><h3 id="quests_title" class="tool">Quest Items</h3> <div id="quests_list" style="text-align: left; margin-left: 20px; font-weight: normal"> <<for _i = 0; _i lt _quest_items.length; _i++>> <<= setup.titleCase(UInv.GetItemPropertyValue("inventory", _quest_items[_i], "name"))>> <br> <</for>> </div> </center> </div> <<timed 50ms>><<script>> let _t = State.temporary; $("#inventory_title").on("click", (event) => { $("#inventory_list").fadeToggle(0.1); }); $("#books_title").on("click", (event) => { $("#books_list").fadeToggle(0.1); }); $("#quests_title").on("click", (event) => { $("#quests_list").fadeToggle(0.1); }); for (let i = 0; i < _t.books.length; i++) { let x = _t.books[i]; let item_str = setup.titleCase(UInv.GetItemPropertyValue("inventory", x, "name")); let item = $("<div class=\"tool\">" + item_str + "</div>"); item.on("click", (event) => { $.wiki("\ <<popover>>" + "<h2>" + UInv.GetItemPropertyValue("inventory", x, "name") + "</h2>" + UInv.GetItemPropertyValue("inventory", x, "description") + "<</popover>>\ "); }); $("#books_list").append($(item)); $("#books_list").append("<br>"); } <</script>><</timed>> <</nobr>>
<<nobr>> /* For updating versions */ <<if $player.is_slave && UInv.BagHasItem("inventory", "hironaka_amulet") == 0>> <<run UInv.AddItem("inventory", "hironaka_amulet", 1)>> <<set $player.equipment.neck = "hironaka_amulet">> <</if>> <div class="charside left"> <div id="left_actions" class="mapaction fiveQuarters smalltext"> <hr> <<disable>> @@#stats_but;<<button "Stats">> <</button>>@@ <</disable>> @@#skills_but;<<button "Skills">> <</button>>@@ @@#titles_but;<<button "Titles">> <</button>>@@ </div> </div> <div id="background" class="paper_border notext"> <div class="main container threeCol" style="height: 100%; width: 100%;"> <div id="playerMenuLeft"> <<set _left_selection = "stats">> <<include playerMenuStats>> <<include playerMenuSkills>> <<include playerMenuTitles>> </div> <div id="playerMenuCenter"> <div class="subbackground"> <center><h3>$player.first_name <<if $player.is_slave>> Hironaka <<else>> $player.last_name <</if>> </h3></center> <<include playerMenuEquip>> <div id="playerMenuImage"></div> <<timed 20ms>> <<run $("#playerMenuImage").css("background-image", "url(resources/images/characters/player/" + $player.gender + ".png)")>> <</timed>> <div style="margin: 15px; margin-left: 30px; margin-right: 30px"> <<showmeter "player_health_bar" `$player.conditions.health/$player.conditions.max_health`>> <<showmeter "player_stamina_bar" `$player.conditions.stamina/$player.conditions.max_stamina`>> </div> <center class="twoThirds"> <<button "Back">> <<set $in_menu = false>> <<goto $last_visited>> <<set $last_visited = "">> <</button>> </center> </div> </div> <div id="playerMenuRight"> <<set _right_selection = "inventory">> <<include playerMenuInventory>> <<include playerMenuEquipment>> <<include playerMenuFinances>> </div> </div> </div> <div class="charside right"> <div id="right_actions" class="mapaction fiveQuarters smalltext"> <hr> <<disable>> @@#inventory_but;<<button "Inventory">><</button>>@@ <</disable>> @@#equipment_but;<<button "Equipment">> <<timed 60ms>> <<removeclass "#equipOverlay" "hidden">> <</timed>> <</button>>@@ @@#finances_but;<<button "Finances">><</button>>@@ <<set _right_selection = "inventory">> </div> <div class="mapaction fiveQuarters smalltext"> @@#quests;<<button "Quests">> <<script>>Dialog.close();<</script>> <<popover>> <<include questMenu>> <</popover>> <</button>>@@ @@#status;<<button "Status">> <<set _selected_status = $player.get_status($last_visited)>> <<popover>> <<include statusTutorial>> <</popover>> <</button>>@@ </div> </div> <<timed 50ms>><<silently>><<script>> $("#left_actions").find("button").on("click", (event) => { $("#left_actions").find("button").removeClass("disabled"); $("#left_actions").find("button").prop("disabled", false); var self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); var desc = setup.camelize(self.html()); $("#" + desc).removeClass("hidden"); $("#playerMenuLeft").removeClass("hidden"); $("#playerMenuCenter").removeClass("hidden"); $("#" + State.temporary.left_selection).addClass("hidden"); State.temporary.left_selection = desc; $("#playerMenuCenterDetails").addClass("hidden"); }); $("#right_actions").find("button").on("click", (event) => { $("#right_actions").find("button").removeClass("disabled"); $("#right_actions").find("button").prop("disabled", false); var self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); var desc = setup.camelize(self.html()); $("#" + desc).removeClass("hidden"); $("#playerMenuLeft").removeClass("hidden"); $("#playerMenuCenter").removeClass("hidden"); $("#" + State.temporary.right_selection).addClass("hidden"); State.temporary.right_selection = desc; $("#playerMenuCenterDetails").addClass("hidden"); $("#equipOverlay").addClass("hidden"); }); <</script>><</silently>><</timed>> <</nobr>>
<<nobr>> <div id="skills" class="subbackground hidden"> <hr> <center><h3>Skills</h3> <div class="container twoCol"> <div style="text-align: left; margin-left: 20px"> <<for _i = 0; _i lt setup.SKILLS.length; _i++>> <<= setup.titleCase(setup.SKILLS[_i])>> <br> <</for>> </div> <div style="text-align: right; margin-right: 20px"> <<for _i = 0; _i lt setup.SKILLS.length; _i++>> <<= setup.round2($player.skills[setup.SKILLS[_i]]).toString().padStart(3, '\u2000')>> <br> <</for>> </div> </div> </center> <hr> <center><h3>Sex Skills</h3> <div class="container twoCol"> <div style="text-align: left; margin-left: 20px"> <<for _i = 0; _i lt setup.SEX_SKILLS.length; _i++>> <<= setup.titleCase(setup.SEX_SKILLS[_i])>> <br> <</for>> </div> <div style="text-align: right; margin-right: 20px"> <<for _i = 0; _i lt setup.SEX_SKILLS.length; _i++>> <<= setup.round2($player.sex_skills[setup.SEX_SKILLS[_i]]).toString().padStart(3, '\u2000')>> <br> <</for>> </div> </div> </center> </div> <</nobr>>
<<nobr>> <div id="stats" class="subbackground"> <hr> <center><h3>Stats</h3> <div class="container twoCol"> <div style="text-align: left; margin-left: 20px"> Sex <br> Age <br> <br> <<for _i = 0; _i lt setup.STATS.length; _i++>> <<= setup.titleCase(setup.STATS[_i])>> <br> <</for>> </div> <div style="text-align: right; margin-right: 20px"> <<if $player.gender == 0>> Male <<else>> Female <</if>> <br> <<= $player.age()>> <br> <br> <<for _i = 0; _i lt setup.STATS.length; _i++>> <<= setup.round2($player.stats[setup.STATS[_i]]).toString().padStart(3, '\u2000')>> <br> <</for>> </div> </div> </center> </div> <</nobr>>
<<nobr>> <div id="titles" class="subbackground hidden"> <hr> <center><h3>Titles</h3> /* Prints all titles and assigns a unique div id to them */ <div id="titles_body"></div> <<set $done_setup = false>> <<script>> setTimeout(function(){ var html = ""; var titles = Array.from(State.variables.player.titles); for (var i = 0; i < titles.length; i++) { html += ("\ <div id=\"char_" + titles[i] + "\" class=\"tooltip\">" + setup.titleCase(titles[i]) + "</div><br>\ "); } document.getElementById("titles_body").innerHTML = html; State.variables.done_setup = true; }, 1); <</script>> /* Creates artificial event-listener for setup of script above */ <<repeat 20ms>> <<if $done_setup>> <<for _idx, _title range $player.titles>> <<capture _title>> <<script>> var title = State.temporary.title; $("#char_" + title).click( function(){ State.temporary.selected_title = title; $.wiki("<<popover>><<include titleTutorial>><</popover>>") } ); <</script>> <</capture>> <</for>> <<stop>> <</if>> <</repeat>> </center> </div> <</nobr>>
<div class="popuptext"> <h2>Quest Journal</h2> This is your quest journal and where you can view quests that are both ongoing and completed. Note that these quests are meant to give a general guide on your experience and are completely optional. Whether or not you formally get quests does not affect your ability to reap the rewards of completing them (unless it is a direct request from another character). <<if $quest_journal.ongoing.length gt 0>> <h3>Active Quests</h3> <</if>> <<for _idx, _val range $quest_journal.ongoing>> <div class="quest"> <<messenger setup.quests[_val].name>> <p> <div><<= setup.quests[_val].flavor_text>></div> <br> <ul> <li><<= setup.quests[_val].stages[$quests[_val].stage]>></li> <<for _i = $quests[_val].stage - 1; _i gte 0; _i-->> <s><li><<= setup.quests[_val].stages[_i]>></li></s> <</for>> </ul> </p> <</messenger>> <br> </div> <</for>> <<set _completed_keys = Object.keys($quest_journal.completed)>> <<if _completed_keys.length gt 0>> <h3>Completed Quests</h3> <</if>> <<for _idx, _val range $quest_journal.completed>> <div class="quest"> <<messenger setup.quests[_val].name>><p> <div><<= setup.quests[_val].flavor_text>></div> <br> <ul> <<for _idx2, _val2 range setup.quests[_val].stages>> <s><li><<= _val2>></li></s> <</for>> </ul> </p> <</messenger>> <br> </div> <</for>> </div>
<<nobr>> <div id="background" class="paper_border notext"> <center><h1>Settings</h1></center> <div class="container threeCol"> <center id="left_col" class="column longbutton smalltext fiveQuarters"> ''Testing Cheats''<br> <<textbox "$testing_password" `$testing_password`>><br><br> @@#submit_password;<<button "Submit">> <<if _insert_cheats($testing_password)>> <<addclass "#submit_password button" "disabled">> <<run $("#submit_password button").prop("disabled", true)>> <</if>> <</button>>@@ </center> <center> ''Text Speed'' <br><br> <div class="textspeed"> @@#25;<<button "25%">> <<set $words_per_sec = 1.5>> /* Enable other options */ <<run $("#25 button").prop("disabled", true)>> <<addclass "#25 button" "disabled">> <<run $("#50 button").prop("disabled", false)>> <<removeclass "#50 button" "disabled">> <<run $("#100 button").prop("disabled", false)>> <<removeclass "#100 button" "disabled">> <<run $("#200 button").prop("disabled", false)>> <<removeclass "#200 button" "disabled">> <<run $("#X button").prop("disabled", false)>> <<removeclass "#X button" "disabled">> <</button>>@@@@#50;<<button "50%">> <<set $words_per_sec = 3>> /* Enable other options */ <<run $("#25 button").prop("disabled", false)>> <<removeclass "#25 button" "disabled">> <<run $("#50 button").prop("disabled", true)>> <<addclass "#50 button" "disabled">> <<run $("#100 button").prop("disabled", false)>> <<removeclass "#100 button" "disabled">> <<run $("#200 button").prop("disabled", false)>> <<removeclass "#200 button" "disabled">> <<run $("#X button").prop("disabled", false)>> <<removeclass "#X button" "disabled">> <</button>>@@@@#100;<<button "100%">> <<set $words_per_sec = 5.5>> /* Enable other options */ <<run $("#25 button").prop("disabled", false)>> <<removeclass "#25 button" "disabled">> <<run $("#50 button").prop("disabled", false)>> <<removeclass "#50 button" "disabled">> <<run $("#100 button").prop("disabled", true)>> <<addclass "#100 button" "disabled">> <<run $("#200 button").prop("disabled", false)>> <<removeclass "#200 button" "disabled">> <<run $("#X button").prop("disabled", false)>> <<removeclass "#X button" "disabled">> <</button>>@@@@#200;<<button "200%">> <<set $words_per_sec = 11>> /* Enable other options */ <<run $("#25 button").prop("disabled", false)>> <<removeclass "#25 button" "disabled">> <<run $("#50 button").prop("disabled", false)>> <<removeclass "#50 button" "disabled">> <<run $("#100 button").prop("disabled", false)>> <<removeclass "#100 button" "disabled">> <<run $("#200 button").prop("disabled", true)>> <<addclass "#200 button" "disabled">> <<run $("#X button").prop("disabled", false)>> <<removeclass "#X button" "disabled">> <</button>>@@@@#X;<<button "∞">> <<set $words_per_sec = 1000000>> /* Enable other options */ <<run $("#25 button").prop("disabled", false)>> <<removeclass "#25 button" "disabled">> <<run $("#50 button").prop("disabled", false)>> <<removeclass "#50 button" "disabled">> <<run $("#100 button").prop("disabled", false)>> <<removeclass "#100 button" "disabled">> <<run $("#200 button").prop("disabled", false)>> <<removeclass "#200 button" "disabled">> <<run $("#X button").prop("disabled", true)>> <<addclass "#X button" "disabled">> <</button>>@@ <<script>> setTimeout(() => { var words_per_sec = State.variables.words_per_sec; if (words_per_sec <= 1.5) { $("#25 button").prop("disabled", true); $("#25 button").addClass("disabled"); } else if (words_per_sec <= 3) { $("#50 button").prop("disabled", true); $("#50 button").addClass("disabled"); } else if (words_per_sec <= 5.5) { $("#100 button").prop("disabled", true); $("#100 button").addClass("disabled"); } else if (words_per_sec <= 11) { $("#200 button").prop("disabled", true); $("#200 button").addClass("disabled"); } else { $("#X button").prop("disabled", true); $("#X button").addClass("disabled"); } }, 10); <</script>> </div> <br> <hr> ''Music Volume'' <div style="margin-left: 20px; margin-right: 20px"> <<volume>> </div> <hr> <<button Saves>> <<script>> UI.saves(); <</script>> <</button>> <<button Quit>> <<popover>> <center><h3> Are you sure you want to quit? All unsaved progress will be lost.<br> <<link "Confirm">><<run Engine.restart()>><</link>> </h3></center> <</popover>> <</button>> <hr> <<button Back>> <<set $in_menu = false>> <<goto $last_visited>> <<set $last_visited = "">> <</button>> </center> </div> </div> <<silently>><<timed 50ms>><<script>> State.temporary.insert_cheats = function(password) { var success = false; if (Number.isInteger(Number(password.trim()))) { var query = BigInteger(password.trim()); var n = BigInteger("54826604345798425527250442776121"); var ciph = BigInteger("11539653004211366154643046387550"); if (ciph.modPow(query, n) == 42069) { success = true; $("#left_col").wiki("\ <" + "<button \"Trust 100\">>\ <<set $player.slave_traits.trust = 100>>\ <<include round>>\ <<include updateBars>>\ <" + "</button>><br>\ <" + "<button \"Willpower 100\">>\ <<set $player.slave_traits.willpower = 100>>\ <<include round>>\ <<include updateBars>>\ <" + "</button>>\ <" + "<button `setup.LARI + \"1000\"`>>\ <<addmoney 1000>>\ <<audio coins_sound play>>\ <<updatetime>>\ <" + "</button>>\ "); } } if (!success) { $.wiki("<<notify>>Incorrect password!<</notify>>") } return success; } <</script>><</timed>><</silently>> <</nobr>>
<<nobr>> <div id="actions" class="mapaction fiveQuarters smalltext"> <hr> <<set _added = 0>> <<for _key, _val range setup.locations.get(passage()).sublocations>> <<if _key == "shintaniHome">> <<continue>> <</if>> <<capture _key>> <<set _location_button_dest = setup.locations.get(_key).passage>> <<include locationButton>> <</capture>> <<set _added += 1>> <</for>> /* Add 11 slots */ <<for _i = _added; _i lt 9; _i++>> <div class="buttonfiller fiveQuarters"></div> <</for>> <<unset _added>> <hr> <<button "Pass Time">> /* Temperarily disable working status while relaxing */ <<set _temp_is_working = $player.is_working>> <<set $player.is_working = false>> <<addhours 1>> <<set $player.is_working = _temp_is_working>> <<unset _temp_is_working>> <<include round>> <<script>> $(".mapside.left").html(""); $(".mapside.left").wiki("<<include niponActions>>"); <</script>> <</button>> <<button "Hours">> <<popover>> <<include hoursTutorial>> <</popover>> <</button>> <<if passage() != "niponCentral">> <<set _location_button_dest = "niponCentral">> <<include locationButton>> <<else>> <<disable>> <<button "Central">><</button>> <</disable>> <</if>> <<if passage() != "niponMarket">> <<set _location_button_dest = "niponMarket">> <<include locationButton>> <<else>> <<disable>> <<button "Market">><</button>> <</disable>> <</if>> <<if passage() != "niponSlums">> <<set _location_button_dest = "niponSlums">> <<include locationButton>> <<else>> <<disable>> <<button "Slums">><</button>> <</disable>> <</if>> <div> <<set _location_button_text = "Home">> <<set _location_button_dest = "shintaniHome">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> <hr> </div> <</nobr>>
<<nobr>> <div id="actions" class="action container row col longbutton fiveQuarters" style="--rows: 4; --cols: 4"> <<set _queue_talk = false>> <<button "Talk">> <<if !_queue_talk>> <<set _queue_talk = true>> <<set _options = "\ <ol>\ <li id=\"li1\">\"Can you tell me more about Shintani?\"</li>\ <li id=\"li2\">\"Can you tell me more about Nipon?\"</li>\ <li id=\"li3\">\"Why doesn\'t Shintani sell you off as well?\"</li>\ <li id=\"li4\">\"Why are you still in Nipon?\"</li>\ <li id=\"li5\">\"What do you want to see Nipon become?\"</li>\ ">> <<if $quests.power_struggles.stage == 1>> <<set _options += "<li id=\"li6\">\"What did you need me to do again?\"</li>">> <<elseif $quests.power_struggles.stage == 4>> <<set _options += "<li id=\"li6\">\"I got the things you asked of me.\"</li>">> <</if>> <<set _options = $(_options)>> <<set _responses = [_options.clone()]>> <<script>> setup.mainLog_append_delayed(State.temporary.responses); <</script>> <</if>> <<set _disable_buttons = false>> <<disableactions _options>> <<addclass "#actions" "hidden">> <<removeclass "#events_actions" "hidden">> <</button>> <div style="grid-row: 1; grid-column: 4"></div> <div style="grid-row: 2; grid-column: 4"></div> <div style="grid-row: 3; grid-column: 4"></div> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <<set _lia = $characters.lia_hiroyuki>> <<if $quests.power_struggles.stage == 0>> /* Update quest */ <<set $quests.power_struggles.stage = 1>> <<set $quests.power_struggles.data.side = "lia">> <<set $_to_log = " <div>You enter Lia\'s tower to find her sitting and staring into the horizon. \ She notices that you arrived and turns around to greet you.</div><br>" + $characters.lia_hiroyuki.dialogue("\ Oh, I didn\'t think you would actually come. Normally I\'m not allowed to have \ any visitors, but since you are technically property of the Hiroyuki family, you \ are an exception. Here, have a seat.\ ") + "<ol>\ <li>Take a seat.</li>\ </ol>" >> <<set _init_sequence = true>> <<timed 50ms>> <<removeclass "#events_actions" "hidden">> <<addclass "#actions" "hidden">> <<set _choices = 1>> <<disableactions>> <</timed>> <<else>> <<set $_to_log = " <div>You enter Lia\'s tower to find her sitting and staring into the horizon. \ She notices that you arrived and turns around to greet you.</div><br>" + $characters.lia_hiroyuki.dialogue("You\'re back.") >> <</if>> /* Load in any saved variables */ <<loadVars>> /* Audio engine */ <div id="background" class="paper_border notext"> <div class="main container fourCol threeRow" style="height: 100%; width: 100%;"> <div class="subbackground mainLogContainer"> <<include mainLog>> <<script>> setTimeout(() => { var lia = State.variables.characters.lia_hiroyuki; $("#mainLogCharacterImage").css("background-image", "url(\"" + lia.image_folder() + "lia_sitting_neutral.png\")" ); }, 10); <</script>> </div> <<include info>> <div id="action_bar" class="subbackground" style="grid-row: 3 / span 1; grid-column: 1 / span 3"> <<include liasTowerActions>> <<include liasTowerTalkOptions>> </div> </div> </div> <<updatetime>> <</nobr>>
<<nobr>> <div id="events_actions" class="action container row col hidden" style="--rows: 4; --cols: 5"> @@#events1;.event_button;<<button "1">> <<if def _init_sequence && _init_sequence>> <<set _responses = [ "You take a seat across from Lia,", _lia.dialogue("\ I\'m assuming you don\'t know who I am right? While I\'m sure you have guessed by now that \ I am Shin\'s sister, my past is stained with blood as is the rest of our family. Shin has \ dishonored the Hiroyuki family name by first selling off our parents many years ago."), "Lia pauses for a second to regain her composure,", _lia.dialogue("Look, if you want out of your situation first you need to gain his trust. I heard that \ he was recently probing into the Nipon economy to justify his shift towards slavery. First help him \ with that, then afterwards, go into Shin\'s office at night and bring me his transaction logs. \ I need everything you can find. Also I need you to go into the library and get me our family history. \ It might be hidden away, but look for a crest like this."), "Lia brings out a golden pendant which has a three leaves enclosed within a circle. It resembles \ the crest you know very well, but the entchings and geometry of one around your neck are pervertered \ beyond recognition. Lia sees the momentary weakness within your eyes, and puts her hand on your leg,", _lia.dialogue("Trust me, I know your suffering better than you can imagine. Help me free you.") ]>> <<run $(".event_button button").addClass("hidden")>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#events_actions_leave" "hidden">> <<unset _done_appending>> <<updatequests>> <<stop>> <</if>><</repeat>><</silently>> <<elseif ndef _action>> <<set _options.find("#li1").css("text-decoration", "line-through")>> <<set _action = 1>> <<set _sub_options = $("<ol>\ <li id=\"li1\">\"What was like Shintani when he was young?\"</li>\ <li id=\"li2\">\"What are Shintani\'s true goals?\"</li>\ <li id=\"li3\">\"Nevermind\"</li>\ </ol>")>> <<set _responses = [ "Lia lets out a long sigh,", _lia.dialogue("Well... ask away, what did you want to know?"), _sub_options.clone() ]>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 3>> <<set _disable_buttons = false>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <<elseif _action == 1>> <<set _sub_options.find("#li1").css("text-decoration", "line-through")>> <<set _responses = [ "Lia is visably puzzled at why you\'d inquire about that, but she obliges", _lia.dialogue("Being the only male heir in the Hiroyuki household, Shin was treated as royalty \ since the day he was born. Our father especially had always told Shin that he was special and \ above others. I think his many servants at the time led him to develop a control complex. When \ one day he could no longer control the whims of our parents, he staged a coup, taking control \ of Nipon, selling off our parents, and sending assassins for me. Since then he was obsessed \ with slavery and controlling others. If only dad had known... Oh how we all loved Shin when he \ was younger..."), "You see Lia\'s eyes slightly glaze over as her voice breaks off,", _lia.dialogue("Sorry about that... anything else?"), _sub_options.clone() ]>> <<elseif _action == 2>> <<set _sub_options.find("#li1").css("text-decoration", "line-through")>> <<set _responses = [ "Lia sighs again", _lia.dialogue("It is very unfortunate for all of us that Nipon is so successful. The analysts at the Union \ have thought about this issue and our conclusion is that it\'s due to Nipon great location. Because of \ the East Great Desert, Nipon is completely isolated from the world by land. Furthermore, my parents \ had the foresight to heavily invest in our docks, so we can be isolationist whilst still benefitting \ from the trade routes of the Union. Shin is convinced that Nipons success is all due to him and his \ increasingly concerning policies regarding slavery."), _lia.dialogue("Is that all?"), _sub_options.clone() ]>> <<elseif _action == 6>> <<unset _action>> <<set _responses = [ "You hand over the materials to Lia and she examines them over for a little while", ]>> <<if $quests.power_struggles.data.side == "lia">> <<set _responses.push(_lia.dialogue("Hmm, yes this is exactly what we needed. Thanks to you I believe we \ can finally shift the balance of power in Nipon."))>> <<else>> <<set _responses.push(_lia.dialogue("Hmm, this is a bit unexpected, but given we change our plans to \ accomodate this, we should still be able to shift the balance of power in Nipon."))>> <</if>> <<set _responses.push("Lia pulls out an ornate brooch containing two lions around a coat of arms,")>> <<set _responses.push(_lia.dialogue("This is the symbol of the Namm household. I don\'t know if you\'ve met \ Emily yet, but I believe she is employed under Shintani and working in the Nipon Barracks. While she \ is loyal in appearance, she holds a deep hatred of the Hiroyuki household for their sieze of power. Normally \ I would consider her an enemy as well, but enemies of enemies make for good friends."))>> <<set _responses.push("She hands you the brooch")>> <<set _responses.push(_lia.dialogue("Wear this in front of Emily and she\'ll further guide you. Lukcily Shin is \ too self obsessed to know the historical significance of this symbol, so you should be safe wearing it."))>> <<set _responses.push(_options.clone())>> <<set _disable_buttons = false>> <<disableactions _options>> <<unset _done_appending>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<run UInv.AddItem("inventory", "namm_insignia", 1)>> <<run UInv.DeleteItem("inventory", "hiroyuki_book", UInv.BagHasItem("inventory", "hiroyuki_book"))>> <<run UInv.DeleteItem("inventory", "nipon_transaction_log", UInv.BagHasItem("inventory", "nipon_transaction_log"))>> <<notify>>Acquired the Namm Insignia<</notify>> <<set $quests.power_struggles.stage += 1>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events2;.event_button;<<button "2">> <<if ndef _action>> <<set _options.find("#li2").css("text-decoration", "line-through")>> <<set _action = 2>> <<set _sub_options = $("<ol>\ <li id=\"li1\">\"What makes Nipon successful?\"</li>\ <li id=\"li2\">\"How did Nipon start?\"</li>\ <li id=\"li3\">\"Why is Nipon so... oriental? Has it always been this way?\"</li>\ <li id=\"li4\">\"Nevermind\"</li>\ </ol>")>> <<set _responses = [ "Lia lets out a long sigh,", _lia.dialogue("Well... ask away, what did you want to know?"), _sub_options.clone() ]>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 4>> <<set _disable_buttons = false>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <<elseif _action == 1>> <<set _sub_options.find("#li2").css("text-decoration", "line-through")>> <<set _responses = [ _lia.dialogue("Not freedom. He claims to want a \"Free City,\" but his definitions of freedom \ are a complete perversion of the word. He wants to give everyone freedom by removing the need \ to worry about choice. He wants to resolve all interpersonal conflict by performing mass eugenics \ to completely cull the population of anyone not of eastern Asian descent. He wants to bring his \ people happiness by getting them addicted to drugs and dulling their senses. Monster would be putting \ it lightly. This is why we at the Trade Union are making a move."), _lia.dialogue("Anything else you wanted to know?"), _sub_options.clone() ]>> <<elseif _action == 2>> <<set _sub_options.find("#li2").css("text-decoration", "line-through")>> <<set _responses = [ _lia.dialogue("Well I\'m sure Shin will tell you it was gifted to us by the gods, but actually our ancestors \ conquered Nipon from the Namm household many years ago. In fact the day that Nipon started is year 0 of the \ standard calendar. At that time Nipon worked hand-in-hand with the Trade Union, so the Nipon calendar was \ popularized through that."), _lia.dialogue("Anything else you wanted to know?"), _sub_options.clone() ]>> <<elseif _action == 6>> <<unset _action>> <<set _roll = $player.get_status_prop("manipulation") + dice(1, 5 + $difficulty) - $difficulty>> <<if _roll gt 50>> <<set _responses = [ setup.pass("manipulation", false), $player.dialogue("You wouldn\'t imagine the stress and hardship I had to go through to acquire these \ documents you wanted... Don\'t you think I should be rewarded?"), "Lia looks at you in disbelief,", _lia.dialogue("What... do you want?"), "You shift your eyes down to Lia\'s breasts", $player.dialogue("Nothing much, just a look at those..."), "You point to her boobs. After a long silence, Lia relents,", _lia.dialogue("Fine..."), "(Lia\'s Affection " + setup.show_change_html(0, -2) + ", Willpower " + setup.show_change_html(0, -2, false) + ")" ]>> <<set _lia.slave_traits.obedience -= 2>> <<set _lia.slave_traits.willpower -= 2>> <<set _success = true>> <<else>> <<set _responses = [ setup.fail("manipulation", false), $player.dialogue("How about you should me your boobs first?"), "Lia looks at you in disbelief,", _lia.dialogue("Who do you think you are? Give me those materials or I'll scream and the guards outside will storm \ this place!"), "(Lia\'s Affection " + setup.show_change_html(0, -5) + ", Willpower " + setup.show_change_html(0, 2, false) + ")" ]>> <<set _lia.slave_traits.obedience -= 5>> <<set _lia.slave_traits.willpower += 2>> <<set _success = false>> <</if>> <<unset _done_appending>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<if _success>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _lia.image_folder() + "lia_sitting_neutral_notop.png\")" )>> <</if>> <<set _responses = [ "You hand over the materials to Lia and she examines them over for a little while", ]>> <<if $quests.power_struggles.data.side == "lia">> <<set _responses.push(_lia.dialogue("Hmm, yes this is exactly what we needed. Thanks to you I believe we \ can finally shift the balance of power in Nipon."))>> <<else>> <<set _responses.push(_lia.dialogue("Hmm, this is a bit unexpected, but given we change our plans to \ accomodate this, we should still be able to shift the balance of power in Nipon."))>> <</if>> <<set _responses.push("Lia pulls out an ornate brooch containing two lions around a coat of arms,")>> <<set _responses.push(_lia.dialogue("This is the symbol of the Namm household. I don\'t know if you\'ve met \ Emily yet, but I believe she is employed under Shintani and working in the Nipon Barracks. While she \ is loyal in appearance, she holds a deep hatred of the Hiroyuki household for their sieze of power. Normally \ I would consider her an enemy as well, but enemies of enemies make for good friends."))>> <<set _responses.push("She hands you the brooch")>> <<set _responses.push(_lia.dialogue("Wear this in front of Emily and she\'ll further guide you. Lukcily Shin is \ too self obsessed to know the historical significance of this symbol, so you should be safe wearing it."))>> <<set _responses.push(_options.clone())>> <<set _disable_buttons = false>> <<disableactions _options>> <<unset _done_appending>> <<run setup.mainLog_append_delayed(_responses, $buttons, $buttons_extra)>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<run UInv.AddItem("inventory", "namm_insignia", 1)>> <<run UInv.DeleteItem("inventory", "hiroyuki_book", UInv.BagHasItem("inventory", "hiroyuki_book"))>> <<run UInv.DeleteItem("inventory", "nipon_transaction_log", UInv.BagHasItem("inventory", "nipon_transaction_log"))>> <<notify>>Acquired the Namm Insignia<</notify>> <<set $quests.power_struggles.stage += 1>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events3;.event_button;<<button "3">> <<if ndef _action>> <<set _options.find("#li3").css("text-decoration", "line-through")>> <<set _responses = [ _lia.dialogue("Well actually when my parents were sold off he sent assassins after me. \ I guess my parents held some prestige of the Hiroyuki household thus there were buyers, \ but not me. I very luckily ran into the Trade Union, which as you know is an independent \ entity from Nipon. They took me in, and now Shin can\'t touch me. He has tried everything \ he could from limiting my movements though, even isolating me to a tower on the outskirts of \ town."), _options.clone() ]>> <<elseif _action == 1>> <<unset _action>> <<set _responses = [ _lia.dialogue("What did you need?"), _options.clone() ]>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _disable_buttons = false>> <<disableactions _options>> <<stop>> <</if>><</repeat>><</silently>> <<elseif _action == 2>> <<set _sub_options.find("#li3").css("text-decoration", "line-through")>> <<set _responses = [ "Your question catches Lia off guard, and she chuckles a little to herself", _lia.dialogue("Nipon has always been a little \"oriental\" as you call it, because when the Hiroyuki family \ conquered Nipon from the Namm household we wanted to integrate our cultures as fast as possible. However, \ Nipon as you know it now is way more extreme then it ever was before. This is due to Shin\'s racial \ superiority. I\'m pretty sure he just wants an excuse to be above others. While our parents did always \ teach us to appreciate our own culture due to the limited number of east Asians left today, they also \ always stressed the importance of diversity. Diversity is important in any system to ensure the continued \ survival of a species. The same is true for civilizations as well. Shin is heading down a dark path."), "You are shocked at Lia\'s depth of knowledge", $player.dialogue("How... do you know all this?"), _lia.dialogue("Haha... that\'s a fair response. Not even Shin knows about how Nipon came to be. I\'m sure if \ you asked him, he\'d spout some garbage about the gods as our father always told him. But, I think he only \ pretends to care, because this information is readily available if you search through our old books. But of \ course that would delegitimize Shin\'s position. Anyways, anything else?"), _sub_options.clone() ]>> <</if>> <</button>>@@ @@#events4;.event_button;<<button "4">> <<if ndef _action>> <<set _options.find("#li4").css("text-decoration", "line-through")>> <<set _responses = [ _lia.dialogue("As in why not leave? Well firstly despite my brother trying to limit my rights \ Nipon is still better than the outside world. Plus I\'m still a Hiroyuki... and well I guess \ I also don\'t want to just leave my home because of Shin. If I do that, he wins doesn\'t he? \ I guess despite being much more intelligent than Shin I can still be irrationall sentimental \ at times."), _options.clone() ]>> <<elseif _action == 2>> <<unset _action>> <<set _responses = [ _lia.dialogue("What did you need?"), _options.clone() ]>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _disable_buttons = false>> <<disableactions _options>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events5;.event_button;<<button "5">> <<set _options.find("#li5").css("text-decoration", "line-through")>> <<set _responses = [ _lia.dialogue("Nipon needs to return to its origins. I want to see this trend of slavery \ abolished not matter what, and I want to prove to people that true freedom is possible even \ in this wretched world. And..."), "Lia\'s words fade off and she turns again to stare at the horizon,", _lia.dialogue("I... I just want my home back. I miss my family."), _options.clone() ]>> <</button>>@@ @@#events6;.event_button;<<button "6">> <<set _options.find("#li6").css("text-decoration", "line-through")>> <<if $quests.power_struggles.stage == 1>> <<set _responses = [ _lia.dialogue("I need you to steal Shin\'s transaction log from his office and \ I also need the copy of the Hiroyuki family registry from his library. Bring them \ to me and I will ensure your eventual freedom."), "Lia eyes you expecting your next question,", _options.clone() ]>> <<elseif $quests.power_struggles.stage == 4>> <<set $enable_menu = false>> <<set _action = 6>> <<set _responses = [ _lia.dialogue("Great! Give them here."), "Lia gesters for you to hand over the documents.\ <ol><li>Hand over the documents.</li><li>Only if she flashes you</li></ol>" ]>> /* TODO: Add blowjob option for male */ <<set _choices = 2>> <<set _disable_buttons = true>> <<disableactions>> <</if>> <</button>>@@ @@#events7;.event_button;<<button "7">> <</button>>@@ @@#events8;.event_button;<<button "8">> <</button>>@@ <<set $buttons = []>> <<for _i = 1; _i lte 8; _i++>> <<set $buttons.push("#events" + _i)>> <</for>> <<set $buttons_extra = ["#events_actions_back", "#events_actions_leave"]>> /* Back button is disabled by default */ <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div id="events_actions_back" style="grid-row: 3; grid-column: 5"> <<button "Back">> <<removeclass "#actions" "hidden">> <<addclass "#events_actions" "hidden">> <</button>> </div> <div id="events_actions_leave" style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <<timed 50ms>><<silently>><<script>> $(".event_button button").on("click", (event) => { var self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); if (State.temporary.responses != "null") { setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); delete State.temporary.responses; } }); <</script>><</silently>><</timed>> <</nobr>>
<<nobr>> <div id="actions" class="action container row col longbutton fiveQuarters" style="--rows: 4; --cols: 4"> <<button "Emily">> <<removeclass "#emily_actions" "hidden">> <<addclass "#actions" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "url(" + _emily.image_folder() + "emily_barracks.png)")>> <<set _responses = ["You walk into Emily\'s quarters to find her lost in thought."]>> <<script>> setup.mainLog_append_delayed(State.temporary.responses); <</script>> <</button>> <<disable>> <<button "Medic Bay">> <</button>> <</disable>> <div style="grid-row: 1; grid-column: 4"></div> <div style="grid-row: 2; grid-column: 4"></div> <div style="grid-row: 3; grid-column: 4"></div> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <div id="emily_actions" class="action container row col longbutton fiveQuarters hidden" style="--rows: 4; --cols: 4"> <<button "Talk">> <<if !_queue_talk>> <<set _queue_talk = true>> <<set _options = "\ <ol>\ <li id=\"li1\">\"Do you work for Shintani?\"</li>\ <li id=\"li2\">\"How do you like Nipon?\"</li>\ <li id=\"li3\">\"What\'s your background?\"</li>\ <li id=\"li4\">\"Do you have any hopes or dreams?\"</li>\ ">> <<if $quests.path_to_greatness.stage == 1>> <<if $player.get_money() gte 300>> <<set _options += "<li id=\"li5\">\"I\'d like like to pay my equipment fee (¤300)\"</li>">> <<else>> <<set _options += "<li id=\"li5\">\"I can\'t afford the equipment fee, is there any other way?\"</li>">> <</if>> <</if>> <<if $quests.power_struggles.stage == 5 && $player.has_equipped("namm_insignia") != "none">> <<set _responses = ["You approach Emily and she immediately notices the Namm Insignia," + _options]>> <<set $locations.niponBarracks.data.emily_insignia = true>> <<else>> <<set _responses = ["You approach Emily, what would you like to say?" + _options]>> <</if>> <<script>> setup.mainLog_append_delayed(State.temporary.responses); <</script>> <<set _options = $(_options)>> <</if>> <<set _disable_buttons = false>> <<disableactions _options>> <<addclass "#emily_actions" "hidden">> <<removeclass "#events_actions" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "url(" + _emily.image_folder() + "emily_barracks.png)")>> <</button>> <<disable>> @@#train;<<button "Train">> <<if $gameDate.getHours() gt 16>> <<notify>> Too late to train! <</notify>> <<elseif $player.stats.stamina lt (4 * -180 * ((3/10 * $player.stats.strength - $time_awake / 7) - _to_advance_hr * 30 / 7) / 1440)>> <<notify>> Too tired to train! <</notify>> <<elseif $player.get_money() lt 50>> <<notify>> Need ¤50 to train! <</notify>> <<else>> <<if !$quest_journal.completed.contains("path_to_greatness")>> <<set $quest_journal.completed.push("path_to_greatness")>> <<run setup.remove_val($quest_journal.ongoing, "path_to_greatness")>> <</if>> <<set $_temp_to_log = "You train rigorously for four hours. ">> <<set _gain = 0>> /* Strength gain */ <<set _thresh = setup.progressive_gain_chance($player.stats.strength, 60, "linear")>> <<set _roll = randomFloat(1.0)>> <<if _roll lt _thresh>> <<set $player.stats.strength += 1>> <<set _gain = 1>> <</if>> /* Dexterity gain */ <<set _thresh = setup.progressive_gain_chance($player.stats.dexterity, 50, "linear")>> <<set _roll = randomFloat(1.0)>> <<if _roll lt _thresh>> <<set $player.stats.dexterity += 1>> <<set _gain += 2>> <</if>> <<if _gain != 0>> <<set $_temp_to_log += "Luckily you were able to train efficiently and increase ">> <<if _gain == 1>> <<set $_temp_to_log += "your strength (Strength " + setup.show_change_html(0, 1) + ").">> <<elseif _gain == 2>> <<set $_temp_to_log += "your dexterity (Dexterity " + setup.show_change_html(0, 1) + ").">> <<else>> <<set $_temp_to_log += "both your dexterity and strength (Dexterity " + setup.show_change_html(0, 1) + ", Strength " + setup.show_change_html(0, 1) + ").">> <</if>> <<else>> <<set $_temp_to_log += "Unfortunately you unfocused today and were unable to increase either of your skills.">> <</if>> <<if $player.stats.dexterity gte 49>> <<set $_temp_to_log += " It seems like you\'ve learned all you can about dexterity from Emily, and will no longer \ be able to benefit from training with her.">> <</if>> <<if $player.stats.strength gte 49>> <<set $_temp_to_log += " It seems like you\'ve learned all you can about strength from Emily, and will no longer \ be able to benefit from training with her.">> <</if>> <<removemoney 50>> <<run UInv.AddItem("emily_namm", "lari", 50)>> <<audio "coins_sound" play>> <<addhours 4>> <<set $player.conditions.stamina -= 40>> <<include round>> <<goto "niponBarracks">> <</if>> <</button>>@@ <</disable>> <<timed 50ms>> <<if $quests.path_to_greatness.stage gt 1 || $quest_journal.completed.contains("path_to_greatness")>> <<removeclass "#train button" "disabled">> <<run $("#train button").prop("disabled", false)>> <</if>> <</timed>> <div style="grid-row: 1; grid-column: 4"> <<button "Inspect">> <<set $selected = _emily.key>> <<set _char = _emily>> <<set $last_visited = passage()>> <<set $in_menu = true>> <<saveVars>> <<goto characterMenu>> <</button>> </div> <div style="grid-row: 2; grid-column: 4"> </div> <div style="grid-row: 3; grid-column: 4"> <<button "Back">> <<addclass "#emily_actions" "hidden">> <<removeclass "#actions" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "")>> <<set _queue_talk = false>> <</button>> </div> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <<set _emily = $characters.emily_namm>> <<if $quests.path_to_greatness.stage == 0>> /* Update quest */ <<set $quests.path_to_greatness.stage = 1>> /* No access to emily's trust initially */ <<set $locations.niponBarracks.data.emily_insignia = false>> <<set $_to_log = " <div>The Nipon barracks carry within a distinct mood of diligence. You hear multiple \ people training in the distance, and you can only imagine the terrors that have gone \ on within these walls. A muscular olive skinned woman approaches you," >> <<set _choices = 2>> <<if $quests.power_struggles.stage == 5 && $player.has_equipped("namm_insignia") != "none">> <<set $_to_log += "and she immediately notices the Namm Insignia on your chest.</div><br>">> <<set $_to_log += _emily.dialogue("\ Who... are you?") + "<ol>\ <li>\"I\'m " + $player.name() + " and I\'m looking to train along side the troops.\"</li>\ <li>\"I\'m " + $player.name() + " and I\'m just looking around.\"</li>\ <li>\"I\'m " + $player.name() + " and I was told to come talk to you.\"</li>\ </ol>" >> <<set _choices += 1>> <<else>> <<set $_to_log += "</div><br>">> <<set $_to_log += _emily.dialogue("\ Who are you and why have you come? Are you a new recruit for the army?") + "<ol>\ <li>\"I\'m " + $player.name() + " and I\'m looking to train along side the troops.\"</li>\ <li>\"I\'m " + $player.name() + " and I\'m just looking around.\"</li>\ </ol>" >> <</if>> <<set _init_sequence = true>> <<timed 50ms>> <<disableactions>> <<removeclass "#events_actions" "hidden">> <<addclass "#actions" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "url(" + _emily.image_folder() + "emily_barracks.png)")>> <</timed>> <<else>> <<set $_to_log = " <div>The Nipon barracks carry within a distinct mood of diligence. You hear multiple \ people training in the distance, and you can only imagine the terrors that have gone \ on within these walls.</div><br>" >> <</if>> /* Load in any saved variables */ <<loadVars>> /* Audio engine */ <div id="background" class="paper_border notext"> <div class="main container fourCol threeRow" style="height: 100%; width: 100%;"> <div class="subbackground mainLogContainer"> <<include mainLog>> </div> <<include info>> <div id="action_bar" class="subbackground" style="grid-row: 3 / span 1; grid-column: 1 / span 3"> <<include niponBarracksActions>> <<include niponBarracksEmilyActions>> <<include niponBarracksTalkOptions>> </div> </div> </div> <<updatetime>> <</nobr>>
<<nobr>> /* For ease */ <<set _emily = $characters.emily_namm>> <div id="events_actions" class="action container row col hidden" style="--rows: 4; --cols: 5"> @@#events1;<<button "1">> <<if def _init_sequence && _init_sequence>> <<unset _init_sequence>> <<set _responses = [ "Emily looks you up and down,", _emily.dialogue("I don\'t know you, and I don\'t like strangers. I\'m in charge of the \ training corp here. If you want to train with me you\'ll have to pay each session \ as well as an initial fee of 300 lari for your equipment."), "Emily turns around and heads back into the main quarters." ]>> <<set _done_appending = false>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _done_appending>> <<removeclass "#actions" "hidden">> <<addclass "#events_actions" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "")>> <<stop>> <</if>><</repeat>><</silently>> <<elseif ndef _action>> <<set _options.find("#li1").css("text-decoration", "line-through")>> <<if $locations[passage()].data.emily_insignia>> <<set _responses = [ _emily.dialogue("Not here... come to my place after I get off at 9 PM. I live in Sonder Ville apartment 3."), _options.clone() ]>> <<if $quests.power_struggles.stage == 5>> <<set $locations.emilyHome.access = true>> <<set $quests.power_struggles.stage += 1>> <</if>> <<else>> <<set _responses = ["UNDER CONSTRUCTION"]>> <</if>> <<elseif _action == 5 || _subaction == 3>> <<unset _action>> <<unset _subaction>> <<set _responses = [ _emily.dialogue("Begging and you can\'t even beg properly? Is this the quality \ of Shintani\'s slaves these days? Disgraceful, you\'ll have to pay the \ fee like everyone else. Why are you still here?"), _options.clone() ]>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _done_appending>> <<run $("#mainLogCharacterImage").css("background-image", "url(" + _emily.image_folder() + "emily_barracks.png)")>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events2;<<button "2">> <<if def _init_sequence && _init_sequence>> <<unset _init_sequence>> <<set _responses = [ "Emily looks you up and down,", _emily.dialogue("I don\'t know you, and I don\'t like strangers. I\'m in charge of the \ training corp here. If you want to train with me you\'ll have to pay each session \ as well as an initial fee of 300 lari for your equipment, else move along we don\'t like \ tourists here."), "Emily turns around and heads back into the main quarters." ]>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#actions" "hidden">> <<addclass "#events_actions" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "")>> <<stop>> <</if>><</repeat>><</silently>> <<elseif ndef _action>> <<set _options.find("#li2").css("text-decoration", "line-through")>> <<if $locations[passage()].data.emily_insignia>> <<set _responses = [ _emily.dialogue("Not here... come to my place after I get off at 9 PM. I live in Sonder Ville apartment 3."), _options.clone() ]>> <<if $quests.power_struggles.stage == 5>> <<set $locations.emilyHome.access = true>> <<set $quests.power_struggles.stage += 1>> <</if>> <<else>> <<set _responses = ["UNDER CONSTRUCTION"]>> <</if>> <<elseif _action == 5 && ndef _subaction>> <<unset _action>> <<set _options.find("#li5").css("text-decoration", "line-through")>> <<set _responses = [ "You get down on your knees, cupping Emily\'s sweaty foot in your hands and \ starting licking. Your tongue slides in between each toes, capturing every bit \ of saltiness. After her feet have been completely drenched in your saliva you can \ smell her fluids through her pants.", _emily.dialogue("Um... okay, you can stop now... Come train with me anytime, \ did you need anything else?") + "(Willpower " + setup.show_change_html(0, -4) + ") (Emily\'s Foot Fetish " + setup.show_change_html(0, 2) + ")", _options.clone() ]>> <<set _emily.sex_fetishes.feet += 2>> <<set $player.slave_traits.willpower -= 4>> <<set $quests.path_to_greatness.stage = 2>> <<removeclass "#train button" "disabled">> <<run $("#train button").prop("disabled", false)>> <<set _done_appending = false>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _done_appending>> <<run $("#mainLogCharacterImage").css("background-image", "url(" + _emily.image_folder() + "emily_barracks.png)")>> <<set _choices = 4>> <<set _disable_buttons = false>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <<elseif _action == 5 && _subaction == 3>> <<unset _subaction>> <<set _options.find("#li5").css("text-decoration", "line-through")>> <<set _responses = [ "You continue licking Emily\'s feet covered with your cum until you clean up \ every last drop.", _emily.dialogue("Good boy. Now you can train with me now. Now did you \ need anything else dog?") + "(Willpower " + setup.show_change_html(0, -4) + ") (Emily\'s Foot Fetish " + setup.show_change_html(0, 2) + ")", _options.clone() ]>> <<set _emily.sex_fetishes.feet += 2>> <<set $player.slave_traits.willpower -= 4>> <<set $quests.path_to_greatness.stage = 2>> <<removeclass "#train button" "disabled">> <<run $("#train button").prop("disabled", false)>> <<set _done_appending = false>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _done_appending>> <<run $("#mainLogCharacterImage").css("background-image", "url(" + _emily.image_folder() + "emily_barracks.png)")>> <<set _choices = 4>> <<set _disable_buttons = false>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events3;<<button "3">> <<if def _init_sequence && _init_sequence>> <<unset _init_sequence>> <<set _responses = [ "Emily looks you up and down and whispers,", _emily.dialogue("Not here... come to my place after I get off at 9 PM. I live in Sonder Ville apartment 3."), "Emily turns around and heads back into the main quarters." ]>> <<set $locations.emilyHome.access = true>> <<set $quests.power_struggles.stage += 1>> <<set $locations[passage()].data.emily_insignia = true>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<removeclass "#actions" "hidden">> <<addclass "#events_actions" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "")>> <<stop>> <</if>><</repeat>><</silently>> <<elseif ndef _action>> <<set _options.find("#li3").css("text-decoration", "line-through")>> <<if $locations[passage()].data.emily_insignia>> <<set _responses = [ _emily.dialogue("Not here... come to my place after I get off at 9 PM. I live in Sonder Ville apartment 3."), _options.clone() ]>> <<if $quests.power_struggles.stage == 5>> <<set $locations.emilyHome.access = true>> <<set $quests.power_struggles.stage += 1>> <</if>> <<else>> <<set _responses = [ _emily.dialogue("My background is none of your concern."), _options.clone() ]>> <</if>> <<elseif _action == 5>> <<set _subaction = 3>> <<set _responses = [ "You get down on your knees, cupping Emily\'s sweaty foot in your hands and \ starting licking. As your tongue slides in between each toes, you slide down your \ pants and start stroking your cock. Emily doesn't say anything and looks even more \ amused,", _emily.dialogue("Haha, that\'s a good dog! You like this don\'t you?"), $player.dialogue("Yes mistress."), "After her feet have been completely drenched in your saliva you can \ smell her fluids through her pants and you cum at the same time, covering \ her feet. (Willpower " + setup.show_change_html(0, -4) + ")", _emily.dialogue("What the fuck? You cleaned my feet just to get them dirty again? \ Lick it all off. NOW."), "<ol>\ <li>Refuse.</li>\ <li>Do as she says.</li>\ </ol>" ]>> <<set $player.slave_traits.willpower -= 4>> <<set _done_appending = false>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _done_appending>> <<run $("#mainLogCharacterImage").css("background-image", "url(" + _emily.image_folder() + "emily_foot_cum.png)")>> <<set _choices = 2>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events4;<<button "4">> <<if ndef _action>> <<set _options.find("#li4").css("text-decoration", "line-through")>> <<if $quests.power_struggles.stage == 5>> <<set _responses = ["Under Construction"]>> <<else>> <<set _responses = [ _emily.dialogue("Dreams are for dreamers, and I barely have the luxury to sleep."), _options.clone() ]>> <</if>> <</if>> <</button>>@@ @@#events5;<<button "5">> <<set _action = 5>> <<if $player.get_money() gte 300>> <<addclass "#events5 button" "disabled">> <<run $("#events5 button").prop("disabled", true)>> <<set _responses = [ _emily.dialogue("Thanks, I\'m always up for some training, come by whenever between \ 7AM and 4PM to train. Each session will cost you 50 laris. Did you need anything else?") ]>> <<set _options.find("#li5").css("text-decoration", "line-through")>> <<set _responses.push(_options.clone())>> <<set $quests.path_to_greatness.stage = 2>> <<removeclass "#train button" "disabled">> <<run $("#train button").prop("disabled", false)>> <<removemoney 300>> <<audio "coins_sound" play>> <<run UInv.AddItem("emily_namm", "lari", 300)>> <<updatetime>> <<else>> <<set _choices = 2>> <<set _responses = [ _emily.dialogue("No handouts here, go beg somewhere else... Actually, if you really \ are desperate, there is something you can do."), "Emily sits down and slips of her boots", _emily.dialogue("Training the troops is pretty tiring, and my feet sure could use a \ rub..."), "You slowly reach out for her feet when she stops you", _emily.dialogue("With your tongue, like all dogs do.") ]>> <<set _response = "\ <ol>\ <li>Refuse.</li>\ <li>Do as she says.</li>\ ">> <<if $player.gender == 0>> <<set _response += "<li>Do as she says and start jacking off as well.</li>">> <<set _choices += 1>> <</if>> <<disableactions>> <<set _response += "</ol>">> <<set _responses.push(_response)>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _done_appending>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _emily.image_folder() + "emily_foot.png")>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events6;<<button "6">> <</button>>@@ @@#events7;<<button "7">> <</button>>@@ @@#events8;<<button "8">> <</button>>@@ <<set $buttons = []>> <<for _i = 1; _i lte 8; _i++>> <<set $buttons.push("#events" + _i)>> <</for>> <<set $buttons_extra = ["#events_actions_back", "#events_actions_leave"]>> /* Back button is disabled by default */ <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div id="events_actions_back" style="grid-row: 3; grid-column: 5"> <<button "Back">> <<removeclass "#emily_actions" "hidden">> <<addclass "#events_actions" "hidden">> <</button>> </div> <div id="events_actions_leave" style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <<timed 50ms>><<script>> $("#events_actions").find("button").on("click", (event) => { let _t = State.temporary; let _v = State.variables; var self = $(event.currentTarget); if (self.html() == "Back" || self.html() == "Leave") { return; } self.addClass("disabled"); self.prop("disabled", true); if ("responses" in _t) { setup.mainLog_append_delayed(_t.responses, _v.buttons, _v.buttons_extra); delete _t.responses; } }); <</script>><</timed>> <</nobr>>
<<nobr>> /* Player is outside */ <<set $player.is_home = false>> <<set $player.is_outside = true>> /* Load in any saved variables */ <<loadVars>> /* Audio engine */ <div class="mapside left"> <<include niponActions>> </div> <div id="background" class="notext" style="padding: 0px"> <img src="resources/maps/niponCentralMap.jpeg" usemap="#image-map"> <map name="image-map"> <area alt="shintaniHome" coords="472,214,452,230,453,262,466,274,470,281,471,302,472,482,452,504,456,535,479,546,498,540,510,533,697,531,697,477,749,435,798,433,794,337,780,300,755,265,714,243,674,235,515,235,501,217" shape="poly"> <area alt="niponArena" coords="1226,721,81" shape="circle"> <area alt="solBrothel" coords="185,508,269,662" shape="rect"> <area alt="niponTownHall" coords="506,611,726,780" shape="rect"> <area alt="yukisGourmet" coords="336,308,422,447" shape="rect"> <area alt="niponAcademy" coords="919,129,877,169,882,192,847,242,906,293,953,252,977,252,1011,200,971,158" shape="poly"> <area alt="liasTower" coords="180,137,55" shape="circle"> <area alt="niponCentralDocks" coords="1095,177,1095,229,1035,310,954,322,922,359,915,403,923,445,949,466,957,495,971,522,988,566,1006,564,1133,500,1155,418,1149,302,1179,218,1132,181" shape="poly"> <area alt="niponSlums" coords="211,756,373,796" shape="rect"> <area alt="niponMarket" coords="956,758,1137,796" shape="rect"> <area alt="niponBarracks" coords="745,512,709,481,753,446,795,445,838,464,850,487,823,540,826,563,797,560,749,559,745,532" shape="poly"> </map> </div> <div class="mapside right"> <hr> <<include infoNoSubbackground>> </div> <<updatetime>> /* Remove quick bar and setup map */ <<script>> setTimeout(() => { $("#quickbar").addClass("hidden"); var areas = $("map").children("area"); for (var _i = 0; _i < areas.length; _i++) { var obj = $(areas[_i]); if (!(setup.locations.has(obj.attr("alt")))) { continue; } var loc = setup.locations.get(obj.attr("alt")); if (!State.variables.locations[loc.key].access) { obj.addClass("noaccess"); obj.attr("onclick", "$.wiki('<<notify>>No Access!<</notify>>')"); obj.attr("title", "No access."); } else if (!loc.has_access()) { obj.addClass("closed"); obj.attr("onclick", "$.wiki('<<notify>>Closed!<</notify>>')"); var opening_time = loc.access_times[0]; var opening_time_str = ""; if (opening_time == 0) { opening_time_str = "12 AM."; } else if (opening_time < 12) { opening_time_str = opening_time.toString() + " AM."; } else if (opening_time == 12) { opening_time_str = "12 PM."; } else { opening_time_str = (opening_time - 12).toString() + " PM."; } obj.attr("title", "Opens at " + opening_time_str); } else { obj.addClass("access"); var onclick = "SugarCube.setup.locations.get('" + obj.attr("alt") + "').goto("; if (loc.inside) { onclick += "'wooden_door_sound'"; } onclick += ")"; obj.attr("onclick", onclick); } } }, 10); <</script>> <</nobr>>
<<nobr>> <div id="actions" class="action container row col" style="--rows: 4; --cols: 5"> <div style="grid-row: 1; grid-column: 1"> <<button "Work">> <<script>> $("#actions").addClass("hidden"); $("#work_actions").removeClass("hidden"); <</script>> <</button>> </div> <div style="grid-row: 2; grid-column: 1"> <<button "Interact">> <<script>> $("#actions").addClass("hidden"); $("#interact_options").removeClass("hidden"); <</script>> <</button>> </div> <div style="grid-row: 3; grid-column: 1"> <<button "Relax">> /* Temperarily disable working status while relaxing */ <<set _temp_is_working = $player.is_working>> <<set $player.is_working = false>> <<addhours 1>> <<set $player.is_working = _temp_is_working>> <<unset _temp_is_working>> <<include round>> <</button>> </div> <div style="grid-row: 4; grid-column: 1"> <<button "Sleep" shintaniHomeSleep>> <<set $_player = clone($player)>> <<set $player.is_sleeping = true>> <<advanceday>> <<set $player.is_sleeping = false>> <</button>> </div> <div style="grid-row: 1; grid-column: 2"> <<set _location_button_text = "Library">> <<set _location_button_dest = "shintaniHomeLibrary">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> <div style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <div id="events_actions" class="action container row col hidden" style="--rows: 4; --cols: 5"> @@#events1;<<button "1">> <<set _action = 1>> <</button>>@@ @@#events2;<<button "2">> <<set _action = 2>> <</button>>@@ @@#events3;<<button "3">> <<set _action = 3>> <</button>>@@ @@#events4;<<button "4">> <<set _action = 4>> <</button>>@@ @@#events5;<<button "5">> <<set _action = 5>> <</button>>@@ @@#events6;<<button "6">> <<set _action = 6>> <</button>>@@ @@#events7;<<button "7">> <<set _action = 7>> <</button>>@@ @@#events8;<<button "8">> <<set _action = 8>> <</button>>@@ @@#events9;<<button "9">> <<set _action = 9>> <</button>>@@ @@#events10;<<button "10">> <<set _action = 10>> <</button>>@@ @@#events11;<<button "11">> <<set _action = 11>> <</button>>@@ @@#events12;<<button "12">> <<set _action = 12>> <</button>>@@ <<set $buttons = []>> <<for _i = 1; _i lte 12; _i++>> <<set $buttons.push("#events" + _i)>> <</for>> <<set $buttons_extra = ["#events_actions_back", "#events_actions_leave"]>> /* Back button is disabled by default */ <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div id="events_actions_back" class="hidden" style="grid-row: 3; grid-column: 5"> <<button "Back">> <<if def _back_action && (ndef _refresh || !_refresh)>> <<addclass "#events_actions" "hidden">> <<removeclass `_back_action` "hidden">> <<set _stop_loop = true>> <<timed 100ms>> <<unset _stop_loop>> <</timed>> <<else>> <<unset _refresh>> <<goto shintaniHome>> <</if>> <</button>> </div> <div id="events_actions_leave" class="hidden" style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <<set _choices = 5>> <<script>> var player = State.variables.player; var div = $("<div></div>"); var html = " You greet Himari,<br>" + "<em><b>" + setup.titleCase(player.first_name) + "</b>: \"I was hoping I could \ ask you a couple of things?\"</em>\ <br>Himari eyes you up and down, wondering what you want.\ <br>\ What would you like to ask about?\ "; State.temporary.options = "\ <ol>\ <li id=\"li1\">Her background.</li>\ <li id=\"li2\">How she feels about Shintani.</li>\ <li id=\"li3\">How she feels about the other slaves.</li>\ <li id=\"li4\">Her future plans.</li>\ <li id=\"li5\">What you can do to help.</li>"; var quest_journal = State.variables.quest_journal; var quests = State.variables.quests; if (quest_journal.ongoing.contains("knowledge_is_power")) { if (quests.knowledge_is_power.stage == 0) { State.temporary.options += "<li id=\"li6\">About the library.</li>"; State.temporary.choices = 6; } else if (quests.knowledge_is_power.stage == 1) { if ("brothel" in quests.knowledge_is_power.data && quests.knowledge_is_power.data.brothel) { State.temporary.options += "<li value=\"6\" id=\"li6\">About having worked at the brothel.</li>"; State.temporary.choices = 6; } else if (player.get_money() >= 500) { State.temporary.options += "<li value=\"6\" id=\"li6\">About paying off the debt (¤500).</li>"; State.temporary.choices = 6; } } } State.temporary.options += "</ol>"; html += State.temporary.options; div.html(html); setup.mainLog_append(div); State.temporary.options = $(State.temporary.options); <</script>> <<disableactions>> /* Allow back and leave buttons */ <<removeclass "#events_actions_back" "hidden">> <<removeclass "#events_actions_leave" "hidden">> /* Psuedoevent listener for action */ <<silently>><<repeat 10ms>> <<if _action !== undefined>> <<set _char = $characters[$selected]>> <<if _char.limits.ask gt 0>> <<set _char.limits.ask -= 1>> <<switch _action>> <<case 1>> <<run $("#events1 button").prop("disabled", true)>> <<addclass "#events1 button" "disabled">> <<set _response = "">> <<set _responses = [$player.dialogue("Can you tell me a little of your story?")]>> <<if _char.mental_conditions.anger gt 0>> <<set _responses.push("Himari is clearly still angry at you,")>> <<set _dialogue = "How about you mind your own business?">> <<elseif _char.get_disposition() == "scared">> <<set _responses.push("Himari is too scared to answer,")>> <<set _dialogue = "Just leave me alone!">> <<elseif (_char.slave_traits.trust gte 20) || (_char.slave_traits.obedience gte 20) || (_char.slave_traits.willpower lte 50)>> <<set _responses.push("Himari is taken aback by your sudden question.")>> <<set _dialogue = "Well... I\'ve been in the Hiroyuki household since birth. \ My parents, and their parents all carried the name of Hironaka. I haven\'t really \ left Nipon before either aside from greeting important guests.\ ">> <<else>> <<set _dialogue = "How about you mind your own business?">> <</if>> <<set _responses.push(_char.dialogue(_dialogue))>> <<set _options.find("#li1").css("text-decoration", "line-through")>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <<unset _dialogue>> <<case 2>> <<run $("#events2 button").prop("disabled", true)>> <<addclass "#events2 button" "disabled">> <<set _response = "">> <<set _responses = [$player.dialogue("What do you think about Shintani?")]>> <<if (_char.slave_traits.trust gte 10) || (_char.slave_traits.obedience gte 15) || (_char.slave_traits.willpower lte 60)>> /* Submissive to player and high regards for them */ <<if ((_char.slave_traits.trust gte 75) || (_char.slave_traits.obedience gte 80)) && (_char.slave_traits.willpower lte 5)>> <<set _responses.push("Himari hesitates to look around before answering,")>> <<set _dialogue = "He would be but a shadow of a you if you were my master.">> <<set _responses.push(_char.dialogue(_dialogue))>> <<set _responses.push("Himari looks into your eyes with absolute submission.")>> <<elseif ((_char.slave_traits.trust gte 75) || (_char.slave_traits.obedience gte 80)) && (_char.slave_traits.willpower lte 20)>> <<set _responses.push("Himari hesitates to look around before answering,")>> <<set _dialogue = "Well, he hasn\'t been the worst master, but he hasn\'t been \ perfect either.">> <<set _responses.push(_char.dialogue(_dialogue))>> <<set _responses.push("Himari touches your hand, as if to let you know that she \ places you above Shintani but cannot risk saying it out loud.")>> <<elseif ((_char.slave_traits.trust gte 75) || (_char.slave_traits.obedience gte 80))>> <<set _dialogue = "I hold Shintani in pretty high regards. While he can be a bit \ childish at times, with large naive dreams, he\'s a solid figure of Nipon.">> <<set _responses.push(_char.dialogue(_dialogue))>> <<else>> <<set _dialogue = "I would rather give my life than serve under anyone not of the \ Hiroyuki household.">> <<set _responses.push(_char.dialogue(_dialogue))>> <</if>> <<else>> <<set _dialogue = "Why don\'t you worry less about what I think about \ Shintani and more about what Shintani thinks of you?">> <<set _responses.push(_char.dialogue(_dialogue))>> <</if>> <<set _options.find("#li2").css("text-decoration", "line-through")>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <<unset _dialogue>> <<case 3>> <<run $("#events3 button").prop("disabled", true)>> <<addclass "#events3 button" "disabled">> <<set _options.find("#li3").css("text-decoration", "line-through")>> <<set _responses = ["UNDER CONSTRUCTION."]>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <<unset _dialogue>> <<case 4>> <<run $("#events4 button").prop("disabled", true)>> <<addclass "#events4 button" "disabled">> <<set _options.find("#li4").css("text-decoration", "line-through")>> <<set _responses = ["UNDER CONSTRUCTION."]>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <<unset _dialogue>> <<case 5>> <<run $("#events5 button").prop("disabled", true)>> <<addclass "#events5 button" "disabled">> <<set _options.find("#li5").css("text-decoration", "line-through")>> <<set _responses = ["UNDER CONSTRUCTION."]>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <<unset _dialogue>> <<case 6>> <<set _options.find("#li6").css("text-decoration", "line-through")>> <<run $("#events6 button").prop("disabled", true)>> <<addclass "#events6 button" "disabled">> <<set _responses = []>> <<if $quests.knowledge_is_power.stage == 0>> <<set _responses = [$player.dialogue("Can I have access to the library?")]>> <<if (_char.slave_traits.trust gte 80) || (_char.slave_traits.obedience gte 90) || (_char.slave_traits.willpower lte 10)>> <<set _responses.push(_char.dialogue( "Oh the library? Why didn\'t you ask earlier? Here\'s the key." ))>> <<set $locations["shintaniHomeLibrary"].access = true>> <<else>> <<set _responses.push(_char.dialogue( "Well, I\'ve been the keeper of the library for many years now. \ Wouldn\'t it be irresponsible of me to let just anyone in?" ))>> <<set _responses.push("You see a sickly smile spread over Himari\'s mouth.")>> <<set _responses.push(_char.dialogue( "I have a friend who owes some debt to the owner of the Sol Brothel. \ Help me settle that debt, then we can talk about giving you access \ to the Hiroyuki library." ))>> <<set _responses.push("Himari pauses and thinks for a second,")>> <<set _responses.push(_char.dialogue("500 lari should cover it."))>> <<set $quests.knowledge_is_power.stage = 1>> <</if>> <<set _responses.push(_options.clone())>> <<else>> /* Worked at brothel */ <<if ("brothel" in $quests.knowledge_is_power.data && $quests.knowledge_is_power.data.brothel)>> <<set _responses = [$player.dialogue( "I went to the brothel and settled the debt, now about the library..." )]>> <<set _responses.push(_char.dialogue( "I heard about your exploits at Sol, it nearly made me fall \ out of my chair! Well if you\'re willing to go that far for access to the \ dusty library, you deserve it." ))>> <<set _responses.push("(Himari\'s Trust " + setup.show_change_html(0, 5) + ").")>> <<set _char.slave_traits.trust += 5>> <<set _to_round = $selected>> <<include "round">> <<else>> <<set _responses = [$player.dialogue( "Here\'s the 500 lari, now about the library..." )]>> /* Giving ¤500 */ <<set _responses.push(_char.dialogue( "I won\'t question where you got this, but good job. Here\'s the key to \ the dusty old library. Have fun." ))>> <<removemoney 500>> <<audio "coins_sound" play>> <<run UInv.AddItem("himari_hironaka", "lari", 500)>> <<updatetime>> <</if>> <<set _refresh = true>> <<set $locations["shintaniHomeLibrary"].access = true>> <<set _responses.push(_options.clone())>> <</if>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<updatequests>> <<unset _response>> <<unset _responses>> <<unset _dialogue>> <</switch>> /* Advance time every time an ask is performed */ <<set _roll = dice(1, 5) + 5>> <<addmins _roll>> <<unset _roll>> <<else>> <<notify>>Already asked <<= setup.titleCase($characters[$selected].first_name)>> too many things today!<</notify>> <</if>> <<unset _action>> <<unset _char>> <<elseif def _stop_loop && _stop_loop>> <<stop>> <</if>> <</repeat>><</silently>> <</nobr>>
<<nobr>> /* For ease */ <<set _shintani = $characters.shintani_hiroyuki>> <<script>> var player = State.variables.player; var div = $("<div></div>"); var html = " You greet " + (player.is_slave ? "your master," : "Shintani,") + "<br>" + "<em><b>" + setup.titleCase(player.first_name) + "</b>: \"I was hoping I could \ ask you a couple of things?\"</em>\ <br>Shintani eyes you up and down, wondering what you want.\ <br>\ What would you like to talk about?\ "; State.temporary.options = " <ol>\ <li id=\"li1\">His rules.</li>\ <li id=\"li2\">How Nipon started.</li>\ <li id=\"li3\">His dream of \"Free Cities\".</li>\ <li id=\"li4\">How he feels about his slaves.</li>\ <li id=\"li5\">Where you can improve your skills.</li>\ <li id=\"li6\">The library.</li>\ <li id=\"li7\">What you can do to help.</li>"; State.temporary.choices = 7; let quest_journal = State.variables.quest_journal; let quests = State.variables.quests; if (quest_journal.ongoing.contains("the_nipon_economy")) { if (player.get_money() >= 1000) { State.temporary.options += "<li id=\"li8\" value=\"8\">About successfully getting $1000.</li>"; } else { State.temporary.options += "<li id=\"li8\" value=\"8\">About giving up on testing the economy.</li>"; } State.temporary.choices += 1; } if (quest_journal.ongoing.contains("power_struggles") && (quests.power_struggles.stage == 2 || quests.power_struggles.stage == 3) && quest_journal.completed.contains("the_nipon_economy")) { State.temporary.options += "<li id=\"li8\" value=\"8\">Lia\'s adversarial plans."; } if (quest_journal.ongoing.contains("cycle_of_abuse") && quests.cycle_of_abuse.stage <= 1) { State.temporary.options += "<li id=\"li9\" value=\"9\">Purchasing a slave."; } State.temporary.options += "</ol>"; html += State.temporary.options; div.html(html); setup.mainLog_append(div); State.temporary.options = $(State.temporary.options); <</script>> <<set _disable_buttons = false>> <<disableactions _options>> /* Psuedoevent listener for action */ <<silently>><<repeat 10ms>> <<if _action !== undefined>> <<if $characters[$selected].limits.ask gt 0>> <<set $characters[$selected].limits.ask -= 1>> <<switch _action>> <<case 1>> <<if $difficulty == -2 && $player.is_slave>> <<set _responses = [ _shintani.dialogue("I expect you to work and make saving you worth it, but I guess you can take some off days..., just \ don\'t make it a habit.") ]>> <<elseif $difficulty == -1 && $player.is_slave>> <<set _responses = [ "I expect you to work at least one hour a day in this household to make saving you worth it." ]>> <<elseif $player.is_slave>> <<set _responses = [ "I expect you to work at least four hours a day in this household to make saving you worth it." ]>> <<else>> <<set _responses = [ "Rules? You\'re a citizen now right? Just keep Nipon\'s interests at heart, else some troops may be \ visiting you soon." ]>> <</if>> <<if $player.get_status() == "slave" || $player.get_status() == "high_slave">> <<set _responses.push("I suppose since you\'re trustworthy you can also manage and discipline some lower \ status slaves, but you\'ll have to pay for their opportunity cost if you take them away from their \ usual duties.")>> <</if>> <<run $("#events1 button").prop("disabled", true)>> <<addclass "#events1 button" "disabled">> <<set _options.find("#li1").css("text-decoration", "line-through")>> <<set _responses.push(_options.clone())>> <<run setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra)>> <<case 2>> <<run $("#events2 button").prop("disabled", true)>> <<addclass "#events2 button" "disabled">> <<set _responses = [$player.dialogue("How did Nipon come to be?")]>> <<set _responses.push("Shintani smiles with a subtle sparkle in his eye.")>> <<script>> var player = State.variables.player; var div = $("<div></div>"); var html = "\ <em><b>Shintani</b>: \"I inhereted Nipon from my parents, whom \ I unfortunately had to sell due to some internal disputes. I was \ told from very little that Nipon was a settlement blessed by the gods \ as an apology for the destruction they laid to our world. Truthfully I\'ve \ been trying to find out our true history for a long time, but I\'ve been \ preoccupied with the refugees pouring in, the droughts, and\ "; if (player.get_status() == "low_slave") { html += "...\"</em>\ <br>He trails off, realizing that he has said too much to a mere \ low slave."; } else { html += " the incursions from other settlements. But actually, recently I\'ve \ found some very old manuscripts in a language I cannot understand. I\'ve sent \ them to a couple of scholars, hoping to understand them. As you can see, I\'ve \ structured Nipon to reflect a very specific culture; one that my parents \ taught me. Perhaps it might be naivity, but"; if (player.get_status() == "slave") { html += "...\"</em>\ <br>He trails off, realizing that he has said too much to a mere \ slave."; } else { html += " I want to hold onto what I deem to be the nature of humanity that was \ lost long ago in The Dusting. I believe in a world of complexity and rich culture. \ We are currently in a phase where man has yet to consolidate, and thus we can change \ the course of history as we know it. Whether you like it or not, we hold the reins \ of tomorrow.\"</em>\ <br>He catches himself in his ferver and calms down. He seems pleased that you were \ interested in Nipon."; } } div.html(html); State.temporary.responses.push(div); <</script>> <<set _options.find("#li2").css("text-decoration", "line-through")>> <<set _responses.push(_options.clone())>> <<run setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra)>> <<case 3>> <<run $("#events3 button").prop("disabled", true)>> <<addclass "#events3 button" "disabled">> <<set _options.find("#li3").css("text-decoration", "line-through")>> <<set _responses = [$player.dialogue("When you first found me, you mentioned a \"Free City\",")]>> <<if $player.is_slave>> <<set _responses.push( "You raise your hand slowly to touch the collar on your neck with the crest of the \ Hiroyuki household engraved in it, implying that his city is anything but free." )>> <<set _response.push("Shintani chuckles,")>> <<set _response.push(_shintani.dialogue( "What is freedom really? Do we as humans desire true freedom? Freedom is you starving in the \ desert. It\'s your death. Humans like to be told what to do. We like to wake up and have somewhere \ to be. We like to slowly walk the monotonous march that leads the the great equalizer... death." ))>> <</if>> <<set _responses.push("Shintani pauses and considers his words,")>> <<set _responses.push(_shintani.dialogue("Freedom is about freedom from starvation. It\'s about freedom from worry. \ Freedom is Slavery."))>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <<unset _dialogue>> <<case 4>> <<run $("#events4 button").prop("disabled", true)>> <<addclass "#events4 button" "disabled">> <<set _options.find("#li4").css("text-decoration", "line-through")>> <<set _responses = [_shintani.dialogue("Well as you know numerous settlements including \ Nipon has been experimenting with indentured servitude, but as I\'m sure you also know, \ that always seemed to devolve into completely inhumane behavior anyways. I wanted \ to introduce slavery because we as owners shouldn\'t want to damage our property..."), "Shintani smirks at you...", _shintani.dialogue("Isn\'t that right?"), "He pauses for a brief moment before continuing", _shintani.dialogue("My slaves are my children. They bare my vassal name of Hironaka which \ is known far past Nipon\'s borders. We share not only our success but also failure."), "It seems to be obvious to everyone but Shintani how fragile his naive ideals are."]>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <<unset _dialogue>> <<case 5>> <<run $("#events5 button").prop("disabled", true)>> <<addclass "#events5 button" "disabled">> <<set _responses = [ $player.dialogue("Where\'s a good place to improve my skills?") ]>> <<if $player.get_status(passage()) == "low_slave">> <<set _responses.push(_shintani.dialogue("Why don\'t you focus on being a better \ slave first before thinking about useless things?"))>> <<else>> <<set _response = "You can tell Shintani is happy that you are taking initiative to \ be more useful to him">> <<if !$quests.path_to_greatness.added>> <<set _response += " (Trust " + setup.show_change_html(0, 5) + ")">> <<set $player.slave_traits.trust += 5>> <<include round>> <</if>> <<set _response += ".">> <<set _responses.push(_response)>> <<set _responses.push(_shintani.dialogue("You can train at the Nipon barracks with \ our soldiers. They might give you a thrashing if you aren\'t careful though haha."))>> <<if !$quests.path_to_greatness.added>> <<set _add_quest = true>> <</if>> <</if>> <<set _options.find("#li5").css("text-decoration", "line-through")>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> /* Wait for end of dialogue to add quest */ <<if def _add_quest && _add_quest>> <<set _add_quest = false>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set $quests["path_to_greatness"].added = true>> <<set $quest_journal.ongoing.push("path_to_greatness")>> <<notify>>Quest <em>Path to Greatness</em> added to journal!<</notify>> <<audio "quest_added_sound" play>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <<case 6>> <<run $("#events6 button").prop("disabled", true)>> <<addclass "#events6 button" "disabled">> <<set _responses = [$player.dialogue("Do you think I could have access to the library?")]>> <<if $locations["shintaniHomeLibrary"].access>> <<set _responses.push(_shintani.dialogue("Don\'t you already have access to the library?"))>> <<else>> <<if $player.get_status() != "low_slave" || $player.slave_traits.trust gt 50>> <<set _responses.push(_shintani.dialogue("Why don\'t you ask Himari, she takes care \ of the library and has the key."))>> <<if !$quests["knowledge_is_power"].added>> <<set _add_quest = true>> <</if>> <<else>> <<set _responses.push(_shintani.dialogue("Why don\'t you focus on being a better \ slave first before thinking about useless things?"))>> <<notify>>Ask again after raising your trust.<</notify>> <</if>> <</if>> <<set _options.find("#li6").css("text-decoration", "line-through")>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<if def _add_quest && _add_quest>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _add_quest>> <<set $quests["knowledge_is_power"].added = true>> <<set $quest_journal.ongoing.push("knowledge_is_power")>> <<notify>>Quest <em>Knowledge is Power</em> added to journal!<</notify>> <<audio "quest_added_sound" play>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <<unset _response>> <<unset _responses>> <<case 7>> <<set _to_add = []>> <<run $("#events7 button").prop("disabled", true)>> <<addclass "#events7 button" "disabled">> <<set _responses = [$player.dialogue("Is there anything I could do to help out Nipon?")]>> <<set _response = "Shintani is very happy that you\'d go out of your way to help Nipon">> <<if $player.get_status() == "low_slave">> <<if !$quests["life_of_a_slave"].added>> <<set _add_quest = true>> <<set _to_add.push("life_of_a_slave")>> <<set _response += " (Trust " + setup.show_change_html(0, 5) + ").">> <<set $player.slave_traits.trust += 5>> <<include round>> <<else>> <<set _response += ".">> <</if>> <<set _responses.push(_response)>> <<set _responses.push(_shintani.dialogue("\ Well, I\'m happy that you want to help out, but neither I nor the people \ of Nipon trust you at all yet. Why don\'t you keep following orders for a \ while and we can talk.\ "))>> <<elseif $player.get_status() == "slave" || $player.get_status() == "high_slave">> /* Allow access to Nipon */ <<set $locations["niponCentral"].access = true>> <<set _refresh = true>> <<if !$quests["life_of_a_slave"].added>> <<set _add_quest = true>> <<set _to_add.push("life_of_a_slave")>> <<set _response += " (Trust " + setup.show_change_html(0, 5) + ").">> <<set $player.slave_traits.trust += 5>> <<include round>> <<else>> <<set _response += ".">> <</if>> <<set _responses.push(_response)>> <<set _response = "<em><b>Shintani</b>: \"You\'ve done well in proving to me that you are to \ be trusted. ">> <<if !$quest_journal.completed.contains("the_nipon_economy")>> <<set _response += "Usually, I\'d still be more cautious, but there is something \ I need dealt with. So I\'m permitting you to leave the house. Here are 200 laris, \ I want you to go into Nipon, and using whatever legal means necesary, turn \ that ¤200 into ¤1000. I also want you to record in detail how exactly you do it. \ This is both a test of your abilities as well as an inquiry in our local economy. \ If the task deems too much for you, just let me know.\"</em><br>">> <<if !$quests["the_nipon_economy"].added>> <<set _add_quest = true>> <<set _to_add.push("the_nipon_economy")>> <</if>> /* If the quest was removed but not completed, readd it */ <<if !$quest_journal.ongoing.contains("the_nipon_economy")>> <<set _add_quest = true>> <<set _to_add.push("the_nipon_economy")>> <</if>> <<elseif $quest_journal.ongoing.contains("power_struggles") && $quests.power_struggles.data.side == "shintani">> <<set _response += "Just continue dealing with this whole Lia situation.\"</em><br>">> <<else>> <<set _response += "Unfortunately I don\'t have anything for you right now.\"</em><br>">> <</if>> <<set _responses.push(_response)>> <</if>> <<set _options.find("#li7").css("text-decoration", "line-through")>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<if def _add_quest && _add_quest>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _add_quest>> <<if _to_add.contains("the_nipon_economy")>> <<set $quest_journal.ongoing.push("the_nipon_economy")>> <<notify>>Quest <em>The Nipon Economy</em> added to journal!<</notify>> <<audio "quest_added_sound" play>> <<if !$quests.the_nipon_economy.added>> /* Give player money */ <<addmoney 200>> <<audio "coins_sound" play>> <<set $quests["the_nipon_economy"].added = true>> <<include round>> <<updatetime>> <</if>> <</if>> <<if _to_add.contains("life_of_a_slave")>> <<set $quests.life_of_a_slave.added = true>> <<set $quest_journal.ongoing.push("life_of_a_slave")>> <<notify>>Quest <em>Life of a Slave</em> added to journal!<</notify>> <<audio "quest_added_sound" play>> <</if>> <<unset _to_add>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <<unset _response>> <<unset _responses>> <<case 8>> <<set _options.find("#li8").css("text-decoration", "line-through")>> <<run $("#events8 button").prop("disabled", true)>> <<addclass "#events8 button" "disabled">> <<if $quest_journal.completed.contains("the_nipon_economy")>> /* TODO */ <<set _options.find("#li8").css("text-decoration", "line-through")>> <<set _responses = [$player.dialogue("I\'ve had a run-in with your sister and it seems she\'s plotting \ something..."), "You relay everything that Lia has told you so far and outline what she has tasked you to do. Shintani \ suddenly starts laughing", _shintani.dialogue("Didn\'t have enough did she? Listen, I've been trying to destroy the Union\'s influence \ for a long time and I feel that this has presented a great opportunity to do so. I want you to return to \ Lia as if you had done everything she\'d asked."), "Shintani looks through some files and hands you a book and a folder containing various forms", _shintani.dialogue("These are some altered forms that\'s mostly accurate save for a couple of important items, \ bring these to Lia and do whatever she asks, then report back to me.")]>> <<unset _done_appending>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _done_appending>> <<set $quests.power_struggles.stage = 4>> <<set $quests.power_struggles.data.side = "shintani">> <<run UInv.AddItem("inventory", "hiroyuki_book", 1)>> <<run UInv.AddItem("inventory", "nipon_transaction_log", 1)>> <<notify>>Acquired tampered Nipon Transaction Logs and Hiroyuki Family Registry<</notify>> <<stop>> <</if>><</repeat>><</silently>> <<else>> <<if $player.get_money() gte 1000>> <<set _responses = [$player.dialogue("I\'ve completed your task, here\'s 1000 lari.")]>> <<set _responses.push("\ You also hand Shintani some notes that you scribbled describing \ how you came up with the money. A loud silence hangs over the room as he \ closely examines the papers. After a very long five minutes, Shintani puts \ the papers down and looks up to you.\ ")>> <<set _responses.push(_shintani.dialogue("\ Honestly I didn\'t expect you to be able to do it, especially not like this,\ "))>> <<set _responses.push("he points to the various points you laid out.")>> <<set _responses.push(_shintani.dialogue("\ Regardless, thank you for your work. You can keep that 1000 lari as a token \ of my appreciation. Know I rarely give rewards, perhaps that should tell you how \ important this was.\ "))>> <<set _responses.push("\ He waves his hand to dismiss you as he puzzles over the papers you gave him. \ You can tell that something has been troubling him for a long time, perhaps \ you can ask around town about it.\ ")>> <<set $quest_journal.completed.push("the_nipon_economy")>> <<else>> <<set _responses = [$player.dialogue("I\'ve tried but I don\'t think I can complete the task.")]>> <<set _responses.push("Shintani looks at you with disappointment,")>> <<set _responses.push(_shintani.dialogue("\ I can\'t say I\'m surprised. Let me know if you want to try again.\ "))>> <<set _responses.push("(Trust " + setup.show_change_html(0, -5) + ")")>> <<set $player.slave_traits.trust -= 5>> <<include round>> <</if>> <<run setup.remove_val($quest_journal.ongoing, "the_nipon_economy")>> <</if>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <<case 9>> <<set _options.find("#li9").css("text-decoration", "line-through")>> <<run $("#events9 button").prop("disabled", true)>> <<addclass "#events9 button" "disabled">> <<if $quest_journal.ongoing.contains("cycle_of_abuse") && $quests.cycle_of_abuse.stage lte 1>> <<if $quest_journal.completed.contains("the_nipon_economy") && $player.get_status(passage()) == "high_slave" && $player.slave_traits.trust gte 90>> <<set _responses = [ "Shintani immediately chuckles a little to himself,", _shintani.dialogue("Like master like slave huh? You\'ve done well to gain my trust and to serve \ Nipon. I\'ll give you permission to buy slaves as well as subsidize the first one \ by 90%, HOWEVER, I expect to be repaid in full with interest later on."), ]>> <<set $quests.cycle_of_abuse.stage = 2>> <<else>> <<set _responses = [ "Shintani immediately chuckles a little to himself,", _shintani.dialogue("Perhaps you\'ve forgotten your place here... did you need me to remind you?"), "He pauses for a couple of seconds", _shintani.dialogue("Well, I can\'t blame you for seeing the light and hope in slavery though... perhaps \ if you can prove your devotion and loyalty to me we can discuss it.") ]>> <<set $quests.cycle_of_abuse.stage = 1>> <</if>> <</if>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<unset _response>> <<unset _responses>> <</switch>> <<silently>><<repeat 20ms>><<if ndef _done_appending || (def _done_appending && _done_appending)>> /* Advance time every time an ask is performed */ <<set _roll = dice(1, 5) + 5>> <<addmins _roll>> <<unset _roll>> /* Update quests */ <<updatequests>> <<stop>> <</if>><</repeat>><</silently>> <<else>> <<notify>>Already asked Shintani too many things today!<</notify>> <</if>> <<unset _action>> <<elseif def _stop_loop && _stop_loop>> <<stop>> <</if>> <</repeat>><</silently>> <</nobr>>
<<set _events = [ ]>>
<<nobr>> <<script>> var div = $("<div></div>"); div.html(" While helping Shintani in his office he hands you a couple of papers,<br>\ <em><b>Shintani</b>: \"Quickly check over these calculations, I need to attend \ to more important matters.\"</em>\ <br>Before you are around four pages of equations.\ <br>\ What do you do?\ <ol>\ <li>Tell him it's too complicated for you.</li>\ <li>Pretend to glance over it and praise his work.</li>\ <li>Diligently check his work.</li>\ <li>Purposefully add in errors.</li>\ </ol>\ "); setup.mainLog_append(div); <</script>> <<set _choices = 4>> <<disableactions>> /* Psuedoevent listener for action */ <<silently>><<repeat 10ms>> <<if _action !== undefined>> <<switch _action>> <<case 1>> /* Roll */ <<set _roll = dice(1, $difficulty + 6) + $player.get_status_prop("tact") + 30 / $player.get_status_prop("intelligence") - $difficulty>> <<if _roll gt 30>> <<set _success = true>> <<set $_temp_to_log += setup.pass("intelligence")>>; <<set $_temp_to_log += setup.pass("tact")>>; <<else>> <<set _success = false>> <<set $_temp_to_log += setup.fail("intelligence")>>; <<set $_temp_to_log += setup.fail("tact")>>; <</if>> /* Reaction */ <<if _success>> <<set $_temp_to_log += "<div>You stare at him blankly for a couple of seconds before \ he realizes what he's asking of you.<br>\ <em><b>Shintani</b>: \"Oh nevermind,\"</em>\ <br>he says \ before gesturing to the door (Willpower " + setup.show_change_html(0, 1) + ").</div>">> <<set $player.slave_traits.willpower += 1>> <<else>> <<set $_temp_to_log += "<div>You tell him that this task is too difficult, but being \ a seasoned slave master, Shintani knows when someone is trying to \ get out of work. He eyes you for a second before dismissing you. \ (Obedience " + setup.show_change_html(0, -1) + ", Trust "+ setup.show_change_html(0, -0.5) + ")">> <<set $player.slave_traits.obedience -= 1>> <<set $player.slave_traits.trust -= 0.5>> <</if>> <<case 2>> /* Dice roll */ <<set _roll = $player.get_status_prop("tact") + dice(1, $difficulty + 6) - $difficulty>> <<if _roll gt 25>> <<set _success = true>> <<set $_temp_to_log += setup.pass("tact")>>; <<else>> <<set _success = false>> <<set $_temp_to_log += setup.fail("tact")>>; <</if>> /* Reactions */ <<if _success>> <<set $_temp_to_log += "<div>You look over the papers for a while, making purposeful yet \ discrete grunts of agreement to yourself. After reaching the last \ page, you return him the stack and tell him his work was meticulous \ and well done. He smiles at you and dismisses you. (Obedience " + setup.show_change_html(0, 2) + ", Trust " + setup.show_change_html(0, 0.5) + ")</div>">> <<set $player.slave_traits.obedience += 2>> <<set $player.slave_traits.trust += 0.5>> <<else>> <<set $_temp_to_log += "<div>You quickly look through the papers, and hand it back to him. \ He dismisses you, but as you leave, you see him take the pile of papers \ and move it back into his to-do stack. (Obedience " + setup.show_change_html(0, -2) + ", Trust " + setup.show_change_html(0, -0.75) + ").\ </div>">> <<set $player.slave_traits.obedience -= 2>> <<set $player.slave_traits.trust -= 0.75>> <</if>> <<case 3>> <<set _roll = $player.get_status_prop("intelligence") + dice(1, $difficulty + 6) - $difficulty>> <<if _roll gt 20>> <<set _success = true>> <<set $_temp_to_log += setup.pass("intelligence")>>; <<else>> <<set $_temp_to_log += setup.fail("intelligence")>>; /* Sub-roll for willpower */ <<set _roll = $player.get_status_prop("willpower") + 2 * (dice(1, $difficulty + 6) - $difficulty)>> <<if _roll gt 80>> <<set _success = true>> <<set _subroll = true>> <<set $_temp_to_log += setup.pass("willpower")>>; <<set $player.stats.intelligence += 0.5>> <<else>> <<set _success = false>> <<set _subroll = false>> <<set $_temp_to_log += setup.fail("willpower")>>; <</if>> <</if>> <<if _success>> <<set $_temp_to_log += "<div>Whether it was from your intelligence or pure willpower, \ you were able to diligently check through Shintani's work. \ After a while you spot a couple of small minor errors \ and Shintani thanks you for it. ">> <<if _subroll>> <<set $_temp_to_log += "(Intelligence " + setup.show_change_html(0, 0.5) + ", ">> <<else>> <<set $_temp_to_log += "(">> <</if>> <<unset _subroll>> <<set $_temp_to_log += "Obedience " + setup.show_change_html(0, 2) + ", Trust " + setup.show_change_html(0, 1) + ").\ </div>">> <<set $player.slave_traits.obedience += 2>> <<set $player.slave_traits.trust += 1>> <<else>> <<set $_temp_to_log += "<div>You spent a long time looking through Shintani's work, trying \ to make sense what seems like completely gibberish to you. After a some \ time, Shintani realizes that this task was far beyond you. He dismisses \ you but not before commending your effort (Obedience " + setup.show_change_html(0, 1) + ").</div>">> <<set $player.slave_traits.obedience += 1>> <</if>> <<case 4>> <<set _roll = dice(1, $difficulty + 6) + $player.get_status_prop("intelligence") - $difficulty>> <<if _roll gt 35>> <<set _success = true>> <<set $_temp_to_log += setup.pass("intelligence")>>; <<set $_temp_to_log += "<div>Knowing your way around numbers, you purposefully add in some \ hard-to-find errors into Shintani\'s work. As you hand it off to him, he doesn\'t notice \ at all (Willpower " + setup.show_change_html(0, 10) + ").">> <<else>> <<set _success = false>> <<set $_temp_to_log += setup.fail("intelligence")>>; <<set $_temp_to_log += "<div>Knowing your way around numbers, you purposefully add in some \ errors into Shintani\'s work. As you hand it off to him, he notices your poor attempt of \ rebellion, but decides he is too busy right now to punish you \ (Obedience " + setup.show_change_html(0, -4) + ", Trust " + setup.show_change_html(0, -1.5) + ").">> <</if>> <<if _success>> <<set $player.slave_traits.willpower += 10>> <<else>> <<set $player.slave_traits.obedience -= 4>> <<set $player.slave_traits.trust -= 1.5>> <</if>> <</switch>> <<unset _action>> <<unset _roll>> <<unset _success>> <<include shintaniHomeWorkEngineAfter>> <</if>> <</repeat>><</silently>> <</nobr>>
<<nobr>> <<set _prefix = "shintaniHomeEventsWorkEconomic">> <<set _events = [ "CheckMath", "FetchBook", "GetTea", "InformShintani", ]>> <<include `_prefix + either(_events)`>> /* <<include shintaniHomeEventsWorkSkeleton>> */ <</nobr>>
<<nobr>> <<script>> var div = $("<div></div>"); div.html(" You were helping Shintani in his office when he realizes he forgot something,<br>\ <em><b>Shintani</b>: \"" + setup.titleCase(State.variables.player.first_name) + ", go \ fetch me my log book, it should be on the second shelf on the right.\"</em>\ <br>You look over and see the book, grabbing it. When you return to Shintani you \ notice he is completely immersed in his work.\ <br>\ What do you do?\ <ol>\ <li>Give him the book.</li>\ <li>Give him the wrong book.</li>\ <li>Leave without giving him the book.</li>\ </ol>\ "); setup.mainLog_append(div); <</script>> <<set _choices = 3>> <<disableactions>> /* Psuedoevent listener for action */ <<silently>><<repeat 10ms>> <<if _action !== undefined>> <<switch _action>> <<case 1>> <<set $_temp_to_log += "<div>You hand him the book and leave him to focus on his work \ (Obedience " + setup.show_change_html(0, 1, true) + ", Trust " + setup.show_change_html(0, 0.5, true) + ").</div>">> <<set $player.slave_traits.obedience += 1>> <<set $player.slave_traits.trust += 0.5>> <<case 2>> /* Dice roll */ <<set _roll = dice(1, $difficulty + 6) + $player.stats.intelligence>> <<if _roll gt 30>> <<set _success = false>> <<set $_temp_to_log += setup.fail("intelligence")>>; <<else>> <<set _success = true>> <<set $_temp_to_log += setup.pass("intelligence")>>; <</if>> /* Reactions */ <<set $_temp_to_log += "<div>You hand him the wrong book and leave him to focus on his work \ (Willpower " + setup.show_change_html(0, 2, true) + ").">> <<set $player.slave_traits.willpower += 2>> <<if _success>> <<set $_temp_to_log += " He notices you handed him the wrong book, but quickly remembers \ you are too stupid to know any better.</div>">> <<else>> <<set $_temp_to_log += " He notices you handed in the wrong book on purpose, as you \ clearly are intelligent enough to know better (Obedience " + setup.show_change_html(0, -2, true) + ", Trust " + setup.show_change_html(0, -0.5, true) + ").\ </div>">> <<set $player.slave_traits.obedience -= 2>> <<set $player.slave_traits.trust -= 0.5>> <</if>> <<case 3>> <<set _roll = dice(1, $difficulty + 6) + $player.stats.dexterity - $difficulty>> <<if _roll gt 30>> <<set _success = true>> <<set $_temp_to_log += setup.pass("dexterity")>>; <<else>> <<set _success = false>> <<set $_temp_to_log += setup.fail("dexterity")>>; <</if>> <<if _success>> <<set $_temp_to_log += "<div>You left the room with Shintani too distracted to notice \ (Willpower " + setup.show_change_html(0, 1, true) + ").</div>">> <<set $player.slave_traits.willpower += 1>> <<else>> <<set $_temp_to_log += "<div>You left the room but on your way out bump into a chair, \ Shintani is too engrossed in his work to stop you. (Obedience " + setup.show_change_html(0, -1, true) + ", Trust " + setup.show_change_html(0, -0.5, true) + ").\ </div>">> <<set $player.slave_traits.obedience -= 1>> <<set $player.slave_traits.trust -= 0.5>> <</if>> <</switch>> <<unset _action>> <<unset _roll>> <<unset _success>> <<include shintaniHomeWorkEngineAfter>> <</if>> <</repeat>><</silently>> <</nobr>>
<<nobr>> /* For ease */ <<set _char = $characters[either($characters.shintani_hiroyuki.slaves)]>> <<set _higher_status = ($player.get_status("nipon") == "slave" && _char.status == "low_slave") || ($player.get_status("nipon") == "high_slave" && _char.status == "slave") || ($player.get_status("nipon") == "high_slave" && _char.status == "low_slave")>> /* For eventual rounding and simulation */ <<set _to_round = _char.key>> <<set $to_simulate.add(_char.key)>> <<set _to_log = [ "As you were assisting " + setup.titleCase(_char.first_name) + " with " + setup.PRONOUNS[_char.gender]["?his"] + " duties, " + setup.PRONOUNS[_char.gender]["?he"] + " starts to feel parched,", _char.dialogue( "Go make me a cup of jasmine tea, you should be able to do that at least, right?" ), "You go to the kitchen and open the cabinet stocking tens of different teas.<br>\ What do you do?\ <ol>\ <li>Brew " + setup.PRONOUNS[_char.gender]["?him"] + " a cup of jasmine tea like " + setup.PRONOUNS[_char.gender]["?he"] + " asked.</li>\ <li>Brew " + setup.PRONOUNS[_char.gender]["?him"] + " the wrong type of tea.</li>\ </ol>" ]>> <<script>> setup.mainLog_append_delayed(State.temporary.to_log, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 2>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> /* Psuedoevent listener for action */ <<silently>><<repeat 10ms>> <<if _action !== undefined>> <<switch _action>> <<case 1>> <<if ndef _selected_action>> <<set _selected_action = 1>> <<set _responses = [ "You brew " + setup.titleCase(_char.first_name) + " a nice cup of jasmine tea. \ As you inhale the soothing aroma you realize you could put something in it.<br>\ <ol>\ <li>Do nothing and give " + setup.PRONOUNS[_char.gender]["?him"] + " the tea.</li>\ <li>Spit in " + setup.PRONOUNS[_char.gender]["?his"] + " tea.</li>" ]>> <<set _choices = 2>> <<if $player.gender == 0>> <<set _responses[0] += "<li>Cum into " + setup.PRONOUNS[_char.gender]["?his"] + " tea.</li></ol>">> <<set _choices = 3>> <</if>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <<set $_temp_to_log = "\ As you walk back from the kitchen with the cup of tea, " + setup.titleCase(_char.first_name) + " immediately \ can tell from the aroma that you brewed the right tea. " >> <<elseif _selected_action == 1>> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ (Obedience " + setup.show_change_html(0, 2) + ").">> <<set $player.slave_traits.obedience += 2>> <<set $_temp_to_log += "<br>">> <<include shintaniHomeWorkEngineAfter>> <<elseif _selected_action == 2>> <<set _char_disposition = _char.get_disposition()>> <<switch _char_disposition>> <<case "submissive">> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ too submissive to protest your error \ (Willpower " + setup.show_change_html(0, 2) + ").">> <<case "devoted">> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ too devoted to protest your error \ (Willpower " + setup.show_change_html(0, 2) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Willpower " + setup.show_change_html(0, -1, false) + ").">> <<set _char.slave_traits.willpower -= 1>> <<case "scared">> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ too scared to protest your error \ (Willpower " + setup.show_change_html(0, 2) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Willpower " + setup.show_change_html(0, -1, false) + ").">> <<set _char.slave_traits.willpower -= 1>> <<default>> <<if _higher_status>> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ and drinks the entire cup realizing that it would be a mistake to protest being a lower status than you. ">> <<else>> <<set $_temp_to_log += "<br>" + _char.dialogue("Can\'t even do something as simple \ as brewing a cup of tea?") + "\ (Obedience " + setup.show_change_html(0, -1) + ", Willpower " + setup.show_change_html(0, 2) + ").">> <<set $player.slave_traits.obedience -= 1>> <</if>> <</switch>> <<set $player.slave_traits.willpower += 2>> <<set $_temp_to_log += "<br>">> <<include shintaniHomeWorkEngineAfter>> <</if>> <<case 2>> <<if ndef _selected_action>> <<set _selected_action = 2>> <<set _responses = [ "You brew " + setup.titleCase(_char.first_name) + " a nice cup of earl grey tea. As you inhale the soothing \ aroma you realize you could put something in it.<br>\ <ol>\ <li>Do nothing and give " + setup.PRONOUNS[_char.gender]["?him"] + " the tea.</li>\ <li>Spit in " + setup.PRONOUNS[_char.gender]["?his"] + " tea.</li>" ]>> <<set _choices = 2>> <<if $player.gender == 0>> <<set _responses[0] += "<li>Cum into " + setup.PRONOUNS[_char.gender]["?his"] + " tea.</li></ol>">> <<set _choices = 3>> <</if>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <<set $_temp_to_log = "\ As you brew the cup of tea, " + setup.titleCase(_char.first_name) + " immediately can tell from the aroma that \ you brewed the wrong tea. " >> <<elseif _selected_action == 1>> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand, not \ noticing that you had spit in it \ (Obedience " + setup.show_change_html(0, 1) + ", Willpower " + setup.show_change_html(0, 1) + ").">> <<set $player.slave_traits.obedience += 1>> <<set $player.slave_traits.willpower += 1>> <<set $_temp_to_log += "<br>">> <<include shintaniHomeWorkEngineAfter>> <<elseif _selected_action == 2>> <<set _char_disposition = _char.get_disposition()>> <<switch _char_disposition>> <<case "submissive">> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ too submissive to protest your error \ (Willpower " + setup.show_change_html(0, 3) + ").">> <<case "devoted">> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ too devoted to protest your error. When " + setup.PRONOUNS[_char.gender]["?he"] + " takes a sip " + setup.PRONOUNS[_char.gender]["?he"] + " recognizes \ the taste of your saliva, savoring it \ (Willpower " + setup.show_change_html(0, 3) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Willpower " + setup.show_change_html(0, -1, false) + ").">> <<set _char.slave_traits.willpower -= 1>> <<case "scared">> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ too scared to protest your error \ (Willpower " + setup.show_change_html(0, 3) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Willpower " + setup.show_change_html(0, -1, false) + ").">> <<set _char.slave_traits.willpower -= 1>> <<default>> <<if _higher_status>> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ and drinks the entire cup realizing that it would be a mistake to protest being a lower status than you. ">> <<else>> <<set $_temp_to_log += "<br>" + _char.dialogue("Can\'t even do something as simple \ as brewing a cup of tea?") + "She dumps the tea out in front of you \ (Obedience " + setup.show_change_html(0, -1) + ", Willpower " + setup.show_change_html(0, 3) + ").">> <<set $player.slave_traits.obedience -= 1>> <</if>> <</switch>> <<set $player.slave_traits.willpower += 3>> <<set $_temp_to_log += "<br>">> <<include shintaniHomeWorkEngineAfter>> <</if>> <<case 3>> /* Roll for dexterity */ <<set _roll = $player.stats.dexterity + dice(1, 6 + $difficulty) - $difficulty>> <<set _success = false>> <<if _roll gte 20>> <<set _success = true>> <</if>> <<if _success>> <<set $_temp_to_log += "<br>" + setup.pass("dexterity") + "You successfully jack off and came directly into the cup of tea you just \ brewed for " + setup.titleCase(_char.first_name) + ". You bring it out of the kitchen and hand it to " + setup.PRONOUNS[_char.gender]["?him"] + ". " >> <<if _selected_action == 1>> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand, and \ drinks the entire cup. ">> <<if _char.sex_fetishes.cum gte 50>> <<set $_temp_to_log += "Being a cum slut " + setup.PRONOUNS[_char.gender]["?he"] + " recognizes the taste of your \ cum and savors it, greedily licking the bottom of the cup">> <<set $_temp_to_log += "\ (Obedience " + setup.show_change_html(0, 1) + ", Willpower " + setup.show_change_html(0, 4) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 4) + ", Cum Fetish " + setup.show_change_html(0, 1) + ").">> <<set _char.mental_conditions.arousal += 4>> <<else>> <<set $_temp_to_log += setup.titleCase(setup.PRONOUNS[_char.gender]["?he"]) + " can tell the tea is slightly different but enjoys it">> <<set $_temp_to_log += "\ (Obedience " + setup.show_change_html(0, 1) + ", Willpower " + setup.show_change_html(0, 4) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 1) + ", Cum Fetish " + setup.show_change_html(0, 1) + ").">> <<set _char.mental_conditions.arousal += 1>> <</if>> <<set $player.slave_traits.obedience += 1>> <<set $player.slave_traits.willpower += 4>> <<set _char.sex_fetishes.cum += 1>> <<set $_temp_to_log += "<br>">> <<include shintaniHomeWorkEngineAfter>> <<elseif _selected_action == 2>> <<set _char_disposition = _char.get_disposition()>> <<switch _char_disposition>> <<case "submissive">> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ and drinks the entire cup, too submissive to protest your error. ">> <<set $player.slave_traits.willpower += 2>> <<case "devoted">> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ and drinks the entire cup, too devoted to protest your error. ">> <<case "scared">> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ and drinks the entire cup too scared to protest your error. ">> <<default>> <<if _higher_status>> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " thanks you and takes the tea from your hand \ and drinks the entire cup realizing that it would be a mistake to protest being a lower status than you. ">> <<else>> <<set $_temp_to_log += "<br>" + _char.dialogue("Can\'t even do something as simple \ as brewing a cup of tea?") + "She dumps the tea out in front of you \ (Obedience " + setup.show_change_html(0, -1) + ", Willpower " + setup.show_change_html(0, 4) + ").">> <<set $player.slave_traits.obedience -= 1>> <</if>> <</switch>> /* If " + setup.PRONOUNS[_char.gender]["?he"] + " drank the tea */ <<if _char_disposition == "submissive" || _char_disposition == "devoted" || _char_disposition == "scared" || _higher_status>> <<if _char.sex_fetishes.cum gte 50>> <<set $_temp_to_log += "Being a cum slut " + setup.PRONOUNS[_char.gender]["?he"] + " recognizes the taste of your \ cum and savors it, greedily licking the bottom of the cup. After " + setup.PRONOUNS[_char.gender]["?he"] + "\'s done " + setup.PRONOUNS[_char.gender]["?he"] + " looks up at you and you can see a little of your cum dipping off " + setup.PRONOUNS[_char.gender]["?his"] + " " + _char.physical_traits.ethnicity + " chin">> <<set $_temp_to_log += "\ (Obedience " + setup.show_change_html(0, 1) + ", Willpower " + setup.show_change_html(0, 4) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 4) + ", Cum Fetish " + setup.show_change_html(0, 1) + ").">> <<set _char.mental_conditions.arousal += 4>> <<else>> <<set $_temp_to_log += "She can tell the tea is slightly different but enjoys \ it">> <<set $_temp_to_log += "\ (Willpower " + setup.show_change_html(0, 4) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 1) + ", Cum Fetish " + setup.show_change_html(0, 1) + ").">> <<set _char.mental_conditions.arousal += 1>> <</if>> <<set _char.sex_fetishes.cum += 1>> <</if>> <<set $player.slave_traits.willpower += 4>> <<set $_temp_to_log += "<br>">> <<include shintaniHomeWorkEngineAfter>> <</if>> <<else>> <<set $_temp_to_log += "<br>" + setup.fail("dexterity") + "As you were jacking off in the kitchen you bump into the counter, causing \ " + setup.titleCase(_char.first_name) + " to come in. She catches you red-handed as you\'re aiming your member \ into " + setup.PRONOUNS[_char.gender]["?him"] + " cup of tea. " >> <<set _char_disposition = _char.get_disposition()>> <<switch _char_disposition>> <<case "submissive">> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " is so submissive, " + setup.PRONOUNS[_char.gender]["?he"] + " drops to " + setup.PRONOUNS[_char.gender]["?him"] + " knees \ immediately and takes your member into " + setup.PRONOUNS[_char.gender]["?him"] + " mouth. As you\'re about \ to cum " + setup.PRONOUNS[_char.gender]["?he"] + " aims your cock into " + setup.PRONOUNS[_char.gender]["?his"] + " tea, drinking the entire thing in one \ gulp.<br>">> <<if _char.sex_fetishes.cum gte 50>> <<set $_temp_to_log += _char.dialogue("I love drinking your cum so much!")>> <<set $_temp_to_log += "\ (Willpower " + setup.show_change_html(0, 4) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 4) + ", Cum Fetish " + setup.show_change_html(0, 1) + ").">> <<set _char.mental_conditions.arousal += 4>> <<else>> <<set $_temp_to_log += _char.dialogue("Thank you for the extra treat.")>> <<set $_temp_to_log += "\ (Willpower " + setup.show_change_html(0, 4) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 1) + ", Cum Fetish " + setup.show_change_html(0, 1) + ").">> <<set _char.mental_conditions.arousal += 1>> <</if>> <<set $player.slave_traits.willpower += 4>> <<set _char.sex_fetishes.cum += 1>> <<case "devoted">> <<set $_temp_to_log += setup.titleCase(_char.first_name) + " is so devoted, " + setup.PRONOUNS[_char.gender]["?he"] + " drops to " + setup.PRONOUNS[_char.gender]["?him"] + " knees \ immediately and takes your member into " + setup.PRONOUNS[_char.gender]["?his"] + " mouth. As you\'re about \ to cum " + setup.PRONOUNS[_char.gender]["?he"] + " aims your cock into " + setup.PRONOUNS[_char.gender]["?his"] + " tea, drinking the entire thing in one \ gulp.<br>">> <<if _char.sex_fetishes.cum gte 50>> <<set $_temp_to_log += _char.dialogue("I love drinking your cum so much!")>> <<set $_temp_to_log += "\ (Willpower " + setup.show_change_html(0, 4) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 4) + ", Cum Fetish " + setup.show_change_html(0, 1) + ").">> <<set _char.mental_conditions.arousal += 4>> <<else>> <<set $_temp_to_log += _char.dialogue("Thank you for the extra treat.")>> <<set $_temp_to_log += "\ (Willpower " + setup.show_change_html(0, 4) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Arousal " + setup.show_change_html(0, 1) + ", Cum Fetish " + setup.show_change_html(0, 1) + ").">> <<set _char.mental_conditions.arousal += 1>> <</if>> <<set $player.slave_traits.willpower += 4>> <<set _char.sex_fetishes.cum += 1>> <<case "scared">> <<set $_temp_to_log += "<br>" + _char.dialogue("What the FUCK are you doing?!!") + "You look " + setup.titleCase(_char.first_name) + " in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes and can see that she\'s terrified,<br>" + _char.dialogue("Pl...please don\'t make me drink that.") + "You don\'t break eye contact and quickly finish into the tea, handing \ it to " + setup.PRONOUNS[_char.gender]["?him"] + ". She takes the cup, shaking and slowly sips the tea until it\'s \ empty ">> <<if !_higher_status>> <<set $_temp_to_log += "(Obedience " + setup.show_change_html(0, -3) + ", ">> <<set $player.slave_traits.obedience -= 3>> <<else>> <<set $_temp_to_log += "(">> <</if>> <<set $_temp_to_log += "Willpower " + setup.show_change_html(0, 5) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -10) + ", Anger " + setup.show_change_html(0, 10, false) + ", Fear " + setup.show_change_html(0, 5, false) + ", Willpower " + setup.show_change_html(0, -3, false) + ").">> <<set $player.slave_traits.willpower += 5>> <<set _char.slave_traits.obedience -= 10>> <<set _char.slave_traits.trust -= 5>> <<set _char.mental_conditions.anger += 10>> <<default>> <<if _higher_status>> <<set $_temp_to_log += "<br>" + _char.dialogue("What the FUCK are you doing?!!") + "You look " + setup.titleCase(_char.first_name) + " in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes to remind " + setup.PRONOUNS[_char.gender]["?him"] + " of your higher status \ and can see that she\'s terrified,<br>" + _char.dialogue("Pl...please don\'t make me drink that.") + "You don\'t break eye contact and quickly finish into the tea, handing \ it to " + setup.PRONOUNS[_char.gender]["?him"] + ". She takes the cup, shaking and slowly sips the tea until it\'s \ empty \ (Willpower " + setup.show_change_html(0, 5) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -10) + ", Anger " + setup.show_change_html(0, 10, false) + ", Fear " + setup.show_change_html(0, 5, false) + ", Willpower " + setup.show_change_html(0, -3, false) + ").">> <<set $player.slave_traits.willpower += 5>> <<set _char.slave_traits.obedience -= 10>> <<set _char.slave_traits.trust -= 5>> <<set _char.mental_conditions.anger += 10>> <<else>> <<set $_temp_to_log += "<br>" + _char.dialogue("What the FUCK are you doing?!!") + "You quickly escape from the kitchen as fast as you could \ (Obedience " + setup.show_change_html(0, -3) + ", Willpower " + setup.show_change_html(0, 5) + ") \ (" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, -10) + ", Anger " + setup.show_change_html(0, 10, false) + ", Trust " + setup.show_change_html(0, -5) + ").">> <<set $player.slave_traits.obedience -= 3>> <<set $player.slave_traits.willpower += 5>> <<set _char.slave_traits.obedience -= 10>> /* Do not induce fear */ <<if _char.slave_traits.trust gt 0>> <<set _char.slave_traits.trust = Math.clamp(_char.slave_traits.trust - 5, 0, 100)>> <</if>> <<set _char.mental_conditions.anger += 10>> <</if>> <</switch>> <<set $_temp_to_log += "<br>">> <<include shintaniHomeWorkEngineAfter>> <</if>> <</switch>> <<unset _action>> <<unset _roll>> <<unset _success>> <</if>> <</repeat>><</silently>> <</nobr>>
<<nobr>> /* For ease */ <<set _himari = $characters.himari_hironaka>> <<set _to_round = _himari.key>> <<set _shintani = $characters.shintani_hiroyuki>> <<set _to_log = [ "As you were assisting Himari with her duties, she realizes she forgot something,", _himari.dialogue( "Oh I just remembered I needed to tell Shintani about the arrival of the Hoxel \ caravan. I\'m a bit busy right now, can you tell him for me?" ), "You enter Shintani\'s office and he looks up at you wondering what you need\ <ol>\ <li>Tell him about the arrival of the Hoxel caravan like Himari told you to.</li>\ <li>Lie and say Himari told you to tell him about the arrival of the Fox Tail caravan.</li>\ </ol>" ]>> <<script>> setup.mainLog_append_delayed(State.temporary.to_log, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 2>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> /* Psuedoevent listener for action */ <<silently>><<repeat 10ms>> <<if _action !== undefined>> <<switch _action>> <<case 1>> <<set $_temp_to_log = "\ You approach Shintani and relay what Himari told you,<br>" + _shintani.dialogue("Thanks for letting me know.") + "(Obedience " + setup.show_change_html(0, 1) + ", Trust " + setup.show_change_html(0, 0.5) + ")." >> <<set $player.slave_traits.obedience += 1>> <<set $player.slave_traits.trust += 0.5>> <<case 2>> <<set _roll = $player.get_status_prop("manipulation") + dice(1, 6 + $difficulty) - $difficulty>> <<if _roll gte 25>> <<set _success = true>> <<set $_temp_to_log = setup.pass("manipulation")>> <<else>> <<set _success = false>> <<set $_temp_to_log = setup.fail("manipulation")>> <</if>> <<set $_temp_to_log += "You approach Shintani and relay false information from \ Himari,<br>" + $player.dialogue("Himari wanted me to inform you about the arrival of the Fox \ Tail caravan.")>> <<if _success>> <<set $_temp_to_log += _shintani.dialogue("The Fox Tail caravan? They arrived \ last week... I\'ll have to have a talk with Himari.") + "(">> <<else>> <<set $_temp_to_log += _shintani.dialogue("The Fox Tail caravan? They arrived \ last week... I think you better work on your listening skills.") + "(Trust " + setup.show_change_html(0, -0.5) + ", ">> <<set $player.slave_traits.trust -= 0.5>> <</if>> <<set $_temp_to_log += "Willpower " + setup.show_change_html(0, 2) + ") ">> <<set $player.slave_traits.willpower += 2>> <<if _success>> <<set $_temp_to_log += "(Himari Affection " + setup.show_change_html(0, -1) + ", Trust " + setup.show_change_html(0, -1) + ", Willpower " + setup.show_change_html(0, -1, false) + ")">> <<set _himari.slave_traits.obedience -= 1>> <<if _himari.slave_traits.trust gt 0>> <<set _himari.slave_traits.trust = Math.clamp(_himari.slave_traits.trust - 1, 0, 100)>> <</if>> <<set _himari.slave_traits.willpower -= 1>> <</if>> <</switch>> <<set $_temp_to_log += "<br>">> <<include shintaniHomeWorkEngineAfter>> <</if>> <</repeat>><</silently>> <</nobr>>
<<set _events = [ ]>>
/* Initial setup, declare characters in the scene. We'll pick a random slave for now. */ <<set _char = $characters[either($characters.shintani_hiroyuki.slaves)]>> /* Bool to tell if the player is a higher status than the character */ <<set _higher_status = ($player.get_status("nipon") == "slave" && _char.status == "low_slave") || ($player.get_status("nipon") == "high_slave" && _char.status == "slave") || ($player.get_status("nipon") == "high_slave" && _char.status == "low_slave")>> /* For eventual rounding and simulation */ <<set _to_round = _char.key>> <<set $to_simulate.add(_char.key)>> /* Initial writing setup */ <<set _to_log = [ "This is initialization text that will appear", "Having this as an array will delay the appending to the main log", _char.dialogue("I can talk like this."), ]>> /* Options for the player to partake in */ <<set _options = "\ <ol>\ <li id=\"li1\">Action 1.</li>\ <li id=\"li2\">Action 2.</li>\ <li id=\"li3\">Action 3.</li>\ <li id=\"li4\">Leave.</li>\ </ol>\ ">> /* Append the options onto the log */ <<set _to_log[2] += _options>> /* Make the options into a jquery for ease of access */ <<set _options = $(_options)>> /* Disable the back and leave button (can't escape events) */ <<set _disable_buttons = true>> /* Disable the buttons that don't correspond to an action */ <<disableactions _options>> /* Append the _to_log onto the log for the player to see */ <<run setup.mainLog_append_delayed(_to_log, $buttons, $buttons_extra)>> /* Listener for the player to click */ <<silently>><<repeat 10ms>> <<if _action !== undefined>> <<switch _action>> <<case 1>> <<set _responses = [ "Here are some responses", _char.dialogue("Hello world."), _options.clone() ]>> <<run _button_fn()>> <<case 2>> /* First apply the changes */ <<set _delta = { "stats": { "dexterity": 0.9 }, "slave_traits": { "obedience": -1, "trust": 2 } }>> <<set _true_delta = setup.apply_delta($player, _delta)>> <<set _responses = [ "This is how you print changes " + $player.print_delta(_true_delta) + ".", "You should also see these changes on the bars.", _options.clone() ]>> <<include round>> <<run _button_fn()>> <<case 3>> /* Cross out the option */ <<set _options.find("#li3").css("text-decoration", "line-through")>> /* Disable leave and back button (have to do this everytime you call disableactions) */ <<set _disable_buttons = true>> /* Disable the actions */ <<disableactions _options>> /* Include cloned action in responses */ <<set _responses = [ "This is how you let an action only be called once.", _options.clone() ]>> <<run _button_fn()>> <<case 4>> <<set $_temp_to_log = "This is ending text. You can put summary of what happened here.">> <<include shintaniHomeWorkEngineAfter>> <</switch>> <</if>> <</repeat>><</silently>> /* Temporary function for what happens when you click a button */ <<script>> State.temporary.button_fn = () => { let _t = State.temporary; let _v = State.variables; delete _t.action; if (_t.responses != null) { setup.mainLog_append_delayed(_t.responses, _v.buttons, _v.buttons_extra); delete _t.responses; } } <</script>>
<<nobr>> <div id="interact_actions" class="action container row col hidden" style="--rows: 4; --cols: 5"> /* Fill up 5th column to prevent overflow */ <div style="grid-row: 1; grid-column: 5"> <<button "Inspect">> <<set $last_visited = passage()>> <<set $in_menu = true>> <<saveVars>> <<goto characterMenu>> <</button>> </div> <div style="grid-row: 2; grid-column: 5"></div> <div style="grid-row: 3; grid-column: 5"> <<button "Back">> <<script>> $("#interact_actions").addClass("hidden"); $("#interact_options").removeClass("hidden"); $("#mainLogImage").css("background-image", "url(\"resources/images/places/shintaniHomeDayImage.png\")"); $("#mainLogCharacterImage").css("background-image", "none"); $("#mainLog").html(""); $("#mainLog").wiki("<b><<= setup.titleCase(setup.locations.get(passage()).name)>>:</b><br>"); $("#mainLog").wiki(State.variables._to_log); <</script>> <</button>> </div> <div style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> <<button "Ask">> <<set _ask_passage = "shintaniHomeEventsInteract" + setup.titleCase($characters[$selected].first_name) + "Ask">> <<if tale.has(_ask_passage)>> <<include _ask_passage>> <<else>> <<include "defaultAsk">> <</if>> <<script>> $("#interact_actions").addClass("hidden"); $("#events_actions").removeClass("hidden"); <</script>> <<set _back_action = "#interact_actions">> <</button>> <<button "Influence">> <<if $selected == "shintani_hiroyuki">> <<set _request_passage = "shintaniHomeEventsInteract" + setup.titleCase($characters[$selected].first_name) + "Influence">> <<if tale.has(_request_passage)>> <<include _request_passage>> <<else>> <<notify>>Under construction!<</notify>> <</if>> <<else>> <<include influenceEngine>> <<addclass "#interact_actions" "hidden">> <<removeclass "#events_actions" "hidden">> <<set _back_action = "#interact_actions">> <</if>> <</button>> <<disable>> <<button "Manipulate">> <<set _manipulate_passage = "shintaniHomeEventsInteract" + setup.titleCase($characters[$selected].first_name) + "Manipulate">> <<if tale.has(_manipulate_passage)>> <<include _manipulate_passage>> <<else>> <<popover>>Under construction!<</popover>> <</if>> <</button>> <</disable>> <<button "Sex">> <<if $selected == "shintani_hiroyuki">> <<set _request_passage = "shintaniHomeEventsInteract" + setup.titleCase($characters[$selected].first_name) + "Influence">> <<if tale.has(_request_passage)>> <<include _request_passage>> <<else>> <<notify>>Under construction!<</notify>> <</if>> <<else>> <<if $characters[$selected].limits.fuck gt 0>> <<include sexEngine>> <<addclass "#info" "hidden">> <<addclass "#interact_actions" "hidden">> <<set _back_action = "#interact_actions">> <<else>> <<notify>> Already had sex with <<= setup.titleCase(_char.first_name)>> today! <</notify>> <</if>> <</if>> <</button>> </div> <</nobr>>
<<nobr>> /* For engines */ <div id="interact_asleep_actions" class="action container row col hidden" style="--rows: 4; --cols: 5"> /* Fill up 5th column to prevent overflow */ <div style="grid-row: 1; grid-column: 5"> <<button "Inspect">> <<set $last_visited = passage()>> <<set $in_menu = true>> <<saveVars>> <<goto characterMenu>> <</button>> </div> <div style="grid-row: 2; grid-column: 5"></div> <div style="grid-row: 3; grid-column: 5"> <<set _location_button_text = "Back">> <<set _location_button_dest = "shintaniHome">> <<set _location_button_dur = 2>> <<include locationButton>> </div> <div style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> <<button "Search">> <<set _modifier = (_char.is_slave ? 20 : 0)>> <<if $player.get_status_prop("willpower") gt 50 + _modifier>> <<if _char.limits.search gt 0>> <<include searchEngine>> <<else>> <<notify>> Already searched <<= setup.titleCase(_char.first_name)>> today! <</notify>> <</if>> <<else>> <<set _to_notify = "Your willpower is too low!">> <<notify>>_to_notify<</notify>> <</if>> <<unset _modifier>> <</button>> <<button "Molest">> <<set _modifier = (_char.is_slave ? 0 : 10)>> <<if $player.get_status_prop("willpower") gt 60 + _modifier>> <<if _char.limits.molest gt 0>> <<include molestEngine>> <<addclass "#interact_asleep_actions" "hidden">> <<addclass "#info" "hidden">> <<else>> <<notify>> Already molested <<= setup.titleCase(_char.first_name)>> today! <</notify>> <</if>> <<else>> <<set _to_notify = "Your willpower is too low!">> <<notify>>_to_notify<</notify>> <</if>> <<unset _modifier>> <</button>> </div> <</nobr>>
<<nobr>> <div id="interact_options" class="action container row col hidden" style="--rows: 4; --cols: 5"> <div style="grid-row: 3; grid-column: 5"> <<button "Back">> <<script>> $("#interact_options").addClass("hidden"); $("#actions").removeClass("hidden"); <</script>> <</button>> </div> <div style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> /* Fill up 5th column to prevent overflow */ <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div style="grid-row: 1; grid-column: 1"> <<button "Shintani">> <<set $selected = "shintani_hiroyuki">> <<set _char = $characters[$selected]>> <<script>> $("#interact_options").addClass("hidden"); var div = $("<div></div>"); var char = State.variables.characters.shintani_hiroyuki; var gameDate = State.variables.gameDate; if (gameDate.getHours() <= 5 || gameDate.getHours() >= 22) { var str = " You make your way over to Shintani\'s quarters to find him \ peacefully asleep.<br>\ "; if (char.mental_conditions.suspicion > 0) { str += "<span class=\"fail\">(" + setup.titleCase(char.first_name) + " will be harder to steal from or molest since they are suspicious)</span>" } div.html(str); $("#interact_asleep_actions").removeClass("hidden"); $("#mainLogImage").css("background-image", "url(\"resources/images/places/shintaniHomeShintaniNightImage.png\")" ); } else { div.html(" You approach Shintani in his office.<br>" ); $("#interact_actions").removeClass("hidden"); $("#mainLogImage").css("background-image", "url(\"resources/images/places/shintaniHomeOfficeImage.png\")" ); $("#mainLogCharacterImage").css("background-image", "url(\"" + char.image_folder() + char.first_name.toLowerCase() + "_neutral.png\")" ); } setup.mainLog_append(div); <</script>> <<addmins `dice(1, 5) + 5`>> <<audio "wooden_door_sound" play>> <</button>> </div> <<set _iter = $characters.shintani_hiroyuki.slaves>> <<for _i = 0; _i lt _iter.length; _i++>> <div> <<capture _i>> <<button `setup.titleCase($characters[_iter[_i]].first_name)`>> <<set $selected = _iter[_i]>> <<set _char = $characters[$selected]>> <<if _char.assignment != "none" && "times" in setup.assignments[_char.assignment] && setup.in_range($gameDate.getHours(), setup.assignments[_char.assignment].times)>> <<notify>><<= setup.titleCase(_char.first_name)>> is currently out on assignment.<</notify>> <<else>> <<script>> var char = State.variables.characters[State.variables.selected]; $("#interact_options").addClass("hidden"); var div = $("<div></div>"); var gameDate = State.variables.gameDate; if (gameDate.getHours() <= 5 || gameDate.getHours() >= 22) { var str = " You make your way over to " + char.name() + "\'s room to find " + setup.PRONOUNS[char.gender]["?him"] + " peacefully asleep.<br>\ "; if (char.mental_conditions.suspicion > 0) { str += "<span class=\"fail\">(" + setup.titleCase(char.first_name) + " will be harder to steal from or molest since they are suspicious)</span>" } div.html(str); $("#interact_asleep_actions").removeClass("hidden"); $("#mainLogImage").css("background-image", "url(\"resources/images/places/shintaniHome" + setup.titleCase(char.first_name) + "NightImage.png\")" ); State.temporary.play_sound = true; } else { if (char.assignment == "confinement") { div.html(" You enter " + char.name() + "\'s confinement cell and approach " + setup.PRONOUNS[char.gender]["?him"] + " huddling in the corner.<br>" + char.toString() ); } else { div.html(" You spot " + char.name() + " working and approach " + setup.PRONOUNS[char.gender]["?him"] + ".<br>" + char.toString() ); } $("#interact_actions").removeClass("hidden"); $("#mainLogImage").css("background-image", "url(\"resources/images/places/shintaniHome" + setup.titleCase(char.first_name) + "DayImage.png\")" ); $("#mainLogCharacterImage").css("background-image", "url(\"" + char.image_folder() + char.first_name.toLowerCase() + "_" + char.get_disposition() + ".png\")" ); State.temporary.play_sound = false; } setup.mainLog_append(div); <</script>> /* Forward time by 5 - 10 minutes */ <<addmins `dice(1, 5) + 5`>> <<if _play_sound>> <<audio "wooden_door_sound" play>> <</if>> <<unset _play_sound>> <</if>> <</button>> <</capture>> </div> <</for>> /* Player slaves */ <<if $player.is_slave>> <<set _iter2 = $player.slaves>> <<for _i = 0; _i lt _iter2.length; _i++>> <div> <<capture _i>> <<button `setup.titleCase($characters[_iter2[_i]].first_name)`>> <<set $selected = _iter2[_i]>> <<set _char = $characters[$selected]>> <<if _char.assignment != "none" && "times" in setup.assignments[_char.assignment] && setup.in_range($gameDate.getHours(), setup.assignments[_char.assignment].times)>> <<notify>><<= setup.titleCase(_char.first_name)>> is currently out on assignment.<</notify>> <<else>> <<script>> var char = State.variables.characters[State.variables.selected]; $("#interact_options").addClass("hidden"); var div = $("<div></div>"); var gameDate = State.variables.gameDate; if (gameDate.getHours() <= 5 || gameDate.getHours() >= 22) { var str = " You make your way over to " + char.name() + "\'s room to find " + setup.PRONOUNS[char.gender]["?him"] + " peacefully asleep.<br>\ "; if (char.mental_conditions.suspicion > 0) { str += "<span class=\"fail\">(" + setup.titleCase(char.first_name) + " will be harder to steal from or molest since they are suspicious)</span>" } div.html(str); $("#interact_asleep_actions").removeClass("hidden"); $("#mainLogImage").css("background-image", "url(\"resources/images/places/shintaniHome" + setup.titleCase(char.first_name) + "NightImage.png\")" ); State.temporary.play_sound = true; } else { if (char.assignment == "confinement") { div.html(" You enter " + char.name() + "\'s confinement cell and approach " + setup.PRONOUNS[char.gender]["?him"] + " huddling in the corner.<br>" + char.toString() ); } else { div.html(" You spot " + char.name() + " working and approach " + setup.PRONOUNS[char.gender]["?him"] + ".<br>" + char.toString() ); } $("#interact_actions").removeClass("hidden"); State.temporary.play_sound = false; } setup.mainLog_append(div); <</script>> /* Forward time by 5 - 10 minutes */ <<addmins `dice(1, 5) + 5`>> <<if _play_sound>> <<audio "wooden_door_sound" play>> <</if>> <<unset _play_sound>> <</if>> <</button>> <</capture>> </div> <</for>> <</if>> </div> <</nobr>>
<<nobr>> <div id="actions" class="action container row col" style="--rows: 4; --cols: 5"> <<button "Books">> <<removeclass "#mainLogActionBar" "hidden">> <<addclass "#mainLogImage" "hidden">> <<addclass "#mainLogCharacterImage" "hidden">> <<removeclass "#books_actions" "hidden">> <<addclass "#actions" "hidden">> <<run $("#info_title").html("Read in the Hiroyuki Library")>> <<set _default_info = $("<div>\ <div id=\"normal_study\">\ The environment of the Hiroyuki library provides a good place to study some books. \ <ul>\ <li id=\"li1\">You can read (education + intelligence / 3) words per minute in the lost tongues.</li>\ </ul></div>\ </div>")>> <<run $("#infoLogBody").html("")>> <<run $("#infoLogBody").append(_default_info.clone())>> <<removeclass "#infoLog" "hidden">> <<addclass "#mainLog" "hidden">> <<script>> $("#mainLogActionBar button").removeClass("disabled"); $("#mainLogActionBar button").prop("disabled", false); $(".read button").addClass("disabled"); $(".read button").prop("disabled", true); $("#readStart button").addClass("disabled"); $("#readStart button").prop("disabled", true); <</script>> <</button>> <<button "Study">> <<run $("#info_title").html("Study in the Hiroyuki Library")>> <<set _default_info = $("<div>\ <div id=\"normal_study\">\ The shelves in the Hiroyuki library are stuffed to the brim with knowledge \ just waiting to be learned.\ <ul id=\"change_list\">\ <li id=\"li1\">3% per hour chance to gain intelligence (capped at 40).</li>\ <li id=\"li2\" class=\"hidden\"></li>\ <li id=\"li3\" class=\"hidden\"></li>\ </ul></div>\ <div id=\"subject_study\">\ You could also expend some extra effort to focus on a specific topic if you\'d like.\ <ul>\ <li id=\"li4\">(intelligence/20)% per hour chance to increase subject stat.</li>\ <li id=\"li5\">-3 additional stamina per hour.</li>\ </ul></div>\ </div>")>> <<run $("#infoLogBody").html("")>> <<run $("#infoLogBody").append(_default_info.clone())>> <<removeclass "#study_actions" "hidden">> <<addclass "#actions" "hidden">> <<removeclass "#infoLog" "hidden">> <<addclass "#mainLog" "hidden">> /* Reset study buttons */ <<script>> $(".study button").removeClass("disabled"); $(".study button").prop("disabled", false); $(".study_option button").addClass("disabled"); $(".study_option button").prop("disabled", true); $("#studyStart button").addClass("disabled"); $("#studyStart button").prop("disabled", true); <</script>> <</button>> <<button "Search" `passage()`>> <<if $quests.power_struggles.stage == 2>> <<set $_temp_to_log = "You searched the library for an hour and found a tattered old book with \ the symbol that Lia showed you. ">> <<if $player.titles.has("lost_knowledge")>> <<set $_temp_to_log += "As you openned the book you were immediately greated with what you \ recognized as a \"long tongue\", specifically an eastern variety. It seems the book \ describes the different births and deaths spanning since the beginning of time at year 0. ">> <<else>> <<set $_temp_to_log += "As you openned the book you were immediately greated with cryptic \ symbols that did not resemble any writing system you\'ve ever seen. ">> <</if>> <<set $_temp_to_log += "On the inside of the cover you see another symbol that looks extremely familiar.">> <<set $_temp_to_log += "<br><span class=\"success\">(Acquired Hiroyuki Family Registry)</span>">> <<set $quests.power_struggles.stage = 3>> <<run UInv.AddItem("inventory", "hiroyuki_book", 1)>> <<elseif $quests.knowledge_is_power.stage == 2 || $quests.knowledge_is_power.stage == 3>> <<if $player.titles.has("lost_knowledge")>> <<set $_temp_to_log = "After searching the library for an hour, you were about to give \ up until you find a book with a pitch black cover. Etched into the leather binding are \ runes and symbols that you recognize from the lost tongues. You didn\'t think this \ knowledge would ever come to use, but perhaps it might just be your saving grace.">> <<set $_temp_to_log += "<br><span class=\"success\">(Acquired <em>Heart of Darkness</em>)</span>">> <<run UInv.AddItem("inventory", "heart_of_darkness")>> <<set $quests.knowledge_is_power.stage = 5>> <<else>> <<set $_temp_to_log = "You searched the library for an hour but only found either unimportant \ documents or scrolls with cryptic symbols on them. Perhaps you might be able to find \ someone who could decipher them.">> <<set $quests.knowledge_is_power.stage = 3>> /* TODO: Remove */ <<notify>> There is currently no way to do this quest without Lost Knowledge. Please wait for future updates! <</notify>> <</if>> <<else>> <<set $_temp_to_log = "You searched the library for an hour but do not find anything of note.">> <</if>> <<addhours 1>> <</button>> <div style="grid-row: 3; grid-column: 5"> <<set _location_button_text = "Back">> <<set _location_button_dest = "shintaniHome">> <<set _location_button_dur = 2>> <<include locationButton>> </div> <div style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <div id="books_actions" class="action container row col fiveQuarters smalltext longbutton hidden" style="--rows: 4; --cols: 4"> /* How long we want to read for */ <div style="grid-row: 1; grid-column: 1"> @@#read1Hr;.read;<<button "1 Hour">> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 2"> @@#read4Hr;.read;<<button "4 Hours">> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 4"> <<disable>> @@#booksStart;<<button "Start">> <<include shintaniHomeLibraryBooksEngine>> <</button>>@@ <</disable>> </div> <div style="grid-row: 3; grid-column: 4"> <<button "Back">> <<addclass "#mainLogActionBar" "hidden">> <<removeclass "#mainLogImage" "hidden">> <<removeclass "#mainLogCharacterImage" "hidden">> <<addclass "#books_actions" "hidden">> <<removeclass "#actions" "hidden">> <<addclass "#infoLog" "hidden">> <<removeclass "#mainLog" "hidden">> <</button>> </div> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <<timed 50ms>><<script>> let player = State.variables.player; let books = UInv.GetItemsArrayByItemTag("inventory", "type", "book"); $("#mainLogActionBar").wiki("<hr>"); let avail = false; for (let i = 0; i < books.length; i++) { if (player.books[books[i]] < 1) { $("#mainLogActionBar").wiki( "<<button \'" + setup.titleCase(UInv.GetItemPropertyValue("inventory", books[i], "name")) + "\'>>\ <<set _selected_book = \'" + books[i] + "\'>>\ <</button>>" ); avail = true; } } if (!avail) { $("#mainLogActionBar").wiki("<center>No unread books.</center>"); } $("#mainLogActionBar").wiki("<hr><center id=\'completed_title\'><b class=\'tool\'>Completed</b></center>"); $("#mainLogActionBar").wiki("<div id=\'completed_books\' style=\'padding-top: 10px\'></div>"); for (let i = 0; i < books.length; i++) { if (player.books[books[i]] == 1) { $("#mainLogActionBar #completed_books").wiki( "<<button \'" + setup.titleCase(UInv.GetItemPropertyValue("inventory", books[i], "name")) + "\'>>\ <<set _selected_book = \'" + books[i] + "\'>>\ <</button>>" ); } } $("#mainLogActionBar #completed_title").on("click", (event) => { $("#mainLogActionBar #completed_books").fadeToggle(0.1); }); $("#mainLogActionBar button").on("click", (event) => { let _t = State.temporary; let _v = State.variables; let player = _v.player; $("#mainLogActionBar button").removeClass("disabled"); $("#mainLogActionBar button").prop("disabled", false); $("#booksStart button").addClass("disabled"); $("#booksStart button").prop("disabled", true); let self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); $("#info_title").html(setup.books[_t.selected_book].name); if (player.books[_t.selected_book] != 1) { _t.book_info = $("<div>\ <div>You examine <em>" + setup.books[_t.selected_book].title + "</em> by " + setup.books[_t.selected_book].author + " to see that it is around " + setup.books[_t.selected_book].word_count + " words. You\'ve currently read " + setup.round2(100 * player.books[_t.selected_book]) + "% of this book.\ <ul>\ <li id=\"li1\">You can read " + parseInt(player.skills.education + player.stats.intelligence / 3) + " words per minute.</li>\ <li id=\"li2\">There are " + parseInt((1 - player.books[_t.selected_book]) * setup.books[_t.selected_book].word_count) + " words left in the book.</li>\ </ul></div>\ </div>"); $(".read button").removeClass("disabled"); $(".read button").prop("disabled", false); } else { _t.book_info = $("<div>You recall the experience you had when you finished <em>" + setup.books[_t.selected_book].title + "</em>." + "<br>...<br>" + setup.books[_t.selected_book].completion_text + "</div>"); $(".read button").addClass("disabled"); $(".read button").prop("disabled", true); } $("#infoLogBody").html(""); $("#infoLogBody").append(_t.book_info.clone()); }); $(".read button").on("click", (event) => { let _t = State.temporary; let _v = State.variables; let player = _v.player; $(".read button").removeClass("disabled"); $(".read button").prop("disabled", false); $("#booksStart button").addClass("disabled"); $("#booksStart button").prop("disabled", true); let self = $(event.currentTarget); let read_time = parseInt(setup.numerize(self.html())); State.temporary.to_advance_hr = read_time; if (Math.abs(setup.project_stamina_change(60 * read_time)) < player.conditions.stamina) { self.addClass("disabled"); self.prop("disabled", true); $("#booksStart button").removeClass("disabled"); $("#booksStart button").prop("disabled", false); _t.words_read = parseInt(player.skills.education + player.stats.intelligence / 3) * 60 * read_time; $("#infoLogBody").find("#li1").html("You will read " + _t.words_read + " words."); } else { let str = "<<notify>>You are too tired to read " + read_time + " "; if (read_time == 1) { str += "hour."; } else { str += "hours."; } str += "<</notify>>"; $.wiki(str); $("#booksStart button").addClass("disabled"); $("#booksStart button").prop("disabled", true); $("#infoLogBody").html(""); $("#infoLogBody").append(_t.book_info.clone()); } }); <</script>><</timed>> <</nobr>>
<<nobr>> /* Information about work */ <<set $_temp_to_log = "\ <div>You spent time intensely reading in the Hiroyuki library.</div>\ ">> /* Get clone of player to display changes */ <<set _player = clone($player)>> /* Forward time along with dynamics */ <<set $player.is_working = true>> <<addhours _to_advance_hr>> <<set $player.is_working = false>> /* Simulate education roll */ <<set _thresh = setup.progressive_gain_chance($player.skills.education, 100, "linear")>> <<if $difficulty == -2>> <<set _thresh *= 2>> <<elseif $difficulty == -1>> <<set _thresh *= 1.5>> <</if>> <<set _roll = randomFloat(1.0)>> <<if _roll lt _thresh>> <<set $player.skills.education += Math.ceil(2 * _thresh)>> <<set $_temp_to_log += "<div>Your literacy and reading ability has improved (Education " + setup.show_change_html(0, Math.ceil(2 * _thresh)) + ")</div>">> <</if>> <<set $player.books[_selected_book] = ($player.books[_selected_book] + _words_read / setup.books[_selected_book].word_count).clamp(0, 1)>> <<if $player.books[_selected_book] == 1>> /* Completed book */ <<set $_temp_to_log += "<div>After many long hours of reading, you have finally finished reading <em>" + setup.books[_selected_book].title + "</em>. " + setup.books[_selected_book].completion_text + "</div>">> /* Calculate skill changes and apply them to the player */ <<set setup.apply_delta($player, setup.books[_selected_book].changes)>> <<if _selected_book == "heart_of_darkness">> <<run setup.remove_val($quest_journal.ongoing, "knowledge_is_power")>> <<set $quest_journal.completed.push("knowledge_is_power")>> <<set $quest_journal.ongoing.push("something_lost")>> <<notify>>Quest <em>Something Lost</em> added to journal!<</notify>> <<audio "quest_added_sound" play>> <<else>> <<set $quests.something_lost.stage += 1>> <<if $quests.something_lost.stage == 6>> /* TODO: Complete quest */ <<run setup.remove_val($quest_journal.ongoing, "something_lost")>> <<set $quest_journal.completed.push("something_lost")>> <</if>> <</if>> <</if>> /* Round off and clamp */ <<include round>> <<set $_temp_to_log += "<br><b>Reading total stat changes:</b>">> <<set $_temp_to_log += "<ul>">> /* Add in stats changes */ <<for _key, _val range _player.stats>> <<if _val != $player.stats[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.stats[_key], true) + "</li>")>> <</if>> <</for>> /* Add in skills changes */ <<for _key, _val range _player.skills>> <<if _val != $player.skills[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.skills[_key], true) + "</li>")>> <</if>> <</for>> /* Add in condition changes */ <<for _key, _val range _player.conditions>> <<if _val != $player.conditions[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.conditions[_key], true) + "</li>")>> <</if>> <</for>> /* Add in slave trait changes */ <<for _key, _val range _player.slave_traits>> <<if _val != $player.slave_traits[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.slave_traits[_key], true) + "</li>")>> <</if>> <</for>> /* Close off changes */ <<set $_temp_to_log += "</ul>">> /* Unset variables */ <<unset _changes>> <<unset _to_advance_hr>> <<unset $_player>> /* Re-enable menu */ <<set $enable_menu = true>> <<goto `passage()`>> <</nobr>>
<<nobr>> /* Add tutorial for shintaniHome as well as trigger on first enterance */ <<if !("entered" in $locations[passage()].data) && !$locations[passage()].data.entered>> <<set $locations[passage()].data.entered = true>> /* First interaction */ <<set $_to_log = "\ <div>You enter a library that seems to have been untouched for many years. While \ you realize that looking through everything will take a long time, you are sure that \ this room hides some answers to your curiosities and eventual escape from slavery.</div><br>\ ">> <<else>> <<set $_to_log = "">> <</if>> <<set $_to_log += " <div>The library spans multiple floors and seems to be frozen in time, as if it were \ quickly abandoned due to some emergency.</div><br>\ ">> /* Load in any saved variables */ <<loadVars>> <div id="background" class="paper_border notext"> <div class="main container fourCol threeRow" style="height: 100%; width: 100%;"> <div class="subbackground mainLogContainer"> <<include mainLog>> <<include infoLog>> </div> <<include info>> <div id="action_bar" class="subbackground" style="grid-row: 3 / span 1; grid-column: 1 / span 3"> <<include shintaniHomeLibraryActions>> <<include shintaniHomeLibraryStudyActions>> <<include shintaniHomeLibraryBooksActions>> </div> </div> </div> <<updatetime>> <</nobr>>
<<nobr>> <div id="study_actions" class="action container row col fiveQuarters smalltext longbutton hidden" style="--rows: 4; --cols: 4"> /* How long we want to work for */ <div style="grid-row: 1; grid-column: 1"> @@#study1Hr;.study;<<button "1 Hour">> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 2"> @@#study4Hr;.study;<<button "4 Hours">> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 3"> @@#study8Hr;.study;<<button "8 Hours">> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 4"> <<disable>> @@#studyStart;<<button "Start">> <<include shintaniHomeLibraryStudyEngine>> <</button>>@@ <</disable>> </div> <<disable>> @@#manipulation;.study_option;<<button "Manipulation">><</button>>@@ <</disable>> <<disable>> @@#tact;.study_option;<<button "Tact">><</button>>@@ <</disable>> <div style="grid-row: 3; grid-column: 4"> <<button "Back">> <<removeclass "#actions" "hidden">> <<addclass "#study_actions" "hidden">> <<removeclass "#mainLog" "hidden">> <<addclass "#infoLog" "hidden">> <</button>> </div> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <<timed 50ms>><<silently>><<script>> $(".study button").on("click", (event) => { let _v = State.variables; let player = _v.player; $(".study button").removeClass("disabled"); $(".study button").prop("disabled", false); let self = $(event.currentTarget); let study_time = parseInt(self.html().replace(/\D/g,'')); State.temporary.to_advance_hr = study_time; if (Math.abs(setup.project_stamina_change(60 * study_time)) < player.conditions.stamina) { self.addClass("disabled"); self.prop("disabled", true); $(".study_option button").removeClass("disabled"); $(".study_option button").prop("disabled", false); State.temporary.study_subject = "none"; $("#subject_study").addClass("hidden"); let intell_perc = 3; if (_v.difficulty == -2) { intell_perc *= 2; } else if (_v.difficulty == -1) { intell_perc *= 1.5; } if (player.stats.intelligence > 40) { intell_perc = 0; } $("#li1").html(intell_perc * study_time + "% chance to gain intelligence."); $("#li2").addClass("hidden"); $("#li3").addClass("hidden"); $("#studyStart button").removeClass("disabled"); $("#studyStart button").prop("disabled", false); } else { let str = "<<popover>>You are too tired to study " + study_time + " "; if (study_time == 1) { str += "hour."; } else { str += "hours."; } str += "<</popover>>"; $.wiki(str); $(".study_option button").addClass("disabled"); $(".study_option button").prop("disabled", true); $("#studyStart button").addClass("disabled"); $("#studyStart button").prop("disabled", true); $("#infoLogBody").html(""); $("#infoLogBody").append(State.temporary.default_info.clone()); } }); $(".study_option button").on("click", (event) => { let _v = State.variables; let player = _v.player; let study_time = State.temporary.to_advance_hr; if (3 * study_time + Math.abs(setup.project_stamina_change(60 * study_time)) < player.conditions.stamina) { $(".study_option button").removeClass("disabled"); $(".study_option button").prop("disabled", false); let self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); let study_subject = self.html().toLowerCase(); State.temporary.study_subject = study_subject; let raise_perc = player.stats.intelligence / 20 * study_time; if (_v.difficulty == -2) { raise_perc *= 2; } else if (_v.difficulty == -1) { raise_perc *= 1.5; } $("#li2").html(raise_perc + "% chance to increase " + study_subject + "."); $("#li2").removeClass("hidden"); $("#li3").html(-3 * study_time + " additional stamina."); $("#li3").removeClass("hidden"); } else { $.wiki("<<popover>>You are too tired to study an additional subject.<</popover>>"); } }) <</script>><</silently>><</timed>> <</nobr>>
<<nobr>> /* Information about work */ <<set $_temp_to_log = "\ <div>You spent time intensely studying in the Hiroyuki library.</div>\ ">> /* Get clone of player to display changes */ <<set _player = clone($player)>> /* Forward time along with dynamics */ <<set $player.is_working = true>> <<addhours _to_advance_hr>> <<set $player.is_working = false>> /* Simulate education roll */ <<set _thresh = setup.progressive_gain_chance($player.skills.education, 100, "linear")>> <<if $difficulty == -2>> <<set _thresh *= 2>> <<elseif $difficulty == -1>> <<set _thresh *= 1.5>> <</if>> <<set _roll = randomFloat(1.0)>> <<if _roll lt _thresh>> <<set $player.skills.education += Math.ceil(2 * _thresh)>> <<set $_temp_to_log += "<div>Your literacy and reading ability has improved (Education " + setup.show_change_html(0, Math.ceil(2 * _thresh)) + ")</div>">> <</if>> /* Simulate intelligence roll */ <<set _roll = randomFloat(1.0)>> <<set _thresh = _to_advance_hr * 3 / 100>> <<if $difficulty == -2>> <<set _thresh *= 2>> <<elseif $difficulty == -1>> <<set _thresh *= 1.5>> <</if>> <<if $player.stats.intelligence gte 40>> <<set _thresh = 0>> <</if>> <<if _roll lt _thresh>> <<set $player.stats.intelligence += 1>> <<set $_temp_to_log += "<div>You studied the perfect combination of subjects, resulting in clear \ mental growth (Intelligence " + setup.show_change_html(0, 1) + ")</div>">> <</if>> /* Simulate subject learning */ <<if _study_subject != "none">> <<set _roll = randomFloat(1.0)>> <<set _thresh = (_to_advance_hr * $player.stats.intelligence / 20) / 100>> <<if $difficulty == -2>> <<set _thresh *= 2>> <<elseif $difficulty == -1>> <<set _thresh *= 1.5>> <</if>> <<if _roll lt _thresh>> <<set $_temp_to_log += "<div>Your study of " + _study_subject + " was extremely successful and informative \ (" + setup.titleCase(_study_subject) + " " + setup.show_change_html(0, 1) + ")</div>">> <<set $player.stats[_study_subject] += 1>> <</if>> <<set $player.conditions.stamina -= 3 * _to_advance_hr>> <</if>> /* Round off and clamp */ <<include round>> <<set $_temp_to_log += "<br><b>Study total stat changes:</b>">> <<set $_temp_to_log += "<ul>">> /* Add in stats changes */ <<for _key, _val range _player.stats>> <<if _val != $player.stats[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.stats[_key], true) + "</li>")>> <</if>> <</for>> /* Add in skills changes */ <<for _key, _val range _player.skills>> <<if _val != $player.skills[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.skills[_key], true) + "</li>")>> <</if>> <</for>> /* Add in condition changes */ <<for _key, _val range _player.conditions>> <<if _val != $player.conditions[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.conditions[_key], true) + "</li>")>> <</if>> <</for>> /* Add in slave trait changes */ <<for _key, _val range _player.slave_traits>> <<if _val != $player.slave_traits[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.slave_traits[_key], true) + "</li>")>> <</if>> <</for>> /* Close off changes */ <<set $_temp_to_log += "</ul>">> /* Unset variables */ <<unset _changes>> <<unset _to_advance_hr>> <<unset $_player>> /* Re-enable menu */ <<set $enable_menu = true>> <<goto `passage()`>> <</nobr>>
<<nobr>> /* Add tutorial for shintaniHome as well as trigger on first enterance */ <<if !("entered" in $locations[passage()].data) && !$locations[passage()].data.entered>> <<set $locations[passage()].data.entered = true>> /* Enable menu keybinds */ <<set $enable_menu = true>> <<popover "noclick">> <<include welcome>> <</popover>> /* First interaction */ <<set $_to_log = "\ <div>Shintani brings you to a quite well-embellished mansion, and shows you to \ your dusty room. \"I'll give you a bit of time to settle in. You can report \ to Himari for work,\" he gestures to a slim woman across the hall staring \ daggers at you. He notices your fixed gaze on the large ornate door that led \ inside. \"Don't think about leaving this place for now. We need to make sure \ you're to be trusted first.\" Finally, he puts a necklace around your neck that \ seems to tighten in place once released, \"This will let everyone know that you \ are a Hironaka, you won\'t be able to take it off without my permission.\"</div><br>\ ">> /* Give player Hironaka Symbol */ <<run UInv.AddItem("inventory", "hironaka_amulet", 1)>> <<set $player.equipment.neck = "hironaka_amulet">> <<else>> <<set $_to_log = "">> <</if>> <<set $_to_log += " <div>The Hiroyuki Household is quiet but holds an eerie sense of providence, as if \ something world-changing could occur at any moment.</div><br>\ ">> /* Load in any saved variables */ <<loadVars>> /* Player back inside */ <<set $player.is_home = true>> <<set $player.is_outside = false>> <div id="background" class="paper_border notext"> <div class="main container fourCol threeRow" style="height: 100%; width: 100%;"> <div class="subbackground mainLogContainer"> <<include mainLog>> </div> <<include info>> <<include molestInfo>> <<include sexInfo>> <div id="action_bar" class="subbackground" style="grid-row: 3 / span 1; grid-column: 1 / span 3"> /* Main actions */ <<include shintaniHomeActions>> /* Work actions */ <<include shintaniHomeWorkActions>> /* Event actions */ <<include shintaniHomeEventsActions>> /* Interact options */ <<include shintaniHomeInteractOptions>> /* Interact actions */ <<include shintaniHomeInteractActions>> <<include shintaniHomeInteractAsleepActions>> /* Molest actions */ <<include molestActions>> <<include molestCumActions>> </div> </div> </div> <<updatetime>> <</nobr>>
<<nobr>> /* Check for fill or emptied slave_traits */ <<set _player_extra_changes = "">> <<if $player.is_slave>> /* If trust falls to zero lower status */ <<if $player.slave_traits.trust == 0>> <<if $player.get_status("shintaniHome") == "slave">> <<set $locations["nipon"].status = "low_slave">> <<updatestatus>> <<set _player_extra_changes += "\ You\'re low trust with Shintani has caused your status to drop within Nipon.\ ">> <<if $locations["niponCentral"].access>> <<set $locations["niponCentral"].access = false>> <<set _player_extra_changes += "\ Due to your status as a low slave, Shintani has decided to revoke your privledges \ to leave the household.\ ">> <</if>> <<set $player.slave_traits.trust = 50>> /* Prevent change from showing */ <<set $_player.slave_traits.trust = 50>> /* Modify Shintani's view of the player */ <<set $characters.shintani_hiroyuki.slave_traits.obedience = 30>> <<set $characters.shintani_hiroyuki.slave_traits.trust = 0>> <<elseif $player.get_status("shintaniHome") == "high_slave">> <<set $locations["nipon"].status = "slave">> <<updatestatus>> <<set _player_extra_changes += "\ You\'re low trust with Shintani has caused your status to drop within Nipon.\ ">> <<set $player.slave_traits.trust = 50>> /* Prevent change from showing */ <<set $_player.slave_traits.trust = 50>> /* Modify Shintani's view of the player */ <<set $characters.shintani_hiroyuki.slave_traits.obedience = 50>> <<set $characters.shintani_hiroyuki.slave_traits.trust = 25>> <</if>> <</if>> /* If obedience falls to zero, give beating */ <<if $player.slave_traits.obedience == 0>> <<set _player_extra_changes += "\ You\'re low obedience in the Hiroyuki household now shows in the new lash marks \ now on your back. This severly affects your health and may lead to long-term consequences \ (">> <<set $player.slave_traits.trust -= 10>> <<set $player.slave_traits.obedience = 20>> /* Prevent change from showing */ <<set $_player.slave_traits.obedience = 20>> /* Roll to see whether or not dex / strength is reduced */ <<set _probability = setup.sigmoid($difficulty)>> <<set _roll = Math.random()>> <<if _roll lt _probability>> <<set _player_extra_changes += "Dexterity " + setup.show_change_html(0, -1) + ", ">> <<set $player.stats.dexterity -= 1>> <</if>> <<set _roll = Math.random()>> <<if _roll lt _probability>> <<set _player_extra_changes += "Strength " + setup.show_change_html(0, -1) + ", ">> <<set $player.stats.strength -= 1>> <</if>> /* Roll to see how much health is lost */ <<set _roll = 10 * dice(1, $difficulty + 6) - $player.stats.strength>> <<set _player_extra_changes += "Health " + setup.show_change_html(0, -1 * _roll) + ", ">> <<set $player.conditions.health -= _roll>> <<set _player_extra_changes += "Trust " + setup.show_change_html(0, -10) + ").">> <<unset _probability>> <<unset _roll>> <</if>> /* If obedience > 90, build trust */ <<if $player.slave_traits.obedience gt 90>> <<if $player.get_status("nipon") == "low_slave">> <<set _to_add = 15>> <<else>> <<set _to_add = 5>> <</if>> <<set _player_extra_changes += "\ Shintani has taken notice to your good behavior lately, building his trust in you \ (Trust " + setup.show_change_html(0, _to_add) + ").">> <<set $player.slave_traits.trust += _to_add>> <<unset _to_add>> <</if>> /* If trust reaches 100, raise status */ <<if $player.slave_traits.trust gte 100>> <<if $player.get_status("shintaniHome") == "low_slave">> <<if $quests.the_nipon_economy.added>> <<set $locations["niponCentral"].access = true>> <</if>> <<set $locations["nipon"].status = "slave">> <<updatestatus>> <<set _player_extra_changes += "\ You\'re high trust with Shintani has caused your status to rise within Nipon.\ ">> <<set $player.slave_traits.trust = 5>> /* Prevent change from showing */ <<set $_player.slave_traits.trust = 5>> /* Modify Shintani's view of the player */ <<set $characters.shintani_hiroyuki.slave_traits.obedience = 50>> <<set $characters.shintani_hiroyuki.slave_traits.trust = 25>> <<elseif $player.get_status("shintaniHome") == "slave">> <<set $locations["nipon"].status = "high_slave">> <<updatestatus>> <<set _player_extra_changes += "\ You\'re high trust with Shintani has caused your status to rise within Nipon.\ ">> <<set $player.slave_traits.trust = 5>> /* Prevent change from showing */ <<set $_player.slave_traits.trust = 5>> /* Modify Shintani's view of the player */ <<set $characters.shintani_hiroyuki.slave_traits.obedience = 60>> <<set $characters.shintani_hiroyuki.slave_traits.trust = 50>> <</if>> <</if>> <</if>> /* Update quest journal */ <<updatequests>> /* Simulate slaves */ <<include slaveEngine>> /* Remove money from player */ <<if _afford>> <<if _total_profit gt 0>> <<addmoney `setup.round2(_total_profit)`>> <<elseif _total_profit lt 0>> <<removemoney `Math.abs(setup.round2(_total_profit))`>> <</if>> <</if>> <div id="background" class="paper_border" style="position: relative"> <center><h1>Another Day Passes in Nipon</h1></center> <div style="overflow-y: auto; height: 450px; padding: 10px"> <p id="sleep_summary" class="textpassage" style="display: none"> <<capture $_player>> <<messageopen "Player Summary">> You slept for <<= parseInt($_to_advance / 60)>> hours and <<= parseInt($_to_advance % 60)>> minutes until the break of dawn when all slaves in the Hiroyuki household are told to wake up; 7:00 AM. <<if !$_obedient_sleep && $player.is_slave>> Since you went to bed without working your daily quota, Shintani took it as you lazying off (<span style="color: red">-Obedience</span>). <</if>> <br> ''Sleep total stat changes:'' <ul class="sleepChanges"> /* Add in stat changes */ <<for _key, _val range $_player.stats>> <<if _val != $player.stats[_key]>> <li> <<= setup.titleCase(_key)>>: <<= setup.show_change_html(_val, $player.stats[_key], true)>></li> <</if>> <</for>> /* Add in condition changes */ <<for _key, _val range $_player.conditions>> <<if _val != $player.conditions[_key]>> <li> <<= setup.titleCase(_key)>>: <<= setup.show_change_html(_val, $player.conditions[_key], true)>></li> <</if>> <</for>> /* Add in slave trait changes */ <<for _key, _val range $_player.slave_traits>> <<if _val != $player.slave_traits[_key]>> <li> <<= setup.titleCase(_key)>>: <<= setup.show_change_html(_val, $player.slave_traits[_key], true)>></li> <</if>> <</for>> <<if _afford && _total_profit != 0>> <li>Profit: <<= setup.show_money_change_html(0, _total_profit)>></li> <</if>> </ul> <</messageopen>><br> <<messageopen "Slave Summary">> <<if $to_simulate_day.size == 0>> You do not have any slaves on assignment right now. <<else>> <<if _afford>> <<for _key, _val range _slave_changes>> <<set _char = $characters[_key]>> <<capture _char, _key, _val>> <<messageopen _char.name()>> <<= _val.flavor_text>><br> ''<<= setup.titleCase(_char.first_name)>> Changes'' <ul class="sleepChanges"> <<for _sub_key, _sub_val range _slave_changes[_key].self>> <<for _sub_sub_key, _sub_sub_val range _sub_val>> <<if _sub_sub_val == 0>> <<continue>> <</if>> <<if _sub_key == "sex_fetishes">> <<set _tit = setup.titleCase(_sub_sub_key) + " Fetish">> <<elseif _sub_key == "sex_skills">> <<set _tit = setup.titleCase(_sub_sub_key) + " Skill">> <<elseif _sub_key == "sex_prefs">> <<set _tit = setup.titleCase(_sub_sub_key) + " Preference">> <<elseif _sub_key == "slave_traits" && _sub_sub_key == "obedience">> <<set _tit = "Affection">> <<else>> <<set _tit = setup.titleCase(_sub_sub_key)>> <</if>> <li>_tit: <<if _sub_sub_key in setup.POSITIVES.character>> <<= setup.show_change_html(0, _sub_sub_val, setup.POSITIVES.character[_sub_sub_key])>> <<else>> <<= setup.show_change(0, _sub_sub_val)>> <</if>> </li> <</for>> <</for>> <<for _idx, _sub_val range _slave_changes[_key].special>> <li><<= _sub_val>></li> <</for>> <li>Profit: <<= setup.show_money_change_html(0, -1 * _slave_changes[_key].cost)>></li> <<if _slave_changes[_key].cost lt 0>> <<set _char.finances.total_earned += -1 * _slave_changes[_key].cost>> <<else>> <<set _char.finances.cost += _slave_changes[_key].cost>> <</if>> </ul> <</messageopen>><br> <</capture>> <</for>> <<else>> Your assigned slaves cost you <span class="fail"><<= setup.LARI>><<= Math.abs(_total_profit)>></span> which is more than you have. Thus they ignored all their assignments for the day and returned to their default roles. <</if>> <</if>> <</messageopen>><br> <<messageopen "World Summary">> You do not have any way to gather intelligence about the world right now. <</messageopen>> <</capture>> </p> </div> <div id="cont_button" style="position: absolute; bottom: 100px; left: calc(50% - 82px); display: none"> <<button "Continue" shintaniHome>><</button>> </div> </div> <<script>> setTimeout(() => { var div = $("<div></div>"); div.html(State.temporary.player_extra_changes); $("#sleep_summary").prepend(div); $("#sleep_summary").fadeIn(); $("#cont_button").fadeIn(); }, 500); <</script>> /* Reset awake counter */ <<set $time_awake = 0>> /* Reset work status */ <<set $player.hours_worked = 0>> <<include round>> <<unset $_player>> <</nobr>>
<<nobr>> <div id="work_actions" class="action container row col hidden" style="--rows: 4; --cols: 5"> /* How long we want to work for */ <div style="grid-row: 1; grid-column: 1"> @@#work1Hr;<<button "1 Hour">> <<run $("#workStartButton button").prop("disabled", true)>> <<addclass "#workStartButton button" "disabled">> /* Enable other options */ <<run $("#work4Hr button").prop("disabled", false)>> <<removeclass "#work4Hr button" "disabled">> <<run $("#work8Hr button").prop("disabled", false)>> <<removeclass "#work8Hr button" "disabled">> <<set _to_advance_hr = 1>> /* Enable start */ <<if $player.conditions.stamina gt (_to_advance_hr * -180 * ((3/10 * $player.stats.strength - $time_awake / 7) - _to_advance_hr * 30 / 7) / 1440)>> <<run $("#workStartButton button").prop("disabled", false)>> <<removeclass "#workStartButton button" "disabled">> /* Disable self */ <<run $("#work1Hr button").prop("disabled", true)>> <<addclass "#work1Hr button" "disabled">> <<else>> <<set _to_notify = ("You are too tired to work " + _to_advance_hr + " hour.")>> <<notify>><<= _to_notify>><</notify>> <</if>> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 2"> @@#work4Hr;<<button "4 Hours">> <<run $("#workStartButton button").prop("disabled", true)>> <<addclass "#workStartButton button" "disabled">> /* Enable other options */ <<run $("#work1Hr button").prop("disabled", false)>> <<removeclass "#work1Hr button" "disabled">> <<run $("#work8Hr button").prop("disabled", false)>> <<removeclass "#work8Hr button" "disabled">> <<set _to_advance_hr = 4>> /* Enable start */ <<if $player.conditions.stamina gt (_to_advance_hr * -180 * ((3/10 * $player.stats.strength - $time_awake / 7) - _to_advance_hr * 30 / 7) / 1440)>> <<run $("#workStartButton button").prop("disabled", false)>> <<removeclass "#workStartButton button" "disabled">> /* Disable self */ <<run $("#work4Hr button").prop("disabled", true)>> <<addclass "#work4Hr button" "disabled">> <<else>> <<set _to_notify = ("You are too tired to work " + _to_advance_hr + " hours.")>> <<notify>><<= _to_notify>><</notify>> <</if>> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 3"> @@#work8Hr;<<button "8 Hours">> <<run $("#workStartButton button").prop("disabled", true)>> <<addclass "#workStartButton button" "disabled">> /* Enable other options */ <<run $("#work1Hr button").prop("disabled", false)>> <<removeclass "#work1Hr button" "disabled">> <<run $("#work4Hr button").prop("disabled", false)>> <<removeclass "#work4Hr button" "disabled">> <<set _to_advance_hr = 8>> /* Enable start */ <<if $player.conditions.stamina gt (_to_advance_hr * -180 * ((3/10 * $player.stats.strength - $time_awake / 7) - _to_advance_hr * 30 / 7) / 1440)>> <<run $("#workStartButton button").prop("disabled", false)>> <<removeclass "#workStartButton button" "disabled">> /* Disable self */ <<run $("#work8Hr button").prop("disabled", true)>> <<addclass "#work8Hr button" "disabled">> <<else>> <<set _to_notify = ("You are too tired to work " + _to_advance_hr + " hours.")>> <<notify>><<= _to_notify>><</notify>> <</if>> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 5"> <<disable>> @@#workStartButton;<<button "Start">> <<include shintaniHomeWorkEngine>> <</button>>@@ <</disable>> </div> <div style="grid-row: 3; grid-column: 5"> <<button "Back">> <<script>> $("#work_actions").addClass("hidden"); $("#actions").removeClass("hidden"); <</script>> <</button>> </div> <div style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> /* Information about work */ <<set $_temp_to_log = "\ <div>You spent time assisting Shintani with his duties.</div>\ ">> /* Get clone of player to display changes */ <<set $_player = clone($player)>> /* Forward time along with dynamics */ <<set $player.is_slaving = true>> <<addhours _to_advance_hr>> <<set $player.hours_worked += _to_advance_hr>> <<include round>> <<set $player.is_slaving = false>> /* Check if work-event occurs */ <<set _probability = (_to_advance_hr / 12)>> <<set _roll = Math.random()>> /* Fill event pool depending on content */ <<set _event_pool = ["shintaniHomeEventsWorkEconomicEvents"]>> <<if $tasks gt 0>> <<set _event_pool.push("shintaniHomeEventsWorkDomesticEvents")>> <</if>> <<if $tasks gt 1>> <<set _event_pool.push("shintaniHomeEventsWorkSexualEvents")>> <</if>> <<if (1 - _probability) lt _roll>> /* Disable menu */ <<set $enable_menu = false>> /* Trigger work event */ <<include `either(_event_pool)`>> <<script>> $("#work_actions").addClass("hidden"); $("#events_actions").removeClass("hidden"); <</script>> <<unset _probability>> <<unset _roll>> <<unset _event_pool>> <<else>> <<include shintaniHomeWorkEngineAfter>> <</if>> <</nobr>>
<<nobr>> <<include round>> /* Check if there were any changes at all */ <<set _changes = false>> <<for _key, _val range $_player.conditions>> <<if _val != $player.conditions[_key]>> <<set _changes = true>> <<break>> <</if>> <</for>> <<for _key, _val range $_player.slave_traits>> <<if _val != $player.slave_traits[_key]>> <<set _changes = true>> <<break>> <</if>> <</for>> <<if _changes>> <<set $_temp_to_log += "<br><b>Work total stat changes:</b>">> <<set $_temp_to_log += "<ul>">> /* Add in condition changes */ <<for _key, _val range $_player.conditions>> <<if _val != $player.conditions[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.conditions[_key], true) + "</li>")>> <</if>> <</for>> /* Add in slave trait changes */ <<for _key, _val range $_player.slave_traits>> <<if _val != $player.slave_traits[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.slave_traits[_key], true) + "</li>")>> <</if>> <</for>> <<set $_temp_to_log += "</ul>">> <</if>> /* Unset variables */ <<unset _changes>> <<unset _to_advance_hr>> <<unset $_player>> /* Re-enable menu */ <<set $enable_menu = true>> <<script>>Engine.play("shintaniHome");<</script>> <</nobr>>
<<nobr>> <div id="actions" class="action container row col longbutton fiveQuarters" style="--rows: 4; --cols: 4"> <<set _last_choice = "none">> <<button "Talk">> <<if _last_choice != "talk">> <<set _last_choice = "talk">> <<set _options = "\ <ol>\ <li id=\"li1\">\"Do you work for Shintani?\"</li>\ <li id=\"li2\">\"How do you like Nipon?\"</li>\ <li id=\"li3\">\"What\'s your background?\"</li>\ <li id=\"li4\">\"I'd like to work here.\"</li>\ ">> <<if !$quest_journal.completed.contains("knowledge_is_power") && $quests.knowledge_is_power.added && $quests.knowledge_is_power.stage == 1 && (!("brothel" in $quests.knowledge_is_power.data) || !$quests.knowledge_is_power.data.brothel)>> <<set _options += "<li id=\"li5\">Himari said you had some debt that needs to be paid?\"</li>">> <</if>> <<set _options += "</ol>">> <<set _responses = [_options]>> <<script>> setup.mainLog_append_delayed(State.temporary.responses); <</script>> <<set _options = $(_options)>> <</if>> <<addclass "#actions" "hidden">> <<removeclass "#events_actions" "hidden">> <<set _disable_buttons = false>> <<disableactions _options>> <</button>> <<disable>> <<button "Services">> <</button>> <</disable>> <<if "brothel_work" in $quests.knowledge_is_power.data && $quests.knowledge_is_power.data.brothel_work>> <<button "Work">> <<run $("#info_title").html("Whore at the Sol Brothel")>> <<set _default_info = $("<div>\ <div id=\"normal_whore\">\ The Sol Brothel is filled with sexual fantasies and nightmares. You think subjecting yourself to it might \ be an easy way to make some lari.\ <ul id=\"change_list\">\ <li id=\"li1\">" + setup.LARI + setup.round2((2 * $player.sex_value()).clamp(0, 200)) + "</li>\ <li id=\"li2\">12% chance to increase a random sex skill (capped at 60).</li>\ <li id=\"li3\" class=\"hidden\"></li>\ <li id=\"li4\" class=\"hidden\"></li>\ <li id=\"li5\" class=\"hidden\"></li>\ </ul></div>\ <div id=\"niche\">\ You realize that you could potentially make some extra money by filling a sexual niche.\ <ul>\ <li id=\"li6\">Switch: Additional (tact/2) average tip, -3 willpower.</li>\ <li id=\"li7\">Dom: No tip, +5 willpower.</li>\ <li id=\"li8\">Sub: Additional (tact) average tip, -5 willpower, (30 - strength)% chance of injury.</li>\ </ul></div>\ </div>")>> <<run $("#infoLogBody").html("")>> <<run $("#infoLogBody").append(_default_info.clone())>> <<removeclass "#work_actions" "hidden">> <<addclass "#actions" "hidden">> <<removeclass "#infoLog" "hidden">> <<addclass "#mainLog" "hidden">> /* Reset disposition buttons */ <<script>> $(".disposition button").removeClass("disabled"); $(".disposition button").prop("disabled", false); $("#work_start button").addClass("disabled"); $("#work_start button").prop("disabled", true); <</script>> <</button>> <<else>> <<disable>> <<button "Work">><</button>> <</disable>> <</if>> <<button "Assignments">> <<if _has_assignment>> <<removeclass "#assignment_options" "hidden">> <<addclass "#actions" "hidden">> <<else>> <<notify>>You do not have any slaves assigned to the Sol Brothel.<</notify>> <</if>> <</button>> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <div id="assignment_actions" class="action container longbutton fiveQuarters smalltext row col hidden" style="--rows: 4; --cols: 4"> @@#check_up;<<button "Check Up">> <<set _sex_val = _char.sex_value()>> <<set _responses = [ $player.dialogue("How are you doing?") ]>> <<if _sex_val lt 30>> <<set _responses.push( _char.dialogue("I feel so useless here. Every day they ask me to do things... things... I don\'t want, and when I don\'t \ do well they punish me... please let me leave here. I don\'t want to work here anymore.") )>> <<elseif _sex_val lt 60>> <<set _responses.push( _char.dialogue("I feel like I\'m slowly getting better at working here, but I\'m not the best at what I do. At least here \ there are others like me I can talk to.") )>> <<elseif _sex_val lt 100>> <<set _responses.push( _char.dialogue("For the first time I feel like I am good at what I\'m doing here. While the work isn\'t the best sometimes, \ I\'m glad that others acknowledge my usefulness.") )>> <<else>> <<set _responses.push( _char.dialogue("Thank you so much for letting me work here. The environment is so great, and I love sucking cock all \ day long! Actually...") )>> <<set _responses.push( setup.titleCase(_char.first_name) + " looks around to make sure no one can see you guys, and quickly pulls down your pants," )>> <<set _responses.push( _char.dialogue("Let me show you how thankful I am.") )>> <<if $player.gender == 0>> <<set _responses.push( setup.titleCase(_char.first_name) + " quickly gulps down your cock and starts sucking rigorously to show you what they\'ve \ been learning here. After a few moments you quickly cum, filling " + setup.PRONOUNS[_char.gender]["?his"] + " mouth with \ your semen." )>> <<else>> <<set _responses.push( setup.titleCase(_char.first_name) + " quickly starts licking your bare pussy to show you what they\'ve \ been learning here. After a few moments you quickly cum, filling " + setup.PRONOUNS[_char.gender]["?his"] + " mouth with \ your juices." )>> <</if>> <</if>> <</button>>@@ @@#encourage;<<button "Encourage">> <<if _char.limits.influence lte 0>> <<notify>>Already influenced <<= setup.titleCase(_char.first_name)>> too many times today!<</notify>> <<else>> <<set _char.limits.influence -= 1>> <<set _roll = $player.get_status_prop("tact") + dice(1, 6 + $difficulty) - $difficulty>> <<if _roll gt 35>> <<set _responses = [ setup.pass("tact"), $player.dialogue("I heard you were doing well here, keep up the good work!"), setup.titleCase(_char.first_name) + " looks at you with joy,", _char.dialogue("Thanks... I\'ve been trying to get better...") + "(" + setup.titleCase(_char.first_name) + "\'s Affection " + setup.show_change_html(0, 2) + ")" ]>> <<set _char.slave_traits.obedience += 2>> <<set _to_round = _char.key>> <<include round>> <<else>> <<set _responses = [ setup.fail("tact"), $player.dialogue("I heard you were doing well here, keep up the good work!"), setup.titleCase(_char.first_name) + " looks at you emotionlessly,", _char.dialogue("Thanks... I guess...") ]>> <</if>> <</if>> <</button>>@@ @@#insult;<<button "Insult">> <<if _char.limits.manipulate lte 0>> <<notify>>Already manipulated <<= setup.titleCase(_char.first_name)>> too many times today!<</notify>> <<else>> <<set _char.limits.manipulate -= 1>> <<set _roll = $player.get_status_prop("manipulation") + dice(1, 6 + $difficulty) - $difficulty>> <<if _roll gt 35>> <<set _responses = [ setup.pass("manipulation"), $player.dialogue("God you look like shit, I wonder how this place hasn\'t shut down with you working here."), setup.titleCase(_char.first_name) + " looks at you with bewilderment,", _char.dialogue("Sorry, I\'ll try to be better...") + "(" + setup.titleCase(_char.first_name) + "\'s Willpower " + setup.show_change_html(0, -2, false) + ")" ]>> <<set _char.slave_traits.willpower -= 2>> <<set _to_round = _char.key>> <<include round>> <<else>> <<set _responses = [ setup.fail("manipulation"), $player.dialogue("God you look like shit, I wonder how this place hasn\'t shut down with you working here."), setup.titleCase(_char.first_name) + " looks at you with bewilderment, tears welding up in " + setup.PRONOUNS[_char.gender]["?his"] + " eyes,", _char.dialogue("I... I didn\'t want to work here in the first place! Let me leave then!") + "(" + setup.titleCase(_char.first_name) + "\'s Anger " + setup.show_change_html(0, 7, false) + ", Affection " + setup.show_change_html(0, -2) + ", Willpower " + setup.show_change_html(0, -1, false) + ")" ]>> <<set _char.mental_conditions.anger += 7>> <<set _char.slave_traits.obedience -= 2>> <<set _char.slave_traits.willpower -= 1>> <<set $to_simulate.add(_char.key)>> <<set _to_round = _char.key>> <<include round>> <</if>> <</if>> <</button>>@@ <div id="assignment_actions_back" style="grid-row: 3; grid-column: 4"> <<button "Back" `passage()`>><</button>> </div> <div id="assignment_actions_leave" style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> <<set _assignment_actions_buttons = ["#check_up", "#encourage", "#insult"]>> </div> <<timed 50ms>><<script>> $("#assignment_actions").find("button").on("click", (event) => { let self = $(event.currentTarget); if (self.html() == "Back" || self.html() == "Leave") { return; } self.addClass("disabled"); self.prop("disabled", true); setup.mainLog_append_delayed(State.temporary.responses, State.temporary.assignment_actions_buttons); }); <</script>><</timed>> <</nobr>>
<<nobr>> <<set _has_assignment = false>> <div id="assignment_options" class="action container smalltext row col hidden" style="--rows: 4; --cols: 5"> <<for _idx, _val range $to_simulate_day>> <<if $characters[_val].assignment == "solBrothel">> <<set _has_assignment = true>> <<capture _val>> <<button `setup.titleCase($characters[_val].first_name)`>> <<set _char = $characters[_val]>> <<run setup.mainLog_append_delayed(["You approach " + setup.titleCase(_char.first_name) + " who is on break,"])>> <<removeclass "#assignment_actions" "hidden">> <<addclass "#assignment_options" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _char.image_folder() + _char.first_name.toLowerCase() + "_" + _char.get_disposition() + ".png\")" )>> <</button>> <</capture>> <</if>> <</for>> <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div style="grid-row: 3; grid-column: 5"><<button "Back">> <<removeclass "#actions" "hidden">> <<addclass "#assignment_options" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _ronda.image_folder() + "ronda_neutral.png\")" )>> <</button>></div> <div style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <<set _ronda = $characters.ronda_stike>> <<set $_to_log = " <div>You enter the Sol Brothel and immediately are assaulted with an environment of pure \ sexual opulence. Despite such an esoteric atmosphere, there is a sense of dignity and \ refinement. Through the walls you can hear some slight giggling and moans. You approach \ a dark skinned woman who is clearly the head madam of this establishment.</div>\ ">> <<if $player.is_slave>> <<set $_to_log += "She eyes the amulet around your neck and lets out an obvious sigh,<br>">> <<set $_to_log += _ronda.dialogue("Bloody hell, another one of Shintani\'s little pets. Welcome to the Sol \ Brothel, not that I care about welcoming <b>you</b> in particular.")>> <<else>> <<set $_to_log += _ronda.dialogue("Welcome to the Sol Brothel. How can I be of assistance to you this fine day?")>> <</if>> /* Load in any saved variables */ <<loadVars>> /* Player back inside */ <<set $player.is_home = false>> <<set $player.is_outside = false>> <div id="background" class="paper_border notext"> <div class="main container fourCol threeRow" style="height: 100%; width: 100%;"> <div class="subbackground mainLogContainer"> <<include mainLog>> <<script>> setTimeout(() => { let ronda = State.variables.characters.ronda_stike; $("#mainLogCharacterImage").css("background-image", "url(\"" + ronda.image_folder() + "ronda_neutral.png\")" ); }, 10); <</script>> <<include infoLog>> </div> <<include info>> <div id="action_bar" class="subbackground" style="grid-row: 3 / span 1; grid-column: 1 / span 3"> /* Main actions */ <<include solBrothelActions>> <<include solBrothelTalkOptions>> <<include solBrothelAssignmentOptions>> <<include solBrothelAssignmentActions>> <<include solBrothelWorkActions>> </div> </div> </div> <</nobr>>
<<nobr>> <<set _refresh = false>> <div id="events_actions" class="action container row col hidden" style="--rows: 4; --cols: 5"> @@#events1;<<button "1">> <<if ndef _action>> <<run _options.find("#li1").css("text-decoration", "line-through")>> <<set _responses = [ "Ronda\'s face twists", _ronda.dialogue("Oh how I\'d looove to work for hooonorabble and gracious and caring and lovely Shintani. How I\'d love \ to be a dog licking his soles around the likes of... his oriental looking toys. I would totally fit in."), "You can\'t help yourself but giggle a little, afterall her accent makes her speech sound even more flaboyant than its \ meant to be,", _ronda.dialogue("Oh you think it\'s funny? Do you know what\'s funny? How about not being able to have children because of \ the color of your skin? How about despite your family being a foundational corner piece of this pile of trash \"Nipon\" as \ he now calls it, you are forced into a role where you sell your family members to his court? Is that funny?"), "You are left speechless. Ronda\'s voice lowers,", _ronda.dialogue("Let me tell you this, one day, when there are no more of our people left to oppose him, he will bring \ hell."), _options.clone() ]>> <<elseif _action == 5>> <<unset _action>> <<set _responses = [ "Ronda leads you and the large patron into an isolated room, dimly lit with red. She smiles at you one last time \ before closing the door, leaving only you and Will.", _will.dialogue("Hello there pretty, are you ready to be my pretty little slut?"), "Before you could even attempt to answer, Will is completely naked and has you pressed down to his crotch which reeks \ of onions and sulfur,", _will.dialogue("Suck it you fucking whore!"), "Despite you resisting he pushes his nasty cock into your mouth, spreading smegma all over your tongue. Even with you trying \ all you can, it seems Will\'s large physique gives him the extra leverage needed to keep forcing you down.", _will.dialogue("Don\'t stop! I\'m going to cum!"), "You are suddenly shocked that hearing those words come from a stout and disgusting old man would be like music to your \ ears. As your face is continually raped, Will lets out a stream of cum into your throat,", _will.dialogue("Now swallow you pig, else I\'ll tell mistress you didn\'t satisfy me... and who is she going to believe, \ one of her most loyal customers, or a little bitch slave?"), "Sunk-cost fallacy kicks in and you gulp down an obscene amount of semen. The taste still lingers in your throat, leaving \ you gagging and dry heaving. Will laughs at your predicament as you slowly make your way back outside (Oral Skill " + setup.show_change_html(0, 1) + ", Willpower " + setup.show_change_html(0, -10) + ")." ]>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set $player.sex_skills.oral += 1>> <<set $player.slave_traits.willpower -= 10>> <<include round>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _ronda.image_folder() + "ronda_neutral.png\")")>> <<set _responses = [ "Ronda looks at you in shock", _ronda.dialogue("The hell? That was fast... Did you back out?"), "You look at her with dead eyes indicating that you in fact, did not, back out,", "All of a sudden Ronda breaks her hard demeanor and lets out a beautifully warm laugh,", _ronda.dialogue("Hahaha! It seems like you must be a professional! Well, consider the debt cleared. Now if you \ don\'t need anything else get out of here... You\'re ruining the atmosphere."), _options.clone() ]>> <<set _disable_buttons = false>> <<disableactions _options>> <<run setup.mainLog_append_delayed(_responses, $buttons, $buttons_extra);>> <<set $quests.knowledge_is_power.data["brothel"] = true>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events2;<<button "2">> <<if ndef _action>> <<run _options.find("#li2").css("text-decoration", "line-through")>> <<set _responses = [ _ronda.dialogue("How do I like being defined by the color of my skin? Well, it\'s fan-fucking-tastic."), _options.clone() ]>> <<elseif _action == 5>> <<unset _action>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _ronda.image_folder() + "ronda_neutral.png\")")>> <<set _responses = [ "Ronda\'s smile drifts away,", _ronda.dialogue("Shintani\'s pets are getting more and more useless huh? Bloody pathetic."), _options.clone() ]>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _disable_buttons = false>> <<disableactions _options>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events3;<<button "3">> <<run _options.find("#li3").css("text-decoration", "line-through")>> <<set _responses = [ "Ronda flashes a sly smile,", _ronda.dialogue("Humph, have you no shame asking such a question in front of the heiress of the Stike fortune?"), "You can tell she is happy that someone had asked,", _ronda.dialogue("We served under the Namm household many many seasons ago, but now we are nothing but \"black devils\" \ that cause the misfortunes of others. At least we aren\'t doing as bad as the Namm household though, I heard not only \ were their assets all seized, but the sole survivor of them is a begger somewhere here in..."), "Ronda cuts herself off, confused on why she would share gossip with the likes of you,", _ronda.dialogue("Sorry, I'll have to get back to work now, did you need anything else or are you just here to \ make the view unpleasant?"), _options.clone() ]>> <</button>>@@ @@#events4;<<button "4">> <<run _options.find("#li4").css("text-decoration", "line-through")>> <<set _sex_val = setup.round2((2 * $player.sex_value()).clamp(0, 200))>> <<if "brothel_work" in $quests.knowledge_is_power.data && $quests.knowledge_is_power.data.brothel_work>> <<set _responses = [ "I already allowed you to work here. Your currently value per shift looks to be " + setup.LARI + _sex_val + ".", _options.clone() ]>> <<else>> <<if "brothel" in $quests.knowledge_is_power.data && $quests.knowledge_is_power.data.brothel>> <<set _responses = [ _ronda.dialogue("After what you did for Will? It would be criminal to not let you work here. Hmm let me take a good \ look at you"), "Ronda inspects you for a good 15 minutes,", _ronda.dialogue("Well it looks like your current value for a 4 hour shift here at the brothel will be " + setup.LARI + _sex_val + " lari. If you want that value to go up maybe try increasing your sex skills, but \ we don\'t pay our workers here anymore than 200 lari per shift."), _options.clone() ]>> <<set $quests.knowledge_is_power.data.brothel_work = true>> <<set _refresh = true>> <<elseif _sex_val gt 50>> <<set _responses = [ "Ronda backs up and takes a look at you,", _ronda.dialogue("Hmm yeah you do look like you might have potential."), "She inspects you for a good 15 minutes,", _ronda.dialogue("Well it looks like your current value for a 4 hour shift here at the brothel will be " + setup.LARI + $player.sex_value() + " lari. If you want that value to go up maybe try increasing your sex skills, but \ we don\'t pay our workers here anymore than 200 lari per shift."), _options.clone() ]>> <<set $quests.knowledge_is_power.data.brothel_work = true>> <<set _refresh = true>> <<else>> <<set _responses = [ "Ronda backs up and takes a look at you. She immediately can tell your value is too low,", _ronda.dialogue("Yeah, no. If you really want to whore yourself go fuck some beggers in the slums. Have some class."), _options.clone() ]>> <<notify>>Raise your sex skills and ask again.<</notify>> <</if>> <</if>> <</button>>@@ @@#events5;<<button "5">> <<set _will = new setup.Character("will_zeng")>> <<set _will.first_name = "Will">> <<set _action = 5>> <<run _options.find("#li5").css("text-decoration", "line-through")>> <<set _responses = [ "Ronda eyes you for a second before her face tightens into an obscene smile,", _ronda.dialogue("Why yes... we do have a particular customer that we could not... satisfy."), "Ronda searches over a notebook in front of her for a couple of minutes before calling out to some of \ the other staff,", _ronda.dialogue("Is our generous patron Will still around?"), "A distant \"yes\" echos through the hall and a large man waddles out of a corridor,", _ronda.dialogue("Last chance to turn back..."), "<ol>\ <li>\"Fuck it, I'll do it.\"</li>\ <li>\"I\'ll have to pass on this one.\"</li>\ </ol>" ]>> <<set _choices = 2>> <<set _disable_buttons = false>> <<disableactions>> <<unset _done_appending>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _done_appending>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _will.image_folder() + "will.png\")");>> <<stop>> <</if>><</repeat>><</silently>> <</button>>@@ @@#events6;<<button "6">> <</button>>@@ @@#events7;<<button "7">> <</button>>@@ @@#events8;<<button "8">> <</button>>@@ <<set $buttons = []>> <<for _i = 1; _i lte 8; _i++>> <<set $buttons.push("#events" + _i)>> <</for>> <<set $buttons_extra = ["#events_actions_back", "#events_actions_leave"]>> /* Back button is disabled by default */ <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div id="events_actions_back" style="grid-row: 3; grid-column: 5"> <<button "Back">> <<if _refresh>> <<goto `passage()`>> <<else>> <<removeclass "#actions" "hidden">> <<addclass "#events_actions" "hidden">> <</if>> <</button>> </div> <div id="events_actions_leave" style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <<timed 50ms>><<script>> $("#events_actions").find("button").on("click", (event) => { let _t = State.temporary; let _v = State.variables; var self = $(event.currentTarget); if (self.html() == "Back" || self.html() == "Leave") { return; } self.addClass("disabled"); self.prop("disabled", true); if ("responses" in _t) { setup.mainLog_append_delayed(_t.responses, _v.buttons, _v.buttons_extra); delete _t.responses; } }); <</script>><</timed>> <</nobr>>
<<nobr>> <div id="work_actions" class="action container row col fiveQuarters smalltext longbutton hidden" style="--rows: 4; --cols: 4"> /* Disposition towards the work */ <div style="grid-row: 1; grid-column: 1"> @@#switch;.disposition;<<button "Switch">> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 2"> @@#switch;.disposition;<<button "Dom">> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 3"> @@#switch;.disposition;<<button "Sub">> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 4"> <<disable>> @@#work_start;<<button "Start">> <<include solBrothelWorkEngine>> <</button>>@@ <</disable>> </div> <div id="work_actions_back" style="grid-row: 3; grid-column: 4"> <<button "Back">> <<addclass "#work_actions" "hidden">> <<removeclass "#actions" "hidden">> <<addclass "#infoLog" "hidden">> <<removeclass "#mainLog" "hidden">> <</button>> </div> <div id="work_actions_leave" style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <<timed 50ms>><<script>> $(".disposition").find("button").on("click", (event) => { let _v = State.variables; let player = _v.player; let work_time = 4; if (!(_v.gameDate.getHours() < setup.locations.get("solBrothel").access_times[1] - 4 || _v.gameDate.getHours() >= setup.locations.get("solBrothel").access_times[0])) { $.wiki("<<notify>>Not enough time to work a full shift before closing.<</notify>>"); } else if (Math.abs(setup.project_stamina_change(60 * work_time)) < player.conditions.stamina) { $(".disposition button").removeClass("disabled"); $(".disposition button").prop("disabled", false); let self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); State.temporary.niche = self.html(); $("#niche").addClass("hidden"); $("#li3").removeClass("hidden"); $("#li4").addClass("hidden"); $("#li5").addClass("hidden"); switch (State.temporary.niche) { case "Switch": $("#li3").html("Additional " + setup.LARI + setup.round2(player.get_status_prop("tact") / 2) + " average tip."); $("#li4").html("-3 willpower."); $("#li4").removeClass("hidden"); break; case "Sub": $("#li3").html("Additional " + setup.LARI + setup.round2(player.get_status_prop("tact")) + " average tip."); $("#li4").html("-5 willpower."); $("#li5").html((30 - player.stats.strength).clamp(0, 100) + "% chance of injury."); $("#li4").removeClass("hidden"); $("#li5").removeClass("hidden"); break; case "Dom": $("#li3").html("+5 willpower."); break; } $("#work_start button").removeClass("disabled"); $("#work_start button").prop("disabled", false); } else { $.wiki("<<notify>>You are too tired to work.<</notify>>"); } }); <</script>><</timed>> <</nobr>>
<<nobr>> <<set _player = clone($player)>> <<set _pay = setup.round2((2 * $player.sex_value()).clamp(0, 200))>> /* Simulate 12% skill increase roll */ <<set _thresh = 12 / 100>> <<set _increasable = []>> <<for _key, _val range $player.sex_skills>> <<if _val lt 60>> <<set _increasable.push(_key)>> <</if>> <</for>> <<set _roll = randomFloat(1.0)>> <<if _roll lt _thresh && _increasable.length gt 0>> <<set $player.sex_skills[either(_increasable)] += 1>> <</if>> <<switch _niche>> <<case "Switch">> <<set $_temp_to_log = "You whored yourself at the Sol Brothel for 4 hours as a switch, playing into whatever roles or fantasies \ that were appropriate for the time.">> <<set $player.slave_traits.willpower -= 3>> <<set _pay += setup.randn_bm() + ($player.get_status_prop("tact") / 2)>> <<case "Dom">> <<set $_temp_to_log = "You whored yourself at the Sol Brothel for 4 hours as a dominant, ruling over your victims who drew sexual \ gratification from being used.">> <<set $player.slave_traits.willpower += 5>> <<case "Sub">> <<set $_temp_to_log = "You whored yourself at the Sol Brothel for 4 hours as a submissive, begging, being used, and getting fucked \ however your customers saw fit.">> <<set $player.slave_traits.willpower -= 5>> <<set _pay += setup.randn_bm() + ($player.get_status_prop("tact"))>> /* Simulate injury chance */ <<set _thresh = (30 - $player.stats.strength)/100>> <<set _roll = randomFloat(1.0)>> <<if _roll lt _thresh>> <<set _roll = randomFloat(1.0)>> <<set _to_injure = 1>> <<if _roll gte .5>> <<set _to_injure += 1>> <</if>> <<set $_temp_to_log += "<div>You were careless and got hurt during your BDSM activities (Dexterity " + setup.show_change_html(_to_injure, 0) + ")</div>">> <<set $player.stats.dexterity -= _to_injure>> <</if>> <</switch>> <<set _pay = setup.round2(_pay)>> <<addmoney _pay>> <<audio "coins_sound" play>> <<include round>> <<showChanges "Work total stat changes">> <<addhours 4>> <<goto `passage()`>> <</nobr>>
<<nobr>> <div id="actions" class="action container row col longbutton fiveQuarters" style="--rows: 4; --cols: 4"> <<set _last_choice = "none">> <<button "Talk">> <<if _last_choice != "talk">> <<set _last_choice = "talk">> <<set _options = "\ <ol>\ <li id=\"li1\">\"What is this place?\"</li>\ <li id=\"li2\">\"Can I purchase a slave here?\"</li>\ <li id=\"li3\">\"How often does new merchandise come in?\"</li>\ <li id=\"li4\">\"Who are you?\"</li>\ <li id=\"li5\">\"How do you like Nipon?\"</li>\ ">> <<set _options += "</ol>">> <<set _responses = [ _options ]>> <<set _options = $(_options)>> <<set _disable_buttons = false>> <<disableactions _options>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.temporary.talk_buttons, State.temporary.talk_buttons_extra); <</script>> <</if>> <<addclass "#actions" "hidden">> <<removeclass "#talk_options" "hidden">> <</button>> <<button "Slaves">> <<addclass "#actions" "hidden">> <<removeclass "#slave_actions" "hidden">> <</button>> <div style="grid-row: 1; grid-column: 4"></div> <div style="grid-row: 2; grid-column: 4"></div> <div style="grid-row: 3; grid-column: 4"></div> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponMarket">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> /* Check if requires refreshing stock */ <<if !("last_visit" in $locations["niponAuctionHouse"].data)>> <<set $locations["niponAuctionHouse"].data["last_visit"] = clone($gameDate)>> <</if>> <<set _date_diff = Math.floor(($gameDate - $locations["niponAuctionHouse"].data["last_visit"]) / 86400000)>> <<if !("slaves" in $locations["niponAuctionHouse"].data) || _date_diff gt 7 || (def $shuffle_slaves && $shuffle_slaves)>> <<unset $shuffle_slaves>> <<set $locations["niponAuctionHouse"].data["last_visit"] = clone($gameDate)>> <<set $locations["niponAuctionHouse"].data["slaves"] = {}>> <<for _i = 0; _i lt 5; _i++>> <<set _temp_slave = new setup.Character("temp")>> <<set _temp_slave.gender = 1>> <<if _i lt 2>> <<set _temp_slave.physical_traits.ethnicity = either(["Japanese", "Chinese", "Korean", "Vietnamese"])>> <</if>> <<run _temp_slave.shuffle()>> <<set _temp_slave.stats_known = true>> <<set _temp_slave.skills_known = true>> <<set _temp_slave.is_slave = true>> <<set _temp_slave.key = _temp_slave.first_name + "_" + _temp_slave.last_name + dice(1, 1000)>> <<set $locations["niponAuctionHouse"].data.slaves[_temp_slave.key] = _temp_slave>> <</for>> <<for _i = 0; _i lt 5; _i++>> <<set _temp_slave = new setup.Character("temp")>> <<set _temp_slave.gender = 0>> <<if _i lt 2>> <<set _temp_slave.physical_traits.ethnicity = either(["Japanese", "Chinese", "Korean", "Vietnamese"])>> <</if>> <<run _temp_slave.shuffle()>> <<set _temp_slave.stats_known = true>> <<set _temp_slave.skills_known = true>> <<set _temp_slave.is_slave = true>> <<set _temp_slave.key = _temp_slave.first_name + "_" + _temp_slave.last_name + dice(1, 1000)>> <<set $locations["niponAuctionHouse"].data.slaves[_temp_slave.key] = _temp_slave>> <</for>> <</if>> <<set _luka = new setup.Character("luka_namm")>> <<set _luka.first_name = "Luka">> <<set $_to_log = " <div>The Nipon Auction House carries with it a strange smell of old burnt paper. You can tell that it \ was only recently modified to allow for the selling of human capital. In many corners of the room you find \ many gaurds armed to the teeth with weapons you\'ve never seen before. The shop owner with bags under his \ eyes makes his way over to you and says in a non-interested tone,</div><br>" + _luka.dialogue("Welcome... are you here to make a bid on our merchandise?") + "He weakly gesters a a group of several people doing menial chores around the room." >> <div id="background" class="paper_border notext"> <div class="main container fourCol threeRow" style="height: 100%; width: 100%;"> <div class="subbackground mainLogContainer"> <<include mainLog>> </div> <<include info>> <div id="action_bar" class="subbackground" style="grid-row: 3 / span 1; grid-column: 1 / span 3"> <<include niponAuctionHouseActions>> <<include niponAuctionHouseTalkOptions>> <<include niponAuctionHouseSlaveActions>> </div> </div> </div> /* Select first slave */ <<timed 50ms>><<script>> let _t = State.temporary; let _v = State.variables; let [first] = Object.keys(_v.locations.niponAuctionHouse.data.slaves); _v.selected = first; <</script>><</timed>> <</nobr>>
<<nobr>> <div id="slave_actions" class="action container row col longbutton fiveQuarters hidden" style="--rows: 4; --cols: 4"> <<button "Buy">> <<set $last_visited = passage()>> <<set $in_menu = true>> <<saveVars>> <<goto niponAuctionHouseSlaveBuy>> <</button>> <<button "Sell">> <<if $player.slaves.length == 0>> <<notify>>Do not own any slaves to sell.<</notify>> <<elseif $player.is_slave>> <<notify>>Shintani did not allow you to sell your slave.<</notify>> <<else>> /* TODO: Implement sell */ <</if>> <</button>> <div style="grid-row: 1; grid-column: 4"></div> <div style="grid-row: 2; grid-column: 4"></div> <div style="grid-row: 3; grid-column: 4"> <<button "Back">> <<removeclass "#actions" "hidden">> <<addclass "#slave_actions" "hidden">> <</button>> </div> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponMarket">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <<set _char = $locations.niponAuctionHouse.data.slaves[$selected]>> <div id="background" class="paper_border notext"> <div class="main container threeCol" style="height: 100%; width: 100%;"> <div id="characterMenuLeft"> <<include characterMenuSkills>> <<timed 50ms>><<removeclass "#skills" "hidden">><</timed>> </div> <div id="characterMenuCenter" class="subbackground"> <center> <h2 id="name" style="margin-top:20px; margin-bottom: 20px"> <<= setup.titleCase(_char.first_name)>> <<= setup.titleCase(_char.last_name)>> </h2> <div id="characterMenuImage"></div> </center> <<timed 20ms>> <<run $("#characterMenuImage").css("background-image", "url(resources/images/characters/player/" + _char.gender + ".png)")>> <</timed>> <<if ($quests.cycle_of_abuse.stage == 2)>> <<set _cost = setup.round2(0.1 * _char.value(1.2))>> <<else>> <<set _cost = setup.round2(_char.value(1.2))>> <</if>> <center id="cost" style="margin: 15px; margin-left: 30px; margin-right: 30px"> <<= setup.LARI>> _cost </center> <center> <<button "Back">> <<set $in_menu = false>> <<goto $last_visited>> <<set $last_visited = "">> <</button>> <<if $player.is_slave && $quests.cycle_of_abuse.stage lt 2>> <<disable>><<button "Purchase">><</button>><</disable>> <<else>> @@#purchase;<<button "Purchase">> <<if $player.get_money() lt _cost>> <<notify>>Insufficient Funds.<</notify>> <<else>> <<set _char.background = "You acquired " + setup.PRONOUNS[_char.gender]["?him"] + " at the \ Nipon auction house">> <<if $quests.cycle_of_abuse.stage == 2>> <<set _char.background += " with the help of Shintani\'s subsidy.">> <<set $quests.cycle_of_abuse.stage = 3>> <<else>> <<set _char.background += ".">> <</if>> <<set _char.date_acquired = clone($gameDate)>> <<removemoney _cost>> <<audio "coins_sound" play>> <<updatetime>> <<set $player.slaves.push(_char.key)>> /* Give them an inventory */ <<set _char.inventory = _char.key>> <<run UInv.CreateBag(_char.key)>> <<set _char.finances.purchase_cost = _cost>> <<set _char.owner = "player">> <<run delete $locations.niponAuctionHouse.data.slaves[_char.key]>> <<set $characters[_char.key] = clone(_char)>> <<set $to_simulate_day.add(_char.key)>> <<run $("#purchase button").addClass("disabled")>> <<run $("#purchase button").prop("disabled", true)>> <<run $("#slave_choices").find("button.disabled").addClass("purchased")>> <<run $("#slave_choices").find("button.disabled").html("PURCHASED")>> <</if>> <</button>>@@ <</if>> </center> </div> <div id="characterMenuRight"> <<include characterMenuSummary>> </div> </div> </div> <div class="charside right"> <div id="slave_choices" class="mapaction fiveQuarters smalltext"> <hr> <<for _key, _val range $locations.niponAuctionHouse.data.slaves>> <<capture _key, _val>> <<if _key == $selected>> <<disable>> <<button setup.titleCase(_val.first_name)>> <<set _char = _val>> <</button>> <</disable>> <<else>> <<button setup.titleCase(_val.first_name)>> <<set _char = _val>> <</button>> <</if>> <</capture>> <</for>> </div> </div> <<timed 50ms>> <<script>> $("#slave_choices").find("button").on("click", (event) => { let _t = State.temporary; let _v = State.variables; $("#slave_choices").find("button").removeClass("disabled"); $("#slave_choices").find("button").prop("disabled", false); $("#slave_choices").find("button.purchased").addClass("disabled"); $("#slave_choices").find("button.purchased").prop("disabled", true); let self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); $("#characterMenuCenter").find("#name").html(setup.titleCase(_t.char.first_name) + " " + setup.titleCase(_t.char.last_name)); $("#characterMenuImage").css("background-image", "url(resources/images/characters/player/" + _t.char.gender + ".png)"); if (_v.quests.cycle_of_abuse.stage == 2) { _t.cost = setup.round2(0.1 * _t.char.value(1.2)); } else { _t.cost = setup.round2(_t.char.value(1.2)); } $("#purchase button").removeClass("disabled"); $("#purchase button").prop("disabled", false); $("#characterMenuCenter").find("#cost").html(setup.LARI + " " + _t.cost); $("#characterMenuLeft").html(""); $("#characterMenuLeft").wiki("<<include characterMenuSkills>>"); $("#skills").removeClass("hidden"); $("#characterMenuRight").html(""); $("#characterMenuRight").wiki("<<include characterMenuSummary>>"); }); <</script>> <</timed>> <</nobr>>
<<nobr>> <<set _refresh = false>> <div id="talk_options" class="action container row col hidden" style="--rows: 4; --cols: 5"> <<set _refresh = false>> @@#events1;<<button "1">> <<set _responses = [ _luka.dialogue("Oh this place? Uhh... well... this is where you can buy and sell slaves I guess..."), "Luka lets out a sigh of exasperation", _luka.dialogue("Not that anyone cares, but this used to be an auction house, now we just deal with human merchandise... \ what business did you have here?") ]>> <</button>>@@ @@#events2;<<button "2">> <<if $player.is_slave>> <<if $quests.cycle_of_abuse.stage lte 1>> <<set _responses = [ "Luka\'s eyes shift down to your neckline to see the Hiroyuki amulet, he suddently bursts into laughter", _luka.dialogue("Listen, if Shintani wants a slave, he can just tell me. I doubt he would let one of his \ slaves purchase a slave!"), "Luka continues chuckling to himself with a look of pity in his eye,", _luka.dialogue("Now get out of here, you have no business here...") ]>> <<if !$quests.cycle_of_abuse.added>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set $quests["cycle_of_abuse"].added = true>> <<set $quest_journal.ongoing.push("cycle_of_abuse")>> <<notify>>Quest <em>Cycle of Abuse</em> added to journal!<</notify>> <<audio "quest_added_sound" play>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <<elseif $quests.cycle_of_abuse.stage == 2>> <<set _responses = [ "Luka chuckles to himself,", _luka.dialogue("I have no idea how you got Shintani to not only let you buy a slave but even offer to subsidize it \ for you. Go ahead and choose a slave... By the way, if you try to sell this slave back to me, all of it goes back to \ Shintani as per his instruction...") ]>> <</if>> <<else>> <<set _responses = [ _luka.dialogue("Um... yeah that\'s kind of the whole point of this place right? You can go see our merchandise over there."), "He points to a group of people doing menial tasks,", _luka.dialogue("They\'re expensive, so uh, you break it, you buy it...") ]>> <</if>> <</button>>@@ @@#events3;<<button "3">> <<set _responses = [ _luka.dialogue("Eh... it varies, but every week or so we refresh our stock... The unsold slaves are usually \ forced into labor or work in the slums, and uh, sometimes they are used as human shields in the Great Ea..."), "Luka catches himself, as if he ran out of breath", _luka.dialogue("Nevermind...") ]>> <</button>>@@ @@#events4;<<button "4">> <<set _responses = [ "Luka\'s demeanor completely changes. He stands up straight and stares you dead in the eyes.", _luka.dialogue("Who sent you? I\'m no one of importance. Now get out of here if you didn\'t need anything else.") ]>> <</button>>@@ @@#events5;<<button "5">> <<set _responses = [ _luka.dialogue("Eh... it\'s fine. I don\'t really have any needs or uhh... standards, so uh, I\'m happy I guess...") ]>> <</button>>@@ @@#events6;<<button "6">> <</button>>@@ @@#events7;<<button "7">> <</button>>@@ @@#events8;<<button "8">> <</button>>@@ <<set _talk_buttons = []>> <<for _i = 1; _i lte 8; _i++>> <<set _talk_buttons.push("#talk_options #events" + _i)>> <</for>> <<set _talk_buttons_extra = ["#talk_options #events_actions_back", "#talk_options #events_actions_leave"]>> /* Back button is disabled by default */ <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div id="events_actions_back" style="grid-row: 3; grid-column: 5"> <<button "Back">> <<if _refresh>> <<goto `passage()`>> <<else>> <<removeclass "#actions" "hidden">> <<addclass "#talk_options" "hidden">> <</if>> <</button>> </div> <div id="events_actions_leave" style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponSlums">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <<timed 50ms>><<script>> $("#talk_options").find("button").on("click", (event) => { let _t = State.temporary; let _v = State.variables; var self = $(event.currentTarget); if (self.html() == "Back" || self.html() == "Leave") { return; } self.addClass("disabled"); self.prop("disabled", true); _t.options.find("#li" + self.html()).css("text-decoration", "line-through"); if ("responses" in _t) { _t.responses.push(_t.options.clone()); setup.mainLog_append_delayed(_t.responses, _t.talk_buttons, _t.talk_buttons_extra); delete _t.responses; } }); <</script>><</timed>> <</nobr>>
<<nobr>> <<if setup.is_day($gameDate)>> <<set $_to_log += " <div>The market district's bustling cacophony of civilization rings in your ears.</div><br>\ ">> <<else>> <<set $_to_log += " <div>The market district rests quietly with the rest of the people.</div><br>\ ">> <</if>> /* Player is outside */ <<set $player.is_home = false>> <<set $player.is_outside = true>> /* Load in any saved variables */ <<loadVars>> /* Audio engine */ <div class="mapside left"> <<include niponActions>> </div> <div id="background" class="notext" style="padding: 0px"> <img src="resources/maps/niponMarketMap.jpeg" usemap="#image-map"> <map name="image-map"> <area alt="niponMarketDocks" coords="90,112,116,127,128,104,184,128,181,137,218,151,225,132,279,144,289,127,368,28,75,27" shape="poly"> <area alt="niponTradeUnion" coords="806,473,995,590" shape="rect"> <area alt="niponFarms" coords="592,628,699,631,729,695,645,752,557,749,501,749,363,749,367,650,437,610" shape="poly"> <area alt="niponStalls" coords="173,200,230,174,296,204,314,246,374,261,416,294,420,364,415,403,363,469,260,410,162,340,136,278,143,228" shape="poly"> <area alt="niponBlacksmith" coords="440,334,442,413,487,444,546,460,608,449,646,434,646,406,611,335,556,290" shape="poly"> <area alt="niponTheater" coords="394,233,453,278,519,277,520,198,472,163,403,154,377,172,362,195" shape="poly"> <area alt="niponMines" coords="679,283,678,321,666,337,689,356,705,377,708,406,739,429,807,450,845,459,893,458,905,451,951,445,951,431,988,421,1009,411,1007,366,972,333,971,287,941,231,870,224,766,243,730,263" shape="poly"> <area alt="niponAuctionHouse" coords="71,394,158,365,230,409,230,445,165,483,65,459" shape="poly"> <area alt="niponCentral" coords="27,25,68,212" shape="rect"> <area alt="niponSlums" coords="30,229,64,401" shape="rect"> <area alt="east" coords="1368,400,1217,525,1135,650,1040,739,956,802,1371,802" shape="poly"> </map> </div> <div class="mapside right"> <hr> <<include infoNoSubbackground>> </div> <<updatetime>> /* Remove quick bar and setup map */ <<script>> setTimeout(() => { $("#quickbar").addClass("hidden"); var areas = $("map").children("area"); for (var _i = 0; _i < areas.length; _i++) { var obj = $(areas[_i]); if (!(setup.locations.has(obj.attr("alt")))) { continue; } var loc = setup.locations.get(obj.attr("alt")); if (!State.variables.locations[loc.key].access) { obj.addClass("noaccess"); obj.attr("onclick", "$.wiki('<<notify>>No Access!<</notify>>')"); obj.attr("title", "No access."); } else if (!loc.has_access()) { obj.addClass("closed"); obj.attr("onclick", "$.wiki('<<notify>>Closed!<</notify>>')"); var opening_time = loc.access_times[0]; var opening_time_str = ""; if (opening_time == 0) { opening_time_str = "12 AM."; } else if (opening_time < 12) { opening_time_str = opening_time.toString() + " AM."; } else if (opening_time == 12) { opening_time_str = "12 PM."; } else { opening_time_str = (opening_time - 12).toString() + " PM."; } obj.attr("title", "Opens at " + opening_time_str); } else { obj.addClass("access"); var onclick = "SugarCube.setup.locations.get('" + obj.attr("alt") + "').goto("; if (loc.inside) { onclick += "'wooden_door_sound'"; } onclick += ")"; obj.attr("onclick", onclick); } } }, 10); <</script>> <</nobr>>
<<nobr>> <div id="actions" class="action container row col longbutton fiveQuarters" style="--rows: 4; --cols: 4"> <<button "Work">> <<run $("#info_title").html("Working at the Nipon Mines")>> <<set _default_info = $("<div>\ <div id=\"normal_job\">\ It seems like there\'s never enough hands on deck at the Nipon mines. You could \ work here for a while and gain some lari if you wanted.\ <ul id=\"change_list\">\ <li id=\"li1\">" + setup.LARI + "10 per hour.</li>\ <li id=\"li2\">3% per hour chance to gain strength (capped at 30).</li>\ <li id=\"li3\">1% per hour chance of injury.</li>\ </ul></div>\ <div id=\"explore_job\">\ You also see some smaller crevasses that seem completely unexplored. If you wanted \ you could pick up a pickaxe lying about and go exploring for ore to keep for yourself.\ <ul>\ <li id=\"li3\">3% per hour chance to obtain iron.</li>\ <li id=\"li4\">1% per hour chance to obtain silver.</li>\ <li id=\"li6\">Additional 3% per hour chance of injury.</li>\ </ul></div>\ </div>")>> <<run $("#infoLogBody").html("")>> <<run $("#infoLogBody").append(_default_info.clone())>> <<removeclass "#work_actions" "hidden">> <<addclass "#actions" "hidden">> <<removeclass "#infoLog" "hidden">> <<addclass "#mainLog" "hidden">> /* Reset all button states */ <<run $("#workStartButton button").prop("disabled", true)>> <<addclass "#workStartButton button" "disabled">> <<run $("#explore button").prop("disabled", true)>> <<addclass "#explore button" "disabled">> <<run $("#work1Hr button").prop("disabled", false)>> <<removeclass "#work1Hr button" "disabled">> <<run $("#work4Hr button").prop("disabled", false)>> <<removeclass "#work4Hr button" "disabled">> <<run $("#work8Hr button").prop("disabled", false)>> <<removeclass "#work8Hr button" "disabled">> <<set _explore = false>> <</button>> <<button "Assignments">> <<if _has_assignment>> <<if setup.in_range($gameDate.getHours(), setup.assignments["mines"].times)>> <<notify>>WIP<</notify>> <<removeclass "#assignment_options" "hidden">> <<addclass "#actions" "hidden">> <<else>> <<notify>>Slaves assigned the Nipon Mines are off work at this hour.<</notify>> <</if>> <<else>> <<notify>>You do not have any slaves assigned to the Nipon Mines.<</notify>> <</if>> <</button>> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponMarket">> <<include locationButton>> </div> </div> <</nobr>>
<<set _has_assignment = false>> <div id="assignment_options" class="action container smalltext row col hidden" style="--rows: 4; --cols: 5"> <<for _idx, _val range $to_simulate_day>> <<if $characters[_val].assignment == "mines">> <<set _has_assignment = true>> <<capture _val>> /* TODO: Add ability to check on slaves in mine */ <<disable>> <<button `setup.titleCase($characters[_val].first_name)`>> <<set _char = $characters[_val]>> <<run setup.mainLog_append_delayed(["You approach " + setup.titleCase(_char.first_name) + " who is on break,"])>> <<removeclass "#assignment_actions" "hidden">> <<addclass "#assignment_options" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _char.image_folder() + _char.first_name.toLowerCase() + "_" + _char.get_disposition() + ".png\")" )>> <</button>> <</disable>> <</capture>> <</if>> <</for>> <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div style="grid-row: 3; grid-column: 5"><<button "Back">> <<removeclass "#actions" "hidden">> <<addclass "#assignment_options" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "")>> <</button>></div> <div style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponCentral">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div>
<<nobr>> <<if $quests.the_nipon_economy.stage == 0>> /* Forward Nipon Economy quest */ <<if !$quest_journal.completed.contains("the_nipon_economy") && $quests.the_nipon_economy.added && $quests.the_nipon_economy.stage lt 1>> <<set $quests.the_nipon_economy.stage = 1>> <</if>> <</if>> <<set $_to_log = " <div>You find yourself at the northern Nipon river delta where there is a distict smell \ of smoke. Within the valley there are dozens of operating mines filled with workers with \ hollow eyes.</div><br>\ ">> /* Load in any saved variables */ <<loadVars>> /* Audio engine */ <div id="background" class="paper_border notext"> <div class="main container fourCol threeRow" style="height: 100%; width: 100%;"> <div class="subbackground mainLogContainer"> <<include mainLog>> <<include infoLog>> </div> <<include info>> <div id="action_bar" class="subbackground" style="grid-row: 3 / span 1; grid-column: 1 / span 3"> <<include niponMinesActions>> <<include niponMinesWorkActions>> <<include niponMinesAssignmentOptions>> </div> </div> </div> <<updatetime>> <</nobr>>
<<nobr>> <div id="work_actions" class="action container row col fiveQuarters smalltext longbutton hidden" style="--rows: 4; --cols: 4"> <<script>> State.temporary.button_func = (adv) => { var v = State.variables; var _t = State.temporary; var player = v.player; if (_t.explore) { $("#infoLogBody").html(""); $("#infoLogBody").append(_t.default_info.clone()); } _t.explore = false; _t.to_advance_hr = adv; $("#workStartButton button").prop("disabled", true); $("#workStartButton button").addClass("disabled"); $("#explore button").prop("disabled", true); $("#explore button").addClass("disabled"); if (player.conditions.stamina > (adv * -180 * ((3/10 * player.stats.strength - v.time_awake / 7) - adv * 60 / 14) / 1440)) { $("#explore button").prop("disabled", false); $("#explore button").removeClass("disabled"); $("#workStartButton button").prop("disabled", false); $("#workStartButton button").removeClass("disabled"); $("#work" + adv + "Hr button").prop("disabled", true); $("#work" + adv + "Hr button").addClass("disabled"); $("#explore_job").addClass("hidden"); $("#li1").html(setup.LARI + (10 * adv).toString()); var _strength_perc = 3; if (v.difficulty == -2) { _strength_perc *= 2; } else if (v.difficulty == -1) { _strength_perc *= 1.5; } if (player.stats.strength >= 30) { _strength_perc = 0; } $("#li2").html((_strength_perc * adv).toString() + "% chance to gain strength."); $("#li3").html((1 * adv).toString() + "% chance of injury."); } else { $("#infoLogBody").html(""); $("#infoLogBody").append(_t.default_info.clone()); var _to_notify = "You are too tired to work " + adv; if (adv == 1) { _to_notify += " hour."; } else { _to_notify += " hours."; } $.wiki("<<notify>>" + _to_notify + "<</notify>>"); } } <</script>> /* How long we want to work for */ <div style="grid-row: 1; grid-column: 1"> @@#work1Hr;<<button "1 Hour">> /* Enable other options */ <<run $("#work4Hr button").prop("disabled", false)>> <<removeclass "#work4Hr button" "disabled">> <<run $("#work8Hr button").prop("disabled", false)>> <<removeclass "#work8Hr button" "disabled">> <<run _button_func(1)>> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 2"> @@#work4Hr;<<button "4 Hours">> /* Enable other options */ <<run $("#work1Hr button").prop("disabled", false)>> <<removeclass "#work1Hr button" "disabled">> <<run $("#work8Hr button").prop("disabled", false)>> <<removeclass "#work8Hr button" "disabled">> <<run _button_func(4)>> <</button>>@@ </div> <div style="grid-row: 1; grid-column: 3"> @@#work8Hr;<<button "8 Hours">> /* Enable other options */ <<run $("#work1Hr button").prop("disabled", false)>> <<removeclass "#work1Hr button" "disabled">> <<run $("#work4Hr button").prop("disabled", false)>> <<removeclass "#work4Hr button" "disabled">> <<run _button_func(8)>> <</button>>@@ </div> <div> <<disable>> @@#explore;<<button "Explore">> <<run $("#explore button").prop("disabled", true)>> <<addclass "#explore button" "disabled">> <<set _explore = true>> <<script>> var adv = State.temporary.to_advance_hr; let _v = State.variables; let perc_iron = 3; let perc_silver = 1; if (_v.difficulty == -2) { perc_iron *= 2; perc_silver *= 2; } else if (_v.difficulty == -1) { perc_iron *= 1.5; perc_silver *= 1.5; } $("#li3").html((4 * adv).toString() + "% chance of injury"); $("#change_list").append($("<li>" + (perc_iron * adv).toString() + "% chance to obtain iron.</li>")); $("#change_list").append($("<li>" + (perc_silver * adv).toString() + "% chance to obtain silver.</li>")); <</script>> <</button>>@@ <</disable>> </div> <div style="grid-row: 1; grid-column: 4"> <<disable>> @@#workStartButton;<<button "Start">> <<include niponMinesWorkEngine>> <</button>>@@ <</disable>> </div> <div style="grid-row: 3; grid-column: 4"> <<button "Back">> <<removeclass "#actions" "hidden">> <<addclass "#work_actions" "hidden">> <<removeclass "#mainLog" "hidden">> <<addclass "#infoLog" "hidden">> <</button>> </div> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponMarket">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> /* Information about work */ <<set $_temp_to_log = "\ <div>You spent time working at the Nipon mines.</div>\ ">> /* Get clone of player to display changes */ <<set _player = clone($player)>> /* Forward time along with dynamics */ <<set $player.is_working = true>> <<addhours _to_advance_hr>> <<set $player.is_working = false>> /* Calculate pay */ <<set _pay = 10 * _to_advance_hr>> <<addmoney _pay>> <<audio "coins_sound" play>> <<include round>> /* Simulate strength roll */ <<set _roll = randomFloat(1.0)>> <<set _thresh = _to_advance_hr * 3 / 100>> <<if $difficulty == -2>> <<set _thresh *= 2>> <<elseif $difficulty == -1>> <<set _thresh *= 1.5>> <</if>> <<if $player.stats.strength gte 30>> <<set _thresh = 0>> <</if>> <<if _roll lt _thresh>> <<set $player.stats.strength += 1>> <<set $_temp_to_log += "<div>You worked yourself the perfect amount to build your frame (Strength " + setup.show_change_html(0, 1) + ")</div>">> <</if>> /* Simulate injury roll */ <<set _roll = randomFloat(1.0)>> <<set _thresh = _to_advance_hr * 2 / 100>> <<if _explore>> <<set _thresh += _to_advance_hr * 3 / 100>> <</if>> <<if _roll lt _thresh>> <<set _roll = randomFloat(1.0)>> <<set _to_injure = 1>> <<if _roll gte .5>> <<set _to_injure += 1>> <</if>> <<set $_temp_to_log += "<div>You over-worked yourself, tripping over some rocks and twisting your ankle (Dexterity " + setup.show_change_html(_to_injure, 0) + ")</div>">> <<set $player.stats.dexterity -= _to_injure>> <</if>> /* Check if there were any changes at all */ <<set _changes = false>> <<for _key, _val range _player.conditions>> <<if _val != $player.conditions[_key]>> <<set _changes = true>> <<break>> <</if>> <</for>> <<for _key, _val range _player.slave_traits>> <<if _val != $player.slave_traits[_key]>> <<set _changes = true>> <<break>> <</if>> <</for>> <<for _key, _val range _player.stats>> <<if _val != $player.stats[_key]>> <<set _changes = true>> <<break>> <</if>> <</for>> <<if _changes>> <<set $_temp_to_log += "<br><b>Work total stat changes:</b>">> <<set $_temp_to_log += "<ul>">> /* Add in stats changes */ <<for _key, _val range _player.stats>> <<if _val != $player.stats[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.stats[_key], true) + "</li>")>> <</if>> <</for>> /* Add in condition changes */ <<for _key, _val range _player.conditions>> <<if _val != $player.conditions[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.conditions[_key], true) + "</li>")>> <</if>> <</for>> /* Add in slave trait changes */ <<for _key, _val range _player.slave_traits>> <<if _val != $player.slave_traits[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.slave_traits[_key], true) + "</li>")>> <</if>> <</for>> <<set $_temp_to_log += "<li>Lari: <span style=\"color: green\">" + setup.LARI + _pay + "</span></li>">> <</if>> /* Simulate exploration */ <<if _explore>> /* Roll for iron */ <<set _roll = randomFloat(1.0)>> <<set _thresh = 3 * _to_advance_hr / 100>> <<if $difficulty == -2>> <<set _thresh *= 2>> <<elseif $difficulty == -1>> <<set _thresh *= 1.5>> <</if>> <<if _roll lt _thresh>> <<run UInv.AddItem("inventory", "iron", 1)>> <<set $_temp_to_log += "<li><span style=\"color: green\">" + setup.show_change_html(0, 1) + " Iron Ignot: </span></li>">> <</if>> /* Roll for silver */ <<set _roll = randomFloat(1.0)>> <<set _thresh = 1 * _to_advance_hr / 100>> <<if $difficulty == -2>> <<set _thresh *= 2>> <<elseif $difficulty == -1>> <<set _thresh *= 1.5>> <</if>> <<if _roll lt _thresh>> <<run UInv.AddItem("inventory", "silver", 1)>> <<set $_temp_to_log += "<li><span style=\"color: green\">" + setup.show_change_html(0, 1) + " Silver Ignot: </span></li>">> <</if>> <</if>> /* Close off changes */ <<set $_temp_to_log += "</ul>">> /* Unset variables */ <<unset _changes>> <<unset _to_advance_hr>> <<unset $_player>> /* Re-enable menu */ <<set $enable_menu = true>> <<goto "niponMines">> <</nobr>>
<<nobr>> <div id="actions" class="action container row col longbutton fiveQuarters" style="--rows: 4; --cols: 4"> <<button "Shop">><</button>> <<button "Trade">> <<script>> $("#actions").addClass("hidden"); $("#trade_options").removeClass("hidden"); <</script>> <</button>> <<disable>> <<button "Work">><</button>> <</disable>> <<disable>> <<button "Gamble">><</button>> <</disable>> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponMarket">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> /* TODO: Implement blackjack */ <div id="gamble_actions" class="action container row col" style="--rows: 4; --cols: 5"> @@#round1;.rounds;<<button "1 Round">> <</button>>@@ @@#round2;.rounds;<<button "2 Rounds">> <</button>>@@ @@#round3;.rounds;<<button "3 Rounds">> <</button>>@@ @@#round4;.rounds;<<button "4 Rounds">> <</button>>@@ <<button "Rules">> <<popover>> The common game of jurook is the main game played at both parties and gambling sessions within Nipon. First popularized by Shintani, Jurook is a simpler version of Blackjack where splitting and doubling down is not allowed. <</popover>> <</button>> @@#bet20;.bet;<<button "¤20/round">> <</button>>@@ @@#bet50;.bet;<<button "¤50/round">> <</button>>@@ @@#bet100;.bet;<<button "¤100/round">> <</button>>@@ @@#bet200;.bet;<<button "¤200/round">> @@#gamble_start;<<button "Start">><</button>>@@ <</button>>@@ @@#gamble_back;<<button "Back">> <</button>>@@ <div id="gamble_leave" style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponMarket">> <<include locationButton>> </div> <<set $buttons = ["#round1", "#round2", "#round3", "#round4", "#bet20", "#bet50", "#bet100", "#bet200"]>> <<set $buttons_extra = ["#gamble_back", "#gamble_leave"]>> </div> <<set _dealer = new setup.Character("dealer")>> <<set _dealer.first_name = "Dealer">> <<timed 50ms>><<script>> $(".rounds button").on("click", (event) => { let player = State.variables.player; let dealer = State.temporary.dealer; $(".rounds button").removeClass("disabled"); $(".rounds button").prop("disabled", false); $(".bet button").addClass("disabled"); $(".bet button").prop("disabled", true); var self = $(event.currentTarget); let rounds = setup.numerize(self.html()); if (rounds >= 3) { let responses = [player.dialogue("Let\'s play " + rounds + " rounds,")] if (player.get_status_prop("tact") < 40) { responses.push(setup.fail("tact")); responses.push("The dealer looks at you and for some reason feels no need to push his luck,"); responses.push(dealer.dialogue("Yeah, I don\'t know about that...")); } else { responses.push(setup.pass("tact")); responses.push(dealer.dialogue("Yeah, okay, goodluck.")); self.addClass("disabled"); self.prop("disabled", true); State.temporary.rounds = rounds; $(".bet button").removeClass("disabled"); $(".bet button").prop("disabled", false); } } }); $(".bet button").on("click", (event) => { let player = State.variables.player; $(".bet button").removeClass("disabled"); $(".bet button").prop("disabled", false); var self = $(event.currentTarget); self.addClass("disabled"); self.prop("disabled", true); if (player.get_money() < setup.numerize(self.html())) }); <</script>><</timed>> <</nobr>>
<<nobr>> <<if $quests.the_nipon_economy.stage lte 1>> /* Forward Nipon Economy quest */ <<if !$quest_journal.completed.contains("the_nipon_economy") && $quests.the_nipon_economy.added && $quests.the_nipon_economy.stage lt 2>> <<set $quests.the_nipon_economy.stage = 2>> <</if>> <</if>> <<set $_to_log = " <div>You enter the bustling market stalls to find hundreds of people buying, selling and bartering \ away. With the lari to your name, you can feel the heavy greed in the air.</div><br>\ ">> /* Load in any saved variables */ <<loadVars>> /* Audio engine */ <div id="background" class="paper_border notext"> <div class="main container fourCol threeRow" style="height: 100%; width: 100%;"> <div class="subbackground mainLogContainer"> <<include mainLog>> <div id="commodityLog" class="mainLog hidden"> <center> <div style="margin: 20px"> <b id="commodity_name"></b><br> ''Spread'': <span id="commodity_spread">2%</span> </div> </center> <div class="container threeCol"> <div class="container twoCol"> <p> Holding: <br> Midprice: <br> Sigma: <br> Theta: <br> EQ-price: <br> EQ-trend: <br> </p> <p id="commodity_stats" style="text-align: right"> </p> </div> <center class="smalltext"> <div> ''Buy Price'': <span id="commodity_buy_price">$5</span> </div><br> <div class="column"> @@#buy1;<<button "Buy">> <<removemoney _buy_price>> <<run UInv.AddItem("inventory", _selected)>> <<updatecommodities _selected>> <<audio "coins_sound" play>> <<addmins 10>> <</button>>@@ @@#buy5;<<button "Buy 5">> <<set _to_pay = 5 * _buy_price>> <<removemoney _to_pay>> <<run UInv.AddItem("inventory", _selected, 5)>> <<updatecommodities _selected>> <<unset _to_pay>> <<audio "coins_sound" play>> <<addmins 20>> <</button>>@@ @@#buyall;<<button "Buy all">> <<set _to_buy = parseInt($player.get_money() / _buy_price)>> <<set _to_pay = _to_buy * _buy_price>> <<removemoney _to_pay>> <<run UInv.AddItem("inventory", _selected, _to_buy)>> <<updatecommodities _selected>> <<unset _to_buy>> <<unset _to_pay>> <<audio "coins_sound" play>> <<addmins 30>> <</button>>@@ </div> </center> <center class="smalltext"> <div> ''Sell Price'': <span id="commodity_sell_price">$5</span> </div><br> <div class="column"> @@#sell1;<<button "Sell">> <<addmoney _sell_price>> <<run UInv.DeleteItem("inventory", _selected, 1)>> <<updatecommodities _selected>> <<audio "coins_sound" play>> <<addmins 10>> <</button>>@@ @@#sell5;<<button "Sell 5">> <<set _to_pay = 5 * _sell_price>> <<addmoney _to_pay>> <<run UInv.DeleteItem("inventory", _selected, 5)>> <<updatecommodities _selected>> <<unset _to_pay>> <<audio "coins_sound" play>> <<addmins 20>> <</button>>@@ @@#sellall;<<button "Sell all">> <<set _to_sell = UInv.BagHasItem("inventory", _selected)>> <<set _to_pay = _to_sell * _sell_price>> <<addmoney _to_pay>> <<run UInv.DeleteItem("inventory", _selected, _to_sell)>> <<updatecommodities _selected>> <<unset _to_sell>> <<unset _to_pay>> <<audio "coins_sound" play>> <<addmins 30>> <</button>>@@ </div> </center> </div> </div> </div> <<include info>> <div id="action_bar" class="subbackground" style="grid-row: 3 / span 1; grid-column: 1 / span 3"> <<include niponStallsActions>> <<include niponStallsTradeOptions>> </div> </div> </div> <<updatetime>> <<timed 50ms>><<script>> $(".column").find("button").on("click", (event) => { let _t = State.temporary; let _v = State.variables; if (_v.gameDate.getHours() >= setup.locations.get(passage()).access_times[1]) { $.wiki("<<notify>>The Nipon Stalls have closed.<</notify>>"); Engine.play("niponMarket"); } }); <</script>><</timed>> <</nobr>>
<<nobr>> <div id="trade_options" class="action container row col longbutton fiveQuarters hidden" style="--rows: 4; --cols: 4"> <div style="grid-row: 1; grid-column: 4"></div> <div style="grid-row: 2; grid-column: 4"></div> <div id="back_button" style="grid-row: 3; grid-column: 4"> <<button "Back">> <<script>> $("#actions").removeClass("hidden"); $("#trade_options").addClass("hidden"); <</script>> <</button>> </div> <div id="back_to_options_button" class="hidden" style="grid-row: 3; grid-column: 4"> <<button "Back">> <<script>> $("#commodityLog").addClass("hidden"); $("#mainLog").removeClass("hidden"); $("#back_to_options_button").addClass("hidden"); $("#back_button").removeClass("hidden"); $(".to_hide").removeClass("hidden"); <</script>> <</button>> </div> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponMarket">> <<include locationButton>> </div> <<for _key, _val range $commodities>> <<capture _key>> <div class="to_hide"> <<button `setup.titleCase(_key)`>> <<set _selected = _key>> <<set _halfspread = setup.sigmoid($difficulty) * .1>> <<if $player.titles.has("well_connected")>> <<set _halfspread *= 0.5>> <</if>> <<updatecommodities _selected>> <</button>> </div> <</capture>> <</for>> </div> <</nobr>>
<<nobr>> <div id="actions" class="action container row col longbutton fiveQuarters" style="--rows: 4; --cols: 4"> <<button "Talk">> <<if ndef _shown_talk_options || !_shown_talk_options>> <<set _shown_talk_options = true>> <<script>> var div = $("<div></div>"); var html = " <ol>\ <li>Ask about the Nipon Trade Union.</li>\ <li>Ask about trading.</li>\ <li>Ask about Nipon.</li>\ <li>Ask about her background.</li>\ <li>Patron options.</li>\ </ol>"; div.html(html); setup.mainLog_append(div); <</script>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <</if>> <<addclass "#actions" "hidden">> <<removeclass "#events_actions" "hidden">> <</button>> <<button "Trade">> <<addclass "#actions" "hidden">> <<removeclass "#trade_options" "hidden">> <</button>> <<disable>> @@#office;<<button "Office">> <</button>>@@ <</disable>> <div style="grid-row: 1; grid-column: 4"></div> <div style="grid-row: 2; grid-column: 4"></div> <div style="grid-row: 3; grid-column: 4"></div> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponMarket">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <<if $quests.the_nipon_economy.stage lte 2>> /* Forward Nipon Economy quest */ <<if !$quest_journal.completed.contains("the_nipon_economy") && $quests.the_nipon_economy.added && $quests.the_nipon_economy.stage lt 3>> <<set $quests.the_nipon_economy.stage = 3>> <</if>> <</if>> <<set $_to_log = " <div>You can tell the decadent trade union was one of the first buildings in Nipon. A heavy \ feeling of self-importance lingers in the main hall. You see a beautiful woman standing at \ the counter, and guards lining the walls of the room. She approaches you somewhat \ apprehensively.</div><br>" + $characters.lia_hiroyuki.dialogue("Welcome to the Nipon Trade Union; how may I help you?") >> /* Load in any saved variables */ <<loadVars>> /* Audio engine */ <div id="background" class="paper_border notext"> <div class="main container fourCol threeRow" style="height: 100%; width: 100%;"> <div class="subbackground mainLogContainer"> <<include mainLog>> <<script>> setTimeout(() => { var lia = State.variables.characters.lia_hiroyuki; $("#mainLogCharacterImage").css("background-image", "url(\"" + lia.image_folder() + "niponTradeUnion_lia_neutral.png\")" ); }, 10); <</script>> <div id="commodityLog" class="mainLog hidden"> <center> <div style="margin: 20px"> <b id="commodity_name"></b><br> ''Spread'': <span id="commodity_spread"></span> </div> </center> <div class="container threeCol"> <div class="container twoCol"> <p> Holding: <br> Midprice: <br> Sigma: <br> Theta: <br> EQ-price: <br> EQ-trend: <br> </p> <p id="commodity_stats" style="text-align: right"> </p> </div> <center class="smalltext"> <div> ''Buy Price'': <span id="commodity_buy_price"></span> </div><br> <div class="column"> @@#buy20;<<button "Buy 20">> <<set _to_pay = 20 * _buy_price>> <<removemoney _to_pay>> <<run UInv.AddItem("inventory", _selected, 20)>> <<updatecommodities _selected>> <<unset _to_pay>> <<audio "coins_sound" play>> <</button>>@@ @@#buy50;<<button "Buy 50">> <<set _to_pay = 50 * _buy_price>> <<removemoney _to_pay>> <<run UInv.AddItem("inventory", _selected, 50)>> <<updatecommodities _selected>> <<unset _to_pay>> <<audio "coins_sound" play>> <</button>>@@ @@#buy100;<<button "Buy 100">> <<set _to_pay = 100 * _buy_price>> <<removemoney _to_pay>> <<run UInv.AddItem("inventory", _selected, 100)>> <<updatecommodities _selected>> <<unset _to_pay>> <<audio "coins_sound" play>> <</button>>@@ </div> </center> <center class="smalltext"> <div> ''Sell Price'': <span id="commodity_sell_price"></span> </div><br> <div class="column"> @@#sell20;<<button "Sell 20">> <<set _to_pay = 20 * _sell_price>> <<addmoney _to_pay>> <<run UInv.DeleteItem("inventory", _selected, 20)>> <<updatecommodities _selected>> <<unset _to_pay>> <<audio "coins_sound" play>> <</button>>@@ @@#sell50;<<button "Sell 50">> <<set _to_pay = 50 * _sell_price>> <<addmoney _to_pay>> <<run UInv.DeleteItem("inventory", _selected, 50)>> <<updatecommodities _selected>> <<unset _to_pay>> <<audio "coins_sound" play>> <</button>>@@ @@#sell100;<<button "Sell 100">> <<set _to_pay = 100 * _sell_price>> <<addmoney _to_pay>> <<run UInv.DeleteItem("inventory", _selected, 100)>> <<updatecommodities _selected>> <<unset _to_pay>> <<audio "coins_sound" play>> <</button>>@@ </div> </center> </div> </div> </div> <<include info>> <div id="action_bar" class="subbackground" style="grid-row: 3 / span 1; grid-column: 1 / span 3"> <<include niponTradeUnionActions>> <<include niponTradeUnionTalkOptions>> <<include niponTradeUnionTradeOptions>> </div> </div> </div> <<updatetime>> <</nobr>>
<<nobr>> <div id="events_actions" class="action container row col hidden" style="--rows: 4; --cols: 5"> <<set _main_options = "\ <ol>\ <li>Ask about the Nipon Trade Union.</li>\ <li>Ask about trading.</li>\ <li>Ask about Nipon.</li>\ <li>Ask about her background.</li>\ <li>Patron options.</li>\ </ol>\ ">> @@#events1;<<button "1">> <<addclass "#events_actions_back" "hidden">> <<addclass "#events_actions_leave" "hidden">> <<set $enable_menu = false>> <<if ndef _action>> <<set _action = 1>> <<set _responses = [$characters.lia_hiroyuki.dialogue( "The Trade Union is one of the last structures left in tact after the great dusting. \ Our founders believed in free-trade and since we provide necessary resources, we yield \ a great deal of political power within settlements. This is exacerbated by the fact that \ we also act as a bank, providing backing for the lari. We mainly cater toward settlement \ owners or the very affluent. Finally, we are also information brokers, and have the latest \ news of the world for our patrons." )]>> <<set _options = $( "<ol>\ <li id=\"li1\">\"What are patrons?\"</li>\ <li id=\"li2\">\"So where does that put you with Nipon?\"</li>\ <li id=\"li3\">\"I see.\"</li>\ </ol>" )>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 3>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <<elseif _action == 1>> <<run $("#events1 button").prop("disabled", true)>> <<addclass "#events1 button" "disabled">> /* About Nipon Trade Union -> What are patrons? */ <<set _responses = [$characters.lia_hiroyuki.dialogue( "Patrons are people throughout this world who keep the Trade Union in business. By \ supplying us with a monthly membership fee, you will have access to our information \ network. Something one might find immediately useful is our statistics of the different \ commodities around the world, though they require a bit of understanding about economics." )]>> <<set _options.find("#li1").css("text-decoration", "line-through")>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<elseif _action == 2>> /* About Trading -> What's a semi-stable pattern? */ <<run $("#events1 button").prop("disabled", true)>> <<addclass "#events1 button" "disabled">> /* About Nipon Trade Union -> So where does that put you with Nipon? */ <<set _responses = [$characters.lia_hiroyuki.dialogue( "On a high level, a semi-stable pattern describes an asset where the instantaneous \ behavior of the asset follows a mean-reverting trajectory. Specifically it follows \ an Ornstein-Uhlenbeck process. One of the perks of being a patron of the Trade Union \ is being able to know the parameters of this OU-process at any given time." )]>> <<set _options.find("#li1").css("text-decoration", "line-through")>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<elseif _action == 3>> /* About Nipon -> It's been a living hell */ <<set _responses = [ "Lia quickly realizes that there were eyes all around the room \ she leans in and whispers, (Lia\'s Trust " + setup.show_change_html(0, 2) + ")", $characters.lia_hiroyuki.dialogue( "Meet me at my place after I get off work at 7 PM. I live in the \ large tower in the north west corner of Central Nipon." ), "Lia resumes her normal voice,", $characters.lia_hiroyuki.dialogue( "And that\'s what makes Nipon one of the best settlements in the world! \ Now, is there anything else you needed?" ), _main_options ]>> <<set $characters.lia_hiroyuki.slave_traits.trust += 2>> <<set _to_round = "lia_hiroyuki">> <<include round>> <<set $locations["liasTower"].access = true>> <<set $quests["power_struggles"].added = true>> <<set $quests.power_struggles.data.side = "lia">> <<set $quest_journal.ongoing.push("power_struggles")>> <<notify>>Quest <em>Power Struggles</em> added to journal!<</notify>> <<audio "quest_added_sound" play>> <<unset _action>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <<elseif _action == 5>> /* Patron options -> I'd like to become a patron */ /* TODO: Implement */ <<set _responses = [ $characters.lia_hiroyuki.dialogue("Is there anything else you need?"), _main_options ]>> <<unset _action>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events2;<<button "2">> <<addclass "#events_actions_back" "hidden">> <<addclass "#events_actions_leave" "hidden">> <<if ndef _action>> <<set _action = 2>> <<set _responses = [$characters.lia_hiroyuki.dialogue( "The Trade Union offers trading in both commodities and equities, however we \ only offer commodity trading in bulk. If you want to trade a low amount of commodities \ I recommend checking out the market stalls during the day. Commodities in general follow \ a semi-stable pattern while equities are don\'t." )]>> <<set _options = $( "<ol>\ <li id=\"li1\">\"What\'s a semi-stable pattern?\"</li>\ <li id=\"li2\">\"I see.\"</li>\ </ol>" )>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 2>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <<elseif _action == 1>> <<run $("#events2 button").prop("disabled", true)>> <<addclass "#events2 button" "disabled">> /* About Nipon Trade Union -> So where does that put you with Nipon? */ <<set _responses = [$characters.lia_hiroyuki.dialogue( "We have a good working relationship with Nipon. As you may already know Nipon is one of the \ best settlements currently in terms of its prosperity. Though of course it is not without its \ own issues. We hope that the Trade Union and Nipon can continue working hand-in-hand for the \ good of mankind." ), "You can tell that everything Lia is saying is memorized, and you sense a slight tremor in her voice.", ]>> <<set _options.find("#li2").css("text-decoration", "line-through")>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<elseif _action == 2>> /* About Trading -> I see. */ <<set _responses = [ $characters.lia_hiroyuki.dialogue("Did you need anything else?"), _main_options ]>> <<unset _action>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <<elseif _action == 3>> /* About Nipon -> What do you expect me to say? */ <<set _responses = [ "Lia quickly realizes that there were eyes all around the room \ she leans in and whispers, (Lia\'s Trust " + setup.show_change_html(0, 5) + ")", $characters.lia_hiroyuki.dialogue( "Meet me at my place after I get off work at 7 PM. I live in the \ large tower in the north west corner of Central Nipon." ), "Lia resumes her normal voice,", $characters.lia_hiroyuki.dialogue( "And that\'s what makes Nipon one of the best settlements in the world! \ Now, is there anything else you needed?" ), _main_options ]>> <<set $characters.lia_hiroyuki.slave_traits.trust += 5>> <<set _to_round = "lia_hiroyuki">> <<include round>> <<set $locations["liasTower"].access = true>> <<set $quests["power_struggles"].added = true>> <<set $quests.power_struggles.data.side = "lia">> <<set $quest_journal.ongoing.push("power_struggles")>> <<notify>>Quest <em>Power Struggles</em> added to journal!<</notify>> <<audio "quest_added_sound" play>> <<unset _action>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <<elseif _action == 5>> /* Patron options -> I'd like to cancel my patronage */ /* TODO: Implement */ <<set _responses = [ $characters.lia_hiroyuki.dialogue("Is there anything else you need?"), _main_options ]>> <<unset _action>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events3;<<button "3">> <<addclass "#events_actions_back" "hidden">> <<addclass "#events_actions_leave" "hidden">> <<if ndef _action>> <<set _action = 3>> <<if $player.is_slave && !$quests.power_struggles.added>> <<set _responses = [ "Lia\'s eyes wonder over to your neck where the symbol of the Hiroyuki \ household rests. You see her expression soften a bit but you are unable \ to tell if it\'s simply pity or something more.", $characters.lia_hiroyuki.dialogue(" Well Nipon is one of the most prosperous settlements right now. Like \ most settlements after the great dusting, Nipon\'s economy and culture \ is based on slavery...\ "), "Lia\'s voice fades off to a whisper as she locks eye contact with you,", $characters.lia_hiroyuki.dialogue(" You\'ve obviously experienced it yourself. Tell me, what do you think \ of being a slave in Nipon?\ ") ]>> <<set _options = $( "<ol>\ <li>\"It\'s been a living hell.\"</li>\ <li>\"What do you expect me to say to that?\"</li>\ <li>\"It\'s been great overall.\"</li>\ </ol>" )>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 3>> <<disableactions>> <<stop>> <</if>><</repeat>><</silently>> <<else>> <<set _responses = [ "Lia leans in and says discretely,", $characters.lia_hiroyuki.dialogue("Meet me at my place after I get off work at 7 PM."), "Lia resumes her normal voice,", $characters.lia_hiroyuki.dialogue( "And that\'s what makes Nipon one of the best settlements in the world! \ Now, is there anything else you needed?" ), _main_options ]>> <<unset _action>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <<elseif _action == 1>> /* About Nipon Trade Union -> I see. */ <<set _responses = [ $characters.lia_hiroyuki.dialogue("Did you need anything else?"), _main_options ]>> <<unset _action>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <<elseif _action == 3>> /* About Nipon -> It's been great overall */ <<set _responses = [ "Lia sighs and immediately forms an obviously fake smile on her face,", $characters.lia_hiroyuki.dialogue( "That\'s great to hear! Nipon is built so everyone, including slaves, \ can thrive! Did you need anything else?" ), _main_options ]>> <<unset _action>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <<elseif _action == 5>> /* Patron options -> Nevermind */ <<set _responses = [ $characters.lia_hiroyuki.dialogue("Is there anything else you need?"), _main_options ]>> <<unset _action>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <</button>>@@ @@#events4;<<button "4">> <<set _action = 4>> <<set _responses = [ "Your eyes wonder over to the name plate sitting on the counter,", $player.dialogue("Lia Hiroyuki... you\'re Shintani\'s sister?"), "You catch yourself as you realize your tone is too impolite,", $player.dialogue("\ Apologies, I was caught off guard, Shintani had not told me about him having \ any family in Nipon. If I may ask, what role do you serve in Nipon?\ "), "Lia\'s eyes drift downwards,", $characters.lia_hiroyuki.dialogue( "Well yes, I am Shintani\'s younger sister, but I\'m afraid we don\'t see eye \ to eye on everything. When I joined the trade union Shintani sold off our parents \ to fund what Nipon is today. If it hadn\'t been for the union\'s support, I\'d \ have been long gone by now." ), "Lia\'s voice fades and her eyes dart across the room, you can tell this isn\'t a good \ place for you to ask her these questions. After a moment, Lia remembers where she is,", $characters.lia_hiroyuki.dialogue( "Sorry it\'s quite complicated I\'d rather not get into it right now, was there \ anything else you needed?" ), _main_options ]>> <<unset _action>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 5>> <<set _disable_buttons = false>> <<disableactions>> <<set $enable_menu = true>> <<stop>> <</if>><</repeat>><</silently>> <</button>>@@ @@#events5;<<button "5">> <<addclass "#events_actions_back" "hidden">> <<addclass "#events_actions_leave" "hidden">> <<set _action = 5>> <<set _responses = [$characters.lia_hiroyuki.dialogue( "There are many ways to become a patron of the trade union. Note that \ being a patron extends not only to the trade union in Nipon, but also \ the trade union in other settlements as well. The most common way is for \ someone to pay 200 lari per week, however this option is only available for \ citizens and not slaves. For a slave to get the benefits of a patron their \ owner must be a patron, and they must have a status of high slave." )]>> <<set _options = $( "<ol>\ <li id=\"li1\">\"I\'d like to become a patron (¤200).\"</li>\ <li id=\"li2\">\"I\'d like to cancel my patronage.\"</li>\ <li id=\"li3\">\"Nevermind.\"</li>\ </ol>" )>> <<if $player.is_slave || $player.titles.has("trade_union_patron")>> <<run _options.find("#li1").css("text-decoration", "line-through")>> <</if>> <<if $player.is_slave || !$player.titles.has("trade_union_patron")>> <<run _options.find("#li2").css("text-decoration", "line-through")>> <</if>> <<set _responses.push(_options.clone())>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.variables.buttons, State.variables.buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set _choices = 3>> <<disableactions>> <<if $player.is_slave || $player.titles.has("trade_union_patron")>> <<run $("#events1 button").prop("disabled", true)>> <<addclass "#events1 button" "disabled">> <</if>> <<if $player.is_slave || !$player.titles.has("trade_union_patron")>> <<run $("#events2 button").prop("disabled", true)>> <<addclass "#events2 button" "disabled">> <</if>> <<stop>> <</if>><</repeat>><</silently>> <</button>>@@ @@#events6;<<button "6">> <</button>>@@ @@#events7;<<button "7">> <</button>>@@ @@#events8;<<button "8">> <</button>>@@ <<set $buttons = []>> <<for _i = 1; _i lte 8; _i++>> <<set $buttons.push("#events" + _i)>> <</for>> <<set $buttons_extra = ["#events_actions_back", "#events_actions_leave"]>> /* Back button is disabled by default */ <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div id="events_actions_back" style="grid-row: 3; grid-column: 5"> <<button "Back">> <<removeclass "#actions" "hidden">> <<addclass "#events_actions" "hidden">> <</button>> </div> <div id="events_actions_leave" style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponMarket">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <div id="trade_options" class="action container row col longbutton fiveQuarters hidden" style="--rows: 4; --cols: 4"> <div style="grid-row: 1; grid-column: 4"></div> <div style="grid-row: 2; grid-column: 4"></div> <div id="back_button" style="grid-row: 3; grid-column: 4"> <<button "Back">> <<removeclass "#actions" "hidden">> <<addclass "#trade_options" "hidden">> <</button>> </div> <div id="back_to_options_button" class="hidden" style="grid-row: 3; grid-column: 4"> <<button "Back">> <<script>> $("#commodityLog").addClass("hidden"); $("#mainLog").removeClass("hidden"); $("#back_to_options_button").addClass("hidden"); $("#back_button").removeClass("hidden"); $(".to_hide").removeClass("hidden"); <</script>> <</button>> </div> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponMarket">> <<include locationButton>> </div> <<for _key, _val range $commodities>> <<capture _key>> <div class="to_hide"> <<button `setup.titleCase(_key)`>> <<set _selected = _key>> <<set _halfspread = setup.sigmoid($difficulty) * .02>> <<updatecommodities _selected>> <</button>> </div> <</capture>> <</for>> </div> <</nobr>>
<<nobr>> <div id="actions" class="mapaction fiveQuarters smalltext"> <hr> <<set _added = 0>> <<for _key, _val range setup.locations.get(passage()).sublocations>> <<capture _key>> <<set _location_button_dest = setup.locations.get(_key).passage>> <<include locationButton>> <</capture>> <<set _added += 1>> <</for>> /* Add 13 slots */ <<for _i = _added; _i lt 12; _i++>> <div class="buttonfiller fiveQuarters"></div> <</for>> <<unset _added>> <hr> <<button "Hours">> <<popover>> <<include hoursTutorial>> <</popover>> <</button>> <div> <<set _location_button_text = "Back">> <<set _location_button_dest = "niponSlums">> <<include locationButton>> </div> <div> <<set _location_button_text = "Home">> <<set _location_button_dest = "shintaniHome">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> <hr> </div> <</nobr>>
<<nobr>> <div id="actions" class="action container row col longbutton fiveQuarters" style="--rows: 4; --cols: 4"> <<set _last_choice = "none">> <<button "Talk">> <<if _last_choice != "talk">> <<set _last_choice = "talk">> <<set _options = "\ <ol>\ <li id=\"li1\">\"What is this place?\"</li>\ <li id=\"li2\">\"What\'s your name?\"</li>\ <li id=\"li3\">\"How do you like Nipon?\"</li>\ <li id=\"li4\">\"I\'m looking for work.\"</li>\ <li id=\"li5\">\"Hear any rumors lately?\"</li>\ ">> <<set _options += "</ol>">> <<set _responses = [ "You approach the bartender,", _options ]>> <<set _options = $(_options)>> <<set _disable_buttons = false>> <<disableactions _options>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.temporary.talk_buttons, State.temporary.talk_buttons_extra); <</script>> <</if>> <<addclass "#actions" "hidden">> <<removeclass "#talk_options" "hidden">> <</button>> <<disable>><<button "Socialize">> /* TODO: Implement */ <<run $("#info_title").html("Drink at the Divine Touch")>> <<set _default_socialize_info = $("<div>\ </div>")>> <</button>><</disable>> <<button "Services">> <<if _last_choice != "services">> <<set _last_choice = "services">> <<if $player.gender == 0>> <<set _responses = [ $player.dialogue("I\'d like to hire some... services."), "The bartender knocks on the slightly ajar door behind him and a well-trained girl comes out.", _bartender.dialogue("Audrey is available right now, what kind of services were you thinking?") ]>> <<else>> <<set _responses = [ $player.dialogue("I\'d like to hire some... services."), _bartender.dialogue("Sure thing missy, but we don\'t get a lot of female customers so we \ don\'t really have many men for hire if that\'s what you\'re looking for. If you want \ to just get fucked yourself, just go lay down on the table over there and spread your legs; it\'s \ free too. Otherwise you can take a look at our fine lady here."), "He knocks on the slightly ajar door behind him and a well-trained girl comes out.", _bartender.dialogue("Audrey is available right now, what kind of services were you thinking?") ]>> <</if>> <<set _options = $("\ <ol>\ <li id=\"li1\">\"Oral (" + setup.LARI + "50).\"</li>\ <li id=\"li2\">\"Full service (" + setup.LARI + "100).\"</li>\ </ol>\ ")>> <<set _responses.push(_options.clone())>> <<set _disable_buttons = false>> <<disableactions _options>> <<unset _done_appending>> <<script>> setup.mainLog_append_delayed(State.temporary.responses, State.temporary.service_buttons, State.temporary.service_buttons_extra); <</script>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _done_appending>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _audrey.image_folder() + "audrey.png\")")>> <<stop>> <</if>><</repeat>><</silently>> <<else>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _audrey.image_folder() + "audrey.png\")")>> <</if>> <<addclass "#actions" "hidden">> <<removeclass "#service_options" "hidden">> <</button>> <<if "low_brothel_work" in $quests.knowledge_is_power.data && $quests.knowledge_is_power.data.low_brothel_work>> <<button "Work">> <<if !($gameDate.getHours() < setup.locations.get(passage()).access_times[1] - 4 || $gameDate.getHours() >= setup.locations.get(passage()).access_times[0])>> <<notify>>Not enough time to work a full shift before closing.<</notify>> <<elseif Math.abs(setup.project_stamina_change(60 * 4)) lt $player.conditions.stamina>> <<run $("#info_title").html("Whore at the Divine Touch Brothel")>> <<set _default_work_info = $("<div>\ <div id=\"normal_whore\">\ The Divine Touch Brothel is cestpool of sweat and sexual frustration. You think subjecting yourself to it might \ be an easy way to make some lari.\ <ul id=\"change_list\">\ <li id=\"li1\">" + setup.LARI + setup.round2(($player.sex_value()).clamp(0, 50)) + "</li>\ <li id=\"li2\">15% chance to increase a random sex skill (capped at 20).</li>\ <li id=\"li3\">20% chance to increase max arousal (decrease sensitivity) (capped at 70).</li>\ <li id=\"li4\">(20 - strength)% chance of injury.</li>\ <li id=\"li5\">-3 willpower.</li>\ </ul></div>\ </div>")>> <<run $("#infoLogBody").html("")>> <<run $("#infoLogBody").append(_default_work_info.clone())>> <<removeclass "#work_actions" "hidden">> <<addclass "#actions" "hidden">> <<removeclass "#infoLog" "hidden">> <<addclass "#mainLog" "hidden">> <</if>> <</button>> <<else>> <<disable>> <<button "Work">><</button>> <</disable>> <</if>> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponSlums">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <<set _ronda = $characters.ronda_stike>> <<set _bartender = new setup.Character("bartender")>> <<set _bartender.first_name = "Bartender">> <<set $_to_log = " <div>You enter the Divine Touch Brothel and are greeted with a pungent smell of \ sweat and alcohol. The establishment on the outside seems like a normal local bar, but \ between the sounds of indistinctive chatter you can clearly hear loud moans echo through the \ thin walls. You take a seat at the bar and before you stands a tall clean man who drags with \ him a wistful sense of longing.</div>\ ">> <<if $player.is_slave>> <<set $_to_log += "He notices the amulet around your neck,<br>">> <<set $_to_log += _bartender.dialogue("Don\'t see much of your folk down here. I hope you\'re not planning \ on causing any trouble.")>> <<else>> <<set $_to_log += _bartender.dialogue("What\'s your poison?")>> <</if>> /* Load in any saved variables */ <<loadVars>> <div id="background" class="paper_border notext"> <div class="main container fourCol threeRow" style="height: 100%; width: 100%;"> <div class="subbackground mainLogContainer"> <<include mainLog>> <<include infoLog>> <<timed 50ms>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _bartender.image_folder() + "bartender.png\")")>> <</timed>> </div> <<include info>> <div id="action_bar" class="subbackground" style="grid-row: 3 / span 1; grid-column: 1 / span 3"> /* Main actions */ <<include divineTouchBrothelActions>> <<include divineTouchBrothelTalkOptions>> <<include divineTouchBrothelServiceOptions>> <<include divineTouchBrothelWorkActions>> </div> </div> </div> <</nobr>>
<<nobr>> <<set _audrey = new setup.Character("audrey")>> <<set _audrey.first_name = "Audrey">> <<set _refresh = false>> <div id="service_options" class="action container row col hidden" style="--rows: 4; --cols: 5"> <<set _refresh = false>> @@#events1;<<button "1">> <<if ndef _action>> <<if $player.get_money() lt 50>> <<notify>>Insufficient funds.<</notify>> <<unset _responses>> <<unset _done_appending>> <<else>> <<set _action = 1>> <<set _responses = [ "You slide forth 50 lari and you can see Audrey face light up. She quickly grabs your hand and pulls you \ into an old empty room. As the door closes, the sound of the outside chatter fades, leaving only the faint moaning \ from the adjacent rooms. Audrey licks her lips before speaking,", _audrey.dialogue("Take off your pants, did you want me clothes off as well?"), "<ol><li>\"Yes, show me those tits.\"</li><li>\"No, just give me your mouth, you slut.\"</li></ol>" ]>> <<set $enable_menu = false>> <<set _disable_buttons = true>> <<set _choices = 2>> <<disableactions>> <<removemoney 50>> <<audio coins_sound play>> <<addmins 2 + dice(1, $difficulty + 2)>> <<updatetime>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _done_appending>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _audrey.image_folder() + "audrey_oral.png\")")>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <<elseif _action == 1 && ndef _sub_action>> <<set _responses = [ "Audrey begins seductively removing her clothes all whilst giving you a show. She flashes her unshaven pussy \ and gives you a strip tease. She then drops to her knees and starts " ]>> <<if $player.gender == 0>> <<set _responses[0] += "sucking on your hard cock. Her skill is masterful and as your shaft moves in and out \ of her throat, you can feel her tongue climbing around your head like a parasitic vine on trunk of \ a tree. ">> <<else>> <<set _responses[0] += "sucking on your wet pussy. As her tongue climbs between your labia, slightly touching \ your clitoris every couple of seconds, you are hit with waves of pleasure. ">> <</if>> <<set _responses[0] += "As she continues to lick you, Audrey reaches her hand down and starts masturbating. The \ scent of her womanhood and sight of beads of wetness dripping down her legs pushes you over the edge.">> <<set $player.mental_conditions.arousal = 0>> <<addmins 5 + dice(1, $difficulty + 2)>> <<if $player.gender == 0>> <<set _sub_action = 1>> <<set _responses.push("Where would you like to cum? <ol><li>On her face.</li><li>In her mouth.</li></ol>")>> <<else>> <<set _sub_action = 1>> <<set _responses.push("You orgasm with bliss <ol><li>Finish.</li></ol>")>> <<set _choices = 1>> <<disableactions>> <</if>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _audrey.image_folder() + "audrey_oral_noclothes.png\")")>> <<elseif _action == 1 && _sub_action == 1>> <<unset _action>> <<unset _sub_action>> <<if $player.gender == 0>> <<set $_temp_to_log = "You quickly pull your cock out of Audreys mouth and cum all over her face. She smiles with \ joy and slowly uses her fingers to push your semen from her face into her mouth, swallowing as much as she can,<br>" + _audrey.dialogue("Thank you for the treat.")>> <<else>> <<set $_temp_to_log = "Audrey and you chat a bit as well as clean up your pussy with her tongue. After a while \ she leads you out the room.<br>" + _audrey.dialogue("Come back whenever you\'d like...") + "She winks at you \ before leaving.">> <</if>> <<set $enable_menu = true>> <<goto `passage()`>> <<elseif _action == 2 && ndef _sub_action>> <<unset _action>> <<unset _sub_action>> <<if $player.gender == 0>> <<set $_temp_to_log = "You quickly pull your cock out of Audreys mouth and cum all over her face. She smiles with \ joy and slowly uses her fingers to push your semen from her face into her mouth, swallowing as much as she can,<br>" + _audrey.dialogue("Thank you for the treat.")>> <<else>> <<set $_temp_to_log = "Audrey and you chat a bit as well as clean up your pussy with her tongue. After a while \ she leads you out the room.<br>" + _audrey.dialogue("Come back whenever you\'d like...") + "She winks at you \ before leaving.">> <</if>> <<set $enable_menu = true>> <<goto `passage()`>> <<elseif _action == 2 && _sub_action == 1>> <<unset _sub_action>> <<set _responses = [ "Audrey puts on your strap-on and starts pounding your wet pussy. You moan in pleasure as she pushes deeper and \ deeper into you. Before you know it, she pushes into your ass as well. You can\'t tell if you enjoy it or not, but \ your body is unable to stop from moaning in pleasure.", _audrey.dialogue("Yeah you like that baby?"), $player.dialogue("Mmmhhh!!"), "As Audrey alternates between your pussy and asshole for fucking, you orgasm with bliss.<ol><li>Continue.</li></ol>" ]>> <<set $enable_menu = false>> <<set _disable_buttons = true>> <<set _choices = 1>> <<disableactions>> <</if>> <</button>>@@ @@#events2;<<button "2">> <<if ndef _action>> <<if $player.get_money() lt 100>> <<notify>>Insufficient funds.<</notify>> <<unset _responses>> <<unset _done_appending>> <<else>> <<set _action = 2>> <<set _responses = [ "You slide forth 100 lari and you can see Audrey bite her lip in anticipation. She quickly grabs your hand and pulls you \ into an old empty room. As the door closes, the sound of the outside chatter fades, leaving only the faint moaning \ from the adjacent rooms. Audrey licks her lips before speaking,", _audrey.dialogue("Are you ready for a life changing experience?"), "Audrey seductively strips, giving you a show. She also seemlessly works stripping you into her erotic dance \ as well,", _audrey.dialogue("Take me baby, I\'m all yours.") ]>> <<if $player.gender == 0>> <<set _responses.push("After sucking your cock for a while, you slam your rock hard cock into Audrey\'s pussy, \ and she lets out a yelp of pleasure")>> <<set _responses.push(_audrey.dialogue("Fuck you\'re so big!"))>> <<set _responses.push("After a while of brutal pounding, you quickly remove your cock from her dripping \ pussy and slam it into her asshole, catching Audrey off guard.")>> <<set _responses.push(_audrey.dialogue(either([ "Oh fuck! Yes! Just like that baby! Harder!", "Oh my god fucking hell! Yes just like that baby!", "Fuck fuck fuck! Harder please, give it to me!", "You\'re so deep! Fuck me harder please!"])))>> <<set _responses.push("Audrey screams in pleasure as she orgasms, squeezing your dick which pushes you \ off the edge. Where do you want to cum?\ <ol><li>On her face.</li><li>In her mouth.</li><li>In her pussy.</li><li>In her ass.</li></ol>")>> <<set $enable_menu = false>> <<set _disable_buttons = true>> <<set _choices = 4>> <<disableactions>> <<else>> <<if $player.has_equipped("strap_on") != "none">> <<set _sub_action = 1>> <<set _responses.push("After licking your pussy for a while, you put on your strap-on and slam it into Audrey\'s pussy, \ and she lets out a yelp of pleasure")>> <<set _responses.push(_audrey.dialogue("Fuck it\'s so big!"))>> <<set _responses.push("After a while of brutal pounding, you quickly remove your strap-on from her dripping \ pussy and slam it into her asshole, catching Audrey off guard.")>> <<set _responses.push(_audrey.dialogue(either([ "Oh fuck! Yes! Just like that baby! Harder!", "Oh my god fucking hell! Yes just like that baby!", "Fuck fuck fuck! Harder please, give it to me!", "You\'re so deep! Fuck me harder please!"])))>> <<set _responses.push("Audrey screams in pleasure as she orgasms")>> <<set _responses.push(_audrey.dialogue("Well you sure know how to treat a lady. Did you want a round?"))>> <<set _responses.push("She points at your strap-on\ <ol><li>\"Yes\" (let her borrow the strap-on)</li><li>\"No\"</li></ol>")>> <<set $enable_menu = false>> <<set _disable_buttons = true>> <<set _choices = 2>> <<disableactions>> <<else>> <<set _responses.push("After licking your pussy for a while, Audrey gets ontop of you and starts grinding her wet \ pussy against yours. Your juices mix, creating an perverse aroma.")>> <<set _responses.push(_audrey.dialogue(either([ "Oh fuck! Yes! Just like that baby! Harder!", "Oh my god fucking hell! Yes just like that baby!", "Fuck fuck fuck! Harder please, give it to me!"])))>> <<set _responses.push("Soon both Audrey and you have a simultaneous orgasm.\ <ol><li>Continue.</li></ol>")>> <<set $enable_menu = false>> <<set _disable_buttons = true>> <<set _choices = 1>> <<disableactions>> <</if>> <</if>> <<removemoney 100>> <<audio coins_sound play>> <<addmins 2 + dice(1, $difficulty + 2)>> <<updatetime>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<unset _done_appending>> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _audrey.image_folder() + "audrey_fs.png\")")>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <<elseif _action == 1 && ndef _sub_action>> <<unset _action>> <<set _responses = [ "Audrey quickly drops to her knees and starts " ]>> <<if $player.gender == 0>> <<set _responses[0] += "sucking on your hard cock. Her skill is masterful and as your shaft moves in and out \ of her throat, you can feel her tongue climbing around your head like a parasitic vine on trunk of \ a tree. ">> <<else>> <<set _responses[0] += "sucking on your wet pussy. As her tongue climbs between your labia, slightly touching \ your clitoris every couple of seconds, you are hit with waves of pleasure. ">> <</if>> <<set _responses[0] += "As she continues to lick you, Audrey reaches her hand down and starts masturbating. The \ scent of her womanhood and sight of beads of wetness dripping down her legs pushes you over the edge.">> <<set $player.mental_conditions.arousal = 0>> <<addmins 5 + dice(1, $difficulty + 2)>> <<if $player.gender == 0>> <<set _sub_action = 1>> <<set _responses.push("Where would you like to cum? <ol><li>On her face.</li><li>In her mouth.</li></ol>")>> <<else>> <<set _sub_action = 1>> <<set _responses.push("You orgasm with bliss <ol><li>Finish.</li></ol>")>> <<set _choices = 1>> <<disableactions>> <</if>> <<elseif _action == 1 && _sub_action == 1>> <<unset _action>> <<unset _sub_action>> <<set $_temp_to_log = "You thrust your cock deep into Audrey\'s mouth and cum into her throat. She smiles with \ joy and opens her mouth to show you your cum before swallowing it all,<br>" + _audrey.dialogue("Thank you for the treat.") >> <<set $enable_menu = true>> <<goto `passage()`>> <<elseif _action == 2 && ndef _sub_action>> <<unset _action>> <<unset _sub_action>> <<set $_temp_to_log = "You thrust your cock deep into Audrey\'s mouth and cum into her throat. She smiles with \ joy and opens her mouth to show you your cum before swallowing it all,<br>" + _audrey.dialogue("Thank you for the treat.") >> <<set $enable_menu = true>> <<goto `passage()`>> <<elseif _action == 2 & _sub_action == 1>> <<unset _sub_action>> <<set _responses = ["After licking your pussy for a while, Audrey gets ontop of you and starts grinding her wet \ pussy against yours. Your juices mix, creating an perverse aroma."]>> <<set _responses.push(_audrey.dialogue(either([ "Oh fuck! Yes! Just like that baby! Harder!", "Oh my god fucking hell! Yes just like that baby!", "Fuck fuck fuck! Harder please, give it to me!"])))>> <<set _responses.push("Soon both Audrey and you have a simultaneous orgasm.\ <ol><li>Continue.</li></ol>")>> <<set $enable_menu = false>> <<set _disable_buttons = true>> <<set _choices = 1>> <<disableactions>> <</if>> <</button>>@@ @@#events3;<<button "3">> <<unset _action>> <<unset _sub_action>> <<set $_temp_to_log = "You thrust your cock deep into Audrey\'s pussy and cum into her. She smiles with \ joy and opens her legs to show the cum dripping out of her pussy,<br>" + _audrey.dialogue("Thank you for the treat.") >> <<set $enable_menu = true>> <<goto `passage()`>> <</button>>@@ @@#events4;<<button "4">> <<unset _action>> <<unset _sub_action>> <<set $_temp_to_log = "You thrust your cock deep into Audrey\'s ass and cum into her. She smiles with \ joy and opens her legs to show the cum dripping out of her anus,<br>" + _audrey.dialogue("Thank you for the treat.") >> <<set $enable_menu = true>> <<goto `passage()`>> <</button>>@@ @@#events5;<<button "5">> <</button>>@@ @@#events6;<<button "6">> <</button>>@@ @@#events7;<<button "7">> <</button>>@@ @@#events8;<<button "8">> <</button>>@@ <<set _service_buttons = []>> <<for _i = 1; _i lte 8; _i++>> <<set _service_buttons.push("#service_options #events" + _i)>> <</for>> <<set _service_buttons_extra = ["#service_options #events_actions_back", "#service_options #events_actions_leave"]>> /* Back button is disabled by default */ <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div id="events_actions_back" style="grid-row: 3; grid-column: 5"> <<button "Nevermind">> <<removeclass "#actions" "hidden">> <<addclass "#service_options" "hidden">> <<run $("#mainLogCharacterImage").css("background-image", "url(\"" + _bartender.image_folder() + "bartender.png\")")>> <</button>> </div> <div id="events_actions_leave" style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponSlums">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <<timed 50ms>><<script>> $("#service_options").find("button").on("click", (event) => { let _t = State.temporary; let _v = State.variables; let player = _v.player; var self = $(event.currentTarget); if (self.html() == "Nevermind" || self.html() == "Leave") { return; } if ("responses" in _t) { setup.mainLog_append_delayed(_t.responses, _t.service_buttons, _t.service_buttons_extra); delete _t.responses; } }); <</script>><</timed>> <</nobr>>
<<nobr>> <<set _refresh = false>> <div id="talk_options" class="action container row col hidden" style="--rows: 4; --cols: 5"> <<set _refresh = false>> @@#events1;<<button "1">> <<set _responses = [ _bartender.dialogue("This place here is Divine Touch. We started off as a place for the fine working folk to rest \ easy with some company. Since the founding of the Sol Brothel, we found business in providing services without \ charging too much lari."), ]>> <</button>>@@ @@#events2;<<button "2">> <<set _responses = [ _bartender.dialogue("I am but a vessel to deliver the common folk from their sorrow. Whether that poison lie \ at the bottom of a bottle or the bottom of a whore, is for you to decide. My name is a lost relic, as will you \ in years to come.") ]>> <</button>>@@ @@#events3;<<button "3">> <<set _responses = [ _bartender.dialogue("The cycles of the world are preordained. There is not one event that exists in solitude."), "As he sighs, you detect in his voice, a sense of sadness. Not one of regret or worldly attribution, but rather \ as a parent watching a child make wrong decisions.", _bartender.dialogue("Nipon, Sakartvelo, the name changes but the land doesn\'t. It remembers longer than we know \ what it means to forget. Reminants of the past linger in the present, yet all we do is cling for a certain future."), "He flips a 1-lari coin through his fingers", _bartender.dialogue("Perhaps you ought to question the very foundations of this place. One day you\'ll understand.") ]>> <</button>>@@ @@#events4;<<button "4">> <<set _responses = [ _bartender.dialogue("And yet work finds us. If you\'re up for it, we could always use some good whores around \ this place. Just sign up over there and put yourself down for a four hour shift along with your measurements \ and descriptions.") ]>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<set $quests.knowledge_is_power.data.low_brothel_work = true>> <<notify>>You can now work in the Divine Touch Brothel.<</notify>> <<set _refresh = true>> <<unset _done_appending>> <<stop>> <</if>><</repeat>><</silently>> <</button>>@@ @@#events5;<<button "5">> <<set _responses = [ _bartender.dialogue("Man is wrought with the need for information. Do you know of the old tongues?"), "Before you could respond he already knows the answer," ]>> <<if $player.titles.has("lost_knowledge")>> <<if !$quest_journal.completed.contains("knowledge_is_power") && $quests.knowledge_is_power.stage lte 5>> <<set _responses.push(_bartender.dialogue("It seems you do, but you lack the <b>-F</b>ruits of knowledge, come back \ after you have experienced such delicacy."))>> <<else>> <<set _responses.push(_bartender.dialogue("Ulwazi ngamandla."))>> <<set _responses.push("He slides over a worn book with ancient symbols from the lost tongues that you can recognize, \ <em>Animal Farm, by George Orwell</em>.")>> <<set _responses.push(_bartender.dialogue("Power like life is temporary."))>> <<silently>><<repeat 20ms>><<if def _done_appending && _done_appending>> <<run UInv.AddItem("inventory", "animal_farm")>> <<notify>>Acquired Animal Farm.<</notify>> <<unset _done_appending>> <<stop>> <</if>><</repeat>><</silently>> <</if>> <<else>> <<set _responses.push(_bartender.dialogue("Well that\'s a shame isn\'t it? To be stuck in the same paradigm as everyone else."))>> <</if>> <</button>>@@ @@#events6;<<button "6">> <</button>>@@ @@#events7;<<button "7">> <</button>>@@ @@#events8;<<button "8">> <</button>>@@ <<set _talk_buttons = []>> <<for _i = 1; _i lte 8; _i++>> <<set _talk_buttons.push("#talk_options #events" + _i)>> <</for>> <<set _talk_buttons_extra = ["#talk_options #events_actions_back", "#talk_options #events_actions_leave"]>> /* Back button is disabled by default */ <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div id="events_actions_back" style="grid-row: 3; grid-column: 5"> <<button "Back">> <<if _refresh>> <<goto `passage()`>> <<else>> <<removeclass "#actions" "hidden">> <<addclass "#talk_options" "hidden">> <</if>> <</button>> </div> <div id="events_actions_leave" style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponSlums">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <<timed 50ms>><<script>> $("#talk_options").find("button").on("click", (event) => { let _t = State.temporary; let _v = State.variables; var self = $(event.currentTarget); if (self.html() == "Back" || self.html() == "Leave") { return; } self.addClass("disabled"); self.prop("disabled", true); _t.options.find("#li" + self.html()).css("text-decoration", "line-through"); if ("responses" in _t) { _t.responses.push(_t.options.clone()); setup.mainLog_append_delayed(_t.responses, _t.talk_buttons, _t.talk_buttons_extra); delete _t.responses; } }); <</script>><</timed>> <</nobr>>
<<nobr>> <div id="work_actions" class="action container row col fiveQuarters smalltext longbutton hidden" style="--rows: 4; --cols: 4"> <div style="grid-row: 1; grid-column: 4"> @@#work_start;<<button "Start">> <<include divineTouchBrothelWorkEngine>> <</button>>@@ </div> <div id="work_actions_back" style="grid-row: 3; grid-column: 4"> <<button "Back">> <<addclass "#work_actions" "hidden">> <<removeclass "#actions" "hidden">> <<addclass "#infoLog" "hidden">> <<removeclass "#mainLog" "hidden">> <</button>> </div> <div id="work_actions_leave" style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "niponSlums">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<nobr>> <<set _player = clone($player)>> <<set _pay = setup.round2(($player.sex_value()).clamp(0, 50))>> /* Simulate 15% skill increase roll */ <<set _thresh = 15 / 100>> <<set _increasable = []>> <<for _key, _val range $player.sex_skills>> <<if _val lt 20>> <<set _increasable.push(_key)>> <</if>> <</for>> <<set _roll = randomFloat(1.0)>> <<if _roll lt _thresh && _increasable.length gt 0>> <<set $player.sex_skills[either(_increasable)] += 1>> <</if>> /* Simulate 20% max arousal roll */ <<set _thresh = 20 / 100>> <<set _roll = randomFloat(1.0)>> <<if _roll lt _thresh>> <<set $player.mental_conditions.max_arousal += 1>> <</if>> <<set $player.slave_traits.willpower -= 3>> <<set $_temp_to_log = "<div>You whore yourself at the Divine Touch Brothel for 4 hours.</div>">> /* Simulate injury chance */ <<set _thresh = (20 - $player.stats.strength)/100>> <<set _roll = randomFloat(1.0)>> <<if _roll lt _thresh>> <<set _roll = randomFloat(1.0)>> <<set _to_injure = 1>> <<if _roll gte .5>> <<set _to_injure += 1>> <</if>> <<set $_temp_to_log += "<div>You were careless and got hurt during your BDSM activities (Dexterity " + setup.show_change_html(_to_injure, 0) + ")</div>">> <<set $player.stats.dexterity -= _to_injure>> <</if>> <<set _pay = setup.round2(_pay)>> <<addmoney _pay>> <<audio "coins_sound" play>> <<include round>> <<showChanges "Work total stat changes">> <<addhours 4>> <<goto `passage()`>> <</nobr>>
<<nobr>> /* Player is outside */ <<set $player.is_home = false>> <<set $player.is_outside = true>> /* Load in any saved variables */ <<loadVars>> /* Audio engine */ <div class="mapside left"> <<include niponActions>> </div> <div id="background" class="notext" style="padding: 0px"> <img src="resources/maps/niponSlumsMap.jpeg" usemap="#image-map"> <map name="image-map"> <area alt="sonderVille" coords="763,31,747,141,763,190,789,249,810,298,865,327,1020,198,1023,175,954,120,897,78,866,31" shape="poly"> <area alt="valeCommunity" coords="896,26,1036,159,1109,114,1143,80,1159,30" shape="poly"> <area alt="niponCampGrounds" coords="934,436,996,417,1057,427,1134,401,1223,417,1237,480,1223,536,1149,581,1159,635,1133,685,1020,574,970,591,929,511" shape="poly"> <area alt="divineTouchBrothel" coords="1049,174,1138,242,1238,175,1130,105" shape="poly"> <area alt="niponCentral" coords="556,28,739,75" shape="rect"> <area alt="niponMarket" coords="1182,30,1371,73" shape="rect"> <area alt="east" coords="1153,758,1369,800" shape="rect"> </map> </div> <div class="mapside right"> <hr> <<include infoNoSubbackground>> </div> <<updatetime>> /* Remove quick bar and setup map */ <<script>> setTimeout(() => { $("#quickbar").addClass("hidden"); var areas = $("map").children("area"); for (var _i = 0; _i < areas.length; _i++) { var obj = $(areas[_i]); if (!(setup.locations.has(obj.attr("alt")))) { continue; } var loc = setup.locations.get(obj.attr("alt")); if (!State.variables.locations[loc.key].access) { obj.addClass("noaccess"); obj.attr("onclick", "$.wiki('<<notify>>No Access!<</notify>>')"); obj.attr("title", "No access."); } else if (!loc.has_access()) { obj.addClass("closed"); obj.attr("onclick", "$.wiki('<<notify>>Closed!<</notify>>')"); var opening_time = loc.access_times[0]; var opening_time_str = ""; if (opening_time == 0) { opening_time_str = "12 AM."; } else if (opening_time < 12) { opening_time_str = opening_time.toString() + " AM."; } else if (opening_time == 12) { opening_time_str = "12 PM."; } else { opening_time_str = (opening_time - 12).toString() + " PM."; } obj.attr("title", "Opens at " + opening_time_str); } else { obj.addClass("access"); var onclick = "SugarCube.setup.locations.get('" + obj.attr("alt") + "').goto("; if (loc.inside) { onclick += "'wooden_door_sound'"; } onclick += ")"; obj.attr("onclick", onclick); } } }, 10); <</script>> <</nobr>>
<<nobr>> <div id="actions" class="action container row col longbutton fiveQuarters" style="--rows: 4; --cols: 4"> <<button "Inspect">> <<set $selected = _emily.key>> <<set _char = _emily>> <<set $last_visited = passage()>> <<set $in_menu = true>> <<saveVars>> <<goto characterMenu>> <</button>> <div style="grid-row: 4; grid-column: 4"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "sonderVille">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <</nobr>>
<<set _emily = $characters.emily_namm>> <<if $quests.power_struggles.stage == 6>> /* Update quest */ <<set $quests.power_struggles.stage = 1>> <<set $quests.power_struggles.data.side = "lia">> <<set $_to_log = " <div>You knock on the door with a rusty three haphazardly nailed onto next the peephole, and Emily lets \ you in. As soon as you step through the door frame the rotten smell of Sonder Ville vanishes and you are \ greeted by a quaint scent of vanilla. As soon as the door closes behind you, Emily grabs you by the collar \ and slams you against the wall,</div><br>" + _emily.dialogue("\ Where did you get that Insignia? Who are you and what do you want?\ ") >> <<set _init_options = "<ol>\ <li id=\"li1\">\"Lia! I got it from Lia!\"</li>\ <li id=\"li2\">\"Get off me before you regret it.\"</li>\ </ol>">> <<set $_to_log += _init_options>> <<set _init_sequence = true>> <<set _init_options = $(_init_options)>> <<timed 50ms>> <<removeclass "#events_actions" "hidden">> <<addclass "#actions" "hidden">> <<disableactions _init_options>> <</timed>> <<else>> <<set $_to_log = " <div>You enter Emily\'s home to find her reading a old patched book. \ She notices that you arrived and turns to greet you.</div><br>" + _emily.dialogue("Did you need something?") >> <</if>> /* Load in any saved variables */ <<loadVars>> <div id="background" class="paper_border notext"> <div class="main container fourCol threeRow" style="height: 100%; width: 100%;"> <div class="subbackground mainLogContainer"> <<include mainLog>> <<script>> setTimeout(() => { var emily = State.variables.characters.emily_namm; $("#mainLogCharacterImage").css("background-image", "url(\"" + emily.image_folder() + "emily_" + emily.get_disposition() + ".png\")" ); }, 10); <</script>> </div> <<include info>> <div id="action_bar" class="subbackground" style="grid-row: 3 / span 1; grid-column: 1 / span 3"> <<include emilyHomeActions>> <<include emilyHomeTalkOptions>> </div> </div> </div> <<updatetime>>
<<nobr>> <<set _refresh = false>> <div id="talk_options" class="action container row col hidden" style="--rows: 4; --cols: 5"> <<set _refresh = false>> @@#events1;<<button "1">> <<if def _init_sequence && _init_sequence>> <<unset _init_sequence>> <<set _responses = [ "UNDER CONSTRUCTION" ]>> <<else>> <</if>> <</button>>@@ @@#events2;<<button "2">> <<if def _init_sequence && _init_sequence>> <<set _roll = $player.get_status_prop("manipulation") + dice(1, 4 + $difficulty) - $difficulty>> <<if _roll gt 40>> <<set _responses = [ setup.pass("manipulation"), "Emily backs up slightly and move her gaze onto the ground for a moment before meeting your stare again,", _emily.dialogue("I... I\'m sorry, it\'s just... you have no idea what I\'ve been through. I have to be \ cautious, especially these days..."), "(Emily\'s Willpower " + setup.show_change_html(0, -2, false) + ")" ]>> <<set _emily.>> <<set _init_options.find("#li1").html("\"I got the insignia from Lia.\"")>> <<else>> <<set _responses = [ setup.fail("manipulation"), "Emily pushes her forearm into your neck, restricting your breath,", _emily.dialogue("Did you want to try answer me again? Or should I remove your ability to do so?"), "(Emily\'s Affection " + setup.show_change_html(0, -3) + ", Willpower " + setup.show_change_html(0, 2, false) + ")" ]>> <</if>> <<set _disable_buttons = false>> <<set _to_cross = _init_options>> <<set _to_append = _init_options>> <<else>> <</if>> <</button>>@@ @@#events3;<<button "3">> <</button>>@@ @@#events4;<<button "4">> <</button>>@@ @@#events5;<<button "5">> <</button>>@@ @@#events6;<<button "6">> <</button>>@@ @@#events7;<<button "7">> <</button>>@@ @@#events8;<<button "8">> <</button>>@@ <<set _talk_buttons = []>> <<for _i = 1; _i lte 8; _i++>> <<set _talk_buttons.push("#talk_options #events" + _i)>> <</for>> <<set _talk_buttons_extra = ["#talk_options #events_actions_back", "#talk_options #events_actions_leave"]>> /* Back button is disabled by default */ <div style="grid-row: 1; grid-column: 5"></div> <div style="grid-row: 2; grid-column: 5"></div> <div id="events_actions_back" style="grid-row: 3; grid-column: 5"> <<button "Back">> <<if _refresh>> <<goto `passage()`>> <<else>> <<removeclass "#actions" "hidden">> <<addclass "#talk_options" "hidden">> <</if>> <</button>> </div> <div id="events_actions_leave" style="grid-row: 4; grid-column: 5"> <<set _location_button_text = "Leave">> <<set _location_button_dest = "sonderVille">> <<set _location_button_sound = "wooden_door_sound">> <<include locationButton>> </div> </div> <<timed 50ms>><<script>> $("#talk_options").find("button").on("click", (event) => { let _t = State.temporary; let _v = State.variables; var self = $(event.currentTarget); if (self.html() == "Back" || self.html() == "Leave") { return; } self.addClass("disabled"); self.prop("disabled", true); if (_t.to_cross != null) { _t.to_cross.find("#li" + self.html()).css("text-decoration", "line-through"); $.wiki("<<disableactions _to_cross>>") } if (_t.responses != null) { if (_t.to_append != null) { _t.responses.push(_t.to_append.clone()); delete _t.to_append; } setup.mainLog_append_delayed(_t.responses, _t.talk_buttons, _t.talk_buttons_extra); delete _t.responses; } }); <</script>><</timed>> <</nobr>>
<<nobr>> /* Player is outside */ <<set $player.is_home = false>> <<set $player.is_outside = true>> <div class="mapside left"> <<include niponSlumsActions>> </div> <div id="background" class="notext" style="padding: 0px"> <<if setup.is_day($gameDate)>> <img src="resources/maps/sonderVilleDayMap.png" class="sublocation"> <<else>> <img src="resources/maps/sonderVilleNightMap.png" class="sublocation"> <</if>> </div> <div class="mapside right"> <hr> <<include infoNoSubbackground>> </div> <<updatetime>> /* Remove quick bar and setup map */ <<script>> setTimeout(() => { $("#quickbar").addClass("hidden"); var areas = $("map").children("area"); for (var _i = 0; _i < areas.length; _i++) { var obj = $(areas[_i]); if (!(setup.locations.has(obj.attr("alt")))) { continue; } var loc = setup.locations.get(obj.attr("alt")); if (!State.variables.locations[loc.key].access) { obj.addClass("noaccess"); obj.attr("onclick", "$.wiki('<<notify>>No Access!<</notify>>')"); obj.attr("title", "No access."); } else if (!loc.has_access()) { obj.addClass("closed"); obj.attr("onclick", "$.wiki('<<notify>>Closed!<</notify>>')"); var opening_time = loc.access_times[0]; var opening_time_str = ""; if (opening_time == 0) { opening_time_str = "12 AM."; } else if (opening_time < 12) { opening_time_str = opening_time.toString() + " AM."; } else if (opening_time == 12) { opening_time_str = "12 PM."; } else { opening_time_str = (opening_time - 12).toString() + " PM."; } obj.attr("title", "Opens at " + opening_time_str); } else { obj.addClass("access"); var onclick = "SugarCube.setup.locations.get('" + obj.attr("alt") + "').goto("; if (loc.inside) { onclick += "'wooden_door_sound'"; } onclick += ")"; obj.attr("onclick", onclick); } } }, 10); <</script>> <</nobr>>
<<nobr>> <<include audioEngine>> <<if setup.locations.has(passage())>> <<set $enable_menu = true>> <</if>> <</nobr>>
<<nobr>> <div id="background" class="city_border" style="position: relative; padding: 80px"><center> <div id="banner"></div> <h3 style="">- GAME LOBBY -</h3> <div class="column"> <<button "Start">> <<if $("html").height() lt 920 || $("html").width() lt 1850>> <<run _screen_check_func(true)>> <<else>> <<goto "intro1">> <</if>> <</button>> <br> <<button "Load">> <<script>> UI.saves(); <</script>> <</button>> <br> <<button "Credits" credits>><</button>> <br> <a href="https://discord.gg/xrynJUBksW" target="_blank"> <<button "Discord">><</button>> </a><br> <a href="https://www.subscribestar.com/mimus-studios" target="_blank"> <<button "Support Us">><</button>> </a> </div> <div class="gameversion">Version: <<= setup.VERSION>></div> </center></div> <<set _screen_check_func = (start=false) => { if ($("html").height() > $("html").width()) { var str = "\ <<popover>><center>\ It looks like you are on a mobile device (or your screen is very weirdly porportioned). \ While we intend to eventually support mobile devices, they are not supported right now. \ Please play this game on a PC with a regular sized screen. Thanks!\ </center><<"; $.wiki(str += "/popover>>"); } else { let str = "\ <<popover>><center>\ It seems your screensize is not properly configured for this game. Please zoom out \ your screen (CTRL -) until it looks similar to this (80% works for most screens).\ <hr>\ <div id=\"sample\"></div>\ <hr>\ Current Screen Height: <<= $(\"html\").css(\"height\")>>\ | Minimum Required Screen Height: 920px<br>\ Current Screen Width: <<= $(\"html\").css(\"width\")>>\ | Minimum Required Screen Width: 1850px<br><br>"; if (start) { str += "[[Continue Anyway (You'll need to close this popover manually)|intro1]]\ </center><</popover>>" } else { str += "</center><" + "</popover>>"; } $.wiki(str); } }>> <<timed 50ms>> <<if $("html").height() lt 920 || $("html").width() lt 1850>> <<run _screen_check_func()>> <</if>> <</timed>> <</nobr>>
<<nobr>> <div class="popuptext"> <h3>Controls</h3> There are many convenient keybinds that may help you out throughout your journey. <ul> <li>''LEFT CLICK'': Fast forward text (recommended over changing text speed to infinity)</li> <li>''C'': Controls (This page)</li> <li>''E'': Character menu</li> <li>''Q'': Quest journal</li> <li>''S'': Saves</li> <li>''T'': Provides information about current location including things to do as well as some lore. </li> <li>''X / ESC'': Settings menu</li> </ul> </div> <</nobr>>
<<nobr>> <div class="popuptext"> <<set _loc = setup.locations.get(passage())>> <h2><<= setup.titleCase(_loc.name)>></h2> <div> <ul> <<for _key, _val range _loc.sublocations>> <li><<= _val.name>>: <<if tale.has(_key)>> <<if $locations[_key].access>> <<if _val.access_times[0] == 0 && _val.access_times[1] == 24>> <span style="color: green">Open (24/7)</span> <<else>> <<set _open = new Date(1, 1, 1, _val.access_times[0])>> <<set _close = new Date(1, 1, 1, _val.access_times[1])>> <<if _val.has_access()>> <span style="color: green">Open (<<= setup.print_time12hr(_open)>> - <<= setup.print_time12hr(_close)>>)</span> <<else>> <span style="color: red">Closed (<<= setup.print_time12hr(_open)>> - <<= setup.print_time12hr(_close)>>)</span> <</if>> <</if>> <<else>> <span style="color: red">No access.</span> <</if>> <<else>> <span style="color: yellow">Under Construction.</span> <</if>> </li> <</for>> </ul> </div> <</nobr>>
<<nobr>> <div class="popuptext"> <h2>Nipon's Central District</h2> <div> </div> <</nobr>>
<<nobr>> <div class="popuptext"> <h2>Nipon's Market District</h2> <div> </div> <</nobr>>
<<nobr>> <div class="popuptext"> <h2>Nipon Slums</h2> <div> </div> <</nobr>>
<<nobr>> <div class="popuptext"> <h2>Shintani's Library</h2> <div> This is Shintani's Library and the central location you gain intelligence. </div> <</nobr>>
<<nobr>> <div class="popuptext"> <h2>Shintani's Home</h2> <div> This is Shintani's home and a central location of work and rest for the initial parts of the story. Initially you will be spending a lot of time here, but as you gain the trust of Shintani you may be able to spend more time outside. This is also where you may interact with the other slaves that serve the Hiroyuki household. </div> <br> <div> There are three main stats you will have to balance and maintain as a slave: Willpower, Trust, and Obedience. </div> <br> <<messenger "Willpower">> <p> Willpower reflects your ability to resist commands from your master as well as your personal identity. It is very easy, and may be expected for this stat to be very low in the early game. Being stuck in the Hiroyuki household, always under the eye of your master, would not encourage development of self. </p> <p> Common ways to gain Willpower: Disobeying orders; Not working; Spending time outside; Learning from the experience of others. Common ways to lose Willpower: Working; Following commands. </p> <</messenger>><br> <<messenger "Trust">> <p> Trust in this world is hard to come by, and is thus one of the more important stats. Raising Trust to a maximum allows you to raise your status, which in-turn unlocks events and progression of the story. </p> <p> Common ways to gain Trust: Sustaining high Obedience; Obeying orders and exceeding expectations; Showing concern for Nipon; Complete quests. Common ways to lose Trust: Disobeying orders and sabotage; Showing apathy for the goodness of Nipon. </p> <</messenger>><br> <<messenger "Obedience">> <p> Obedience represents how you are viewed as a slave. You really want to keep this value up if possible. The consequences for letting this value fall to zero include beatings and potentially death. </p> <p> Common ways to gain Obedience: Obeying orders; Working. Common ways to lose Obedience: Disobeying orders; Not working (slacking off). </p> <</messenger>> </div> <</nobr>>
<<nobr>> <div class="popuptext"> <h2><<= setup.titleCase(_selected_status)>></h2> As <<= setup.statuses[_selected_status].article>> <b><<= setup.titleCase(_selected_status)>></b>, <<= setup.statuses[_selected_status].flavor_text>> <br> <h4>Stat Changes</h4> <ul> <<for _key, _val range setup.statuses[_selected_status].condition_changes>> <li><<= setup.titleCase(_key)>>: <<= setup.show_change_html(0, _val)>></li> <</for>> <<for _key, _val range setup.statuses[_selected_status].stat_changes>> <li><<= setup.titleCase(_key)>>: <<= setup.show_change_html(0, _val)>></li> <</for>> </ul> <<if setup.statuses[_selected_status].extra_changes.length gt 0>> <h4>Extras</h4> <ul> <<for _idx, _val range setup.statuses[_selected_status].extra_changes>> <li>_val</li> <</for>> </ul> <</if>> </div> <</nobr>>
<<nobr>> <div class="popuptext"> <h2><<= setup.titleCase(_selected_title)>></h2> <<if setup.titles[_selected_title].custom_intro>> <<= setup.titles[_selected_title].flavor_text>> <<else>> <<= setup.titles[_selected_title].preposition>> <b><<= setup.titleCase(_selected_title)>></b>, <<= setup.titles[_selected_title].flavor_text>> <</if>> <<if Object.keys(setup.titles[_selected_title].condition_changes).length gt 0 || Object.keys(setup.titles[_selected_title].stat_changes).length gt 0 || Object.keys(setup.titles[_selected_title].skill_changes).length gt 0>> <h4>Stat Changes</h4> <ul> <<for _key, _val range setup.titles[_selected_title].condition_changes>> <li><<= setup.titleCase(_key)>>: <<= setup.show_change_html(0, _val)>></li> <</for>> <<for _key, _val range setup.titles[_selected_title].stat_changes>> <li><<= setup.titleCase(_key)>>: <<= setup.show_change_html(0, _val)>></li> <</for>> <<for _key, _val range setup.titles[_selected_title].skill_changes>> <li><<= setup.titleCase(_key)>>: <<= setup.show_change_html(0, _val)>></li> <</for>> </ul> <</if>> <<if setup.titles[_selected_title].extra_changes.length gt 0>> <h4>Extra Effects</h4> <ul> <<for _idx, _val range setup.titles[_selected_title].extra_changes>> <li>_val</li> <</for>> </ul> <</if>> </div> <</nobr>>
<<nobr>> <div class="popuptext"> <h2>Welcome to Free Cities: Origins</h2> Thank you for choosing to play Free Cities: Origins, a prequal to the famous Free Cities game that's more RPG-centric. The goal of this game is to rise from a slave to owning an acropolis. Along the way you will unearth pieces of the past and be able to influence various factions in the world. Will you create a utopia from the ashes of the Dusting or rebirth the hatred that ruled humanity for millenia? <br> <h3>Controls</h3> There are many convenient keybinds that may help you out throughout your journey. <ul> <li>''LEFT CLICK'': Fast forward text (recommended over changing text speed to infinity)</li> <li>''C'': Controls</li> <li>''E'': Character menu</li> <li>''Q'': Quest journal</li> <li>''S'': Saves</li> <li>''T'': Provides information about current location including things to do as well as some lore. </li> <li>''X / ESC'': Settings menu</li> </ul> </div> <</nobr>>
<<nobr>> <div id="info" class="subbackground" style="grid-row: 1 / span 3; grid-column: 4 / span 1"> <<include infoNoSubbackground>> </div> <</nobr>>
<<nobr>> <div id="infoLog" class="mainLog hidden"> <center> <div style="margin: 20px"> <b id="info_title"></b><br> </div> </center> <p id="infoLogBody"> </p> </div> <</nobr>>
<<nobr>> <div class="container threeRow" style="font-weight: normal; height: 100%; width: 100%"> <center> <h3 style="margin-bottom:0"><<= setup.locations.get(passage()).name>></h3> <p style="margin: 0"> <<= setup.locations.get_sub_address(passage())>> </p> <br> <div id="datetime"> <<time12hr>> <br> <<date>> </div> </center> <center> <<set _selected_status = $player.get_status()>> <<if _selected_status == null>> <<set _selected_status = "unknown">> <</if>> ''Status:'' <span id="status" class="tooltip"><<= setup.titleCase(_selected_status)>></span> <<on "click" "#status">> <<popover>> <<include statusTutorial>> <</popover>> <</on>> <br> <div id="money"> ''Money:'' ¤<<money>> </div> </center> <center style="padding: 20px"> <<include round>> <<showmeter "player_health_bar" `$player.conditions.health/$player.conditions.max_health`>> <<showmeter "player_stamina_bar" `$player.conditions.stamina/$player.conditions.max_stamina`>> <<if $player.is_slave>> <<showmeter "player_willpower_bar" `$player.slave_traits.willpower/100`>> <<showmeter "player_trust_bar" `$player.slave_traits.trust/100`>> <<showmeter "player_obedience_bar" `$player.slave_traits.obedience/100`>> <</if>> <div id="quickbar" class="menubar"> <<button "C">> <<script>>Dialog.close();<</script>> <<popover>> <<include controls>> <</popover>> <</button>> <<button "E">> /* Go to character menu (E) */ <<script>>Dialog.close();<</script>> <<if $enable_menu>> <<if !$in_menu>> <<set $last_visited = passage()>> <<set $in_menu = true>> <<saveVars>> <<goto playerMenu>> <<elseif passage() != "playerMenu">> <<goto playerMenu>> <<else>> <<set $in_menu = false>> <<goto $last_visited>> <<set $last_visited = "">> <</if>> <</if>> <</button>> <<button "Q">> <<popover>> <<include questMenu>> <</popover>> <</button>> <<button "S">> <<if $enable_menu>> <<ui "saves">> <</if>> <</button>> <<button "T">> /* See tutorial for passage (T) */ <<script>>Dialog.close();<</script>> <<if tale.has(passage() + "Tutorial")>> <<popover>> <<include `passage() + "Tutorial"`>> <</popover>> <</if>> <</button>> <<button "X">> /* Go to save and settings menu (ESC) */ <<script>>Dialog.close();<</script>> <<if $enable_menu>> <<if !$in_menu>> <<set $last_visited = passage()>> <<set $in_menu = true>> <<saveVars>> <<goto settingsMenu>> <<elseif passage() != "settingsMenu">> <<goto settingsMenu>> <<else>> <<set $in_menu = false>> <<goto $last_visited>> <<set $last_visited = "">> <</if>> <</if>> <</button>> </div> </center> </div> <</nobr>>
<<nobr>> <<if ndef _location_button_text>> <<set _location_button_text = setup.locations.get(_location_button_dest).name>> <</if>> <<if tale.has(_location_button_dest)>> <<if setup.locations.get(_location_button_dest).has_access()>> <<capture [_location_button_dest _location_button_sound _location_button_dur]>> <<button _location_button_text _location_button_dest>> <<if def _location_button_sound>> <<audio _location_button_sound play>> <</if>> <<if def _location_button_dur>> <<set _roll = dice(1, 1 + parseInt(_location_button_dur / 4)) + _location_button_dur>> <<addmins _roll>> <<unset _roll>> <<else>> <<set _location_button_dur = setup.locations.get_distance(passage(), _location_button_dest)>> <<if _location_button_dur != -1>> <<set _roll = dice(1, 1 + parseInt(_location_button_dur / 4)) + _location_button_dur>> <<addmins _roll>> <<unset _roll>> <</if>> <</if>> /* Set inside based on location */ <<set $player.is_outside = !setup.locations.get(_location_button_dest).inside>> <</button>> <</capture>> <<elseif $locations[_location_button_dest].access>> <<disable>> <<button "Closed" _location_button_dest>><</button>> <</disable>> <<else>> <<disable>> <<button "No Access" _location_button_dest>><</button>> <</disable>> <</if>> <<else>> <<disable>> <<button _location_button_text>> <<notify>>Under Construction<</notify>> <</button>> <</disable>> <</if>> <<unset _location_button_text>> <<unset _location_button_dest>> <<unset _location_button_sound>> <<unset _location_button_dur>> <</nobr>>
<<nobr>> <div id="mainLogImageContainer" class="mainLogImageContainer"> <div id="mainLogImage" class="mainLogImage"></div> <div id="mainLogCharacterImage" class="mainLogCharacterImage"></div> <div id="mainLogActionBar" class="mainLogActionBar smalltext hidden"></div> </div> <div id="mainLog" class="mainLog"> <b> <<= setup.titleCase(setup.locations.get(passage()).name)>>: </b><br> </div> <<script>> setTimeout(function() { var gameDate = State.variables.gameDate; var time = "Day"; if (setup.is_night(gameDate)) { time = "Night"; } setup.mainLog_append(State.variables._to_log); $("#mainLogImage").css("background-image", "url(\"resources/images/places/" + passage() + time + "Image.png\")"); }, 10); <</script>> <</nobr>>
<<nobr>> <<widget "disableactions">> /* Hide back and leave buttons */ <<if ndef _disable_buttons || _disable_buttons>> <<run $('[id="events_actions_back"]').addClass("hidden")>> <<run $('[id="events_actions_leave"]').addClass("hidden")>> <<else>> <<run $('[id="events_actions_back"]').removeClass("hidden")>> <<run $('[id="events_actions_leave"]').removeClass("hidden")>> <</if>> <<if def $args[0] && $args[0] instanceof jQuery>> <<for _i = 1; _i lt 13; _i++>> <<if $args[0].find("#li" + _i).length gt 0 && $("#events" + _i + " button").length gt 0>> <<if $args[0].find("#li" + _i).css("text-decoration") == "line-through">> <<run $('[id="events' + _i + '"]').find("button").prop("disabled", true)>> <<run $('[id="events' + _i + '"]').find("button").addClass("disabled")>> <<else>> <<run $('[id="events' + _i + '"]').find("button").prop("disabled", false)>> <<run $('[id="events' + _i + '"]').find("button").removeClass("disabled")>> <</if>> <<else>> <<if $("#events" + _i + " button").length gt 0>> <<run $('[id="events' + _i + '"]').find("button").prop("disabled", true)>> <<run $('[id="events' + _i + '"]').find("button").addClass("disabled")>> <</if>> <</if>> <</for>> <<else>> <<for _i = 1; _i lt _choices + 1; _i++>> <<if $("#events" + _i + " button").length gt 0>> <<run $('[id="events' + _i + '"]').find("button").prop("disabled", false)>> <<run $('[id="events' + _i + '"]').find("button").removeClass("disabled")>> <</if>> <</for>> <<for _i = _choices + 1; _i lt 13; _i++>> <<if $("#events" + _i + " button").length gt 0>> <<run $('[id="events' + _i + '"]').find("button").prop("disabled", true)>> <<run $('[id="events' + _i + '"]').find("button").addClass("disabled")>> <</if>> <</for>> <</if>> <<unset _choices>> <<unset _disable_buttons>> <</widget>> <</nobr>>
<<widget "messenger" container>> <<set _id to _args[0].replace(/ /g,"_") + dice(1, 1000000)>> <<capture _id, _contents>> <<link _args[0]>> <<script>> if ($("#" + State.temporary.id).hasClass("hidden")) { $("#" + State.temporary.id).removeClass("hidden"); $("#" + State.temporary.id).html($("#" + State.temporary.id).html()); } else { $("#" + State.temporary.id).addClass("hidden"); } <</script>> <</link>> <</capture>> <span @id="_id" class="hidden"> _contents </span> <</widget>>
<<nobr>> /* Gets money that player has */ <<widget "money">><<= setup.round2(UInv.BagHasItem("inventory", "lari") + UInv.BagHasItem("inventory", "tetri") / 100)>><</widget>> /* Converts as much tetri in lari as possible */ <<widget "simplifymoney">> <<set _temp = UInv.BagHasItem("inventory", "tetri")>> <<run UInv.AddItem("inventory", "lari", parseInt(_temp / 100))>> <<run UInv.DeleteItem("inventory", "tetri", 100 * parseInt(_temp / 100))>> <<unset _temp>> <</widget>> /* Converts all lari into tetri */ <<widget "expandmoney">> <<set _temp = UInv.BagHasItem("inventory", "lari")>> <<run UInv.AddItem("inventory", "tetri", _temp * 100)>> <<run UInv.DeleteItem("inventory", "lari", _temp)>> <<unset _temp>> <</widget>> /* Adds money to player inventory */ <<widget "addmoney">> <<run UInv.AddItem("inventory", "tetri", parseInt($args[0] * 100))>> <<set $player.finances.total_earned += parseFloat($args[0])>> <<simplifymoney>> <</widget>> /* Removes money to player inventory */ <<widget "removemoney">> <<expandmoney>> <<run UInv.DeleteItem("inventory", "tetri", parseInt($args[0] * 100))>> <<simplifymoney>> <</widget>> <</nobr>>
<<nobr>> <<set $player.round = {}>> <<set $player.round.stats = {}>> <<for _key, _val range $player.stats>> <<set $player.round.stats[_key] = setup.round2(_val)>> <</for>> <<set $player.round.conditions = {}>> <<for _key, _val range $player.conditions>> <<if !_key.startsWith("max_")>> <<set $player.conditions[_key] = Math.clamp(_val, 0, $player.conditions["max_" + _key])>> <</if>> <<set $player.round.conditions[_key] = setup.round2($player.conditions[_key])>> <</for>> <<set $player.round.mental_conditions = {}>> <<for _key, _val range $player.mental_conditions>> <<set $player.mental_conditions[_key] = Math.clamp(_val, 0, 100)>> <<set $player.round.mental_conditions[_key] = setup.round2($player.mental_conditions[_key])>> <</for>> <<set $player.round.slave_traits = {}>> <<for _key, _val range $player.slave_traits>> <<if !_key.startsWith("max_")>> <<set $player.slave_traits[_key] = Math.clamp(_val, 0, 100)>> <</if>> <<set $player.round.slave_traits[_key] = setup.round2($player.slave_traits[_key])>> <</for>> /* Clamp all other character stats */ <<if def _to_round>> <<set _val = $characters[_to_round]>> <<set _val.round = {}>> <<set _val.round.conditions = {}>> <<for _key2, _val2 range _val.conditions>> <<if !_key2.startsWith("max_")>> <<set _val.conditions[_key2] = Math.clamp(_val2, 0, _val.conditions["max_" + _key2])>> <<set _val.round.conditions[_key2] = setup.round2(_val.conditions[_key2])>> <</if>> <</for>> <<set _val.round.slave_traits = {}>> <<for _key2, _val2 range _val.slave_traits>> <<if _key2 == "trust">> <<set _val.slave_traits[_key2] = Math.clamp(_val2, -100, 100)>> <<else>> <<set _val.slave_traits[_key2] = Math.clamp(_val2, 0, 100)>> <</if>> <<set _val.round.slave_traits[_key2] = setup.round2(_val.slave_traits[_key2])>> <</for>> <<set _val.round.mental_conditions = {}>> <<for _key2, _val2 range _val.mental_conditions>> <<set _val.mental_conditions[_key2] = Math.clamp(_val2, 0, 100)>> <<set _val.round.mental_conditions[_key2] = setup.round2(_val.mental_conditions[_key2])>> <</for>> <<for _key2, _val2 range _val.physical_conditions>> <<set _val.physical_conditions[_key2] = Math.clamp(_val2, 0, 100)>> <</for>> <<unset _to_round>> <<unset _val>> <</if>> /* Update bars with new values */ <<include updateBars>> /* Update max carry weight */ <<run UInv.SetBagPropertyValue("inventory", "maxCarryWeight", $player.stats.strength)>> <</nobr>>
<<nobr>> /* Saves some variables if they exist */ <<widget "saveVars">> <<if !($_to_log === undefined)>> <<set $_temp_to_log = $_to_log>> <</if>> <</widget>> <<widget "loadVars">> <<if !($_temp_to_log === undefined)>> <<set $_to_log = $_temp_to_log>> <<unset $_temp_to_log>> <</if>> <</widget>> <</nobr>>
<<nobr>> <<widget "showChanges">> /* Check if there were any changes at all */ <<set _changes = false>> <<for _key, _val range _player.conditions>> <<if _val != $player.conditions[_key]>> <<set _changes = true>> <<break>> <</if>> <</for>> <<for _key, _val range _player.slave_traits>> <<if _val != $player.slave_traits[_key]>> <<set _changes = true>> <<break>> <</if>> <</for>> <<for _key, _val range _player.stats>> <<if _val != $player.stats[_key]>> <<set _changes = true>> <<break>> <</if>> <</for>> <<for _key, _val range _player.sex_skills>> <<if _val != $player.sex_skills[_key]>> <<set _changes = true>> <<break>> <</if>> <</for>> <<if _changes && def _player>> <<set $_temp_to_log += "<br><b>" + $args[0] + ":</b>">> <<set $_temp_to_log += "<ul>">> /* Add in stats changes */ <<for _key, _val range _player.stats>> <<if _val != $player.stats[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.stats[_key], true) + "</li>")>> <</if>> <</for>> /* Add in condition changes */ <<for _key, _val range _player.conditions>> <<if _val != $player.conditions[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.conditions[_key], true) + "</li>")>> <</if>> <</for>> <<for _key, _val range _player.mental_conditions>> <<if _val != $player.mental_conditions[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.mental_conditions[_key], true) + "</li>")>> <</if>> <</for>> /* Add in slave trait changes */ <<for _key, _val range _player.slave_traits>> <<if _val != $player.slave_traits[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + ": " + setup.show_change_html(_val, $player.slave_traits[_key], true) + "</li>")>> <</if>> <</for>> /* Add in sex skills changes */ <<for _key, _val range _player.sex_skills>> <<if _val != $player.sex_skills[_key]>> <<set $_temp_to_log += ("<li>" + setup.titleCase(_key) + " Skill: " + setup.show_change_html(_val, $player.sex_skills[_key], true) + "</li>")>> <</if>> <</for>> <<if def _pay>> <<set $_temp_to_log += "<li>Lari: <span style=\"color: green\">" + setup.LARI + _pay + "</span></li>">> <</if>> <</if>> <<set $_temp_to_log += "</ul>">> <</widget>> <</nobr>>
<<nobr>> <<updatemeter "player_health_bar" `$player.conditions.health / $player.conditions.max_health`>> <<updatemeter "player_stamina_bar" `$player.conditions.stamina / $player.conditions.max_stamina`>> <<if $player.is_slave>> <<updatemeter "player_willpower_bar" `$player.slave_traits.willpower / 100`>> <<updatemeter "player_trust_bar" `$player.slave_traits.trust / 100`>> <<updatemeter "player_obedience_bar" `$player.slave_traits.obedience / 100`>> <</if>> <<if def _is_molesting && _is_molesting>> <<updatemeter "player_arousal_bar" `$player.mental_conditions.arousal / 50`>> <<updatemeter "char_arousal_bar" `_char.mental_conditions.arousal / 50`>> <<updatemeter "char_suspicion_bar" `_char.mental_conditions.suspicion / 50`>> <</if>> <<if def _is_fucking && _is_fucking>> <<updatemeter "player_arousal_bar" `$player.mental_conditions.arousal / 50`>> <<updatemeter "char_anger_bar" `_char.mental_conditions.anger / 100`>> <<updatemeter "char_arousal_bar" `_char.mental_conditions.arousal / 50`>> <<updatemeter "char_discomfort_bar" `_char.mental_conditions.discomfort / 50`>> <<updatemeter "char_stamina_bar" `_char.conditions.stamina / _char.conditions.max_stamina`>> <<updatemeter "char_willpower_bar" `_char.slave_traits.willpower / 100`>> <</if>> <</nobr>>
<<nobr>> <<widget "updatecommodities">> <<set _year_start = new Date($gameDate.getFullYear(), 0, 0)>> <<set _diff = $gameDate - _year_start>> <<set _day = _diff / (1000 * 60 * 60 * 24)>> <<set _sigma = $commodities[$args[0]].stable_price * $commodities[$args[0]].sigma_ratio>> <<set _theta = Math.exp(-1 * $difficulty)>> <<set _mu = _sigma * Math.sin(2 * Math.PI / 356 * _day + $commodities[$args[0]].mu_phase) + $commodities[$args[0]].stable_price>> /* dmu / dt */ <<set _trend = _sigma * 2 * Math.PI / 356 * Math.cos(2 * Math.PI / 356 * _day + $commodities[$args[0]].mu_phase)>> <<set _buy_price = setup.round2($commodities[$args[0]].price * (1 + _halfspread))>> <<set _sell_price = setup.round2($commodities[$args[0]].price * (1 - _halfspread))>> <<set $("#commodity_name").html(setup.titleCase($commodities[$args[0]].name))>> <<set $("#commodity_spread").html(setup.round2(2 * _halfspread * 100) + "%")>> <<set $("#commodity_buy_price").html("¤" + _buy_price)>> <<set $("#commodity_sell_price").html("¤" + _sell_price)>> <<if $player.titles.has("trade_union_patron") && passage().substring(passage().length - 10) == "TradeUnion">> <<set $("#commodity_stats").html( UInv.BagHasItem("inventory", $args[0]) + "<br>" + setup.round2($commodities[$args[0]].price) + "<br>" + setup.round2(_sigma) + "<br>" + setup.round2(_theta) + "<br>" + setup.round2(_mu) + "<br>" + setup.round2(_trend) )>> <<else>> <<set $("#commodity_stats").html( UInv.BagHasItem("inventory", $args[0]) + "<br>" + setup.round2($commodities[$args[0]].price) + "<br>" + setup.round2(_sigma) + "<br>" + "---<br>" + "---<br>" + "---" )>> <</if>> <<script>> $("#mainLog").addClass("hidden"); $("#commodityLog").removeClass("hidden"); $("#back_button").addClass("hidden"); $("#back_to_options_button").removeClass("hidden"); $(".to_hide").addClass("hidden"); <</script>> /* Disable buttons according to holding and money */ <<script>> var player = State.variables.player; var selected = State.variables.args[0]; var buy_price = State.temporary.buy_price; var sell_price = State.temporary.sell_price; $("#buy1 button").prop("disabled", true); $("#buy1 button").addClass("disabled"); $("#buy5 button").prop("disabled", true); $("#buy5 button").addClass("disabled"); $("#buy20 button").prop("disabled", true); $("#buy20 button").addClass("disabled"); $("#buy50 button").prop("disabled", true); $("#buy50 button").addClass("disabled"); $("#buy100 button").prop("disabled", true); $("#buy100 button").addClass("disabled"); $("#buyall button").prop("disabled", true); $("#buyall button").addClass("disabled"); $("#sell1 button").prop("disabled", true); $("#sell1 button").addClass("disabled"); $("#sell5 button").prop("disabled", true); $("#sell5 button").addClass("disabled"); $("#sell20 button").prop("disabled", true); $("#sell20 button").addClass("disabled"); $("#sell50 button").prop("disabled", true); $("#sell50 button").addClass("disabled"); $("#sell100 button").prop("disabled", true); $("#sell100 button").addClass("disabled"); $("#sellall button").prop("disabled", true); $("#sellall button").addClass("disabled"); if (player.get_money() >= buy_price) { $("#buy1 button").prop("disabled", false); $("#buy1 button").removeClass("disabled"); $("#buyall button").prop("disabled", false); $("#buyall button").removeClass("disabled"); } if (player.get_money() >= 5 * buy_price) { $("#buy5 button").prop("disabled", false); $("#buy5 button").removeClass("disabled"); } if (player.get_money() >= 20 * buy_price) { $("#buy20 button").prop("disabled", false); $("#buy20 button").removeClass("disabled"); } if (player.get_money() >= 50 * buy_price) { $("#buy50 button").prop("disabled", false); $("#buy50 button").removeClass("disabled"); } if (player.get_money() >= 100 * buy_price) { $("#buy100 button").prop("disabled", false); $("#buy100 button").removeClass("disabled"); } if (UInv.BagHasItem("inventory", selected) >= 1) { $("#sell1 button").prop("disabled", false); $("#sell1 button").removeClass("disabled"); $("#sellall button").prop("disabled", false); $("#sellall button").removeClass("disabled"); } if (UInv.BagHasItem("inventory", selected) >= 5) { $("#sell5 button").prop("disabled", false); $("#sell5 button").removeClass("disabled"); } if (UInv.BagHasItem("inventory", selected) >= 20) { $("#sell20 button").prop("disabled", false); $("#sell20 button").removeClass("disabled"); } if (UInv.BagHasItem("inventory", selected) >= 50) { $("#sell50 button").prop("disabled", false); $("#sell50 button").removeClass("disabled"); } if (UInv.BagHasItem("inventory", selected) >= 100) { $("#sell100 button").prop("disabled", false); $("#sell100 button").removeClass("disabled"); } <</script>> <<updatetime>> <<unset _year_start>> <<unset _diff>> <<unset _day>> <<unset _sigma>> <<unset _theta>> <<unset _mu>> <</widget>> <</nobr>>
<<nobr>> <<widget "updatequests">> <<if !$quest_journal.completed.includes("life_of_a_slave")>> <<if $player.get_status("nipon") == "low_slave">> <<set $quests.life_of_a_slave.stage = 0>> <<else>> <<if $locations["niponCentral"].access>> <<if $player.get_status("nipon") == "high_slave">> <<run setup.remove_val($quest_journal.ongoing, "life_of_a_slave")>> <<set $quest_journal.completed.push("life_of_a_slave")>> <<else>> <<set $quests.life_of_a_slave.stage = 2>> <</if>> <<else>> <<set $quests.life_of_a_slave.stage = 1>> <</if>> <</if>> <</if>> <<if !$quest_journal.completed.includes("knowledge_is_power")>> <<if $locations["shintaniHomeLibrary"].access && $quests.knowledge_is_power.stage == 1>> <<set $quests.knowledge_is_power.stage = 2>> <</if>> <</if>> <<if !$quest_journal.completed.includes("power_struggles") && $quests.power_struggles.stage == 1>> <<if $quest_journal.completed.includes("the_nipon_economy") && $player.get_status("shintaniHome") == "high_slave">> <<set $quests.power_struggles.stage = 2>> <</if>> <</if>> <</widget>> <</nobr>>
<<nobr>> /* Gives knowledge of all slaves of lower status */ <<widget "updatestatus">> <<set _status = setup.HEIRARCHY[$player.get_status("nipon")]>> <<for _idx, _val range $characters.shintani_hiroyuki.slaves>> <<if _status gt setup.HEIRARCHY[$characters[_val].status]>> <<set $characters[_val].stats_known = true>> <<set $characters[_val].skills_known = true>> <</if>> <</for>> <</widget>> <</nobr>>