LOCUST TF GAME
xax
<div id="notes">[[CONTENT NOTES|notes]]</div>\\n<<display init>>{{{this is a code outline of a game, rather than a game proper -- nearly every scene is notes for how it should go, rather than actual prose - xax}}}\n\n[[character creation]]
<<if !tagsContains("meta")>>\\n<<if ["save", "load", "erase"].indexOf (passage()) === -1>><<set $_back = passage()>><<endif>>\\n<<if passage() eq "village int" || passage() eq "camp">>\\n[[save game|save]]<<endif>>\n\n<<if $__save neq 0>>[[load game|load]]\n\n\n\n[[erase save|erase]]<<endif>><<endif>>
!are you sure?\n(this will also erase your current progress)\n\n[[yes|erase confirm]]\n[[no|$_back]]
<<set {\n delete state.history[0].variables["__save"]\n }>>\\n!deleted.\n\n[[restart|Start]]
<<set {\n delete state.history[0].variables["__save"];\n state.history[0].variables["__save"] = JSON.stringify ({vars: state.history[0].variables, passage: state.history[0].passage.title});\n }>>\\n<<remember $__save>>\\n!saved.\n\n<<print "[[→|" + $_back + "]]">>
<<set {\n var save = $__save;\n var s = JSON.parse ($__save);\n state.history[0].variables = s.vars;\n state.history[0].variables.__save = save;\n }>>\\n!loaded.\n\n<<print "[[→|" + $_back + "]]">>
some basic content guidelines: this is a ''m/m'' game with a focus on sex with various big alien/monster types, + the pc over the course of the game transforming more fully into a big alien monster. you accumulate transformations through the game, generally in sex scenes.\n<span class="meta">\n(in the currently-implemented demo, a lot of the more endgame transformations aren't mentioned at all; the game structure thins out considerably after leaving for the city)</span>\nthe aliens in this are to various degrees hermaphroditic or intersex, and in-setting nobody finds that particularly unusual.\n\nthere's a lot of sex scenes\n* gay sex\n* gay sex with aliens and monsters\n* transformation into a monster\n* transformative sex\n* threesomes, gangbangs, etc\n* rough sex\n* oviposition / impregnation + birthing\n* transformation to grow breasts and a womb (but not in a way that's treated as particularly feminizing)\n* fisting + prolapse play\n* piercings/tattoos\n* chastity play\n\n[[←|Start]]
You're a human, living in the desolate desert outpost of Yapu. When the sands spread and the {locust} rose, your grandparents were among those left to fend for themselves outside the walls.\n\nYapu, like most desert outposts of its size, is mostly water-farming with some hardscrabble grains besides. It's out in the low desert, further than most human encampments -- easily within the domain of the great beasts, and only a few days travel from the acid flats. Groups of {locust} travel through, about twice a year, to restock on long desert travels, and they trade exotic materials for your water. Human travelers from the remaining cities are much rarer and less eagerly greeted.\n\nYou're a wanderer. You left your birth town early, and traveled with humans and {locust} alike -- merchants, traders, soldiers, whoever would have you -- to see the ruins of the old world. You're a scavenger. You go out into the wild lands to hunt for artifacts: machines, technology, materials.\n\n<<block pts>><<display "mutationbar">><<endblock>>\\n<span class="meta">choose your initial mutations\nyou have <<block pts>><<print $ccpts>><<endblock>> mutation point<<block pts>><<print $ccpts == 1 ? "" : "s">><<endblock>></span>\n\n* <<block pure>><<if $mutation == 0>>You're an unaltered human, comparatively-untouched by the lightrot in the water and dust<<endif>><<endblock>>\n* <<cycle buff>>\\n<<rmmutation "buff">><span class="meta">body \\n<<block outofpoints>><<if $ccpts == 0>>+<<else>><<revise buff "+">><<endif>><<endblock>></span>\\n<<becomes>>\\n<<addmutation "buff">>You're bigger and more muscular than most other humans, with blistered scales starting to show across your shoulders and back\\n<span class="meta"><<revert buff "-">></span>\\n<<endcycle>>\\n\n* <<cycle leaky>>\\n<<rmmutation "leaky">><span class="meta">nipples \\n<<block outofpoints>><<if $ccpts == 0>>+<<else>><<revise leaky "+">><<endif>><<endblock>></span>\\n<<becomes>>\\n<<addmutation "leaky">>You've helped {locust} incubate their eggs before, and your nipples are giant and fat, leaking milky ichor at the slightest touch\\n<span class="meta"><<revert leaky "-">></span>\\n<<endcycle>>\\n\n* <<cycle dick>>\\n<<rmmutation "dick">><span class="meta">dick \\n<<block outofpoints>><<if $ccpts == 0>>+<<else>><<revise dick "+">><<endif>><<endblock>></span>\\n<<becomes>>\\n<<rmmutation "knot">><<addmutation "dick">>You've got a {locust} dick, green-grey and covered in knobbled warts, eagerly oozing slimy yellowish pre\\n<span class="meta"><<revert dick "-">> knot <<block outofpoints>><<if $ccpts == 0>>+<<else>><<revise dick "+">><<endif>><<endblock>></span>\\n<<becomes>>\\n<<rmmutation "dick">><<addmutation "knot">>You're friends with a giant beast of the deep wasteland, and over time its seed has transformed your cock into a miniature of its own: raw purple-black flesh stored in a leathery sheath, coming to a sharp tip, with a tentacle-fringed knot at the base\\n<span class="meta"><<revert dick "-">></span>\\n<<endcycle>>\\n\n* <<cycle balls>>\\n<<rmmutation "balls">><span class="meta">balls \\n<<block outofpoints>><<if $ccpts == 0>>+<<else>><<revise balls "+">><<endif>><<endblock>></span>\\n<<becomes>>\\n<<addmutation "balls">>Your balls are enormous, lumpy and misshapen in an oversized sac drawn up tight between your thighs. You cum {locust} cum, thick and grey-green, with gritty chunks\\n<span class="meta"><<revert balls "-">></span>\\n<<endcycle>>\\n\n* <<cycle asshole>>\\n<<rmmutation "asshole">><span class="meta">ass \\n<<block outofpoints>><<if $ccpts == 0>>+<<else>><<revise asshole "+">><<endif>><<endblock>></span>\\n<<becomes>>\\n<<addmutation "asshole">>You've got an altered asshole, constantly swollen and puffy, with the flesh of your hole and fat asscheeks dappling into supple, rubbery grey-black hide\\n<span class="meta"><<revert asshole "-">></span>\\n<<endcycle>>\n\n[[→|intro]]
You're <<if hasMutation("buff")>>a buff, burly-looking<<else>>an average-looking<<endif>> human. Brown skin tanned as dark as it can go from the desert sun; black hair kept shorn close to the skull. <<if hasMutation("buff")>>The skin across your shoulders has been flaking recently, like a city-born's sunburn, save that your skin beneath is leathery, warted like the {locust's}, in drab grey and greenish patches spreading down your back and up your neck.<<endif>> Like all the humans, you wear drab clothes in desert tones, a combination of coarse homespun and the much better-made fabric traded from passing travelers.\n<<if hasMutation("pure")>>\n/% %/Unlike many humans in the settlement, the lightrot soaking the planet hasn't had any visible effect on you, whether from luck or low dosage. As of yet, you haven't had any signs of {locust} show.\\n<<endif>>\\n<<if hasMutation("pre-leaky")>>\n\n/% %/Your nipples have been swollen and aching recently, and there are stiff, hard disks growing just beneath them, felt through your skin.\\n<<endif>>\\n<<if hasMutation("leaky")>>\n\n/% %/<<display titshistory>>\\n/% %/ Since then, your nipples have been enormous: fat and wide across your <<if hasMutation("buff")>>muscled <<endif>>chest, and they stiffen from stimuli as faint as the desert wind, forming \\n/% %/<<if hasMutation("udders")>>\\n/% %/palm-sized peaks, topped w/ enormous fleshy udders thicker than your thumb and just about as long\\n/% %/<<else>>\\n/% %/thick triangular peaks topped with a fat, corklike nipple\\n/% %/<<endif>>\\n/% %/.\\n/% %/<<if hasMutation ("six nipples")>>\\n/% %/ <<display sixhistory>>\n/% %/<<endif>>\\n/% %/ <<if hasMutation("nipple piercing")>>You're leaking milky yellow-white ichor in streams down your chest, constantly.<<else>>When you get aroused, you start to leak milky yellow-white ichor in streams down your chest; more when you're being milked.<<endif>>\\n/% %/<<if hasMutation("pre-six")>>\\n/% %/ You have extra nipples forming down your chest: hard disks under your skin, reddened flesh spreading out in pads that have begin to prickle and stiffen when you get aroused.\n\n/% %/<<endif>>\\n/% %/<<if hasMutation("udders")>>\\n/% %/ If you haven't been milked in a while, your pecs start to swell up, overactive milk glands dumping fluid in a reservoir just under each nipple, giving you <<if hasMutation("six nipples")>>three sets of<<else>>a pair of<<endif>> fat, leaking tits.\\n/% %/<<endif>>\\n<<endif>>\\n<<if hasMutation("nipple piercing")>> Your nipples are also pierced, with fat barbels stuck through them<<if hasMutation("leaky")>>, and the constant stimulation from the piercing makes them leak constantly<<endif>>.<<endif>>\n\\n<<if hasMutation("knot")>>\nIn your travels across the metal wastes, you came across the den of a fearsome desert beast; one that calls itself Brulvundojn. After the initial encounter, you became friends of a sort, and you visit its den when you're in the region. Its seed is fuming, bubbling green goo threaded with squirming black lines, and it enjoys rutting against -- and into -- you, drenching you in its issue. Over time, a portion of its lusts transferred into you: your cock is a beast's cock, smooth black flesh with a burning, aching knot at the base, constantly massaged by fat, squirming tentacles beneath it. Brulvundojn's is much, much larger. <<display "dickpiercings">><<endif>>\\n<<if hasMutation("balls") || hasMutation("dick")>>\n<<display dickballshistory>><<endif>>\\n<<if hasMutation("asshole")>>\n<<display assholehistory>> Your ass shows the marks of it: ass cheeks fat and muscular, skin dappling into supple locust-hide, asshole perpetually swollen, yawning open easy. \\n<<if hasMutation("prostate")>>Your prostate aches inside you, throbbing sometimes, and it's so huge it bloats out the wall of your ass, forming a fat mound that gets rammed each time you get fucked.<<endif>><<endif>>\\n<<if hasMutation("womb")>>\n\n/% %/Not that far up inside your ass, you have some kind of mutant womb, for incubating eggs. \\n/% %/<<if $pregnant eq "">>\\n/% %/Sometimes you can feel your cervix spasm, hungrily gulping in preparation for your next batch of eggs.\n/% %/<<else>>\\n/% %/Your cervix is plugged tight, bulging from the clutch of eggs inside you now.\n/% %/<<endif>>\n<<endif>>\\n<<if hasMutation("eggs")>>\n\n<<display eggs>>\n<<endif>>\n<<if hasMutation("dick") || hasMutation("ass")>>\n<<endif>><<if hasMutation("dick")>>Your cock leaks thick, slimy pre in streamers, a translucent yellow,\\n<<if !hasMutation("balls")>> and the same slime makes up most of your cum.\\n<<else>> and <<endif>><<endif>>\\n<<if hasMutation("balls")>>when you cum, it's chunky, grey-green slop, oozing from your \\n<<if hasMutation("dick")>>bloated <<endif>> cockhead in runny clots.<<endif>>\\n<<if hasMutation("prostate")>> Your overproductive prostate means that you leak pre constantly when aroused, so much that even a few moment's drool is enough to match your old orgasms.<<endif>>\n<<if hasMutation("knot")>>\nYour cum is still basically human; maybe a little thicker. If you get properly knotted, you do get full half-hour orgasms<<if hasMutation("prostate") || hasMutation ("balls")>>, and you cum enough to bloat people up<<endif>>. Your knot is too big for most humans to manage, though.<<endif>>\\n<<if !hasMutation("dick") && !hasMutation("ass") && !hasMutation("knot")>>\nYou guess you're pretty decently hung, for a human at least.<<endif>>\n\n<<display mutationbar>>\n\n<<if $back != "">>[[←|$back]]<<endif>>
window.atTerm = function (pregnant, started, turns) {\n var pregtable =\n { "astau-fertilized": 15\n , "astau": 10\n , "jinn": 15\n };\n return pregnant != "" && (started + pregtable[pregnant]) <= turns;\n}\n\nwindow.englishList = function (opts) {\n return opts.reduce (function (acc, v, i) {\n if (i+1 == opts.length) {\n return opts.length == 2 ? (acc + " and " + v) : (acc + ", and " + v);\n }\n return acc + ", " + v;\n });\n}\nwindow.numString = function (n) {\n function intdiv (i, d) {\n return Math.floor (i / d);\n }\n var ones = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];\n var preteens = ["ten", "eleven", "twelve"];\n var teens = ["thir", "for", "fif", "six", "seven", "eigh", "nine"];\n var tens = ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"];\n var rem;\n if (n === 0) {\n return "zero"\n } else if (n < 10) {\n return ones[n-1];\n } else if (n < 13) {\n return preteens[n-10]\n } else if (n < 20) {\n return teens[n-13] + "teen";\n } else if (n < 100) {\n rem = n % 10;\n return tens[intdiv (n, 10)] + (rem === 0 ? "" : "-" + ones[rem - 1]);\n } else if (n < 1000) {\n rem = n % 100;\n return ones[intdiv (n, 100)-1] + " hundred" + (rem === 0 ? "" : " " + numString (rem));\n } else {\n return "!!CAN'T HANDLE NUMBERS 1000+; HOW DID YOU EVEN GET THIS HIGH!!";\n }\n}
<<if $from['balls'] eq $from['dick'] && $from['balls'] neq 0>>\\n<<display "mergeddickballs">>\n<<else>>\\n/% %/<<if $from['dick'] neq 0>>\\n/% %/<<dickballs "dick">>\n/% %/<<endif>>\\n/% %/<<if $from['balls'] neq 0>>\\n/% %/<<dickballs "balls">>\n/% %/<<endif>>\\n<<endif>>
<<set $_show = parameter(0)>>\\n<<print (function (f){\n switch (f) {\n case "cc":\n return "As you've grown,";\n case "sire injection":\n return "You encountered a wild wandering {sire-locust} in the wasteland, and he pumped you full of raw lightrot slurry until";\n case "sire fuck":\n return "You encountered a wild wandering {sire-locust} in the wasteland, and he fucked you with his mutated, pustulent cock, breeding you full of his lightrot-slurry seed. Exposed to the burn of the raw lightrot,";\n case "jinn-pools":\n return "You fucked Jinn, the human breeder prince, in the lightrot pools beneath the desert, and from his sloppy, lightrot-squirting cunt"\n default:\n return ("!! unhandled from \"" + f + "\"");\n }\n })($from [$_show])>>
<<set $_show = parameter(0)>>\\n<<genhistory parameter(0)>> your <<if $_show eq "dick">>cock<<else>>balls<<endif>> grew fat and heavy, inhumanly huge on your frame. \\n<<if $_show eq "dick">>Your cock juts out from your body even soft, leathery skin stiff but rubbery, with warts piled on top of each other into a lumpy mass running from the tip of your foreskin all the way down to your crotch. <<display "dickpiercings">><<endif>>\\n<<if $_show eq "balls">>Your balls hang <<if hasMutation("dick")>>below your altered cock, equally giant and grotesque. T<<else>>beneath your cock in a giant and grotesque sac: t<<endif>>hey're swollen, lumpy and misshapen, each one nearly fist-sized, and they constantly scrape between your thighs, chafing your skin. They're almost painfully sensitive, and even light tugging and squeezing on them is enough to make you blow your load.<<endif>>
<<genhistory "dick">> your \\n<<if hasMutation ("dick")>>\\ncock <<if hasMutation ("balls")>>and balls<<endif>>\\n<<else>>balls<<endif>> grew fat and heavy, inhumanly huge on your frame. <<endif>>\\n<<if hasMutation("dick")>>Your cock juts out from your body even soft, leathery skin stiff but rubbery, with warts piled on top of each other into a lumpy mass running from the tip of your foreskin all the way down to your crotch. <<display "dickpiercings">><<endif>>\\n<<if hasMutation("balls")>>Your balls hang <<if hasMutation("dick")>>below your altered cock, equally giant and grotesque. T<<else>>beneath your cock in a giant and grotesque sac: t<<endif>>hey're swollen, lumpy and misshapen, each one nearly fist-sized, and they constantly scrape between your thighs, chafing your skin. They're almost painfully sensitive, and even light tugging and squeezing on them is enough to make you blow your load.<<endif>>
<<if hasMutation("glans piercing") || hasMutation("frenum piercing")>>\\n<<set $_dp to\n [ hasMutation("glans piercing") ? "glans" : null\n , hasMutation ("frenum piercing") ? "frenum" : null]\n .filter(function (v) { return v !== null; })\n >>\\n<<print (function (d) {\n switch (d) {\n case 1: return "You have a cock piercing; ";\n default: "You have some cock piercings -- ";\n }\n })($_dp.length)>>\\n<<print $_dp.map (function (p) {\n switch (p) {\n case "glans": return "a wide hoop through your cockhead, down your cockslit and out the underside of your cockhead";\n case "frenum": return "a set of thick barbels studded up the underside of your shaft, (x) barbels from base to tip";\n default: return ("!!UNKNOWN PIERCING (" + p + ")!!");\n }\n }).reduce (function (acc, p) {\n return acc + ", and " + p;\n })>>.\\n<<endif>>\\n<<if hasMutation("cock cage")>>\\n Right now it's locked up tight in a cock cage. You've been locked up for <<print (function (t){\n switch (t) {\n case 0: return "less than a day";\n case 1: return "one day";\n default: return (numString (t) + " days");\n }\n })(Math.floor($chastityStarted - $turns) / 6)>>.\\n<<endif>>
<<if $from['asshole'] eq "cc">>You've fucked around some w/ the passing {locust} troupes, and on one occasion they broke out their stash of lightrot and really worked you over, working it into your ass until they could fit two arms elbow deep.<<endif>>\\n/% $from['asshole'] eq "survey gangbang" %/
<<if $from['leaky'] eq "cc">>A few seasons back, some of the traveling {locust} were unexpectedly gravid -- one had received a larger clutch than he'd realized -- and you offered to incubate the eggs. They took fast within you, and for most of the next half-year you were swollen and enormous, before the next passing group helped you birth them. \\n<<else if $from['leaky'] eq "astau" || $from['leaky'] eq "astau-fertilized">>You were bred by Astau of the wasteland, and pumped full of a clutch of his eggs. \\n<<else if $from['leaky'] eq "jinn">>You fucked the breeder-prince Jinn, and he pumped you full of a clutch of your own eggs. \\n<<endif>>\\n/% $from['leaky'] eq "jinn" %/
<<if $from['six'] eq "astau" || $from['six'] eq "astau-fertilized">>\\n<<if $from['leaky'] eq "astau" || $from['leaky'] eq "astau-fertilized">>\\nThen, Astau bred you again, and the second time your already-altered body responded to his beastly hormones, \\n<<else>>Then, the giant beast named Astau bred you deeply, pumping you full of his eggs, and as they settled within you, your body responded to his beastly hormones, \\n<<endif>><<endif>>\\ncausing you to grow a full set of six nipples, in rows down your chest and stomach.
You're currently heavy with eggs, <<print (function (p){\n switch (p) {\n case "astau":\n return "pumped into you from Astau, the acid-beast of the southeastern wastes. They're not fertilized, and you might need help working them out of your swollen body.";\n case "astau-fertilized":\n return "pumped into you from Astau, the acid-beast of the southeastern wastes. They rested inert within your body until Brulvundojn bred you, and now you can feel them squirm and grow within you. You're enormously pregnant with their young, and the skin across your swollen gut is vividly-striped with raw red stretch marks.";\n case "jinn":\n return "fertilized from you fucking the breeder-prince Jinn and then having him pump them into your body to incubate."\n default:\n return ("unknown egg type\"" + p + "\"");\n }\n }) ($pregnant)>>
mutation level:\n<div id="mutation"><<print (function (muts, mutvals) {\n return muts.map (function (mut) {\n var w = mutvals[mut][0] * 10;\n var c = mutvals[mut][1] == "" ? "" : ' class="' + mutvals[mut][1] + '"';\n return '<span' + c + ' style="width:' + w + '%"></span>';\n }).reduce (function (a, b) {\n return a + b;\n }, '');\n})($mutations, $mutvals)>>\\n<<print (function (v) {\n return v.map(function (s) {\n return '<span class="mark" style="left: ' + (s*10) + '%"></span>'\n }).reduce (function (a, b) {\n return a + b;\n })\n})([1,2,3,4,5,6,7,8,9])>>\\n</div>
#sidebar {\n width: 25%;\n margin: 1em 0 0 0;\n padding: 0;\n}\n#sidebar li { padding-right: 1em; margin: 0; color: #312; }\n\n#storyTitle, #storyAuthor, #restart, #credits, #bookmark { display: none; }\n#sidebar #storyMenu { display: block; }\n#sidebar li a { color: #624; }
div#mutation { width: 50%; height: 1.6em; position: relative; margin-top: 0.6em;\n box-shadow: 0 0 6px 0px #880; }\ndiv#mutation span { display: block; float: left; height: 1.6em; background: #ff0; }\ndiv#mutation span.animal { background: #739; }\n\ndiv#mutation span.mark { position: absolute; bottom: -0.35em; width: 1px; height: 2.2em; background: #330; }
<<nobr>>\n<<if $mutations.length == 0>><<addmutation "pure">><<endif>>\n<<set $brulvundojnFriends to hasMutation("knot")>>\n<<set $knowAstau to false>>\n<<set $from to {}>>\n<<set $from['leaky'] to hasMutation("leaky") ? "cc" : null>>\n<<set $from['asshole'] to hasMutation("asshole") ? "cc" : null>>\n<<set $from['balls'] to hasMutation("balls") ? "cc" : null>>\n<<set $from['dick'] to hasMutation("dick") ? "cc" : null>>\n<<set $pregnancies to hasMutation ("leaky") ? 1 : 0>>\n<<set $wombCounter to 0>>\n<<endnobr>>\n<<display "you">>\n\n[[→|leavetownstart]]\n\n/% * [[jump directly to the city|hive tunnels]] %/
[you're leaving town to scavenge. it's the season when the {locust} are due to show up, tho that could be anywhere from like, a few days to another two or three months ('months').]\n\n<<set $plot to 1>><<resetmoves>><<scatter>>[[head out|worldmap]]
<<nobr>>\n<<set $_n to ($x + "," + ($y-1))>>\n<<set $_s to ($x + "," + ($y+1))>>\n<<set $_w to (($x-1) + "," + $y)>>\n<<set $_e to (($x+1) + "," + $y)>>\n<<set $_i to ($x + "," + $y)>>\n<<endnobr>>\\n<<set $timeOfDay to (6 - $moves) % 6>><<display "time">>\n\n<span class="meta">(yr at <<print $_i>>)\n<<if $treasure.length > 0>>(treasure spots are <<print (function (ts) {\n return ts.reduce (function (a, b) {\n return a + " / " + b;\n });\n})($treasure)>>)\n<<endif>>\\n<<if $sandstorm gt 0>>\\n(king of the storm @ <<print $lord>>)\n<<print $sandstorm>> more turns of sandstorm\n<<endif>></span>\n\n\n<<display $map [$_i].where>>\\n<<if $wwwLocation eq $_i && $sandstorm lte 0 >>* [[a pair of travellers walk across the sands|www pair]]\n<<endif>>\\n<<if $lord eq $_i && $sandstorm gt 0>>* [[the howls of the storm grow ever-louder above you|storm king]]\n<<endif>>\\n<<if $scavenge eq $_i>>* this is the [[scavenge]] spot\n<<else if $treasure.indexOf ($_i) !== -1>>* there's a [[glimmer]] in the sand\n<<else if $moves gte 0 && $carrying.length lt 4 >>* try [[digging]]\n<<endif>>\\n<<if $moves gt 0>>\\n<<nobr>>\n<ul id="nav"><li><<if $map [$_n]>>[[go north|worldmap][$y -= 1; $moves -= 1; $turns += 1;]]<<else>>==go north==<<endif>></li>\n<li><<if $map [$_w]>>[[go west|worldmap][$x -= 1; $moves -= 1; $turns += 1;]]<<else>>==go west==<<endif>></li>\n<li><<if $map [$_e]>>[[go east|worldmap][$x += 1; $moves -= 1; $turns += 1;]]<<else>>==go east==<<endif>></li>\n<li><<if $map [$_s]>>[[go south|worldmap][$y += 1; $moves -= 1; $turns += 1;]]<<else>>==go south==<<endif>></li></ul>\n<<endnobr>>\\n<<if $plot eq 6>>[this part is just uhh doing some final resolution junk. figuring out where the human squad ppl have been hiding, resolving any early-game subplot stuff that was left hanging to this point.]<<endif>>\\n<<else>>\\n* set up [[camp]]\n<<nobr>>\n<ul id="nav"><li>==go north==</li>\n<li>==go west==</li>\n<li>==go east==</li>\n<li>==go south==</li></ul>\n<<endnobr>>\n<<endif>>
<<nobr>>\n<<set $nextDaySandstorm to $sandstorm > 0 ? false : Math.random() < 0.125>>\n<<set $wanderingSire to Math.random() < 0.5>>\n<<display "moveWanderers">>\n<<set $moves to 3>>\n<<endnobr>>
<<set $wwwPairCoords to {x: 1, y: -2}>>
<<nobr>>\n<<set $wwwPairCoords to stepPairInRange ($wwwPairCoords, {lo: -3, hi: 3}, {lo: -1, hi: 4})>>\n<<set $wwwLocation to ($wwwPairCoords.x + "," + $wwwPairCoords.y)>>\n<<endnobr>>
<<nobr>>\n<<set $treasure to (function () {\n function randomInRange (lo, hi) {\n var diff = hi - lo;\n var v = Math.floor (Math.random() * diff);\n return lo + v;\n }\n var o = [];\n var invalid = ["0,0", "1,0", "-1,0", "0,1", "0,-1", "-3,-3", "-3,3", "3,3", "3,-3"];\n var n;\n var x;\n var y;\n while (o.length < 3) {\n x = randomInRange (-3, 3);\n y = randomInRange (-3, 3);\n n = x + ',' + y;\n if (invalid.indexOf (n) === -1 && o.indexOf (n) === -1) {\n o.push (n);\n }\n }\n return o;\n })()>>\n<<endnobr>>
<<if $sandstorm gt 0>>\\n<<set $sandstorm -= 1>>\\n<<print (function (t, s) {\n var sMsg = "";\n switch (s) {\n case 0:\n sMsg = " The storm blows itself out with a few final gusts, leaving you among newly-shaped dunes."\n break;\n case 1:\n case 2:\n sMsg = " The howl of the storm starts to ebb, and patches of light filter through the thinning walls of sand.";\n break;\n default:\n break;\n }\n switch (t) {\n case 0:\n return "It's around dawn." + (sMsg.length > 0 ? sMsg : " It's still storming, but the daylight turns the air from lightless black to dusty brown.");\n case 1:\n case 2:\n return "It's day." + (sMsg.length > 0 ? sMsg : " The air is hazy, and it's impossible to see more than a few feet in front of you from the billowing sand.");\n case 3:\n return "It's around dusk." + (sMsg.length > 0 ? sMsg : " It's still storming. The air is hazy, and it's impossible to see more than a few feet in front of you from the billowing sand.");\n case 4:\n case 5:\n return "It's night." + (sMsg.length > 0 ? sMsg : " It's still storming. It's pitch black; the only light is abrupt flashes of lighting from within the body of the storm.");\n default:\n return "!!error!!";\n }\n })($timeOfDay, $sandstorm)>>\n<<if $sandstorm lte 0>><<display "scatter">><<endif>>\n<<else>>\n<<print (function (t, n) {\n var s = n ? " The sky is a sickly green, and the air is sharp with the smell of a storm. A sandstorm is coming." : "";\n switch (t) {\n case 0:\n return "It's dawn, with the sun just cresting over the eastern mountains." + s;\n case 1:\n return "It's early, but the morning heat has already arrived. The sun beats down on you. The horizon ripples with heat." + s;\n case 2:\n return "it's afternoon, and the sun beats down on you. the horizon ripples with heat.";\n case 3:\n return "it's dusk. the sun has just sunk in the west, and the sand is still radiating heat, rippling at the horizon."\n case 4:\n return "it's night. stars glimmer in the sky above. {the moon} is full and heavy in the sky."\n case 5:\n return "it's night. all is still and quiet. the heat of the day is long gone, and the air is bitterly chill."\n default:\n return "!!error!!";\n }\n })($timeOfDay, $nextDaySandstorm)>>\n<<endif>>
<<if $_i eq "-3,0" && !$brulvundojnFriends>><<display "brulvundojn camp confront">>\n<<else>><<display "actual camp">>\n<<endif>>
<<if $droneActive eq "Djen">><<display "djen camp">>\n\n[[→|camprun]]<<endif>>\\n<<if $droneActive eq "Pthuul">><<display "pthuul camp">>\n\n[[→|camprun]]<<endif>>\\n<<if $droneActive eq "Khru">><<display "khru camp">>\n\n[[→|camprun]]<<endif>>\\n<<if $droneActive eq "Gawann">><<display "gawann camp">>\n\n[[→|camprun]]<<endif>>\\n<<if $droneActive eq "Yraal">><<display "yraal camp">>\n\n[[→|camprun]]<<endif>>\\n<<if $droneActive eq "Jinn">><<display "jinn camp">><<endif>>\\n<<if $droneActive eq "birthing squad">>\\n<<if $pregnant neq "">>\\nthe half of the locust squad with [[''you''|you][$back = "camp"]] sets up camp and then probably gently fucks you a little while rubbing yr pregnant gut\n\n[[→|camprun]]\n<<else>>\\n[[''you''|you][$back = "camp"]] and the locust with you set up camp and then they properly fuck yr still-stretched-from-birthing asshole a bunch\n\n[[→|camprun]]\n<<endif>><<endif>>\\n<<if $droneActive eq "squad">>\\n[[''you''|you][$back = "camp"]] and the survey team set up camp. probably there's a sequence of gangbang scenes here that progresses with each night\n\n[[→|camprun]]<<endif>>\\n<<if $droneActive eq "" || !$droneActive>>\\n/% %/[[''you''|you][$back = "camp"]] set up camp for the day. \\n/% %/<<if $nextDaySandstorm>>\\n/% %/<<display "sandstorm init">>\\n/% %/the wind picks up, howling through the desert, and the scree of sand impacting the side of the tent lulls you to sleep.\\n/% %/<<else>>\\n/% %/<<if $sandstorm > 0>>The wind howls, and the sand buzzes beneath you from the force of the storm.\\n/% %/<<else>>The sky turns blue above you, and the final stars wink out.\\n/% %/<<endif>>\\n/% %/<<endif>>\n\n[[→|camprun]]<<endif>>
<<nobr>>\n<<set $sandstorm to Math.floor (Math.random() * 15) + 8>>\n<<set $treasure to []>>\n<<set $lord to (function () {\n function randomInRange (lo, hi) {\n var diff = hi - lo;\n var v = Math.floor (Math.random() * diff);\n return lo + v;\n }\n var invalid = ["0,0", "1,0", "-1,0", "0,1", "0,-1", "-3,-3", "-3,3", "3,3", "3,-3"];\n var n;\n var x;\n var y;\n while (true) {\n x = randomInRange (-3, 3);\n y = randomInRange (-3, 3);\n n = x + ',' + y;\n if (invalid.indexOf (n) === -1) {\n return n;\n }\n }\n })()>>\n<<endnobr>>
[ [[''you''|you][$back = "camp"]] and Djen set up camp and probably fuck around]\n\n(he's got a giant prehensile earthworm dick, complete w/ banded bit, that's bulging w/ asymmetrical pustules of lightrot all across the shaft. his pre is yellow-tinged go w/ cloudy white gunk & it visibly glows.)\n\nstructurally it makes sense for basically every sex scene w/ him to tf you but that would kinda weigh his survey a lot, which i don't know if i'd want to do\n\nbut you know, a branching option that lets you pick b/t\n* sucking on it (& having it slither down yr throat all the way into yr stomach)\n* having him fuck you w/ it (w/ a giant stomach bulge)\n* letting you fuck/knot his cock & having yr cock get basted in imulsion slime\n* jerking him off and having him cum all over you\n* frot that's just like, his giant dick spiralling around yr dick + also arm and just kinda rutting against each other\n\nwith various scenes progressing down various tf paths
[ [[''you''|you][$back = "camp"]] and Pthuul set up camp and probably fuck around]\n\n1st night: [[pthuul first time]]\n\n2nd night he's into fucking you w/ you on yr back w/ yr legs in the air and him pounding away, sometimes leaning in to make out. keeps going until he's dumped three-or-so loads in you and each thrust comes w/ a wet squelch and a gush of cum spurting out from yr swollen asshole.\n\n3rd night he plays w/ yr asshole while making out, trying to milk a few loads out of you without really touching yr dick. lubes his dick up w/ yr combined loads and then fucks you.\n\n\nif you got a locust dick or a knotted dick he blows you / rides yr dick
[ [[''you''|you][$back = "camp"]] and Khru set up camp and probably fuck around]\n\n[ he's got a frenum latter, & he's got scaly scute plates basically in the place of pubes & crawling up the base of his dick ]\n\nthis would be like, first night you set up the tent, and there's some flirty dialog exchange kinda stuff, and he's like groping himself all "yeah yknow a bj would take the edge off" and so he strips down and you blow him. then he fucks you.\n\ni guess his sex scenes would be like, do you wanna blow me first or should i get right down to it? and having a facefucking progression independent of the fucking progression, that's like about getting yr throat to open up so you can swallow him down to the scaly chunky root. on yr knees in front of him while he sits on yr packs, w/ him facefucking you to a greater or lesser degree.\n\n2nd night more the same, fucking you w/ you on yr knees, and then him fisting you afterwards lubed w/ his own load. jerking off onto yr gaping asshole so he can really churn his fist around\n\n3rd night an exhausting mess of fucking and fisting and then fucking more. riding his dick while each thrust squirts come out across his stomach and thighs.\n\nafter this just i guess repeat the 3rd night scene, or randomly picking one of the three sex scenes just w/ some slightly different dialog at the intro.\n\n\n(after you've done the great beast sex scene then his camp scenes would be like fisting-oriented w/ you swapping off. getting elbow-deep inside him while he whines and groans and ruts back against you, and often as not cums just from getting fisted. he's still interested in fucking you himself tho)
[[''you''|you][$back = "camp"]] and Gawann set up camp and probably fuck around]\n\n(he's got a sheathed dick w/ a big gnarled crest along the upper half of his cockhead. like half of a flared dick, or a triceratops head crest basically. also his pre is a cloudy black + his cum is shiny and metallic, like quicksilver)\n\nhis dick is more suited to the stature of an animal than a man. by which you mean the thing is about the size of your entire arm, and when it's fully unsheathed it spans nearly all the way to his head, kinda sandwiched between his quad-pecs. if he fucked while standing up it would seem completely absurd, but when he's on all fours (sixes) it's only mostly absurd.\n\non the first night he's like, yeah it's weird travelling on the uplands. and w/ {locust}. like he knew they had high sex drives but every night was basically a nonstop orgy. and yr like "oh?" and he's like, well, i don't _gotta_ fuck every night. but if you want...\n\nso the first night sex scene is him like, on all fours (sixes) on top of you w/ his dick drooling cloudy black pre everywhere while you explore his dick & finally get him to fuck yr hands & hose you down w/ a giant quicksilver load. & then he laps some of it up and mostly just smears it around & then makes out w/ you w/ his muzzle drooling cum.\n\n2nd night is like, making out w/ his cockhead until yr head is entirely glazed w/ reeking metal head pre. and yr like 'hey fuck me' and he's like "my cockhead ridge is pretty flexible but it's not _that_ flexible" and yr like "i might surprise you". anyway then yr ass swallows up his cock and he fucks you a bunch and gets you all cumflated.\n\n3rd night probably more of the same? or like some options\n * you fuck him, w/ him riding yr dick\n * he fucks yr throat & gets you to swallow his entire dick to the sheath\n * sheathfucking\n * he just fucks you again
[ [[''you''|you][$back = "camp"]] and Yraal set up camp and probably fuck around]\n\n(also he's got some fat stubby dick w/ giant balls and cums w/ a cum-plug)\n\n1st night is like, him showing off his cock & letting you play w/ it. he has these giant round balls in an overpacked sac, like bowling-ball sized, and his taint is all spongy and bulging too. his cock is stubby (so like ~5inches, human sized, which is tiny in this setting :V) and he's like cum plugs, etc. when he's hard he drools pre constantly, and like, in large quantities. cock constantly drizzling pre, enough to totally fill cupped hands in like a minute, say. his first few shots when he cums are literally like an open faucet, and after that it's a constant spill for ~45m.\n\nso his sex scenes are like, addative cumflation. each night he fucks you and has this huge half-hour/hour-long orgasms that bloats you more and more & then seals it in w/ a fresh plug, until it's like, he pops the seal w/ his dick and for the entire time yr leaking old cum until he seals you up again. the focus of these sex scenes would be like, prostate stimulation, his cockhead bashing right against it, yr body soaking up his imulsion-rich cum and having it flood yr ass and prostate. also him lessing you blow him a little beforehand w/ yr head buried under his gut and pressed against his fat pad etc. him having little mini-orgasms that are to him a few spurts of pre mixed w/ cum and to you are like absolutely enormous cumshots.\n\nalso since his survey involves checking a bunch of locations it should probably have more than 3 stages. maybe not more than three _sex scenes_ but definitely should have like, five, six, nine, etc stages of cumflation, to be referenced in the desc + during the (repeated, presumably) sex scene
[[''you''|you][$back = "camp"]] and Jinn set up camp and probably fuck around]\n\n<<if $surveyComplete>>[you set up camp. jinn helps some.]\n\n<<if $jinnPregnant>>\\n/% %/<<if $jinnPrePregnant>>\\n[jinn's gut is starting to bloat. he's definitely pregnant. you kinda fuck around, just kinda sprawling on yr side rubbing yr guts together, grinding yr dick against his cunt, milking his already-leaky tits etc. when you press together you can feel his eggs squirming inside him.]\n\n[[→|camprun]]\n/% %/<<else>>\\nhe's like, hey guess what. you succeeded in knocking me up. i got these eggs squirming around inside me now, and you know the deal. {how abt you get on yr knees. / how abt you show me that ass.}\n\n<<display "jinn egging">>\n/% %/<<endif>>\n<<else>>[he's like, well there's not enough time for the eggs to get fertilized on the way back, so yr stuck using one of my other holes. so you know, go for it]\n\n* [[fuck his mouth|jinn fuck mouth]]\n* [[fuck his ass|jinn fuck ass]]\n* obligatory rejection branch\n\n(this should be different if you haven't fucked him at all, probably)\n<<endif>>\n\n<<else>>\\n<<if $camps['jinn'] == 0>>[you set up camp. jinn helps some but it's pretty clear he doesn't have a whole lot of experience actually doing the work.\n\nhe kinda sprawls back across his bedroll, legs spread, looking very wanton and artfully disheveled, and is like 'so you wanna fuck around?']\n\n* [[yeah go for it|jinn first fuck]]\n* obligatory rejection branch\n<<else>>[you set up camp. jinn helps some.\n\nafterward he's like <<if $jinnFucked > 0>>hey you wanna fuck again?\n\n* [[yeah go for it|jinn first fuck]]\n* obligatory rejection branch\n<<else>>hey you up to fucking me tonight?\n\n* [[fuck him again|jinn fuck]]\n* obligatory rejection branch<<endif>>\n]<<endif>>\\n<<endif>>\n<<set $camps['jinn'] += 1>>
[ jinn lets his dick prolapse out of his cunt for the first time that you've seen, & it's this comparatively-stubby but nearly arm thick monolith. if you've got a womb already he fucks yr ass and pumps them directly in there, otherwise he fucks yr throat & is like, gotta give yr body some time to respond to the hormones, b/c they need a proper place to incubate. ]\n<<set $pregnant to "jinn">>\\n<<set $pregnancyStarted to $turns>>\\n<<set $pregnancyTf to "no">>\\n<<set $pregnancies += 1>>\\n<<set $jinnPregnant to false>>\\n<<set $jinnWasPregnant to true>>\\n\n[[→|camprun]]
<<if $pregnant neq "">><<display "jinn pre-pregnant first">>\n<<else>><<display "jinn not-pregnant first">>\n<<endif>>
<<set $jinnPrePregnant to true>>\n[jinn is like, so you got knocked up huh. all petting yr gut and all. ]\n\n[this sex scene is mostly you making out with him grinding against yr thigh, kinda jerking each other off. he's like, you know you look real good w/ yr gut all swollen like that. he's kinda giddy about it, like, y'know i got work to do with the survey and all. but it would be real nice if you could knock me up too. what dyou say about that?]\n\n* [[fuck his mouth|jinn fuck mouth]]\n* [[fuck his ass|jinn fuck ass]]\n* [[fuck his cunt|jinn fuck cunt]]
[you move over him and he reaches up and pulls you into a kiss. makeouts, etc, w/ his hands feeling all across yr body + you feeling up his fat pecs and chubby gut & thighs, etc. he jerks down yr pants and grabs at yr dick, groaning as he wraps his fist around it, and he pumps yr dick a little, moaning when it shudders and gushes pre across his belly.\n\nit's pretty clear he's got a cunt, even though his pants: yr palm grinds against his lips, and he arches up, fat lips spreading, the heat radiating through his clothes increasing. he groans into your mouth and shoves his pants down to his thighs.\n\nhe's like, one of the sires was a {kantus} high priest. his cunt is slick and flushed, labia huge and engorged, and his clit is an enormously-fat cockhead, winking between his lips as he clenches down -- remarkably strong -- on yr fingers. his cockhead pulses, huge cocklips pursing and spitting cloudy pre in little arcs, smearing all across his slick lips. like a kantus, he's probably got an internal cock, but he doesn't seem in any hurry to unsheath.]\n\n[he arches up, grinding yr drooling cock against his lips. the flesh of his cunt is slick and yielding, wetly sucking against the underside of yr fat shaft. he's flushed, ruddy across his face and in big blotches across his chest. he's like, okay here's the deal. it would be really fucking obnoxious if i got pregnant during this survey. i got work to do. so if you knock me up that's your problem; i'm gonna pump those eggs into you the second they start to grow.\n\nbut. yknow. i could really use a good fuck.]\n\n* [[fuck his mouth|jinn fuck mouth]]\n* [[fuck his ass|jinn fuck ass]]\n* [[fuck his cunt|jinn fuck cunt]]\n<<endif>>
[ he's lying there spread out w/ most of his right hand shoved into his gaping cunt, fingers sliding across his inner walls, thumb playing w/ the ridge of his cockhad. he's like, so what'll it be?]\n\n* [[fuck his mouth|jinn fuck mouth]]\n* [[fuck his ass|jinn fuck ass]]\n* [[fuck his cunt|jinn fuck cunt]]
[you fuck jinn's mouth. he moans when you get yr cock all the way down his throat. etc etc bj scene here; you cum in his mouth and he gulps it down and then pulls off to share the dregs w/ you]\\n<<set $jinnFucked += 1>>\\n<<set $jinnFuckedMouth += 1>>\n\n[[→|camprun]]
[you fuck jinn's ass. he's got a big fat ass, lightly haired all over. his ass is totally yielding, tight but spreading easily the deeper you go. etc etc sex scene here.\n\nhe cums as you fuck him, cockhead pushing a fraction of an inch past his rubbery cunt lips, and gushes a whole mess of slimy ooze all over his bedroll from his cock & cunt both. he complains about having to sleep in the wet spot]\\n<<set $jinnFucked += 1>>\\n<<set $jinnFuckedAss += 1>>\n\n[[→|camprun]]
[you fuck jinn's cunt. you can feel the length of his cock still sheathed inside him, rubbing against yr own shaft. it rocks back and forth, sliding forward until there's a shuddering spasm that pulls it back. you can also feel the giant, ovoid shapes of his internal balls, set deeper and bulging out the underside of his tunnel. etc sex scene here.\n\njinn squirts, spraying all across yr thighs and stomach, and you <<if hasMutation("knot")>>\\nknot him and pump him full of yr load until he looks pregnant already.\\n<<else>>\\ncum inside him, thrusting until yr come splurts out around yr shaft and smears all across yr skin.\\n<<endif>> you pull out, leaving his cunt a sloppy, cum-filled mess.]\\n<<set $pregRate = hasMutation("knot") ? 0.50 : 0.25>>\\n<<if Math.random() < $pregRate>><<set $jinnPregnant to true>><<endif>>\\n<<set $jinnFucked += 1>>\\n<<set $jinnFuckedCunt += 1>>\n\n[[→|camprun]]
<<display "timed tfs">>\\n\\n<<if $sandstorm>><<set $sandstorm -= 3>>\\n<<if $sandstorm lte 0>><<display "scatter">>you sleep soundly in the sandstorm. it burns itself out during the day, and <<resetmoves>>[[at dusk you pack up and set off|worldmap]]\n<<else>>you sleep soundly in the sandstorm, and <<resetmoves>>[[at dusk you pack up and set off|worldmap]]\n<<endif>>\\n<<else>>you sleep fitfully through the day's heat, and <<resetmoves>>[[at dusk you pack up and set off|worldmap]]\n<<endif>>
<<if $pregnant neq "">>\\n<<if !hasMutation ("womb") && ($pregnancyStarted + 7) lte $turns>>\\n/% %/<<if $pregnancies gte 2 && $wombCounter gte 8>>\\n/% %/<<addmutation "womb">>\\n/% %/<<set $from['womb'] to $pregnant>>[the heat in yr guts flowers open, and you can feel new muscles moving inside you, slowly gulping eggs into some new chamber inside your body]\n\n/% %/<<else if ($wombCounter % 2) == 0>>\\n/% %/[yr guts throb around the eggs inside you, and a hot stinging sensation spills through yr flesh]\n\n/% %/<<endif>>\\n/% %/<<set $wombCounter += 1>>\\n<<endif>>\\n<<if $pregnancyTf eq "pre" && ($pregnancyStarted + 10) lte $turns>>\\n/% %/<<if hasMutation ("pre-leaky")>>\\n/% %/<<rmmutation "pre-leaky">>\\n/% %/<<rmmutation "pure">>\\n/% %/<<addmutation "leaky">>\\n/% %/<<set $from['leaky'] to $pregnant>>[you wake up in the night to find your nipples dripping, with a slick, ichorous milk oozing down your chest.]\n\n/% %/<<endif>><<if hasMutation ("pre-six")>>\n/% %/<<rmmutation "pre-six">>\\n/% %/<<addmutation "six nipples">>\\n/% %/<<set $from['six'] to $pregnant>>[you wake in the night to find the dense, fleshy nubs down your chest have started leaking too, having finished their growth into two new sets of nipples. they're all steadily dribbling milk over yr pregnant gut.]\n\n/% %/<<endif>>\\n/% %/<<set $pregnancyTf to "yes">>\\n<<endif>>\\n<<if $pregnancyTf eq "no" && ($pregnancyStarted + 5) lte $turns>>\\n/% %/<<if !hasMutation("leaky")>>\\n/% %/<<addmutation "pre-leaky">>[you wake up to find yr nipples aching and engorged, with hard disks forming beneath them]\n\n/% %/<<else if $pregnant eq "astau" || $pregnant eq "astau-fertilized">>\n/% %/<<addmutation "pre-six">>[you wake up to yr chest and abs aching, with dense breast flesh aching under your nipples, and four hard disks swelling under your skin, in lines down over your ribs and stomach]\n\n/% %/<<endif>>\\n/% %/<<set $pregnancyTf to "pre">>\n<<endif>>\\n<<endif>>
there was something here once. old marble, with lots of stairs and tiles. maybe an outdoor garden, though there's no trace of vegetation or even dirt at this point. just the occasional expanse of flat, sandy marble, and the rocky spur of a broken, sandblasted pillar sticking up from the drifting dunes.\n\n* <<if $droneActive eq "Yraal" && $surveyComplete neq true && $gardenSurvey neq true>>[[wait while Yraal looks around the ruins|yraalsurvey][$gardenSurvey = true]]<<endif>>
a shallow canyon in the shadow of the eastern glass mountains. sheltered from the desert wind, there's traces of old water, and a few brown, dead-looking plants in the canyon's overhangs.
the glass mountains are further northeast, big and dully glittering. the sand here is rough, mixed in with shards of fused green-black glass, and it mounds up into higher and higher dunes.
yr in the foothills of the glass mountains, where the thick sand gives way to a dusty scattering over fused green-glass and old black stone. the mountain crags shimmer above, and the ways along the hills sometimes yawn open into cave entrances.\n\n* <<if $droneActive eq "Gawann" && $surveyComplete neq true && $glassCavesSurvey neq true>>[[wait around while Gawann goes into the caves or digs around or whatever|gawannsurvey][$glassCavesSurvey = true]]<<endif>>\n* <<if $droneActive eq "Pthuul" && $surveyComplete neq true>>[[wait around while Pthuul does whatever it is he wants to do with the glass mountain|surveycomplete]]<<endif>>\n* <<if (($ticStress eq 1 && $plot eq 4) || $plot gte 6) && $ticLocation eq "caves">>there's [[smoke|2ic caves]] coming from one cave opening<<endif>>
the tree. it's older than the town, and likely older than the ruins as well. it's stunted, gnarled from the endless wind and the coarse sand, but it still clings to life, with green-yellow leaves on its upper limbs. its roots form coils and humps in the sand around it, and in its shadow the sand is marginally heavier, less dusty.
the earth split open here, many years ago, and the yawning chasm it left is still here. the ground here is treacherous, with hardened sand cracking apart into open pits, and vast sloping hills of sand that empty directly into the mouth of the great pit.\n\n* <<if $droneActive eq "Gawann" && $surveyComplete neq true && $cleftSurvey neq true>>[[wait around while Gawann goes into the caves or digs around or whatever|gawannsurvey][$cleftSurvey = true]]<<endif>>
the area is ribboned with ridges, like the desert pulls at its seams to reveal slices of red-orange stone. the ridge edges are pockmarked with cave entrances going down deep.\n\n* <<if $droneActive eq "Jinn" && $surveyComplete neq true>>[[go w/ Jinn while he snoops around in the caves|jinnsurvey]]<<endif>>\n* <<if $droneActive eq "Gawann" && $surveyComplete neq true && $caveRidgeSurvey neq true>>[[wait around while Gawann goes into the caves or digs around or whatever|gawannsurvey][$caveRidgeSurvey = true]]<<endif>>\n* <<if $droneActive eq "birthing squad" && $pregnant neq "">>go [[down|lightrot caves]] into the lightrot caves<<endif>>\n* <<if $plot eq 6>>this is where the [[new locust hive|new hive]] is<<endif>>
it's the town of Yapu. a collection of ramshackle huts in clusters -- metal sheeting, concrete pillars, and plastic panels, fixed together with adobe and green glass.\n\n(<<if $plot eq 2>>\\n/% %/[[head back to the village|village int]]\\n<<else if $plot eq 4 && ($droneActive eq "" || $surveyComplete eq true)>>\\n/% %/[[head back to the village|village int]]\\n<<else if $droneActive eq "" && $carrying.length gte 4>>\\n/% %/[[head back to the village|village int]]\\n<<else>>\\n/% %/==go to the town==\\n<<endif>>)
you're amid the cacti fields east of town, used for water harvest. they're fat, bulbous things, covered in leathery patches where they grew so engorged on water their skin burst.
you're among rolling sand dunes, walking in the lull between them.
you're among rolling sand dunes, walking in the lull between them. you're just north of town.
you're in the flat, desolate desert. the sand beneath is hardened and cracked apart into tiles.
you're in the flat, desolate desert. the sand beneath is hardened and cracked apart into tiles. this is just south of town.
you're in the trackless desert, where wild cacti grow.
you're in the trackless desert, where wild cacti grow. this is just west of town.
the desert here is shaped by an ancient roadway, with crumbling concrete overpasses forming hills or hollows, and long sinuous curves of highway now cliffs and arches in their ruined state.\n\n* <<if $droneActive eq "Yraal" && $surveyComplete neq true && $concreteSurvey neq true>>[[wait while Yraal looks around the ruins|yraalsurvey][$concreteSurvey = true]]<<endif>>
the metal wastes. the husks of metal-and-glass towers jut up into the sky, acid-etched and crumbling apart.\n\n* <<if $droneActive eq "Khru" && $surveyComplete neq true && $brulvundojnFriends>>[[introduce Khru to Brulvundojn|surveycomplete]]<<endif>>\n* this is where [[brulvundojn's den|brulvundojn's den]] is
the blasted lands. the air crackles and sparks. the sand is pockmarked with craters, burnt to black glass, and each has an ancient instrument at its center: a blackened thing reaching up into the sky, humming and buzzing. the less eroded the instrument, the worse the buzz in the air near the crater. nothing lives here.
edge of the acid flats; sand giving way to crunchy chemical exudate; acid flats themselves a shallow swamp of bubbling acid, which has formed these vivid strata of chalky white-rusty orange-bright green-pink-etc in repeating bands, like mesas.\n\n* <<if $droneActive eq "Djen" && $surveyComplete neq true>>[[wait around while Djen does whatever it is he wants to do with the acid flats|surveycomplete]]<<endif>>\n* <<if $plot gte 6>>[[late-game acid flats sex scenes]]<<endif>>
the acid flats sweep north, sand eroding down from its constant tide. the acid outlines a shallow bay, sand still visible beneath a shallow layer of bubbling acid. the air is sour and the fumes make your eyes water.
at the edge of the acid flats. stalks grow out in the acid, strange fluted plants with purple-black vegetation, in clusters and thickets. they bulge and boil in the heat, and occasionally one erupts, spraying spumes of acid high into the sky like a geyser.
the trackless wastes spill out in every direction, without change, from horizon to horizon. the sky feels very close.
the sand here is powdery and white and packs strangely under your feet. in places it's dissolved into some kind of bubbling liquid.
the ground here smokes in the heat. at erratic intervals, something beneath the surface ignites with a ground-shaking //foom// and the sand boils like water, pillars of flame erupting from the earth with rattling crashes as planes of sand slide and sink in on themselves
broken shards of the glass mountain's peaks have landed here: long, fine glass skewers, from the initial explosion, and the desert wind has sculpted them into humming sculptures. the wind rushes through hollows and makes them vibrate, and they give off an unearthly keening.
the ground has been eaten away in patches, leaving behind deep hollows that go down and down; there are trenches in the sand from some beast dragging its tail, burrowing down to a subterranean den.\n\n* <<if $droneActive eq "Khru" && $surveyComplete neq true && $knowAstau>>[[introduce Khru to Astau|surveycomplete]]<<endif>>\n* <<if $knowAstau>>[[astau's den]] is here\\n<<else>>explore in the [[deep hollows|astau's den]]<<endif>>
the wasteland stretches off to the east, wrapping around the mountains to the north: endless desert, in vast expanses that no eyes have ever seen. the ground here is sturdy, but not for long.
a few rocky mesas, surrounded by stratified rock pillars and a few natural arches. the wind whistles through the holes in the rock.
mesa country. the northern lowlands stretch out before you, lower and marginally greener. its reddish sands are punctuated by black mesas with ancient trees on their tops.
red-rock spikes erupt from the ground. lightrot crystals grow from shallow divots on their surface, making them look like rocky trees.\n\n* <<if $wanderingSire && $droneActive eq "" && $sandstorm lte 0>>[[there's a tent set up between the spikes|wandering sire]]<<endif>>
a deep canyon cuts across the land, nearly invisible until you're on top of it. there are old switchback trails doing down, to a dusty dry streambed at the bottom.\n\n* [[follow the trails down|canyon trail]]
the sand here trickles down into old caves, and at the crumbling edge you can see down into the spaces below, full of the marks of ancient encampments, fresh as if they were used yesterday: old petroglyphs on the rock, umber paintmarks on the walls, wood ash swept into the corners, sharp rocks with chipped edges.\n\n* <<if $droneActive eq "Gawann" && $surveyComplete neq true && $ravineSurvey neq true>>[[wait around while Gawann goes into the caves or digs around or whatever|gawannsurvey][$ravineSurvey = true]]<<endif>>
a span of red rock forms a horseshoe-shaped ridge. scraggling brush clings to the ridge walls, and detritus litters the base of the ridge.\n\n* <<if $droneActive eq "Gawann" && $surveyComplete neq true && $ridgeSurvey neq true>>[[wait around while Gawann goes into the caves or digs around or whatever|gawannsurvey][$ridgeSurvey = true]]<<endif>>\n* there's a crack in the ridge
an ancient, crumbling fortress, from long ago. all that's left is the vague shape of its walls, edges mounded up under sand, and a handful of interior crossbeams: wood, but so weathered away they're thin as sticks and hard as rock.\n\n* <<if $droneActive eq "Yraal" && $surveyComplete neq true && $fortressSurvey neq true>>[[wait while Yraal looks around the ruins|yraalsurvey][$fortressSurvey = true]]<<endif>>
the sand here is red with rust, and the dunes are shaped around the last vestiges of acid-pitted metal husks.
some strange vegetation from the acid flats has grown north over the sand: a twining, thorny vine, rust-red with chalky yellow stripes. it forms thickets in seemingly arbitrary spots, growing into stalks twice your height, with red-black vines spanning between each copse, linking them together as a single enormous lifeform.
the garden crossroads. there's a lull between dunes, and the land between is green. crunchy not-quite-dead grass grows underfoot, and sagebrush dots the land. a few gnarled acacia trees grow in a sparse copse at the center of the lull.
at the base of a giant black-rock mesa. there's a cavernous opening at the base.\n\n* [[go down into the caves|hive tunnels]]
<<if $_i eq "-3,0" && !$brulvundojnFriends>><<display "brulvundojn dig confront">>\n<<else>>\n<<set $moves -= 1>>\\n<<set $_res to (function (){\n var res = $map [$_i].items;\n if (res.length === 0) {\n return null;\n }\n return res[Math.floor (Math.random() * res.length)];\n })()>>\\n<<print (function (item) {\n switch (item) {\n case null:\n case 0:\n return "you dig and find nothing but sand and dust.";\n case "sand": return "you dig up some sand. what were you expecting here, really?";\n case "rejection": return "it's not a good idea to dig this close to the cacti, so you don't.";\n default: return ("you dig up " + item);\n }\n })($_res)>>\n<<if !($_res eq 0 || $_res eq null || $_res eq "sand" || $_res eq "rejection")>>\\n<<set $carrying.push ($_res)>>\\nyou're carrying <<print englishList ($carrying)>>. <<if $carrying.length >= 4>>no room for anything more.<<else>>room for <<print numString (4 - $carrying.length)>> more.<<endif>>\n<<endif>>\n\n[[→|worldmap]]<<endif>>
<<if $scavenge eq "">><<set $scavenge to $_i>><<display "scavenge">><<else>>\\n[ you find uhhhh some kind of valuable thing in the sand] \n\n[[→|worldmap]]<<endif>>
<<if $plot gte 3>>[ this is the dune you dragged that tanker out of, way back when.]\n\n[[←|worldmap]]\n<<endif>>\\n<<if !$brulvundojnChain && !$locustChain>>\n[ you hit the motherlode. it's an old like, a tank, or a cargo transport, or some other relatively modern and big thing that's too big to transport back on yr own. (i think what it is specifically depends on where you go, but doesn't meaningfully change the rest of it)\n]\n\n* <<if $brulvundojnFriends>>you could head out west to the metal wastes and ask brulvundojn for help dragging it somewhere<<endif>>\n* you could head back to the village to figure out what to do\n\n<<set $plot to 2>>[[worldmap]]\n<<endif>>\n<<if $plot eq 2 && $brulvundojnChain>>\n[ brulvundojn yokes himself up and pulls the thing back to town effortlessly\n]\n\n<<set $plot to 3>>[[→|village int]]<<endif>>\n<<if $plot eq 2 && $locustChain>>\n[it's like, you head back out into the wastes w/ a few locust and get to the thing at dusk, and then you get gangbanged more-or-less aggressively, before you get the wheels/treads/etc working well enough to roll\n]\n\n<<set $plot to 3>>[[→|drag back]]<<endif>><<set $humanSiegeArrive = $turns + 31>>
[ you all commit to bodily dragging the thing back, slowly and laboriously over the course of hours.]\n\n[[→|village int]]
[the storm king descends]\n\n[ an actual scene w/ the storm king:\n[ giant bird-dragon thing? w/ a giant cloaca? & you can fist it and then get tentacle-fucked by its giant prehensile cloaca cilia-tentacles ]\n[ basically thinking of this as basically the storm king from ds3 ]\n[ wingspan as big as four people laid out. mostly leathery w/ but w fringe of quills/feathers. giant sloppy cloaca you can fuck open, tho it's too huge to knot or anything. the inner flesh is covered in thick, stubby cilia that writhe and squirm around, w/ some of them being actual tentacles that are much longer. the sex scene is like, you just kinda pumping yr arms inside it while yr cock grinds against the lower ridge.\n\nif yr not pregnant:\nit can kinda rut against you w/ yr legs in the air spread around its hips, and yr ass partially swallowed up in its giant gaping cloaca. pumps a few giant storm king eggs into you, w/ tentacles wrapping up all across yr body to hold you up against its cloaca.]\n\n[[→|worldmap]]
[wandering sire who shows up randomly at the lightrot tree]\n\n[he collects lightrot shards, scrapes them down to pure lightrot, mixes them w/ drool/pre, mashes it up into a thick paste, and then sounds his cock w/ a giant hollow rod + plunger (basically a needleless syringe) and injects it into his prostate. can do the same w/ yr cock or ass, or alternately (or sequentially) can just fuck you w/ his giant pustulent lightrot cock & baste your guts w/ lightrot sludge. gives a mutation]\n\n<<if !$sireExhaust>>\\n* [[inject dick|sire inject dick]]\n* [[inject ass|sire inject ass]]\n* [[let him fuck you|sire fuck]]\n<<else>>\\nhe's used up his supply of lightrot crystals for the time being\n\n* [[let him fuck you|sire fuck]]\n<<endif>>\n\n[[←|worldmap]]
[ injecting dick would give cock -> prostate ]\n\n<<if !hasMutation ("dick") && !hasMutation ("knot")>>\\n[he injects lightrot sludge down into yr dick & you get a gross locust dick]\n<<addmutation "dick">>\\n<<set $from['dick'] to "sire injection">>\\n<<else if !hasMutation ("prostate")>>\\n[he injects lightrot sludge down into yr dick & yr prostate swells up enormously and starts to gurgle and throb]\n<<addmutation "prostate">>\\n<<set $from['prostate'] to "sire injection">>\\n<<else>>\\n[he injects lightrot sludge down into yr dick but you already have the two tfs it's possible to get from this so it doesn't do anything from a technical perspective]\n<<endif>>\n\n<<set $sireExhaust to true>>\\n[[→|wandering sire]]
[ injecting ass would give ass -> prostate ]\n\n<<if !hasMutation ("asshole")>>\\n[he shoves the rod of goo into yr ass and bastes yr guts in it, & you get a big rubbery locust asshole]\n<<addmutation "asshole">>\\n<<set $from['asshole'] to "sire injection">>\\n<<else if !hasMutation ("prostate")>>\\n[he shoves the rod of goo into yr ass and bastes yr guts in it, & yr prostate grows and swells enormously & starts to pulse and churn]\n<<addmutation "prostate">>\\n<<set $from['prostate'] to "sire injection">>\\n<<else>>\\n[he shoves the rod of goo into yr ass and bastes yr guts with it, but you've already got the two tfs it's possible to get from this so it doesn't do anything from a technical perspective]\n<<endif>>\n\n<<set $sireExhaust to true>>\\n[[→|wandering sire]]
[ getting fucked by him would give ass -> prostate and balls ]\n\n[he fucks you]\n<<if !hasMutation ("asshole")>>\\n[he works his grimy glowing pre/cum all into yr ass and smears it all across yr hole and it burns when it soaks in, etc, etc, etc]\n<<addmutation "asshole">>\\n<<set $from['asshole'] to "sire fuck">>\\n<<else if !hasMutation ("prostate")>>\\n[he gushes grimy glowing pre/cum all into yr ass and it burns as it soaks into your guts & you can feel the heat spread all through yr hips and slowly focus in on yr prostate, which is burning and throbbing and pulsing hard]\n<<addmutation "prostate">>\\n<<set $from['prostate'] to "sire fuck">>\\n<<else>>\\n[he fucks you but you got the basic anal perks already so there's no new tf (yet?)]\n<<endif>>\n\n<<if !hasMutation ("balls")>>\\n[he cums a huge mess of slime that spurts from yr flooded ass and spills down all across yr thighs, coating yr balls. he reaches down and smears it across yr balls, working the thick slime into yr skin, & yr balls burn and ache as they soak in the thick lightrot slurry]\n<<addmutation "balls">>\\n<<set $from['balls'] to "sire fuck">>\\n<<else>>\\n[yr thighs and balls are all soaked w/ glowing lightrot slurry but you already got the ball tf so it doesn't do anything (yet?)]\n<<endif>>\n\n<<set $sireExhaust to true>>\\n[[→|wandering sire]]
[a wandering human + great beast combo.]\n\n[the human is riding on the beast, so goes along on all fours; the beast is only moderately larger than the human. the beast is a bull-dragon kinda thing, w/ cloven hooves in the back and big three-fingered hands in front.]\n\n[got rings of spikes on his cock + a flaring head. the human has the same kinda cock only smaller. various(?) sex scenes there. they can spitroast/dp you, etc]\n[also the human is like yeah we're kinda interested in having kids but we need a host to handle the initial part. and you can be like hey i'm up to it and then the beast fucks you to pump you full of eggs & the human fucks you to fertilize them. when the pregnancy increments up, they show up again automatically ("i can smell yr ripening eggs from across the wasteland", the beast says) and the beast helps the guy eat his eggs out of yr ass so he can carry them the rest of the way to term.]\n\n(maybe if you got knot via cc you can be like 'hey nice matching dicks, i got mine from fucking around w/ a giant beast friend too' and then you can get them to head over to brulvundojn's place where there's some partner-swapping. you and the other human making out while he gets knotted and you get the spiny flaring shaft shoved in you etc)\n\n[[→|worldmap]]
[etc etc canyon. pockmarked with hollows]\n\n* <<if (($munitionsStress gt 1 && $plot eq 4) || $plot gte 6) && $munitionsLocation eq "canyon">>there's a [[crude canvas awning|munitions tent]] strung up along the base of the canyon<<endif>>\n\n[[←|worldmap]]
/% (if he's in this state you definitely did not do the rook threesome, but you may have blown him. i think it's possible if you blow him, then ride him, then ignore him totally, to get here without getting the talk point but with you having fucked twice) %/\\n\\n[it's {munitions guy}. he's set up a camp, and dammed the tiny trickle of water with rocks and sand to form a puddle. there's a lopsided bench made from old driftwood, and a sleeping platform that's just a layer of old wood with his bedroll on top. he's stripped himself down to just his underwear, or at least, that's what he's wearing right now; his undershirt and pants are hanging up to provide an additional shade under the canvas awning.]\n\n* [uhhh he's like, hey, and you're like, hey. he's like... idk, gonna stay out here for a while before the heat dies down back at the outpost. hope you don't mind. you're like, not my desert. he's like, sure. if you've already fucked, he's like, so, you wanna pick off where we left off...? while groping his bulge. bj scene etc]\n* [you're like hey, and he's like, hey. you give him some food and/or clothes and he's like, oh, thanks, i guess. if you haven't fucked him, he's like, so, uh, food isn't a problem, i can hunt, but there is one thing...? while adjusting his bulge. otherwise riding his dick scene.]\n* [you're like, hey, and he's like, hey. he's like, i'm probably gonna pack up camp soon. might as well wait for a while at yr town instead of out here. (if you've fucked he's like, be easier to get at your ass too. and yr like, i'm actually out of town almost all the time. and he kinda psshhhs and goes well, _somebody's_ ass then, i guess. if you've fucked rook you can be like, you know, rook's in town too. and i bet he'd be real into seeing yr dick.) after you leave the canyon sublocation this tent location would vanish, & he'd move to town]\n\n[[←|canyon trail]]
<<if $droneActive neq "">>[the cave is abandoned right now, but shows signs of recent habitation. maybe yr company spooked whoever's nested here away.]\n\n[[←|worldmap]]\n<<else>>\\n<<set $ticVisitedThisTrip to true>>\\n[the cave has been set up as a rough campsite. it's 2ic. he's a little worse-for-wear after living out in the desert for a bit. he's stripped off his armored gear -- you can see it in a pile in the corner -- and he's only in his pants and an old white undershirt. he's sunburnt across his shoulders and neck, and his hair has grown out enough to start to curl. his jaw is covered in coarse stubble, a brighter red-blond compared to his rusty orange hair.]\n\n[he doesn't look too pleased to see you, but he's not threatening you either.]\n\n<<if $ticVisits eq 0>>\\n* [you give him some of yr rations and he's like ":| thanks". yr like uh is there anything i can get you? and he's like fuck off & yr like, whatever]\n<<else if $ticVisits eq 1>>\\n* [you come back an another trip & he's like, hey, fuck off, but a little more congenial about it. yr like... you know you could just come back to the village. or go back to yr human outpost base? and he's like oh fuck that. and get court-martialed for dereliction? you know what they do to deserters? and yr like, no actually i don't. like the entire human city thing has always seemed like a bad deal to me & i've tried to avoid it as much as possible. and he kinda LAUGHS MIRTHLESSLY there.]\n<<else if $ticVisits eq 2>>\\n* [you come back on another trip and he's like, oh, you again. (you probably bring him some food and clothes which he doesn't really touch during the trip but he's wearing on successive visits.) you know yr the only human i've seen in fucking x weeks? and you're like... you know you could just come back to the village, right? how long you planning on camping out here? and he's like, fuck off. and yr like well whatever but yknow if there's anything i can do to help just lemme know. and then he's like, well, uh, there is one... nah, fuck it, forget it. and you can be like\n\n* it's a sex thing isn't it (if during the seige 2ic was aware of you fucking around w/ anybody)\n* *ROLLS EYES* look don't be an asshole about it\n\nanyway it's a sex thing. he's really pent up, etc, jerking him off or blowing him or offering him yr ass. sex.]\n<<else if $ticVisits eq 3>>\n* [you come back on another trip and he's like, hey. and yr like hey. and he's like, uh, you were serious about the town thing right. and yr like, yes. do you want to head back with me? and he's like nah. just thinking. and yr like, cool.\n\nand then he's like "so uh could you fuck my face"]\n<<else>>\n* [the cave is abandoned. when you head back to town he's there, maybe in the locust camp grinding against one of them and/or sucking a dick. after that he's available in town or in the locust camp or w/e)]\n<<endif>>\n\n* [[leave the cave|worldmap]]\n<<endif>>
[ you & the locust team follow the twisting tunnels down, on a path that becomes a paved road, lit by glowmoss and lightrot pods on the tunnel walls. it eventually opens out into a vast highroad, with the space beneath filled with opaque glowing fog. eventually you crest over a ridge and see [[the locust hive|city intro]] spread out beneath you]
[ you arrive at the locust hive. it's a sprawling underground city, in the middle of a giant cave, built around/through/over a giant glowing lake. there's a perpetual haze over the water's surface, blurring the light into an ambient glow that seems to come from all directions. the air is humid and reeks of locust.]\n\n[this is a big splash passage describing the city layout overall -- built on a big stalagmite, with glittering lights, etc]\n\n[you head down into the city, & you follow the survey team through a bunch of streets, getting totally lost, and you end up sitting in on part of their debriefing. this would be a several-passage fragment to kinda ease you into the city section. anyway after that wraps up they all kinda tumble out of the building and are like "...oh yeah we gotta get you set up somewhere if you'll be staying here until the new city site gets set up." and they basically just kinda roll you into a flathouse apartment kinda place and it's like, okay you live here now, gl, seeya, have fun, we'll probably hear back about the preliminary report in a week]\n<<set $unlocked to []>>\\n<<set $nextCityEvent to $turns + (8 * 7)>>\\n<<set $moves to 3>>\\n<<set $cityStart to $turns>>\\n<<set $cityEvent to "first city reportback">>\\n[[city]]
[you go down into the cave depths, escorted by half the survey team. you get to the lightrot level, and find a somewhat flat area dotted w/ steaming pools of raw lightrot.]\n\n<<if $pregnant eq "astau-fertilized">>[then the squad fucks/fists/prolapses you to get the eggs out, rubbing yr gut, fisting yr cervix if you got one, etc, as you push out giant egg after egg -- greenish and translucent, circular, w/ a curled-up fetal creature in most of them]\\n<<else if $pregnant eq "jinn">>[then the squad fucks/fists/prolapses you to get the eggs out, rubbing yr gut, fisting yr cervix if you got one, e tc, as you push out egg after egg -- filled w/ translucent lightrot goo, ovoid, w/ a curled-up fetal locust in most of them]\\n<<endif>>\n\n<<set $pregnant to "">><<rmmutation "eggs">>[they let you rest up afterward, push yr guts back into yr body, that kind of thing, and then mostly-carry you back up to the surface, leaving the eggs stewing in the lightrot pools]\n\n<<set $surveyComplete to true>>[[→|worldmap]]
[ brulvundojn: giant six-legged wolf-alien, w/ glowing eyes and drool that tends to ignite when it hits the sand. got cloudy black pre & bubbling green cum w/ squirming black lines. ]\n\n<<if !$brulvundojnFriends>>\n[brulvundojn is here and he's like, excuse me why are you here]\n\n<<display "brulvundojn confront">>\n<<else>>\n<<if $pregnant eq "astau">>\n[ yr all bloated w/ astau's eggs, and brulvundojn mentions that and yr like "well they're not fertilized"\n\nand brulvundojn is like, "would you like them fertilized b/c i could do that"\n\nthen he fucks + knots you, and afterward you can feel the eggs squirming around.\n\n<<set $pregnant to "astau-fertilized">>]\n\n[[→|brulvundojn's den]]\n<<endif>>\n<<if $plot eq 2>>\n["hey i found some old oil tanker or tank or care or w/e, can you help drag this thing all the way back to the village"\n"sure but yr gonna need some chains or smth to use as a yoke" "also you found this on my territory im pretty sure i got first claim rights, you gotta trade for it"\n"listen if yr trying to barter for fucking me, you know you really don't gotta do that, right?" (and then you fuck)\n\n(head back to the village to get chain<<set $brulvundojnChain to 1>>)\n]<<endif>>\n\n* <<if $brulvundojnFriends>>[[fuck around w/ brulvundojn|brulvundojn fuck]]<<endif>>\n<<endif>>\n\n[[←|worldmap]]
[ brulvundojn fucks you. frot / fucking / knotting depending on yr tfs, i guess?\n\nif you have knot or asshole, fucking + knotting\notherwise frot w/ some talk about how his dick is too huge / your ass is too small to fit. for now. ]\n\n[[→|worldmap]]
[you start digging around in the sand, but then brulvundojn storms up and starts yelling at you]\n\n<<display "brulvundojn confront">>
[you start setting up yr tent, but then brulvundojn storms up and starts yelling at you]\n\n<<display "brulvundojn confront">>
[there's a scene that basically explains, obliquely, that narratively when you don't pick the knot option in character creation it's not that he doesn't exist or that you never met or whatever, it's that when brulvundojn was like 'do u wanna rut against my dick until i cum all over yr entire body and have you writhe around in my stringy monster load' you were like. 'no'. and not just 'no' but like, in a rude way too.]\n\n* [[apologize about that time you were kind of a dick|brulvundojn apology]]\n* [[just leave|brulvundojn leave]]
[ you apologize for kind of being a dick.\n\n(this would need extra branches/narration for if you do this after the beginning of the game, and you have some tf that's not buff/leaky/dick/balls/asshole)\n<<if hasMutation ("leaky") || hasMutation ("asshole")>>\\n[you go, yeah that was a while ago and thinking about fucking around w/ anybody that wasn't human was like, exhilarating but also scary? so when you were like 'wanna fuck' i kind of panicked. but then later some locust drones came through and i kinda realized i had been dumb about it, but idk i just never really came by because i figured i had ruined things b/t us. so. sorry about all of that.]\n<<else if hasMutation ("buff") || hasMutation ("dick") || hasMutation ("balls")>>\\n[you go, yeah that was when i was still 'fully human', or like, thinking of myself as 'fully human'? and i wasn't really super prepared to think about what it would be to be not-human. or, you know. a big fucktoy for a giant hot monster. most of the humans in Yapu are kind of terrified of you, but that's not really any excuse. and then i ended up\n growing a giant mutated locust dick/balls and i realized the whole thing was kind of dumb and i had really overreacted. so. sorry about that.\n growing giant muscles. and hey look my scaly hide is starting to come in. so i guess, idk. i'm still in the process of letting go of that self-image, i guess? and it was a self-image that made me act like kind of an asshole. so. sorry about that.\n]\n<<else if hasMutation ("pure")>>\\n[you go, yeah idk i guess i used to have a lot invested in being a ~pure, uncorrupted human~? that it made me special or whatever. and i kinda freaked out because i thought that us fucking would... take that away from me. idk i didn't have the best self-image back then so i was kind of grasping on whatever external traits i could. so as we got closer it got scary? because you're really hot and i thought a lot about us fucking, but when you actually asked i just freaked out and shut down. but uh that was a few years ago and i'm basically over it. so. sorry about that.]\n<<endif>>\n\n(and then depending on yr mutations this turns into a brief little sex scene where brulvundojn chews on yr tits or tongue-fucks yr giant locust ass or frots against yr entire body while you struggle to stroke him off)]\n\n<<set $brulvundojnFriends to true>>[[→|worldmap]]
[you pack up your things and head off]\n\n[[→|worldmap]]
<<if $knowAstau>>\\n[yr in astau's den. he's here]\n\n[astau is basically acrid from risk of rain, w/ a giant egg-laying prehensile dick. four-legged reptilian monster w/ reddish/ochre chitin panels, about the size of a very large dog or particularly small pony, six eyes, drooling acidic green slime from mouth and also dick.]\n\n* <<if $pregnant eq "">>[[fuck around|astau fuck]]<<else>>yr too bloated w/ eggs right now to have room for more<<endif>>\n* <<if $droneActive eq "Jinn" && ($pregnant == "astau" || $pregnant == "astau-fertilized") && $jinnPregnant == false>>[[let astau knock up jinn too|astau breed jinn]]<<endif>>\n* <<if $droneActive eq "Jinn" && $pregnant == "" && $jinnPregnant == false>>[[let astau pump you and jinn both full of eggs|astau breed threesome]]<<endif>>\n<<else>>\\n[this is the den of some slavering reptilian beast. maybe it's not the safest to be here]\n\n[something something astau introduction. probably some dialog trees that introduce him by name, where yr just like "i was scavenging around and was curious". maybe an initial frot sex scene, depending on the dialog path/option selected]\n<<set $knowAstau to true>>\n<<endif>>\n* [[←|worldmap]]
[ astau fucks you and pumps you full of eggs ]\n<<addmutation "eggs">>\\n<<set $pregnant to "astau">>\\n<<set $pregnancyStarted to $turns>>\\n<<set $pregnancyTf to "no">>\\n<<set $pregnancies += 1>>\\n\n[[→|astau's den]]
[ astau fucks jinn and pumps him full of a huge clutch of eggs. afterwards you help a hugely-bloated jinn waddle out w/ his cunt drooling a mess of slimy green cum]\n<<set $jinnPregnant to true>>\n\n[[→|astau's den]]
[ astau fucks the both of you, taking turns back and forth before he finally comes in you, first, and then after a while in jinn too, pumping you both enormously full w/ a heavy clutch of eggs]\n<<set $pregnant to "astau">>\\n<<set $pregnancyStarted to $turns>>\\n<<set $pregnancyTf to "no">>\\n<<set $pregnancies += 1>>\\n<<set $jinnPregnant to true>>\\n\n[[→|astau's den]]
[ you see some lambent w/ a weird fume hood over his face literally wading out there in the acid swamp. he's got a thing that looks like a flamethrower/weedsprayer, and he's sometimes spraying stuff into the acid.\n\nblah blah blah he's in the process of terraforming both the acid flats + the flooded cavern/aquifer below, in preparation for the hive nearby. his dialog vaguely mentions that he's working w/ other lambent, but probably you won't see any of them.\n\nyou get his attention and he wades out and is like "i'm literally covered in acid here" and sprays himself w/ the thing, which is like, big foggy clouds of cyan-blue chemical-smelling stuff, that neutralizes the acid. he's got the same general look to him as djen, tho he's got like, thick horns all across his shoulders and neck and back. he's also got a giant earthworm dick & he sprays that down too & you suck him off even tho it's covered in pasty chemical gunk and still sour w/ leftover acid.\n]\n\n[ head back to the acid flats after prior sex scene & you run into one of the first drone's coworkers, who's a big lambent worm-naga w/ many-paned military goggles over most of his head. he's swimming around in the acid like, leaving markers for vents that need to be sealed up? at first you think his shadow under the acid is a giant snake, which is not too far off.\n\nanyway he wades/slithers out and blah blah blah he's like "i don't have acid neutralizer so i can't fuck you" except then he's like "well i guess that guy you fucked is only ~20m away so i could call him over", and then for the next 20m he shows off his giant prehensile worm cock (like four cockheads, echidna-like) & has you try to fist yr own ass, etc, etc. other guy gets there eventually and sprays you both down, & naga guy becomes like, completely encrusted w/ these cyan crystals that grow from leeching stored acid from his skin, & he fucks you w/ his giant dick even while they're still growing on it & ends up breaking off a bunch of crystals into your ass, etc, etc. other lambent guy fucks yr throat w/ his worm cock & they make out above you.\n]\n\n[[←|worldmap]]
<<display "trip resolution">>\\n<<display "deposit inventory">>\\n\n[[''you're''|you][$back = "village int"]] in Yapu. maybe there's misc. stuff to do here?\n\n<<if $ticLocation eq "village" && $ticArriveSceneRan neq true>>* [[2ic is sitting awkwardly in the locust camp|2ic village intro]]<<endif>>\n* there are presumably other humans you can talk to at least\n* [[try to get some work done|workshop]]\n* something to do with your non-story-related scavenging finds\n* there are some hidden tunnels beneath the town, & also a deep deep well that's where the town gets all its water\n* <<if $ticLocation eq "village" && $ticArriveSceneRan>>[2ic talk option]<<endif>>\n* <<if $rookLocation eq "village">>[rook talk option]<<endif>>\n* <<if $leaderLocation eq "village">>[leader talk option]<<endif>>\n* <<if $munitionsLocation eq "village">>[munitions talk option]<<endif>>\n\n<<if $humanSiegeArrive lte $turns && $humansManaged neq true>><<display "village options humans">>\\n<<else>>\n<<if $plot lt 2>><<display "village options pure scavenge">><<endif>>\\n<<if $plot eq 2>><<display "village options chain">><<endif>>\\n<<if $plot eq 3>><<display "village options chain return">><<endif>>\\n<<if $plot eq 4>><<display "village options survey">><<endif>>\n<<endif>>
<<nobr>>\n<<if $ticVisits gte 4>> /% his 'considering leaving' scene triggers at 3, which means it'll be set to 4 when you return. returning from the trip AFTER that (since this is before the increment check) he'll actually show up in town %/\n<<set $ticLocation to "village">>\n<<set $ticArriveSceneRan to false>>\n<<endif>>\n<<if $ticVisitedThisTrip eq true>>\n<<set $ticVisits += 1>>\n<<endif>>\n\n<<set $sireExhaust to false>>\n<<endnobr>>
[yr like, oh! hey! and he's like. hey. and yr like, settling in good? and he's like ...i guess. and yr like, well you know where my workshop is so come over when i'm in town if you want anything. and he's like, actually i have no clue where yr workshop is. i didn't even know you had a workshop. and yr like well, you want to see it? and he's like, fine]\n\n[you end up fucking in yr workshop, probably]\n\n<<set $ticArriveSceneRan to true>>\\n\n[[→|village int]]
<<if $carrying.length gt 0>>\\nyou drop your scavenged materials off at your workshop on the way into town.\n<<set (function (inv, toAdd) {\n toAdd.map (function (n) {\n console.log ("adding \"" + n + "\" to inventory");\n if (inv[n]) {\n inv[n] += 1;\n } else {\n inv[n] = 1;\n }\n });\n })($inventory, $carrying)>>\\n<<set $carrying to []>>\\n<<endif>>
[[head out, to scavenge|worldmap][$x = 0; $y = 0]]
[surprise, the {locust} have arrived while you were away.\n\nit's immediately clear that they're not just the usual band of three-or-four drones on patrol: one, they're lead by a {kantus}, and two, of the other six only three of them are drones.\n\n(this is probably where the narrative establishes what {locust} actually look like -- taller than humans by around a foot, hugely muscled, with human anatomy but with vaguely reptilian skin, generally hairless, skin blotchy combinations of grey-brown, grey-green, and sallow yellow-white, sometimes with rocky spurs of asymmetrical hornlike growths on various parts of their body, generally where you'd expect body hair on humans. deep-set glowing-yellow eyes and messy snaggletooth fangs. no 'ears' but they do have W-shaped grooves there that have a certain amount of frill around them. there are two drones: shirtless, wearing armored pants, one wearing a sun-protection helmet that covers his eye and the other constantly squinting in daylight.\n\nthe leader, the {kantus}, is big even for {locust}; maybe around eight feet tall, not including the horns. generally {locust} are bald, but {kantus} grow something like thick fleshy soft-velvet dreadlocks, and in between them he's got a pair of branching, swept-back horns that make him even taller. he's wearing monk's robes, and a face-conceiling helm.\n\nthe rest...\n\none of them looks human -- pale, blond hair, with a square jaw but kind of chubby, not the kind of human you'd expect to see hanging around with a locust squad; one of them is a {lambent}, which you've heard about but never seen before -- a drone but bigger, with black, flaking skin that peels away to reveal a body visibly glowing with lightrot; one is... you don't know what. four-armed, roughly bipedal, and about the same height as the other drones, but with such weird proportions that it seems like he could move on all fours (sixes) as easily as walking. leathery reptilian hide, dark blue-purple, with metallic chitin plates growing across his forearms, haunches, and covering most of his chest and head, and his head is animalistic, with a squat snout full of sharp fangs. both his skin and his chitin has a bit of an iridescent sheen to it, shimmering in the sunlight. he's got a tail like a scorpion. also, six eyes, in two lines between slats of chitin, all of them glowing lightrot yellow.\n\nthe locust hive is more than just locust, you know that much, but you've never heard any details about what the 'else' is; apparently part of it is that.\n\nthey ask to/tell you they're gonna stay for a few weeks, doing surveys of they-don't-tell-you-what, camping not too far out of town.\n]\n\n<<if $brulvundojnChain gt 0>>\n[ collect a whole bunch of heavy chain from the village store and head back out into the desert, w/ the locust noticing<<set $brulvundojnChain to 2>>\n] <<else>>\n[ you go up to the locust and be like "hey can i borrow a few of you for a few days to help drag this thing closer to the village"<<set $locustChain to 1>>\n]<<endif>>\n\n[okay head back out to the scavenge site] <<resetmoves>> [[head out|worldmap]]
<<if $brulvundojnChain eq 2>>[back in town brulvundojn gets you behind a building and knots you while the locust watch. maybe u knot one of the locust after that, while another one fists yr gaping, cum-filled ass and some others try to suck on brulvundojn's drooling cock\n]\n<<else>>\n[you and all the borrowed drones slog back into town.]\n\n[[zhalk facefuck scene]]\n<<endif>>\n\n<<set $droneActive to "">><<set $surveysDone to 0>>[[→|gameplan]]
<<if $humanIntro neq true>>\\n[ whoop you roll into town w/ yr latest survey partner to find a squad of geared-up humans in the middle of the town angrily waving guns around. you duck behind a house and make your way down into the hidden tunnels beneath the town, where the rest of the locust have holed up.\n\n[[they explain what's up|humans]]\n]\n\\n<<else>><<display "humans options">>\n\nthe human squad is still here so you can't do survey stuff, or leave the town\n<<endif>>
<<nobr>>\n<<if $surveyComplete eq true>>\n<<if $droneActive eq "Jinn">>\n<<set $zhalkAngry to ($jinnPregnant eq true) || ($jinnWasPregnant eq true)>>\n<<endif>>\n<<set $droneActive to "">>\n<<set $surveyComplete to false>>\n<<endif>>\n<<endnobr>>\\n* check in with the [[{locust} surveyors|survey index]]\n<<resetmoves>>\\n<<if $droneActive neq "">><<print "[[head out with " + $droneActive + "|worldmap][$x = 0; $y = 0;]]">>\n<<else>>[[head out alone, to scavenge|worldmap][$x = 0; $y = 0]]<<endif>>
your workshop. an old concrete building along the edge of town, squat. you framed the big hole in the side with old iron beams, and tarped it off with translucent plastic sheeting. the door was missing, so you made a scaffolding framework from spare pipes and draped that with a mess of plastic sheeting; that's your antechamber.\n\nyou got a bench inside with your tools, and greater or lesser piles of junk all over the place depending on the season.\n\n<<if Object.keys($inventory).length === 0>>\\nright now you don't got anything but dust.\n<<else>>\\nright now you got:\n<<print Object.keys($inventory).map (function (k) {\n return "* " + k + " x " + $inventory [k];\n }).join(String.fromCharCode(10))>>\\n<<endif>>\\n\n[[←|village int]]
[ anyway all that is basically 'the intro', and this is when the "actual plot" gets involved.]\n\n[ the locust tell you (+ the town generally) that they're thinking about expanding out and building a new hive in the region. the townspeople are generally positive, b/c like, that would mean the place being less of a desolate shithole in the middle of nowhere.\n]\n\n<<set $plot to 4>>[[village|village int]]
<<if $zhalkAngry>><<display "zhalk angry intro">>\n<<else>>\n<<if $pregnant neq "" && $surveysDone gte 1 && atTerm ($pregnant, $pregnancyStarted, $turns)>>\\n[ the locust are like, hey you're looking particularly pregnant now. you need some help to get those out?\n\n* <<if $pregnant eq "astau">>[[yeah help me with the birthing|birth fist]]<<endif>>\n* <<if $pregnant eq "astau-fertilized" || $pregnant eq "jinn">>[[yeah help me with the birthing|birth sidequest]]<<endif>>\n]\n<<else if $surveysDone lt 5>>\\nlocust survey team:\n* [[Zhalk]] (leader, kantus, probably not somebody you can go out surveying w/)\n* <<if $droneActive eq "" && !$drone1>>[[Djen|drone1]]\\n<<else if $drone1>>==Djen==\\n<<else>>Djen<<endif>> \\n<<if $droneActive eq "Djen">>(active)<<endif>>\n* <<if $droneActive eq "" && !$drone2>>[[Pthuul|drone2]]\\n<<else if $drone2>>==Pthuul==\\n<<else>>Pthuul<<endif>> \\n<<if $droneActive eq "Pthuul">>(active)<<endif>>\n* <<if $droneActive eq "" && !$drone3>>[[Khru|drone3]]\\n<<else if $drone3>>==Khru==\\n<<else>>Khru<<endif>> \\n<<if $droneActive eq "Khru">>(active)<<endif>>\n* <<if $droneActive eq "" && !$drone4>>[[Gawann|drone4]]\\n<<else if $drone4>>==Gawann==\\n<<else>>Gawann<<endif>> \\n<<if $droneActive eq "Gawann">>(active)<<endif>>\n* <<if $droneActive eq "" && !$drone5>>[[Yraal|drone5]]\\n<<else if $drone5>>==Yraal==\\n<<else>>Yraal<<endif>> \\n<<if $droneActive eq "Yraal">>(active)<<endif>>\n* <<if $droneActive eq "" && !$drone6>>[[Jinn|drone6]]\\n<<else if $drone6>>==Jinn==\\n<<else>>Jinn<<endif>> \\n<<if $droneActive eq "Jinn">>(active)<<endif>>\n<<else>>\\nlocust survey team:\n* Zhalk\n* ==Djen==\n* ==Pthuul==\n* ==Khru==\n* ==Gawann==\n* ==Yraal==\n* ==Jinn==\n<<endif>>\n\n(there would be some way to just hang out w/ the drones. depending on the other game state this would lead to one of a bunch of different sex scenes:\n* if you got jinn pregnant and then he pumped his eggs into you, zhalk yells at you (both) about how this survey isn't just an excuse to fuck around. then he kind of desperately fucks you in hopes of fertilizing some of jinn's spare eggs, while jinn watches & fists himself\n* if you've done both pthuul and khru's surveys, they double-team you. spitroast + dp until yr a drenched, exhausted mess\n)\n\n<<if $surveysDone gte 5>>* okay survey done; [[the team packs up and heads off|tocity]]<<endif>>\n<<endif>>\n\n[[←|village int]]
[the locust party leader, a big kantus guy, is like, hey u wanna say thanks for me letting you use my guys? how abt u get on yr knees and i'll show you what thanks looks like. and then fucks yr face]\n\n[he gets you to some more secluded part of the town, tho with some number of his squad still watching, and he leans back against a wall or a boulder or w/e. his robes are unfastened so they part themselves, and he hauls up the thinner skirt under them. his leg armor doesn't go all the way up; he's bare under the skirt. & he's got a big puffy cunt, with a pair of yellow-grey lips bulging out between his legs. he's like, suck, and you get on yr knees and make out w/ his cunt. then his cock unsheaths from inside and he fucks yr face + throat until yr a total mess w/ drool and pre and his slimy juices spilling all down yr face and chest. you end up on yr hands and knees coughing up thick slimy cum. maybe one of the other locust squad people comes in to make out w/ you and eat up his load as you cough it up.]
[zhalk stomps towards you and jinn on yr return. he's irate.]\n\n<<if $jinnPregnant>>[he's like, we're not here to just fuck around and get spawning, assholes! at jinn: look at you, you can hardly walk, how do you expect to get any fucking work done like that. i hope you both fucking enjoyed yrself.]\n<<else>>[he's like, we're not here to just fuck around and get spawning, assholes! at jinn: yr not here just to pump eggs into everybody you see. you might be a prince but i'm still the squad lead.]\n<<endif>>\n\n[he yells at you, but his nostril-slits keep flaring, and his skin starts to flush a blotchy purple-brown. after a while you can smell _him_, the reek of {locust} pre. you kinda share a look with jinn and you both pull him back into one of the tents.]\n\n[→|zhalk angry fuck]
[zhalk is still angry with you but also his dick is making a giant tent in his skirt & his pre is starting through soak through all three layers of wrap. you and jinn get him to settle down on a seat, and you both drop down in front of him. jinn says something in locust that makes zhalk's dick jump, and then you both peel the fabric up, bunching it around his waist.\n\ntrue to jinn's words, yup, kantus have internal dicks. zhalk's is definitely not internal right now though. it's long, even by the scale of locust dicks, and the internal flesh of his cunt and shaft is a pale green-yellow, like a smoother version of thei underbelly skin. his cockhead looks like a sledgehammer head: flat-capped, cockhead smoothly bulging out fatter in the middle. the second his dick is revealed, it jolts up, smacking against your wrists, and gushes a streamer of pre all across yr and jinn's faces. you and jinn lick it off each other right in front of him, and he whimpers and gushes again, splattering you in a mess of slimy pre.]\n\n[anyway you and jinn make out w/ his cockhead and then he fucks you (or you both if yr both pregnant) while you & jinn egg him on. jinn is like, hey you wanna fertilize the rest of my clutch? impregnate those royal eggs? go for it. (varying depending on if you actually had astau pump you full of eggs)]\n\n<<set $zhalkAngry to false>>\\n[[&rarr|survey index]]
[ the leader of the survey team. a big {kantus} monk -- like, easily eight feet tall, standing head-and-shoulders over the rest of the locust (who in turn are standing head-and-shoulders over you). unlike the rest of the locust, who don't have hair, kantus grow something like... thick, fleshy dreadlocks; soft tubes of velvet. they can be bruised and clamped to start bone growth within them, and he's styled some into a pair of branching, swept-back horns that just add to his height.\n\nhe's wearing traveling monk's garb: heavy robes of dyed-red cloth and tanned leather, with the robes opening at the waist. beneath that he's wearing spiked leather armor, on his legs and upper arms, with a loose wrap of undyed fabric around his waist and thighs. like most of the dark-acclimated locust you've seen, he's got a mechanical helmet with a dozen yellowed lenses that completely covers his upper face, to move out in the sunlight.\n\n(kantus also have an internal dick w/ internal balls + big fat labia lips. the dicks themselves are like, green-yellow-white, smooth, somewhat bigger than drone dicks, & with a broader cockhead, closer to something flat-capped like a horse dick or sledgehammer head than a human dick)]\n\n(you can be like "hey i liked how you totally fucked my face after i borrowed yr drones; can we do that again" if that happened, and he's like phft what have you done to earn it lately. get some more surveys done and we'll talk. leading maybe to him fucking you between every two or so surveys?)\n\n[[←|survey index]]
[ Djen's a big lambent drone w/ flaking charcoal skin. just about eight feel tall and heavily muscled. all his internal flesh glows -- his lips and gums glow, and when yr not in direct sunlight, you can kinda see the shadows of his bones against his glowing internal flesh.\n\nhe'd want to see a southern point of interest like the acid flats or salt flats]\n\n* [[yeah go w/ this guy|survey index][$droneActive = "Djen"]]\n* [[look over yr options more|survey index]]
[ intro blurb (re-)introducing the character and confirming use\n\njust yr standard locust drone really. leathery grey skin that's speckled w/ lighter patches down his chest, and covered in darker horny scales across his shoulders and upper back, creeping up some across the back of his neck. a mess of snaggleteeth.\n\nhe's wearing just a pair of armored pants and some armguards. no sun-helmet.\n\n(he's probably got just yr standard locust dick. maybe w/ a pa piercing.)\n\n(something something gotta check that giant glass crater for radioactivity. that thing you call the glass mountain?)]\n\n[[yeah go w/ this guy|survey index][$droneActive = "Pthuul"]]\n[[look over yr options more|survey index]]
[ Khru's just yr standard locust drone: maybe six and a half feet tall, generally muscular, covered in leathery grey skin w/ lighter patches across his forearms and calves, and dark, fat horns coming up across his chest and shoulders. he's got a mess of snaggleteeth, & a bifurcated tongue.\n\nhe's wearing just a pair of armored pants and a sun-vision helmet that covers his eyes but not his jaw.\n\n(he's got yr standard locust dick, w/ a frenum ladder)\n\n(guy who's like, wanna check out the local fauna. and yr like "...do you wanna get knotted by the giant alien wolf-beast nearby b/c i can arrange that". basically a threesome sex scene w/ either brulvundojn or astau.)]\n\n[[yeah go w/ this guy|survey index][$droneActive = "Khru"]]\n[[look over yr options more|survey index]]
[ Gawann is a big weird monster that he tells you are called "{metal heads}". he's a "grunt", but you don't know if that's a caste-equivalent or a job occupation or a lineage or what.\n\nhe's got four arms, hinged so one set of shoulderblades is higher and set further back than usual, and the other is lower and also set further back. (his arms look almost like say screaming mantis' arms tho i don't know how to say that without video game comparisons :V)\n\nhe's got reptilian hide -- slightly-shiny scute, as opposed to the more leathery locust hide, dark blue-purple that smoothly fades darker and lighter in patches. he's covered both in natural chitin plates, smoothly growing from his skin, and in armor made from the same material -- shed plates, you guess. it's a shiny, metallic material. his head is nearly entirely covered in chitin plates, like a natural helmet, and his six eyes gleam out lightrot-yellow between slats. as opposed to the locust, who just have big fucked-up fangs, he's got actual animal teeth, in a squat reptilian-like muzzle.\n\nhe's also got a long, curving tail that arcs up at the tip, with a big stinger at the end. he seems to mostly use it for balance when standing upright.\n\nhe tends to go around on all sixes like a pack animal when he's loaded up with gear.\n\nhe's just like, "take me to some rock. we'll probably need to check multiple places so this could take a while."]\n\n[[yeah go w/ this guy|survey index][$droneActive = "Gawann"]]\n[[look over yr options more|survey index]]
[ Yrall's a fat {boomer} drone. wearing armored pants and a big, heavy chestpiece that interlocks with a blocky sun-vision helmet. his armor covers his shoulders and ribs, but stops around his gut, showing off his bloated, stretched hide, w/ deep dark-colored stretch marks ribboned across his pallid gut. like most sun-vision helmets, it covers the upper face, and his expands down over his cheeks and jaw, with a rubberized bite-rod that fits into his mouth like a bit.\n\nhe's got a bunch of corset piercings running up his back, pierced w/ metal rings, and strung together with flat cord, making a complex pattern that pulls at his flabby skin and that interlocks with the struts of his armor\n\n(he's like "i gotta look at old holdings. cities or whatever." and yr like "i hope you don't plan to muscle in on my scavenging gig." and he's like "hah i'm more interested in cataloging things. once the hive is set up, i could buy scavenge off you if you want, so long as you can tell me where you got it.")]\n\n[[yeah go w/ this guy|survey index][$droneActive = "Yraal"]]\n[[look over yr options more|survey index]]
[ the human. he says he's not actually human. born from an egg and everything. his bearer was one of the first human-borne locust after the rise, and he got mostly human genes.\n\nhe's like, actually i'm the highest-ranking person here? technically? technically i'm a prince, just, a branch line off of a branch line, so i don't get a palace or anything like that.\n\nhe's basically human-looking -- blond, kinda muscular-chubby, very conventionally handsome.]\n\n<<if $surveysDone lt 3>>]\n[he's like, i'm here to check out the proposed site for any flaws that might only be visible to a breeding prince, so i don't really got much to do until they get a little more data]\n\n* [[←|survey index]]<<else>>\\n[he's like, i guess they got a proposed site now. i mean they had a pretty good idea from the beginning since this isn't the first survey they've done, but it's certain enough now that it's worth my time to actually head out and look around. so you wanna take me down to the proposed site? uh you know which one that is, right? the southwestern caves.]\n\n* [[yeah go w/ this guy|survey index][$droneActive = "Jinn"; $jinnPregnant = false]]\n* [[look over yr options more|survey index]]\n<<endif>>
[ when you go on the jinn survey, he goes into the lightrot caves and kinda has a dip in a pool while you look on agog. and he's like "oh yeah uh my body processes imulsion pretty differently than a drone would. or a human would. honestly if i sit in here for a few hours i'd probably go into a heat and that would be kind of a hassle for everybody, just, ugh the desert is so dry and hot & i just wanted a break. & yr like "lightrot literally burns humans down to the bone w/ chemical burns" and he kinda laughs, like, yeah i guess the stuff they used to mine out of the depths & industrially concentrate did that, but these days there's locust strains in most of it. this stuff is pretty mellow. i mean you look pretty fine and yr breathing in lightrot fumes right now.\n\nanyway then he groans and starts playing w/ his cunt and surfaces enough to show you his still-sheathed dick/clit while pumping a fist into his cunt & he's like yeahhhhh that's good, c'mon, fuck me\n\n(the fucking him in the lightrot pool sex scene would have a like 99% of pregnancy)\n\nand then you fuck him while he's squirting lightrot goo all over yr cock]\n\n<<if !hasMutation("knot") && !hasMutation("dick")>>\\n/% %/<<addmutation "dick">>\\n/% %/<<rmmutation "pure">>\\n/% %/<<set $from['dick'] to "jinn-pools">>\\n/% %/[yr dick burns from the imulsion soaking into it & gets all leathery and gigantic and grows big glossy warts.]\n<<endif>><<if !hasMutation("balls")>>\\n/% %/<<addmutation "balls">>\\n/% %/<<rmmutation "pure">>\\n/% %/<<set $from['balls'] to "jinn-pools">>\\n/% %/[the imulsion streaming down yr dick spills across yr balls and inner thighs, & they burn as it soaks into yr skin. yr balls churn and ache, flesh getting all leathery, balls throbbing hard, and they perceptibly swell while you fuck him; when you cum you cum this messy slurry of human and locust cum.]\n<<endif>>\n\n<<if $from['dick'] eq "jinn-pools">>[ even on the way up and back out you can still feel yr cock throbbing and swelling larger, w/ the rest of the changes soaking into yr flesh]<<endif>>\n<<if $from['balls'] eq "jinn-pools">>[ and even on the way up and out you can still feel yr balls growing, straining against yr sac and chafing yr thighs]<<endif>>\n\n<<set $drone6 to 3>>\\n<<set $surveysDone += 1>>\\n<<set $surveyComplete to true>>\\n[[head back to the surface|worldmap]]
<<if $yraalSurvey gte 1>>\\n/% %/[yraal looks around a bunch. eventually he's like, "yeah this is good enough, let's head back now"]\n/% %/<<set $drone5 to 3>>\\n/% %/<<set $surveysDone += 1>>\\n/% %/<<set $surveyComplete to true>>\\n<<else>>\\n/% %/[yraal looks around a bunch. he's like "okay this is good but there are other ruins around here, right? show me some of them too"]\n<<endif>>\\n<<set $yraalSurvey += 1>>\n<<set $moves -= 1>>\n\n[[→|worldmap]]
<<if $gawannSurvey gte 3>>\\n/% %/[gawann is like "okay that's enough digging, i think i got a good enough sense of the landscape. we can head back to town now."]\\n/% %/<<set $drone4 to 3>>\\n/% %/<<set $surveysDone += 1>>\\n/% %/<<set $surveyComplete to true>>\\n<<else>>\\n/% %/[gawann digs around in the sand for a while, or w/e]\n/% %/[eventually he's like "okay all done here, let's go somewhere else"]\n<<endif>>\\n<<set $gawannSurvey += 1>>\n<<set $moves -= 1>>\n\n[[→|worldmap]]
[ filler passage to set variables. this would be a specific little scene depending on the drone in question, that actually runs when you get to whatever specific target the drone has.\n]\n<<nobr>>\n<<if $droneActive eq "Djen">><<set $drone1 to 3>><<endif>>\n<<if $droneActive eq "Pthuul">><<set $drone2 to 3>><<endif>>\n<<if $droneActive eq "Khru">><<set $drone3 to 3>><<endif>>\n<<if $droneActive eq "Gawann">><<set $drone4 to 3>><<endif>>\n<<if $droneActive eq "Yraal">><<set $drone5 to 3>><<endif>>\n<<if $droneActive eq "Jinn">><<set $drone6 to 3>><<endif>>\n<<set $surveysDone += 1>>\n<<set $surveyComplete to true>>\n<<endnobr>>\n[[worldmap]] (then you head back to the village)
[ the locust fist the eggs out of yr ass in a big frenzy while jinn makes out w/ you & milks yr leaking tits]\n<<set $pregnant eq "">>\\n\n[[→|survey index]]
[ one of them feels yr belly and is like, yeah yr gonna need to birth these properly in an lightrot pool. we got enough information about the landscape to know where one is, thankfully. & they ask/tell the kantus guy they're taking a little break from the survey, since, you know aiding a birth is more important.]\n\n<<set $droneActive to "birthing squad">>[they say, head out to the southwestern caves]\n\n[[→|village int]]
( gangbanged-by-the-entire-survey-team would give you a new tf: ass if you don't already got it, and then upgrading 'leaky' if you have that, and then if you have ass but do not have leaky, uhhh prostate? which would basically just be upgrading ass V:\n\nnote that this is the first tf sex scene i've outlined, but it's probably not the first one that will occur in the game. at the very least you could visit astau and get egged up before this.\n\n<<set $pending to 1>>\n<<if !hasMutation("asshole")>>basically one of them fisting lightrot into yr ass so they can fit two dicks in there, and then two fists.\n<<set $pending to 0>><<addmutation "asshole">><<set $from['asshole'] to "survey gangbang">>\\n<<rmmutation "pure">>/% just in case, as this is the branch you get w/ no prior tfs%/\n<<else>>if you already have ass they just fist you to open you up for two dicks and then two fists.\n<<endif>>\n\n<<if hasMutation("leaky")>>they milk you\n<<if $pending != 0>>they smear lightrot all across yr nipples & chest and there's some narration about how you can feel yr milk glands swelling & engorging, and like feeling milk start to build up behind yr nipples, so that the next tug is this sloppy squirt of lightrot-tainted glowing milk. also yr nipples swell to be kinda thumb-sized udders.\n<<set $pending to 0>><<addmutation "udders">><<set $from['udders'] to "survey gangbang">>\n<<endif>>\n<<else>>if you don't got leaky they just chew on yr nipples and fuck yr chest a little (which also happens otherwise, just with more of a milking focus)\n<<endif>>\n\n<<if hasMutation("asshole") && $pending != 0>>and then finally if you have ass already & no leaky somebody fists you w/ lightrot at the end once yr all sloppy and loose and grinds it into yr guts and prostate and you start basically pissing out precome as some of yr internal organs (by which i mean spermatic ducts etc, just, not by name) swell and bloat and rearrange.\n<<set $pending to 0>><<addmutation "prostate">><<set $from['prostate'] to "survey gangbang">>\n<<endif>>\n)\n]\n\n[[→|village int]]
<<nobr>>\n<<set $humanIntro to true>>\n<<set $days to 0>>\n<<set $timeOfDay to 0>>\n\n<<set $munitionsTalk to 0>>\n<<set $munitionsStress to 0>>\n<<set $rookTalk to 0>>\n<<set $rookStress to 0>>\n<<set $rookTalks to ["rook talk4", "rook water sequence", "rook talk2", "rook talk1"]>>\n<<set $rookLocustDick to false>>\n<<set $ticTalk to 0>>\n<<set $ticStress to 0>>\n<<set $stressPoints to []>>\n<<endnobr>>
<<nobr>>\n<<set $timeOfDay += 1>>\n<<if $timeOfDay gte 6>>\n <<set $timeOfDay -= 6>>\n <<set $days += 1>>\n<<endif>>\n<<endnobr>>
[some humans from the city come by and are like, thats our tank. and it's like, look we found that fair and square. you gotta hide the locust when that happens b/c the city humans really don't like them, and the locust are like "...i mean you want us to kill them for you? itd be no trouble really." and it's like, look that's the backup plan.\n\nin the mean time, the locust hide out in the tunnels (and you get to see some of them with their sun-vision goggles off for the first time) while you & the rest of the town runs interference.\n\nthe locust are like: look, we can play things your way, for a while. but eventually we gotta report back on the hive survey, and we're not gonna sit around in your tunnels for months while you try to be diplomatic about it. you have a week, and then we'll drive them off, and if they get killed that way then that's just what happens.]\n<<display "human var init">>[[→|village int]]
<<display "time">>\n<span class="meta">you have <<print 7 - $days>> day<<print ((7 - $days) == 1 ? "" : "s")>> left before the locust take matters into their own hands</span>\n<<if $stressPoints.length gte 7 && $timeOfDay eq 0>>\n* there's an [[altercation|human altercation]] in the human squad's tent\n<<else>>\n<<display "humans rollcall">>\n<<endif>>
[there's some big shouting match / drama w/ the human squad.]\n\n[if you got the leader to 2pts, he's just like "...look let's just go.", otherwise one of the other three pipes up:\n\nrook apologetically is like, i never wanted to be a soldier :(, or 2ic goes on a neurotic rant, or munitions guy is just like "yeah i think i'm done guarding this place, you all can do w/e" while looking directly at the leader, and then there's this argument between all of them that ends with them storming off.]\n\n[(the details would depend on who has what stress points but the end result is the squad leaves, in pretty considerable disarray, and potentially rook and/or munitions guy throw away their {COG} gear and stay behind)]\n\n<<if $tisStress eq 0>>[2ic heads out of town to a city outpost]\n<<set $ticLocation to "away">>\n<<else if $ticStress gte 1>>[2ic deserts and goes to live up in the glass mountain caves]\n<<set $ticLocation to "caves">>\n<<set $ticVisits to 0>>\n<<set $ticVisitedThisTrip to false>>\n<<endif>>\\n<<if $munitionsStress gte 3>>[munitions decides to stay behind]\n<<set $munitionsLocation to "village">>\\n<<else if $munitionsStress gte 2>>[munitions deserts and goes to live in the canyon]\n<<set $munitionsLocation to "canyon">>\\n<<else if $munitionsStress gte 1>>[munitions leaves w/ the squad (nominally)]\n<<set $munitionsLocation to "canyon">>\\n<<else>>[munitions leaves w/ the squad]\n<<set $munitionsLocation to "away">>\n<<endif>>\\n<<if $rookStress gte 3>>[rook is like, um, i'm gonna stay here]\n<<set $rookLocation to "village">>\\n<<else if $rookStress gte 2>>[rook deserts but is like, i don't actually know what to do]\n<<set $rookLocation to "pending">>\\n<<else if $rookStress gte 1>>[rook leaves with the squad]\n<<set $rookLocation to "away-return">>\\n<<else>>[rook leaves w/ the squad]\n<<set $rookLocation to "away">>\\n<<endif>>\\n\n\n<<set $humansManaged to true>>\\n[[→|village int]]
* <<print (function (t) {\n switch (t) {\n case 0:\n case 1:\n return "[[{leader} is in the town center|leader]]";\n case 2:\n return "{leader} is in his personal tent";\n case 3:\n case 4:\n return "{leader} is sleeping in his personal tent";\n case 5:\n default:\n return "{leader} is awake in his tent";\n }\n })($timeOfDay)>>\n* <<print (function (t) {\n switch (t) {\n case 2:\n case 5:\n return "[[{2ic} is on patrol around the town|2ic]]";\n case 3:\n case 4:\n return "{2ic} is sleeping in the tent";\n case 0:\n case 1:\n return "{2ic} is moving around in their tent";\n }\n })($timeOfDay)>>\n* <<print (function (t) {\n switch (t) {\n case 3:\n case 4:\n return "[[{munitions guy} is on guard, at the edge of town|munitions]]";\n default:\n return "{munitions guy} is asleep in their tent";\n }\n })($timeOfDay)>>\n* <<print (function (t) {\n switch (t) {\n case 0:\n case 1:\n return "[[{rook} is on patrol around the town|rook]]";\n case 2:\n case 4:\n return "{rook} is busy in their tent";\n default:\n return "{rook} is sleeping in their tent";\n }\n })($timeOfDay)>>\n* [[wait|time wait]]\n* talk to the locust underground?
you wait around for a while.<<display "human time advance">>\n\n[[→|village int]]
[a big black guy, head shaved bald, wearing pants with armored greaves+boots and an armored chestpiece that doesn't cover his arms. he's holding a gun.]\n\n* [[talk to him|munitions talk]]\n* <<if $munitionsTalk gte 3>>[[ask to fuck around|munitions fuck]]<<endif>>\n* <<if $rookMunitionsThreesomePlanned>>[[rook is loitering around|rook munitions 3some]]<<endif>>\n\n[[←|village int]]
[rook is loitering around, awkwardly close but not close enough to really make a deal about it. and blah blah blah something something he ends up blowing munitions guy while you watch / join in; sex scene here]\n<<if $stressPoints.indexOf ("rook munitions bj") === -1>>\n<<set $rookStress += 1>>\n<<set $munitionsStress += 1>>\n<<set $stressPoints.push ("rook munitions bj")>>\n<<endif>>\n<<display "human time advance">>[[→|village int]]
<<if $days lt 2>>[he's like 'hey fuck off i'm busy' and shoos you away]\n\n<<display "human time advance">>[[→|village int]]<<else>>\\n<<if $munitionsTalk gte 4>>[you talk for a bit]\n\n[not about much tho, yr basically out of conversation topics]\n\n<<display "human time advance">>[[→|village int]]<<endif>>\\n<<if $munitionsTalk eq 3>>[you talk for a bit]\n\n[he's like: honestly i don't know why we're even doing this. no offense but this little ramshackle town of yours isn't worth anything. pretty fucking arbitrary if you ask me.]\n\n<<set $stressPoints.push("munitions talk")>>\\n<<set $munitionsStress += 1>>\n<<set $munitionsTalk += 1>><<display "human time advance">>[[→|village int]]<<endif>>\\n<<if $munitionsTalk eq 2>>[you talk for a bit]\n\n[he's like: fucking boring out here. got so much time on watch i haven't even gotten to jerk off since we got here. so, y'know, if you wouldn't mind helping a guy out...]\n\n* [[yeah i'll blow you|munitions blow]]\n* [[nah sorry dude|munitions reject]]\n\n<<set $munitionsTalk += 1>><<endif>>\\n<<if $munitionsTalk eq 1>>[you talk for a bit]\n\n[he's like: you from around here? no? moved around a bunch? yeah i can get that, me too. i was from {July}; big collection of farms in the middle of the ruined city. i got out, but then the {COGs} got me and now i'm in the army. that's life i guess.]\n\n<<set $munitionsTalk += 1>><<display "human time advance">>[[→|village int]]<<endif>>\\n<<if $munitionsTalk eq 0>>[you talk for a bit]\n\n[he's like: hey it's actually real boring out here huh. sorry for being trouble but i don't feel like getting murdered by locust either, so yr just gonna have to put up with the hassle for a few days]\n\n<<set $munitionsTalk += 1>><<display "human time advance">>[[→|village int]]<<endif>><<endif>>
[he's like, hey no problem, kinda smirking. just wanted to give you the opportunity.]\n\n<<display "human time advance">>[[→|village int]]
[yr like, sure lemme blow you, and he's like -- oh. oh! and gets kinda shirty about it. like uhhhh i mean you don't gotta, and yr like, came on pretty strong but weren't really prepared for a yes, huh? dude lemme just suck on yr cock.\n (that's maybe slightly different depending on if you have visible mutations? i.e., buff)\n\nhe's like, well, don't freak out, and shows off his dick. it's a big gross locust dick all slimy and covered in warts.\n\nyou just get on yr knees and start blowing him.\n\nhe's like uhhh it gets a lot of attention in the {COG} showers, you know. but i guess out here yr all pretty used to lightrot mutations.\n\nanyway you blow him and he cums all over yr face and then licks it off]\n\n<<nobr>>\n<<if $stressPoints.indexOf ("munitions blow") === -1>>\n<<set $munitionsStress += 1>>\n<<set $stressPoints.push ("munitions blow")>>\n<<endif>>\n<<endnobr>><<display "human time advance">>[[→|village int]]
[if you haven't blown him, he's like uhh rethinking that j/o, huh? if you have blown him you can repeat that scene (which would have a different intro i guess) or alternately be like "hey how about fucking me"]\n\n* [[blow him|munitions blow]]\n* <<if $stressPoints.indexOf ("munitions blow") !== -1>>[[ask to ride his dick|munitions ride]]<<endif>>\n\n[[←|munitions]]
[ yr like, how about you put that dick to better use and fuck me properly.\n\nand he's like, wow, sure, okay.\n\n(maybe he's like, uhhh come back in the dead of night, if it's not currently the middle of the night.)\n\ncomments on yr own locust/knotted dick if you have it, & if yr knotted then he uses both hands to play w/ yr knot while you ride his dick, ending up w/ him getting completely drenched in yr load from stomach to face, etc etc]\n<<nobr>>\n<<if $stressPoints.indexOf ("munitions ride") === -1>>\n<<set $munitionsStress += 1>>\n<<set $stressPoints.push ("munitions ride")>>\n<<endif>>\n<<endnobr>>\n<<display "human time advance">>[[→|village int]]
[a white guy, wearing pants with armored greaves+boots, as well as an armored chestpiece that doesn't cover his arms. he's got a helmet that fully covers his face, but he's audibly panting through it. his arms are tanned, and sunburnt around the shoulders.]\n\n* [[talk to him|rook talk]]\n* <<if $rookTalk gte 3>>[[ask to fuck around|rook fuck]]<<endif>>\n\n[[←|village int]]
<<set $_ to $rookTalks.pop()>>\n<<if $_ === 0>>[you talk to him for a while]\n\n[not about much in particular tho]\n\n<<display "human time advance">>[[→|village int]]\n<<else>><<display $_>>\n<<endif>>
[you talk to him for a bit]\n\n[he's super jumpy and is like uhh hi. why are you talking to me.]\n\n<<set $rookTalk += 1>><<display "human time advance">>[[→|village int]]
[you talk to him for a bit]\n\n[he's less visibly tense but he's still like uh um i'm new you should talk to {leader} if you want anything]\n\n<<set $rookTalk += 1>><<display "human time advance">>[[→|village int]]
[something something he's sweltering in the sliver of shade against a building wall. he's taken off his helmet and chestplate, and the white undershirt he's wearing beneath it is soaked and translucent with sweat.]\n\n* [[get him some water|rook water]]\n<<set $rookTalk += 1>>
[he asks about yr locust dick/balls and gets pretty into you explaining how you got it (even if it's just 'i got it from eating lightrot-tainted food and water over two decades')]\n\n<<set $rookTalk += 1>><<display "human time advance">>[[→|village int]]
[you talk to him for a bit]\n\n[he talks about being conscripted (he's from one of the big human cities) and how it kind of sucks but also how {leader} is super cool and heroic and, idk, saved his life somehow?]\n<<set $rookStress += 1>>\\n<<set $stressPoints.push ("rook talk")>>\\n<<set $rookTalk += 1>><<display "human time advance">>[[→|village int]]
[you talk with him for a bit]\n\n[he's kind of unfocused and he rambles on about seeing locust fuck while out scouting once, or w/e, and he kind of rambles on in an incoherent way about giant locust dicks, while audibly swallowing a bunch]\n\n<<set $rookThreesomeUnlockable to true>><<set $rookTalk += 1>><<display "human time advance">>[[→|village int]]
[you take him inside and give him some water and he's like, thanks, and then realizes that he's sitting on a countertop wearing an undershirt that's soaked to his skin & yr standing right between his spread legs really close and he's like, oh, um,, flushed w. his nipples pebbling up]\n\n* [[make a move|rook show your dick]]\n* [[step back|rook tension]]
[and this leads to you groping his dick + him groping back while you make out, until he's like "uh you wanna--" while gesturing at his dick]\n\n<<if hasMutation("dick") || hasMutation("balls")>>[rook gets really enthralled w/ yr dick/balls and flushes more and more as he stares down at yr leaking dick until kind of abruptly he jerks forward and gets on his knees and starts sucking on yr dick while moaning and drooling\n\nhe totally cums untouched just from sucking on yr dick, all over the dusty tiled floor]\\n<<set $rookTalks.push ("rook talk locust dick")>>\n<<set $rookLocustDick to true>>\\n<<else>>\\n[you jerk each other off & rook cums while whining and humping into yr hip & then you cum all up his chest]\n<<endif>>\\n<<nobr>>\n<<set $rookStress += 1>>\n<<set $stressPoints.push ("rook hj/blow")>>\n<<set $rookTalks.unshift ("rook talk locust dick2")>>\n<<endnobr>>\n<<display "human time advance">>[[→|village int]]
[you step back and rook kinda leans in to stay close, w/ his eyes kinda unfocused and his lips parted, and then kinda comes to and jerks back and flushes and stammers a lot and he stumbles out of the room]\n\n<<display "human time advance">>[[→|village int]]
<<if $rookTalk gte 3 && $stressPoints.indexOf ("rook hj/blow") === -1>>\\n/% a way to get to the sex scene later if you don't make a move immediately %/\n* [[come on to him|rook show your dick]]\n<<endif>>\n<<if $rookLocustDick>>\\n* [[ask him if he wants to blow you again|rook blow]]\n<<endif>>\n<<if $rookThreesomeUnlockable>>\n<<if $stressPoints.indexOf ("munitions blow") !== -1>>\n* [[tell him about {munitions}'s big locust dick|rook munitions 3some setup]]\n<<endif>>\n* [[see if you can hook him up w/ an actual locust dick|rook locust blow]]\n<<endif>>\n\n[[←|rook]]
[you pull him behind some building and he eagerly blows you right out in the open & then humps against yr leg to cum in his pants]\n\n<<display "human time advance">>[[→|village int]]
[you tell rook that you know somebody {else} w/ a giant locust dick. if he wants two.\n\nhe doesn't believe you that it's munitions guy, or something, so yr like, how about you ask him when he's out on watch next night? and he's like, okay then i will]\n\n<<set $rookMunitionsThreesomePlanned to true>>\\n<<display "human time advance">>[[→|village int]]
[you're like, what if i told you there was another locust dick around you could get to suck on? and rook is like, flustered and flushed and doesn't really say anything. & yr like, c'mon follow me, and you take him back to some building where (AS PREVIOUSLY PLANNED) one of the locust drones is waiting.\n\nand rook gets real nervous and freaked out at first, but the drone is just sitting there w/ his legs spread, and he's like, hey i'm not hear to fight. i heard you had an interest in something i got. *GROPES HIS CROTCH* and then opens up his pants and shows off his half-hard cock.\n\nyou give rook an encouraging push forward, and he kinda stumble-falls down onto his knees and tentatively and then enthusiastically starts sucking on the drone's cock]\n\n[probably if you have a locust dick you both fuck his mouth / cum all over his face and hair, etc]\n\n<<nobr>>\n<<if $stressPoints.indexOf ("rook locust bj") === -1>>\n<<set $rookStress += 1>>\n<<set $stressPoints.push ("rook locust bj")>>\n<<endif>>\n<<endnobr>>\n<<display "human time advance">>[[→|village int]]
[a big burly guy, grizzled-looking. particularly huge for a human. light brown skin, with a few weeks stubble across his face, giving him a short unkempt beard, and a handkerchief pinning down his scruffy, short-cropped hair. wearing pants with armored boots+greaves, and an armored chestpiece.]\n\n[TODO: talk options here; would advance time]\n\n* 1pt from talking to him. about uhhhh something??\n* 1pt from fucking him. you fuck him and he's like 'more' so you fist him and he drools cum all over while he's getting punch-fucked up to the bicep.\n\n[[←|village int]]
talk is like... idk\ntalk 1: yeah i'm technically the commander of this squad. no we're not gonna leave. it's complicated.\ntalk 2: yr not happy with us being here? yeah well i'm not happy we're here either so let's call it even\ntalk 3: still on my case, huh. listen i'll level with you. the higher-ups are pissed at us, so they sent us out into the wasteland to probably get torn apart by wild beasts. this isn't great for us so we're making it your problem. we're gonna hang out here for a bit, until things cool down. nothing bad has to happen so long as you all keep yr heads down.\n [yr narration is like, you consider asking him if he's ever tried talking to those giant beasts but then you decide it's not really worth it]\ntalk 4: ??
[a pale white guy with red hair that's buzzed down to stubble. his face, shoulders, and arms are completely covered in freckles. he's wearing pants with armored boots+greaves, and an armored chestpiece. he's holding a gun.]\n\n* [[talk to him|2ic talk]]\n\n[[←|village int]]
<<if $ticTalk gte 4>>[you talk to him for a while]\n\n[not about much, tho]\n\n<<display "human time advance">>[[→|village int]]<<endif>>\\n<<if $ticTalk eq 3>>[you talk to him for a while]\n\n[he's like, we're not gonna win this war. we were never gonna win this war. i just wanted-- something. to live a normal life. to not have every moment of my life consumed w/ existential terror. and yr like... my grandparents lived long lives in the desert. my parents are still living in the desert. there are three other towns within three days walk from here. people have always lived in the desert. yeah, the great cities have fallen. but people are building something new, too.]\n\n<<set $ticStress += 1>>\\n<<set $stressPoints.push ("2ic talk")>>\\n<<set $ticTalk += 1>><<display "human time advance">>[[→|village int]]<<endif>>\\n<<if $ticTalk eq 2>>[you talk to him for a while]\n\n[he's freaking out more about decay. i guess.]\n\n<<set $ticTalk += 1>><<display "human time advance">>[[→|village int]]<<endif>>\\n<<if $ticTalk eq 1>>[you talk to him for a while]\n\n[he complains about sand everywhere. too much sand and heat. the inevitability of the wasteland encroaching on even the last cities of mankind and destroying all civilization. yr like "things are pretty decent for us out here" and he gets mad and is like, yeah you degenerate monster-fuckers would say that]\n\n<<set $ticTalk += 1>><<display "human time advance">>[[→|village int]]<<endif>>\\n<<if $ticTalk eq 0>>[you talk to him for a while]\n\n[ it's mostly him scowling at you stone-faced while you try to make smalltalk and he gives angry-sounding single-word answers ]\n\n<<set $ticTalk += 1>><<display "human time advance">>[[→|village int]]<<endif>>
[ eventually survey team leaves, you go with. there's a proper [[gangbanged-by-the-entire-survey-team sex scene|survey team gangbang]] scene, either here or during one of the camps on the way there]\n\n[ if yr full of eggs at this point the justification would be "hey you gotta actually birth those soon, & they're too big to just shove into somebody else"; otherwise it would be like, blah blah, diplomacy, if yr town is gonna officially be part of the locust empire you gotta actually see what the locust hives are like.\n]\n\n<<set $droneActive to "squad">>\\n<<set $map["0,-4"] = {where: "nnnn", items: []}>>\\n<<set $plot to 5>>\\n<<resetmoves>>[[worldmap][$x = 0; $y = 0]] (head north)
<<set $timeOfDay to ($turns % 8)>>\\n<<set $cityElapsed to $turns - $cityStart>>\\n<<print (function (t) {\n switch (t) {\n case 0:\n case 3:\n return "The city is bustling. The lightrot lake glows a bright yellow-orange, and the haze on the surface sends scintillating lights across the cavern walls.";\n case 1:\n case 2:\n return "The city lulls. The lightrot lake dims to a ruddy red-orange, and the deep crevasses bubble and churn, frothing the surface."\n case 4:\n return "The city is quiet, and the crowds thin. The lightrot lake dims to a red-black, with only scattered pockets of yellow-white light along the lake floor, dispersed through the semi-opaque fluid into strange spotlights shining up."\n case 5:\n case 6:\n return "The city is quiet and dark. Only a few stragglers move down the streets, and the lightrot lake glows a pale, lightless yellow-white.";\n case 7:\n return "The city is eases back to life. Blotches of light and color burst across the lake, slowly increasing in intensity.";\n default:\n return "!!error!!";\n }\n })($timeOfDay)>>
[[you're|you][$back = "city"]] in the locust hive of {hive}.\n\n<<display "citytime">>\n\n[yr in yr lodgings, somewhere, etc etc]\n\n<<if $nextCityEvent - $turns lte 0>>* [[there's a knock on your door|city event]]\n<<else if $moves lte 0>>\\n[yr tired. you should [[sleep|city sleep]].]\n<<else>>\\n<<set $daysLeft = Math.ceil(($nextCityEvent - $turns) / 8)>>\\n<span class="meta">there's <<print $daysLeft>> <<print $daysLeft == 1 ? "day" : "days">> until <<print (function (e){\n switch (e) {\n case "first city reportback": return "the locust survey gets back to you";\n case "second city reportback": return "the squad to the new city site heads out";\n default: return "!!default!!";\n }\n })($cityEvent)>></span>\n\n<<if $pcChastity>>\\n* <<if $pcInCage>>[[unlock yr cock cage|chastity self unlock]]<<else>>[[lock yr cock up|chastity self unlock]]\\n<<endif>>\n\n* [[explore the city|explore]]\n* <<if atTerm ($pregnant, $pregnancyStarted, $turns)>>[[figure out where to give birth around here|city birth]]<<endif>>\n<<print $unlocked.map (function (l){\n return "* [[" + l + "]]";\n }).join(String.fromCharCode(10))>>\n\n* some kinda commercial district place where yr sprawled out on a counter getting fucked while other locust are just like, eating or w/e\n* egglaying pools\n* other city neighborhoods, etc\n<<endif>>
<<set $turns += 1>>\\n<<set $moves -= 1>>\\n<<display "city">>
<<set $moves to 3>>\\n<<set $turns += 3>>\\n[you sleep for a while]\n\n[[→|city]]
<<display $cityEvent>>
[the locust squad, or like, the kantus guy or whoever you got the highest affinity with shows up and is like, hey btw i just got back from getting the report about the city site. looks like they're planing on heading out in another two weeks. so yknow, keep that marked.]\n<<set $nextCityEvent to $turns + (8 * 14)>>\\n<<set $cityEvent to "second city reportback">>\\n[[okay cool|returncity]]
[blah blah somebody shows up and leads you to the staging ground near the highroad]\n\n[a few of the survey team are there, & they explain that the ones that aren't there have already set out & are off doing whatever. there's also a gigantic locust breeder-prince & his royal entourage. a giant berserker type, who's gonna be the queen of the new hive.]\n\n[you all set out back up to the surface]\n<<set $timeOfDay to 0>>\\n<<set $plot to 6>><<resetmoves>>[[set off|worldmap]]
[you unlock yr cock cage and let yr cock out]\n<<set $pcInCage to false>>\\n<<rmmutation "cock cage">>\\n\n[[→|city]]
[you lock your cock back up]\n<<set $pcInCage to true>>\\n<<set $chastityStarted to $turns>>\\n<<addmutation "cock cage">>\\n\n[[→|city]]
[something something one of yr neighbors or yr city contact is like "yr looking awfully pregnant" and there's maybe a scheduled event to get transported to a birthing pool etc]\n\n[anyway you get laid out on some fancy baths setup and massaged and oiled while yr getting fisted by attendants etc & you push out yr latest clutch of eggs]\\n<<set $pregnant to "">>\n\n* [[back to yr lodgings|returncity]]
[you step out of yr lodgings]\n\nyr in a moderately-sized apartment building, along a major road in the city. there's always traffic out your window: weird aliens of all varieties, carts, vendor stalls hawking goods. the road has a slight but definite slant, curving up and around the central stalagmite pillar, and then down and out to the island shore.\n\n[[go uphill]] or [[go downhill]]
you go uphill.\n\nthe road slowly winds around the central stalagmite of the island, and the ornamentation of the buildings you pass gets more and more lavish as you ascend, until the road is bordered with curving terraced gardens, with elaborate trees shedding spores on the ground around them, and the archways and balustrades are edged with gilt.\n\nthe lighting of the city is all weird -- this high up, the city itself blocks the bulk of the light from the glowing lake, and what illumination there is comes from below, casting upside-down shadows across everything.\n\nyou can [[keep ascending]] or turn off into [[an alleyway]].
you turn off the main path, onto a narrow alleyway.\n\nit's dark, with the only light coming from buzzing glowbug lanterns hung in zig-zagging lines between the narrow balconies on the second story. it's presumably ample illumination for {locust} eyes, but yours strain to discern the various shades of black.\n\nthe alleyway eventually opens up into a tight, deep courtyard abutting the wall of the stalagmite pillar. it's marginally better lit, and on the opposite side of the square there's a switchback set of stairs carved into the rock, going up. just below the stairs, there's an open archway with pale pink light spilling out.\n\nyou can [[go up the stairs]] or [[go into the archway|baths]].
you go up the stairs. they're narrow and steep, carved into the edge of the cliff, and the banister is -- rather than the broad, bright stone assembled in complex masonry all the other banisters you've seen -- a rattling metal fence, with swaying chains. you go two, three, four flights up, past the level of the buildings around you, and you can see the city unfold in a vista around you, glittering like stars.\n\nthat being said, it's a relief when the cliff comes down and swallows the path up, leading into a pitch-black tunnel, simply because it removes the vertigo-inducing sight. there are grooves in the side of the tunnel for hand-holds, and you keep walking up through the pitch darkness for another minute or so before a wan light begins to shine through ahead\n\nyou [[keep climbing]].
you keep climbing.\n\nyou come out at a small round plaza, around the back of a taller, more ornate building. the palace is still a ways above you, but this place looks pretty classy.\n\nthe plaza is open to the same cliff you just walked up, and here the vista is less vertigo-inducing: this high up, the lowest boroughs are shrouded in lightrot haze, and their lights smear together with those of the glowing lake. you can see across the entire cavern, to the far shores, covered in fields or wild growth, and the cavern walls only visible when seams of glittering lightrot crystals push out into the open.\n\nthere's a [[small archway|museum]] along the side of the big building.
you keep ascending.\n\neventually the road opens up into a broad, four-chambered plaza, just in front of what it presumably the locust palace: a huge complex of many buildings, made from shiny stone pillars, lacquered wood, and translucent quartz panes, so that the interior lights cast shadows through the walls. it's built up along and into the stalagmite pillar in a spiral, and you can see the undersides of various gardens and building wings spread out above you.\n\nthe palace gates are stationed by absolutely gigantic {locust} guards, in ornate armor, but they seem to be letting people pass in and out of the palace gardens freely.\n\nyou can head into the [[palace gardens]] or [[walk down the intersecting plaza road]].
you walk down the road intersecting with the plaza.\n\nthis is another wide thoroughfare that winds its way all through the city. it's lined with businesses, probably? buildings with open doors or wide archways, with signs above in what's probably locust, sometimes with lettering that might be other languages to the side.\n\n* this is where the [[piercing place|piercing studio]] is\n* not really sure if this should be repurposed to be the dockside market & something else should go here
you go downhill.\n\netc etc road broadening out, becoming a wide thoroughfare, eventually reaching the city gate you came in by\n\n[[go through the gate]], [[walk right along the edge of the wall]], or [[walk left along the edge of the wall]]
you walk along a fancy tiled road, curving along the island's side.\n\nthis is a more residential neighborhood, you think. all the stone is shiny, and you don't know if that's an aesthetic choice or just a consequence of being built on the shores of the glowing lake.\n\nthe path you're following splits at a set of long, winding ramps: up and [[over a bridge to the mainland]], or [[down into a market street headed down to a set of docks|the docks]].
you walk along a mazy path, formed by the outcropping edges of many different buildings.\n\nthe architecture of the city leads to a few large roads and a maze of tunnels and bridges and winding ramps elsewhere, and even with the edge of the wall always to your right it soon becomes totally impossible to track your path backward -- through a small raised garden, and then under an arch at the next crossing, and then on the path along a step-well, and then down a sloping ramp to a small dark lull with many doors that leads to a short tunnel, which forks again at the exit in curling ramps.\n\nyou reach a space where there's an archway through the outer wall, leading to [[a two-pronged jetty out into the lake, all misted over with haze|lightrot fissure]], or a ramp curling up into [[a strange plateu a ways above the rest of the city|metal head sector]], covered in black trees.
you walk up the ramp and out onto the bridge.\n\nthe bridge is set low, nearly inside the cloudy haze above the lake, and wisps of haze billow across the path constantly. strange plants grow near the bridge supports: crystal lilypads with pink flowers and razor-wire cattails with glowing cyan pods, in clusters and thickets.\n\nthe bridge itself is ornate, hewn from smooth pale rock, etched darker in places from the constant exposure to lightrot-tainted water. each bridge segment is framed with (fungus?) trees, big white-barked ones with yellow-blue leaves.\n\nthe bridge heads to [[a big ziggurat-structure on the mainland|worm monastery]].
you go through the gate.\n\nthe road continues, curving gently through what vaguely looks like farmland, or maybe just less urban settlments -- sparser clusters of buildings separated by reeds and grasses. the buildings here are lower and wider, forming sprawling collections of overlapping eaves and shingled rooftops.\n\neventually the road reaches the long bridge across the glowing lake that you came into the city via\n\n[[cross the bridge|pitstop]]
<<if !arrayContains ($unlocked, "museum")>>\\n<<set $unlocked.push ("museum")>>\\nyou step through the archway into the building, to find yourself about midway down a long hallway, its walls hung with incredibly ornate tapestries and paintings. there are cabinets and pedestals with what looks to you like a haphazard collection of trash: old machines, guns, a set of foundry plates.\n\nit's really quiet, and there's nobody around. you have the feeling you're somewhere you shouldn't be. when you hear footsteps on the marble tiles you almost make a break for it, and it's only really the knowledge that so far as you've seen the locust don't really seem to be the type to have lavish palaces -- well, lavish _private_ palaces -- that keeps you standing around awkwardly.\n\nthe footsteps belong to a locust guy, young-looking, kinda fat. he looks surprised to see you, but not in an unpleasant way. "did you climb all the way up here? it's been so long since anybody came in through the side entrance i thought they'd closed it up at the bottom."\n\n[blah blah you head to the front entrance]\n<<else>>\nyou return to the museum.<<endif>>\n\nyr in the lobby of the museum. it's mostly empty, but sometimes you see people drift through the main archway or in and out of side passages. sometimes they talk to {the clerk} about stuff.\n\n* blow the clerk\n* get a bunch of setting exposition\n* [[head back to your lodgings|returncity]]
<<if !arrayContains ($unlocked, "the docks")>>\\n<<set $unlocked.push ("the docks")>>\\nyou head down the ramp, onto the market street -- it's places to get food and drink, or bunkhouses, just as much as stores. selling what might be imports or exports. with the docks there, it seems like they must send boats across it. you've heard {locust} talk about travel through the cavern network, and you knew large parts of the underground are flooded with lightrot, but it never occurred to you that the travel could be over an underground ocean.\n<<else>\nyou return to dockside markets. <<endif>>\n\nthe market buildings are lined with pennants, in different colors and with different shapes emblazoned on them. some of them are clearly trade shops, or offices, and others just as clearly a place for shipworkers to get drunk or high in.\n\nthere's a constant bustle of shipments: huge six-legged {metal heads} carrying crates on their backs and sides, {locust} swarming about loading or unloading crates, spilling out into the middle of the street as often as not. the flow of traffic, which you're helplessly stuck in, ebbs and flows around them.\n\n* get fucked in bars or like, in the loading bay of some merchant warehouse by crowds of rowdy sailors etc\n* _this_ could be a good place for the tattoo shop, also,\n* [[head back to your lodgings|returncity]]
<<if !arrayContains ($unlocked, "metal head sector")>>\\n<<set $unlocked.push ("metal head sector")>>\\nyou head up the ramp, and while you do some of it resolves. this is, you realize, the {metal head} sector of town: <<else>>\\nyou return to the metal head sector. <<endif>> {metal heads} of various degrees inhumanness walk through the forest (which might be buildings?) or wade out through the swampy plateu-shallows on stilt-legs.\n\nwaterfalls of glowing water stream down the cliffside, from springs or pumps yet higher above, and flood the plateu in a series of broad, shallow pools.\n\nthe trees grow from pools of glowing water, and some are rooted out in the lake shallows, growing all the way up to provide hanging walkways across to the plateu. they're black, with fat, bulbous growths near their tips, all fused together into a single lumpy blob. some of them have glowing pods on their trunks or canopy: lightrot yellow, of course, and dimly glowing.\n\n* get fucked by metal heads, etc\n* [[head back to your lodgings|returncity]]
<<if !arrayContains ($unlocked, "baths")>>\\n<<set $unlocked.push ("baths")>>\\nyou step through the archway, and walk down a short hallway, lit by pinkish lanterns.\n\nthe air is humid, and you can hear the low ripple of water ahead.\n<<else>>\\nyou head back to the baths.\n<<endif>>\n\nyou emerge into a wide, low-ceilinged chamber, with lines of pillars in a not-quite-square arrangement. the floor sinks down into a number of broad, shallow pools of water, and there's a collect of people -- locust and otherwise -- lounging about, in or out of the water, in various states of undress.\n\nyou're in one aisle of a larger baths, and there's a central nave with an elevated ceiling, flanked at various intervals with aisles.\n\n* look it's a bathhouse\n* you know what happens here\n* also what happens: giant fat aliens basking in glowing black slime like in that one destiny 2 raid\n\n* [[head back to your lodgings|returncity]]
<<if !arrayContains ($unlocked, "pitstop")>>\\n<<set $unlocked.push ("pitstop")>>you cross the bridge.\\n<<else>>\\nyou head back to the highroad pitstop.\\n<<endif>>\n\nthere's a whole second town here. more of a compound, really. a cluster of buildings nestled up against the side of the underground highroad, something more like a barracks and stable than a town proper.\n\nthere's always traffic along the highroad, and it's even more wild than the people you saw in town. you can't tell which ones are people and which ones are beasts of burden. lots of the usual, though -- locust squads, {metal head} convoys, and the occasional great beast.\n\n* this is where you could get gangbanged by various groups of people passing through\n* basically the equivalent of a truckstop glory hole\n* [[go back to your lodgings|returncity]]
<<if !arrayContains($unlocked, "worm monastery")>>\\n<<set $unlocked.push ("worm monastery")>>\\nyou walk across the bridge to the giant ziggurat.\\n<<else>>\\nyou walk over the big bridge to the worm monastery\\n<<endif>>\n\nthe center of the ziggurat is hollow, and it opens onto... a complex hanging garden, full of bridges and vines and broad platforms of shelf fungus. it's a kantus temple to one of their worm-gods, built around an ancient bore-hole it burrowed through the rock. the central garden goes down deep into the earth, following the circular path. you stay on the surface.\n\n* anyway there are a bunch of kantus monks here + some worm-naga hybrids & they all fuck you, maybe\n* [[head back to your lodgings|returncity]]
<<if !arrayContains ($unlocked, "palace gardens")>>\\n<<set $unlocked.push ("palace gardens")>>\\nyou walk through the palace gates.\n<<else>>\\nyou head back to the palace gardens.\n<<endif>>\\n\nthere are more plants here than you've seen in the entire rest of your life combined. the palace gates open into a wide round plaza, with the edges overgrown by various large, leafy plants. there are a bunch of different paths that branch out from here, all of them meandering -- some wide, paved paths with guiding archway, others marked with pilinths, still others simple footpaths through narrow tunnels of greenery. shot through the gardens are palace buildings; you can on occasion see their walls or roofs, behind screens of trees or reeds.\n\nthere are lots of fancy branching ornamental trees with pale blue leaves, not so much trimmed into topiary, but clearly having had their branching and growth sculpted into a certain shape. the undergrowth is thick, with many different kinds of plants. lots of black leaves, some green, some blue or glass-like.\n\nit's oppressively humid; you get sweaty just from walking around. water pours down ornamental cliff faces, or splashes in fountains, and winds down channels or streams, sometimes gathering in ornamental pools thickly clustered with black lilypads.\n\n* [[talk to the theron guards]]\n* [walk around through the gardens and probably meet some guys to fuck]\n* [[head back to your lodgings|returncity]]
<<if !arrayContains ($unlocked, "lightrot fissure")>>\\n<<set $unlocked.push ("lightrot fissure")>>\\nyou talk through the arch and down one side of the jetty.\n<<else>>\\nyou head back to the lightrot fissure, through the mazy back-alleys. probably you should figure out how to get there more directly, one day.\n<<endif>>\\n\nthere's a ramshackle collection of buildings across and up the outer wall, and they spread out across the jetty as a series of glowing windows and doorways. the air is thick with a strange scent, oily and flowery at the same time. the sides of the jetty slope down at intervals, to broad platforms precisely flush with the surface of the lake, and you walk down one.\n\nit's disorienting looking down into the water: it's like an inverse city street, going down and down, with the edges of what is apparently a deep crevasse lined with neat rectangular holes, openings into underwater structures. black spots squirm around in the depths: some locust-sized, but many more looking like immense... things. the shapes of strange beasts, spider-squids, with furry filaments growing across their sides and back, billowing out in strange tails as they swim back and forth.\n\n* get fucked by a weird spider-crab monster\n* or a locust w/ gills\n* [[head back to your lodgings|returncity]]
they're gigantic even by comparison to regular locust. a good ten, eleven feet tall, and built to match. they're dressed in fancy armor, all made from shining metal and tooled red leather: a heavy skirt or kilt down just past their knee, anchored at their waist by two diamond-shaped pads on their outer hips, spanning from just under their ribs to mid-thigh, and strung in place with thick cord. they've got big bulky {vambraces} and greaves on their legs. they've got bracers on their forearms. bare chests and shoulders. and a kind of combined helmet-and-mask that covers their entire face save their mouths, with stitching of a gigantic stylized eye on the blank face.\n\nthey're holding these giant lances that seem to have some kinda gun component along the shaft, but given the ornate sculpting and the number of fancy curlicues you get the feeling they're basically ornamental weapons.\n\n[you're like, uh what's up, and they go "palace gardens are open to everybody if you want to look around." "but uh lots of people use them as a nice place to fuck, so yknow be aware." and you can be like "oh i mean that's probably what i'm here for. i didn't really have any plans for the day but i guess now i do" and they're like "oh yeah you don't say"]\n[you can also be like, "so uhhh you wanna fuck", and/or the prior conversation choice will lead into one of them asking if yr interested in fucking, and they're like, well i'm off duty in a half-hour so if you wanna wait around. and then their replacement shows up and they step back and just start stripping right on the side of the gateway and yr like, what, here? and he's like "yeah why not? you want somewhere more private? like here everybody will see, but if you wanna find somewhere more private in the garden probably anybody who sees will want to join in. so yknow your choice"]\n\n[[←|palace gardens]]
<<if !arrayContains ($unlocked, "piercing studio")>>\\n<<set $unlocked.push ("piercing studio")>>\\n<<endif>>\\n(it's a studio kind of tucked away on an offshoot alley. run by a very heavily modded locust, & w/ a big burly assistant. tattoo examples on the walls, display cases of piercing studs and rings and chains, in different metals and with different finishes. a bunch of bone needles or spines on the back shelves, and bottles of ink and lightrot and stuff like that)\n\n* [[get a piercing|piercings]]\n\n[[←|walk down the intersecting plaza road]]
[ basically locust piercer guy gives you a menu of options and each one would have a little intro scene where he talks abt what it is and what it would be like, etc. maybe w/ like, foreplay / idly jerking you off or playing w/ yr nipples and ass while explaining. so like uhh\n\n[these should be limited to one per sleep section i think? w/ an alternate like "can't do em all at once, gotta wait for yr latest one to heal up"]\n* <<if !hasMutation("glans piercing")>>[[prince albert]]<<else>>==prince albert==<<endif>>\n* <<if !hasMutation("frenum piercing")>>[[frenum ladder]]<<else>>==frenum ladder==<<endif>>\n* <<if !hasMutation("nipple piercing")>>[[nipple piercing]]<<else>>==nipple piercing==<<endif>>\n<<if $chastityRefUnlocked eq true>>\\n/% %/* [[chastity piercings]]\n/% %/* <<if !$pcInCage>>[[chastity cage]]<<endif>>\\n<<endif>>\n* septum ring??\n\n[[←|piercing studio]]
[ it's not actually called a prince albert in the narration.\n\nanyway the guy is like, you want a loop or a padlock. or a transverse piercing or what. & shows off his dick w/ like a big cross-transverse piercing in the tip. you can jerk him off + press yr mouth against his dick for a while while he pets yr head, & then once yr all drenched in pre he's like, so, piercings, right.\n]\n\n[[←|piercings]]
[ and he's like, i could do just the ladder or go down over yr balls and then all the way to guiche piercings. w/ these spike barbels. and like that's basically gonna be a chastity piercings b/c when you've got a bunch of spiky metal things on yr dick not a lot of people are gonna want to try to fit that anywhere.\n\nand you have the option of going like. [[chastity piercings]], huh. what would that be like.\n]<<set $chastityRefUnlocked to true>>\n\n[[←|piercings]]
[ and locust piercer guy is like, oh you know, glans piercings to lock into a cock cage sounding rod, or frenum piercings that can be used to lock a cage up, or w/e. (idk if i'd want to write a variation of this for sheathed/internal dicks; that might be a bit much.)\n\n(i guess he shows off his assistant's chastity piercings + cock cage here too)\n\nand then he's like "hey yr gonna be in the hive for a while. i could lock you up now to see how much you like it." and that's an option.\n]\n\n[[←|piercings]]
[ he's like i got some cages lying around i bet one of them fits. you wanna try it out? ]\n\n* [[yeah lock me up|chastity studio lock]]\n\n[[←|piercings]]
[ he locks you up and gives you the key. he's like. hey try going for a week w/o using yr cock huh? i bet you can do it. ]\n<<set $pcInCage to true>>\\n<<set $pcChastity to true>>\\n<<set $chastityStarted to $turns>>\\n<<addmutation "cock cage">>\\n\n[[→|piercings]]
[ he plays w/ yr nipples & if you got leaky/udders/6 nipples/etc this very quickly turns into him hooking you up w/ some nipple clamps, or outright getting like, milking machine suction things and then playing w/ yr pregnant gut etc while he milks you\n\nthen he's like "oh yeah also you could get these pierced if u want" while milking you and feeding you yr own milk, etc\n\nit's less extreme if you don't have that, but he still plays w/ yr nipples a lot while doing it\n]\n\n* [[get your nipples pierced|piercing nipple]]\n\n[[←|piercings]]
[ he pierces yr nipples and puts on some barbels ]\n<<addmutation "nipple piercing">>\\n\n[[→|piercings]]
[ he pierces yr cockhead and puts on a ring ]\n<<addmutation "glans piercing">>\\n\n[[→|piercings]]
[ he pierces a row along the underside of yr shaft and puts on a bunch of barbels]\n<<addmutation "frenum piercing">>\\n\n[[→|piercings]]
[ it's the new hive. just a few half-constructed buildings in an abstract pattern, in a smaller cavern w/ a smaller lightrot lake.\n\nyou can look around, and there's some final dialog like, hey you can move into here whenever you want.\n]\n\n* [[go back up to the surface|worldmap]]\n* [[end the game|endgame]]
[and then you settle in to the new hive, as somebody in the sprawling harem, the end. maybe other endings, idk.]
#passageworldmap ul { margin: 0 0; padding-top: 0; }\n#passageworldmap ul:first-of-type { padding-top: 1.3em; }\n\nul#nav { width: 50%; margin: 1.3em auto 0 auto; padding: 0.6em 0; list-style: none; text-align: center; overflow: auto; }\nul#nav li { margin: 0; padding: 0; }\nul#nav li, ul#nav li + li + li + li { width: 100%; }\nul#nav li + li, ul#nav li + li + li { width: 50%; float: left; }
@font-face {\n font-family: 'Quicksand Regular';\n font-style: normal;\n font-weight: 400;\n src: local('Quicksand Regular'), local('Quicksand-Regular'), url(http://tzaphiriron.sidemoon.net/static/misc/Quicksand_Regular.ttf) format('truetype');\n}\nhtml, body {\n font-family: 'Quicksand Regular', sans-serif;\n font-size: 13pt;\n min-height: 100%;\n height: 100%;\n overflow: auto;\n margin: 0;\n padding: 0;\n}\n#passages {\n margin: 0 0 0 auto; padding: 0; min-height: 100%;\n overflow: hidden;\n width: 75%; box-shadow: 0 0 6px 0px #f09;\n}\n\n.passage { padding: 1em 2em; margin: 0; }\n\n\n\n#passages { border-left: none; font-size: inherit; }\n.passage { font-size: inherit; }\n.passage li { margin-right: 45%; }\n\n#notes {\n display: block;\n position: fixed;\n bottom: 0;\n right: 3em;\n width: 15em;\n height: 3em;\n line-height: 3em;\n text-align: center;\n background: #f09;\n background: -webkit-linear-gradient(bottom, #f09, transparent);\n background: -moz-linear-gradient(bottom, #f09, transparent);\n background: linear-gradient(bottom, #f09, transparent);\n}\n#notes a { color: #000; }\n\nhtml, body { background: #180810; }\n#passages { background: #000; }\n\n.meta {\n display: block;\n float: right;\n width: 45%;\n color: #aaa;\n clear: right;\n}\nli .meta { margin-right: -45%; }\n\n.revision-span-in { opacity: 0; }\n.revision-span:not(.revision-span-out) { transition: 1s; -webkit-transition: 1s; }\n.revision-span-out { position:absolute; opacity: 0; }\n\n.blockSpan { -webkit-transition: 1s; transition: 1s; }\n.blockSpanIn { opacity: 0; -webkit-transition: 0; transition: 0; }\n\n#passages .passage a {\n transition: 0.25s;\n -webkit-transition: 0.25s;\n}\n.passage a:link, .passage a:visited, .passage a {\n color: #f09;\n text-decoration: none;\n}\n.passage a strong {\n text-shadow: 0 0 8px #f3a;\n}\n.passage a:hover, .passage a:active {\n color: #f9c;\n text-decoration: none;\n}
<<set reshow (parameter(0))>>
<<nobr>>\n<<set $mutations = []>>\n<<set $mutation = 0>>\n<<set $mutvals =\n { "buff": [1, "locust"]\n , "leaky": [1, "locust"]\n , "dick": [1, "locust"]\n , "knot": [2, "animal"]\n , "balls": [1, "locust"]\n , "asshole": [1, "locust"]\n , "pure": [0, ""]\n\n , "udders": [1, "locust"]\n , "prostate": [1, "locust"]\n\n , "eggs": [0, ""]\n , "pre-leaky": [1, "locust"]\n , "pre-six": [1, "animal"]\n , "six nipples": [1, "animal"]\n , "womb": [1, "locust"]\n\n , "nipple piercing": [0, "piercing"]\n , "frenum piercing": [0, "piercing"]\n , "glans piercing": [0, "piercing"]\n , "cock cage": [0, ""]\n }>>\n<<set $ccpts = 2>>\n<<set $back = "">>\n<<set $camps =\n { "jinn": 0\n }>>\n\n<<set $inventory to {}>>\n<<set $carrying to []>>\n\n<<set $map =\n { "0,0": {where: "village", items: ["sand"]}\n\n , "-1,-1": {where: "desert cacti", items: []}\n , "0,-1": {where: "desert dunes north", items: []}\n , "1,-1": {where: "desert dunes", items: []}\n , "-1,0": {where: "desert cacti west", items: []}\n , "1,0": {where: "cacti fields", items: ["rejection"]}\n , "-1,1": {where: "desert cracked", items: []}\n , "0,1": {where: "desert cracked south", items: []}\n , "1,1": {where: "desert cracked", items: []}\n\n , "-2,-2": {where: "desert dunes", items: []}\n , "-1,-2": {where: "desert cacti", items: []}\n , "0,-2": {where: "mesa arches", items: []}\n , "1,-2": {where: "top of ravine cavern", items: []}\n , "2,-2": {where: "glass mountains approach"\n , items: ["green glass"]}\n , "2,-1": {where: "blasted lands", items: []}\n , "2,0": {where: "desert dunes", items: []}\n , "2,1": {where: "old fortress", items: []}\n , "2,2": {where: "whitesands expanse", items: []}\n , "1,2": {where: "trackless", items: []}\n , "0,2": {where: "trackless", items: []}\n , "-1,2": {where: "trackless", items: []}\n , "-2,2": {where: "cave ridges", items: []}\n , "-2,1": {where: "cleft", items: []}\n , "-2,0": {where: "concrete highway"\n , items: ["concrete chunk", "shredded tire", "snapped gearshaft", "scratched glass panel"]}\n , "-2,-1": {where: "old ruins"\n , items: ["marble slab", "marble column", "sandblasted masonry"]}\n\n , "-2,-3": {where: "red-rock ridge", items: []}\n , "-1,-3": {where: "rock spikes"\n , items: ["crystallized lightrot"]}\n , "0,-3": {where: "mesa country", items: []}\n , "1,-3": {where: "canyon"\n , items: ["old driftwood"]}\n , "2,-3": {where: "sandbrush canyon"\n , items: ["old driftwood"]}\n\n , "3,-2": {where: "glass mountains caves"\n , items: ["green glass"]}\n , "3,-1": {where: "glass mountains approach"\n , items: ["green glass"]}\n , "3,0": {where: "singing trees"\n , items: ["green glass"]}\n , "3,1": {where: "wasteland"\n , items: [null, null, null, null, null, "broken motor", "worn wires"]}\n , "3,2": {where: "flame pits"\n , items: ["fulgate", "charcoal", "ash"]}\n\n , "2,3": {where: "white hollows", items: []}\n , "1,3": {where: "whitesands expanse", items: []}\n , "0,3": {where: "acid flats", items: [null, null, null, "circuit board"]}\n , "-1,3": {where: "acid bay", items: [null, null, null, "glass bulb"]}\n , "-2,3": {where: "acid stalks", items: [null, null, null, "glass bulb", "circuit board"]}\n\n , "-3,2": {where: "rust-ribbon glade"\n , items: ["crystallized lightrot", "crumbling gear", "frayed cable", "snapped filament"]}\n , "-3,1": {where: "rust desert"\n , items: ["rusted hinge", "metal panel", "iron rod", "bent spring"]}\n , "-3,0": {where: "metal wastes"\n , items: ["concrete chunk", "scratched glass panel", "rusted hinge", "metal panel"]}\n , "-3,-1": {where: "rust desert"\n , items: ["rusted hinge", "metal panel", "iron rod", "bent spring", "frayed cable"]}\n , "-3,-2": {where: "tree"\n , items: [null, null, "broken motor", "bent spring"]}\n\n , "0,-4": {where: "nnnn", items: []}\n , "0,-5": {where: "nnnnn", items: []}\n , "0,-6": {where: "crossroads", items: []}\n , "-1,-6": {where: "nnnnnnw", items: []}\n , "-2,-6": {where: "nnnnnnww", items: []}\n , "-3,-6": {where: "nnnnnnwww", items: []}\n , "-3,-7": {where: "blackrock mesa", items: []}\n }>>\n\n<<set delete $map["0,-4"]>>\n<<set $x = 0>>\n<<set $y = 0>>\n<<set $scavenge to "">>\n<<set $humanSiegeArrive to 9999>>\n<<endnobr>>
<<nobr>>\n<<set $_l to parameter(0)>>\n<<if $mutations.indexOf($_l) != -1>>\n<<set $_ to $mutations.splice($mutations.indexOf($_l), 1)>>\n<<set $mutation -= $mutvals[$_l][0]>><<set $ccpts += $mutvals[$_l][0]>>\n<<reshow "pts">><<reshow "pure">>\n<<if $ccpts > 0>><<reshow "outofpoints">><<endif>>\n<<endif>>\n<<endnobr>>
<<nobr>>\n<<set $_l to parameter(0)>>\n<<if $mutations.indexOf($_l) == -1>>\n<<set $_ = $mutations.push ($_l)>>\n<<set $mutation += $mutvals[$_l][0]>><<set $ccpts -= $mutvals[$_l][0]>>\n<<reshow "pts">><<reshow "pure">>\n<<if $ccpts == 0>><<reshow "outofpoints">><<endif>>\n<<endif>>\n<<endnobr>>
window.stepInRange = function (z, lo, hi) {\n var inc = Math.random() < 0.5 ? -1 : 1;\n var nz = z = inc;\n if (nz >= lo && nz <= hi) {\n return nz;\n }\n return z;\n}\nwindow.stepPairInRange = function (p, xs, ys) {\n if (Math.random() < 5) {\n p.x = stepInRange (p.x, xs.lo, xs.hi);\n } else {\n p.y = stepInRange (p.y, ys.lo, ys.hi);\n }\n return p;\n}
window.passage = function () {\n return state.history[0].passage ? state.history[0].passage.title : "???";\n}\nwindow.tags = function () {\n return state.history[0].passage ? state.history[0].passage.tags : [];\n}\nwindow.tagsContains = function (v) {\n return tags().indexOf (v) !== -1;\n}\n\nwindow.arrayContains = function (arr, v) {\n return arr.indexOf (v) !== -1;\n}
window.hasMutation = function (s) {\n return state.history[0].variables["mutations"].indexOf(s) !== -1;\n}
function innercontent(tag, parser) {\n var\n i,\n textbegin = parser.source.indexOf(">>",parser.matchStart)+2,\n textend = -1,\n text = parser.source.slice(textbegin),\n depth = 0;\n for (i = 0; i < text.length; i++) {\n if (text.substr(i,tag.length + 5) === ("<<end" + tag)) {\n if(depth===0){\n textend=textbegin+i;\n break;\n }else{\n depth--;\n }\n } else if (text.substr(i,tag.length + 2) === ("<<" + tag)) {\n depth++;\n }\n }\n if (textend === -1) {\n throwError(place,"can't find matching end"+tag,parser.fullMatch())\n return;\n }\n return [textbegin, textend];\n}\n\nmacros.block = {\n handler: function (place, macroName, params, parser) {\n var class_ = params[0][0] == "$"\n ? eval(Wikifier.parse(params[0]))\n : params[0];\n var block = insertElement (null, "span", null, "blockSpan " + class_.replace(" ", "_"));\n var inner_index = innercontent ("block", parser);\n block.tweecode = parser.source.slice(inner_index[0], inner_index[1]);\n parser.nextMatch=inner_index[1];\n place.insertBefore(block,null);\n new Wikifier(block, block.tweecode);\n }\n};\nmacros.endblock = { handler: function () {}}\n\nwindow.reshow = function (name) {\n var\n rall=document.querySelectorAll(".passage .blockSpan." + name.replace(" ", "_")),\n ret=false;\n for(var i=0;i<rall.length;i++){\n ret=reshowOne(rall[i]);\n }\n return ret;\n}\n\nfunction reshowOne (target) {\n target.innerHTML="";\n new Wikifier(target,target.tweecode);\n target.classList.add("blockSpanIn");\n if(target.timeout){\n clearTimeout(target.timeout);\n }\n target.timeout=setTimeout(\n function(){\n target.classList.remove("blockSpanIn");\n },\n 1);\n}
(function(){version.extensions.replaceMacrosCombined={major:1,minor:1,revision:2};var nullobj={handler:function(){}};function showVer(n,notrans){if(!n){return\n}n.innerHTML="";new Wikifier(n,n.tweecode);n.setAttribute("data-enabled","true");n.style.display="inline";n.classList.remove("revision-span-out");\nif(!notrans){n.classList.add("revision-span-in");if(n.timeout){clearTimeout(n.timeout)}n.timeout=setTimeout(function(){n.classList.remove("revision-span-in");\nn=null},1)}}function hideVer(n,notrans){if(!n){return}n.setAttribute("data-enabled","false");n.classList.remove("revision-span-in");\nif(n.timeout){clearTimeout(n.timeout)}if(!notrans){n.classList.add("revision-span-out");n.timeout=setTimeout(function(){if(n.getAttribute("data-enabled")=="false"){n.classList.remove("revision-span-out");\nn.style.display="none";n.innerHTML=""}n=null},1000)}else{n.style.display="none";n.innerHTML="";n=null}}function tagcontents(b,starttags,desttags,endtags,k){var l=0,c="",tg,a,i;\nfunction tagfound(i,e){for(var j=0;j<e.length;j++){if(a.indexOf("<<"+e[j],i)==i){return e[j]}}}a=b.source.slice(k);for(i=0;\ni<a.length;i++){if(tg=tagfound(i,starttags)){l++}else{if((tg=tagfound(i,desttags))&&l==0){b.nextMatch=k+i+tg.length+4;return[c,tg]\n}else{if(tg=tagfound(i,endtags)){l--;if(l<0){return null}}}}c+=a.charAt(i)}return null}var begintags=[];var endtags=[];function revisionSpanHandler(g,e,f,b){var k=b.source.indexOf(">>",b.matchStart)+2,vsns=[],vtype=e,flen=f.length,becomes,c,cn,m,h,vsn;\nfunction mkspan(vtype){h=insertElement(m,"span",null,"revision-span "+vtype);h.setAttribute("data-enabled",false);h.style.display="none";\nh.tweecode="";return h}if(this.shorthand&&flen){while(f.length>0){vsns.push([f.shift(),(this.flavour=="insert"?"gains":"becomes")])\n}}else{if(this.flavour=="insert"||(this.flavour=="continue"&&this.trigger=="time")){vsns.push(["","becomes"])}}if(this.flavour=="continue"&&flen){b.nextMatch=k+b.source.slice(k).length;\nvsns.push([b.source.slice(k),vtype])}else{becomes=["becomes","gains"];c=tagcontents(b,begintags,becomes.concat(endtags),endtags,k);\nif(c&&endtags.indexOf(c[1])==-1){while(c){vsns.push(c);c=tagcontents(b,begintags,becomes,endtags,b.nextMatch)}c=tagcontents(b,begintags,["end"+e],endtags,b.nextMatch)\n}if(!c){throwError(g,"can't find matching end"+e);return}vsns.push(c);if(this.flavour=="continue"){k=b.nextMatch;b.nextMatch=k+b.source.slice(k).length;\nvsns.push([b.source.slice(k),""])}}if(this.flavour=="remove"){vsns.push(["","becomes"])}cn=0;m=insertElement(g,"span",null,e);\nm.setAttribute("data-flavour",this.flavour);h=mkspan("initial");vsn=vsns.shift();h.tweecode=vsn[0];showVer(h,true);while(vsns.length>0){if(vsn){vtype=vsn[1]\n}vsn=vsns.shift();h=mkspan(vtype);h.tweecode=vsn[0]}if(typeof this.setup=="function"){this.setup(m,g,f)}}function quantity(m){return(m.children.length-1)+(m.getAttribute("data-flavour")=="remove")\n}function revisionSetup(m,g,f){m.className+=" "+f[0].replace(" ","_")}function keySetup(m,g,f){var fl=this.flavour,key=f[0];\nm.setEventListener("keydown",function l(e){var done=!revise("revise",m);if(done){m.removeEventListener("keydown",l)}})}function timeSetup(m,g,f){function cssTimeUnit(s){if(typeof s=="string"){if(s.slice(-2).toLowerCase()=="ms"){return Number(s.slice(0,-2))||0\n}else{if(s.slice(-1).toLowerCase()=="s"){return Number(s.slice(0,-1))*1000||0}}}throwError(g,s+" isn't a CSS time unit");\nreturn 0}var fl=this.flavour;var tm=cssTimeUnit(f[0]);setTimeout(function timefn(){var done=!revise("revise",m);if(!done){setTimeout(timefn,tm)\n}},tm)}function hoverSetup(m){var fn,noMouseEnter=(document.head.onmouseenter!==null);m.onmouseenter=function(){revise("revise",this)\n};m.onmouseleave=function(){revise("revert",this)};if(noMouseEnter){fn=function(n){return function(e){if(!event.relatedTarget||(event.relatedTarget!=this&&!(this.compareDocumentPosition(event.relatedTarget)&Node.DOCUMENT_POSITION_CONTAINED_BY))){this[n]()\n}}};m.onmouseover=fn("onmouseenter");m.onmouseout=fn("onmouseleave")}m=null}function mouseSetup(m){var fl=this.flavour,evt=(document.head.onmouseenter===null?"onmouseenter":"onmouseover");\nm[evt]=function(){var done=!revise("revise",this);if(done){this[evt]=null}};m=null}function linkSetup(m,g,f){var fl=this.flavour,l=Wikifier.createInternalLink(),p=m.parentNode;\nl.className="internalLink replaceLink";p.insertBefore(l,m);l.insertBefore(m,null);l.onclick=function(){var p,done=false;if(m&&m.parentNode==this){done=!revise("revise",m);\nscrollWindowTo(m)}if(done){this.parentNode.insertBefore(m,this);this.parentNode.removeChild(this)}};l=null}function visitedSetup(m,g,f){var i,done,shv=state.history[0].variables,os="once seen",d=(m.firstChild&&(this.flavour=="insert"?m.firstChild.nextSibling:m.firstChild).tweecode);\nshv[os]=shv[os]||{};if(d&&!shv[os].hasOwnProperty(d)){shv[os][d]=1}else{for(i=shv[os][d];i>0&&!done;i--){done=!revise("revise",m,true)\n}if(shv[os].hasOwnProperty(d)){shv[os][d]+=1}}}[{name:"insert",flavour:"insert",trigger:"link",setup:linkSetup},{name:"timedinsert",flavour:"insert",trigger:"time",setup:timeSetup},{name:"insertion",flavour:"insert",trigger:"revisemacro",setup:revisionSetup},{name:"later",flavour:"insert",trigger:"visited",setup:visitedSetup},{name:"keyinsert",flavour:"insert",trigger:"key",setup:keySetup},{name:"replace",flavour:"replace",trigger:"link",setup:linkSetup},{name:"timedreplace",flavour:"replace",trigger:"time",setup:timeSetup},{name:"mousereplace",flavour:"replace",trigger:"mouse",setup:mouseSetup},{name:"hoverreplace",flavour:"replace",trigger:"hover",setup:hoverSetup},{name:"revision",flavour:"replace",trigger:"revisemacro",setup:revisionSetup},{name:"keyreplace",flavour:"replace",trigger:"key",setup:keySetup},{name:"timedremove",flavour:"remove",trigger:"time",setup:timeSetup},{name:"mouseremove",flavour:"remove",trigger:"mouse",setup:mouseSetup},{name:"hoverremove",flavour:"remove",trigger:"hover",setup:hoverSetup},{name:"removal",flavour:"remove",trigger:"revisemacro",setup:revisionSetup},{name:"once",flavour:"remove",trigger:"visited",setup:visitedSetup},{name:"keyremove",flavour:"remove",trigger:"key",setup:keySetup},{name:"continue",flavour:"continue",trigger:"link",setup:linkSetup},{name:"timedcontinue",flavour:"continue",trigger:"time",setup:timeSetup},{name:"mousecontinue",flavour:"continue",trigger:"mouse",setup:mouseSetup},{name:"keycontinue",flavour:"continue",trigger:"key",setup:keySetup},{name:"cycle",flavour:"cycle",trigger:"revisemacro",setup:revisionSetup},{name:"mousecycle",flavour:"cycle",trigger:"mouse",setup:mouseSetup},{name:"timedcycle",flavour:"cycle",trigger:"time",setup:timeSetup},{name:"keycycle",flavour:"replace",trigger:"key",setup:keySetup}].forEach(function(e){e.handler=revisionSpanHandler;\ne.shorthand=(["link","mouse","hover"].indexOf(e.trigger)>-1);macros[e.name]=e;macros["end"+e.name]=nullobj;begintags.push(e.name);\nendtags.push("end"+e.name)});function insideDepartingSpan(elem){var r=elem.parentNode;while(!r.classList.contains("passage")){if(r.classList.contains("revision-span-out")){return true\n}r=r.parentNode}}function reviseAll(rt,rname){var rall=document.querySelectorAll(".passage ."+rname),ret=false;for(var i=0;\ni<rall.length;i++){if(!insideDepartingSpan(rall[i])){ret=revise(rt,rall[i])||ret}}return ret}function revise(rt,r,notrans){var ind2,curr,next,ind=-1,rev=(rt=="revert"),rnd=(rt.indexOf("random")>-1),fl=r.getAttribute("data-flavour"),rc=r.childNodes,cyc=(fl=="cycle"),rcl=rc.length-1;\nfunction doToGainerSpans(n,fn){for(var k=n-1;k>=0;k--){if(rc[k+1].classList.contains("gains")){fn(rc[k],notrans)}else{break\n}}}for(var k=0;k<=rcl;k++){if(rc[k].getAttribute("data-enabled")=="true"){ind=k}}if(rev){ind-=1}curr=(ind>=0?rc[ind]:(cyc?rc[rcl]:null));\nind2=ind;if(rnd){ind2=(ind+(Math.floor(Math.random()*rcl)))%rcl}next=((ind2<rcl)?rc[ind2+1]:(cyc?rc[0]:null));var docurr=(rev?showVer:hideVer);\nvar donext=(rev?hideVer:showVer);var currfn=function(){if(!(next&&next.classList.contains("gains"))||rnd){docurr(curr,notrans);\ndoToGainerSpans(ind,docurr,notrans)}};var nextfn=function(){donext(next,notrans);if(rnd){doToGainerSpans(ind2+1,donext,notrans)\n}};if(!rev){currfn();nextfn()}else{nextfn();currfn()}return(cyc?true:(rev?(ind>0):(ind2<rcl-1)))}macros.revert=macros.revise=macros.randomise=macros.randomize={handler:function(a,b,c){var l,rev,rname;\nfunction disableLink(l){l.style.display="none"}function enableLink(l){l.style.display="inline"}function updateLink(l){if(l.className.indexOf("random")>-1){enableLink(l);\nreturn}var rall=document.querySelectorAll(".passage ."+rname),cannext,canprev,i,ind,r,fl;for(i=0;i<rall.length;i++){r=rall[i],fl=r.getAttribute("data-flavour");\nif(insideDepartingSpan(r)){continue}if(fl=="cycle"){cannext=canprev=true}else{if(r.firstChild.getAttribute("data-enabled")==!1+""){canprev=true\n}if(r.lastChild.getAttribute("data-enabled")==!1+""){cannext=true}}}var can=(l.classList.contains("revert")?canprev:cannext);\n(can?enableLink:disableLink)(l)}function toggleText(w){w.classList.toggle(rl+"Enabled");w.classList.toggle(rl+"Disabled");\nw.style.display=((w.style.display=="none")?"inline":"none")}var rl="reviseLink";if(c.length<2){throwError(a,b+" macro needs 2 parameters");\nreturn}rname=c.shift().replace(" ","_");l=Wikifier.createInternalLink(a,null);l.className="internalLink "+rl+" "+rl+"_"+rname+" "+b;\nvar v="";var end=false;var out=false;if(c.length>1&&c[0][0]=="$"){v=c[0].slice(1);c.shift()}switch(c[c.length-1]){case"end":end=true;\nc.pop();break;case"out":out=true;c.pop();break}var h=state.history[0].variables;for(var i=0;i<c.length;i++){var on=(i==Math.max(c.indexOf(h[v]),0));\nvar d=insertElement(null,"span",null,rl+((on)?"En":"Dis")+"abled");if(on){h[v]=c[i];l.setAttribute("data-cycle",i)}else{d.style.display="none"\n}insertText(d,c[i]);l.appendChild(d)}l.onclick=function(){reviseAll(b,rname);var t=this.childNodes,u=this.getAttribute("data-cycle")-0,m=t.length,n,lall,i;\nif((end||out)&&u==m-(end?2:1)){if(end){n=this.removeChild(t[u+1]);n.className=rl+"End";n.style.display="inline";this.parentNode.replaceChild(n,this)\n}else{this.parentNode.removeChild(this);return}}else{toggleText(t[u]);u=(u+1)%m;if(v){h[v]=c[u]}toggleText(t[u]);this.setAttribute("data-cycle",u)\n}lall=document.getElementsByClassName(rl+"_"+rname);for(i=0;i<lall.length;i++){updateLink(lall[i])}};l=null}};macros.mouserevise=macros.hoverrevise={handler:function(a,b,c,d){var endtags=["end"+b],evt=(window.onmouseenter===null?"onmouseenter":"onmouseover"),t=tagcontents(d,[b],endtags,endtags,d.source.indexOf(">>",d.matchStart)+2);\nif(t){var rname=c[0].replace(" ","_"),h=insertElement(a,"span",null,"hoverrevise hoverrevise_"+rname),f=function(){var done=!reviseAll("revise",rname);\nif(b!="hoverrevise"&&done){this[evt]=null}};new Wikifier(h,t[0]);if(b=="hoverrevise"){h.onmouseover=f;h.onmouseout=function(){reviseAll("revert",rname)\n}}else{h[evt]=f}h=null}}};macros.instantrevise={handler:function(a,b,c,d){reviseAll("revise",c[0].replace(" ","_"))}};macros.endmouserevise=nullobj;\nmacros.endhoverrevise=nullobj}());
window.reshowAll=function reshowAll(e){var t=document.querySelectorAll(".passage ."+e.replace(" ","_")),n=false;for(var r=0;r<t.length;r++){n=reshow(t[r])}return n};function reshow(e){e.innerHTML="";new Wikifier(e,e.tweecode);e.classList.remove("revision-span-out");e.classList.add("revision-span-in");if(e.timeout){clearTimeout(e.timeout)}e.timeout=setTimeout(function(){e.classList.remove("revision-span-in")},1)}macros.pane={handler:function(place,macroName,params,parser){var name=params[0][0]=="$"?eval(Wikifier.parse(params[0])):params[0];var passage=params[1][0]=="$"?eval(Wikifier.parse(params[1])):params[1];var pane=document.createElement("span");var contents=document.createElement("span");pane.id=name.replace(" ","_");contents.className=" "+name.replace(" ","_");contents.tweecode='<<set $_ to $_current.push ("'+name+'")>><<display $_'+name+">><<set $_ to $_current.pop()>>";var h=state.history[0].variables;h["_"+name]=passage;if(typeof h._current=="undefined"){h._current=[]}pane.insertBefore(contents,null);place.insertBefore(pane,null);new Wikifier(contents,contents.tweecode)}};macros.link=macros.linkTo={handler:function(place,macroName,params,parser){var to,text,target;var h=state.history[0].variables;if(typeof h._current=="undefined"){h._current=[]}if(macroName=="link"){if(params.length<2){throwError(place,macroName+" macro needs 2 parameters");return}to=params[0][0]=="$"?eval(Wikifier.parse(params[0])):params[0];text=params[1][0]=="$"?eval(Wikifier.parse(params[1])):params[1];target=h._current[h._current.length-1]}else{if(params.length<3){throwError(place,macroName+" macro needs 3 parameters");return}target=params[0][0]=="$"?eval(Wikifier.parse(params[0])):params[0];to=params[1][0]=="$"?eval(Wikifier.parse(params[1])):params[1];text=params[2][0]=="$"?eval(Wikifier.parse(params[2])):params[2]}var link=Wikifier.createInternalLink();link.className="internalLink paneLink";link.id=to;link.insertBefore(document.createTextNode(text),null);link.onclick=function(){h["_"+target]=to;reshowAll(target)};place.insertBefore(link,null)}};macros.linkMany={handler:function(place,macroName,params,parser){if(params.length<3||params.length%2!=1){throwError(place,macroName+": invalid args, needs [pane passage...] link text");return}var h=state.history[0].variables;if(typeof h._current=="undefined"){h._current=[]}var text=params[params.length-1][0]=="$"?eval(Wikifier.parse(params[params.length-1])):params[params.length-1];var to,target;var link=Wikifier.createInternalLink();link.className="internalLink paneLink";link.insertBefore(document.createTextNode(text),null);link.onclick=function(){while(params.length!=1){target=params.shift();target=text[0]=="$"?eval(Wikifier.parse(target)):target;to=params.shift();to=to[0]=="$"?eval(Wikifier.parse(to)):to;h["_"+target]=to;reshowAll(target)}};place.insertBefore(link,null)}}