Преглед на файлове

You can now get nothing. Added samesize vore/stomp options

tags/v0.7.0
Fen Dweller преди 7 години
родител
ревизия
319544c33a
променени са 4 файла, в които са добавени 141 реда и са изтрити 57 реда
  1. +30
    -19
      game.js
  2. +99
    -31
      recursive-desc.js
  3. +1
    -4
      recursive-macro.js
  4. +11
    -3
      stroll.html

+ 30
- 19
game.js Целия файл

@@ -63,8 +63,11 @@ let macro =
"baseHandArea": 0.1,
get handArea() { return this.scaling(this.baseHandArea, this.scale, 2); },

"sameSizeVore": true,
"sameSizeStomp": true,

"assScale": 1,
analVore: true,
"analVore": true,

"hasTail": true,
"tailType": "slinky",
@@ -889,7 +892,7 @@ function summarize(sum, fatal = true)
return "<b>(" + count + " " + word + ")</b>";
}

function getOnePrey(biome,area)
function getOnePrey(biome, area, sameSize = true)
{
let potential = ["Person"];

@@ -922,9 +925,13 @@ function getOnePrey(biome,area)
}
}

return new Container([new Person(1)]);
if (sameSize)
return new Container([new Person(1)]);
else
return new Container();
}
function getPrey(region, area)

function getPrey(region, area, sameSize = false)
{
let weights = {"Person": 1};

@@ -991,7 +998,11 @@ function getPrey(region, area)
}; break;
}
}
return fill_area(area,weights);
var prey = fill_area(area,weights);

if (prey.count == 0 && sameSize)
return getOnePrey(biome, area);
return prey;
}


@@ -1010,7 +1021,7 @@ function updateVictims(type,prey)
function feed()
{
let area = macro.handArea;
let prey = getPrey(biome, area);
let prey = getPrey(biome, area, macro.sameSizeVore);

let line = describe("eat", prey, macro, verbose);
let linesummary = summarize(prey.sum(), false);
@@ -1048,7 +1059,7 @@ function feed()
function chew()
{
let area = macro.handArea;
let prey = getPrey(biome, area);
let prey = getPrey(biome, area, macro.sameSizeVore);

let line = describe("chew", prey, macro, verbose);

@@ -1085,7 +1096,7 @@ function chew()
function stomp()
{
let area = macro.pawArea;
let prey = getPrey(biome, area);
let prey = getPrey(biome, area, macro.sameSizeStomp);
let line = describe("stomp", prey, macro, verbose);
let linesummary = summarize(prey.sum(), true);

@@ -1125,7 +1136,7 @@ function grind()
if (macro.femalePartS)
area += macro.vaginaArea;

let prey = getPrey(biome,area);
let prey = getPrey(biome, area);

let line = describe("grind", prey, macro, verbose);
let linesummary = summarize(prey.sum(), true);
@@ -1160,7 +1171,7 @@ function grind()
function anal_vore()
{
let area = macro.analVoreArea;
let prey = getOnePrey(biome,area);
let prey = getOnePrey(biome, macro.sameSizeVore);

let line = describe("anal-vore", prey, macro, verbose);
let linesummary = summarize(prey.sum(), false);
@@ -1201,7 +1212,7 @@ function sit()
anal_vore();

let area = macro.assArea;
let crushed = getPrey(biome,area);
let crushed = getPrey(biome, area, macro.sameSizeStomp);

let line = describe("ass-crush", crushed, macro, verbose);
let linesummary = summarize(crushed.sum(), true);
@@ -1372,7 +1383,7 @@ function cleavage_absorb()
function breast_crush()
{
let area = macro.breastArea;
let prey = getPrey(biome, area);
let prey = getPrey(biome, area, macro.sameSizeStomp);
let line = describe("breast-crush", prey, macro, verbose);
let linesummary = summarize(prey.sum(), true);

@@ -1412,7 +1423,7 @@ function breast_vore()
{
// todo nipple areas?
let area = macro.breastArea/2;
let prey = getPrey(biome, area);
let prey = getPrey(biome, area, macro.sameSizeVore);
let line = describe("breast-vore", prey, macro, verbose);
let linesummary = summarize(prey.sum(), false);

@@ -1494,7 +1505,7 @@ function breast_milk(e,vol)
function unbirth()
{
let area = macro.vaginaArea;
let prey = getPrey(biome, area);
let prey = getPrey(biome, area, macro.sameSizeVore);
let line = describe("unbirth", prey, macro, verbose);
let linesummary = summarize(prey.sum(), false);

@@ -1530,7 +1541,7 @@ function unbirth()

function sheath_stuff()
{
let area = Math.min(macro.handArea, macro.dickGirth*3);
let area = Math.min(macro.handArea, macro.dickArea);
let prey = getPrey(biome, area);
let line = describe("sheath-stuff", prey, macro, verbose);
let linesummary = summarize(prey.sum(), false);
@@ -1689,7 +1700,7 @@ function cockslap()
function cock_vore()
{
let area = macro.dickGirth;
let prey = getPrey(biome, area);
let prey = getPrey(biome, area, macro.sameSizeVore);
let line = describe("cock-vore", prey, macro, verbose);
let linesummary = summarize(prey.sum(), false);

@@ -1925,7 +1936,7 @@ function tail_slap()
function tail_vore()
{
let area = macro.tailGirth * macro.tailCount;
let prey = getPrey(biome, area);
let prey = getPrey(biome, area, macro.sameSizeVore);
let line = describe("tail-vore", prey, macro, verbose);
let linesummary = summarize(prey.sum(), false);

@@ -2033,7 +2044,7 @@ function pouch_eat()
function soul_vore()
{
let area = macro.height * macro.height;
let prey = getPrey(biome,area);
let prey = getPrey(biome, area);

let line = describe("soul-vore", prey, macro, verbose);
let linesummary = summarize(prey.sum(), false);
@@ -2070,7 +2081,7 @@ function soul_vore()

function soul_absorb_paw()
{
let prey = getPrey(biome,macro.pawArea);
let prey = getPrey(biome, macro.pawArea, macro.sameSizeStomp);

let line = describe("soul-absorb-paw", prey, macro, verbose);
let linesummary = summarize(prey.sum(), true);


+ 99
- 31
recursive-desc.js Целия файл

@@ -20,7 +20,8 @@ var actions = ["eat","chew","stomp","kick","anal-vore","ass-crush","tail-slap","
"cleavage-stuff","cleavage-crush","cleavage-drop","cleavage-absorb","breast-crush",
"breast-vore","breast-milk","unbirth","sheath-stuff","sheath-squeeze","sheath-crush",
"sheath-absorb","cock-vore","cockslap","ball-smother","male-spurt","male-orgasm","female-spurt",
"female-orgasm","grind","pouch-stuff","soul-vore","soul-absorb-paw","pouch-eat","stomach","womb","balls","bowels","breasts","soul-digest"];
"female-orgasm","grind","pouch-stuff","soul-vore","soul-absorb-paw","pouch-eat","stomach","womb",
"balls","bowels","breasts","soul-digest"];

for (let i=0; i<actions.length; i++) {
rules[actions[i]] = [];
@@ -114,40 +115,57 @@ function describe(action, container, macro, verbose=true) {
// DEFAULTS

function defaultEat(container, macro, verbose) {
return "You scoop up " + container.describe(verbose) + " and swallow " + (container.count > 1 ? "them" : "it") + " whole.";
if (container.count == 0)
return "You reach down for a delicious treat and grab - oh, nothing.";
else
return "You scoop up " + container.describe(verbose) + " and swallow " + (container.count > 1 ? "them" : "it") + " whole.";
}

function defaultChew(container, macro, verbose) {
if (isNonFatal(macro))
if (container.count == 0)
return "You reach down for a delicious treat and grab - oh, nothing.";
else if (isNonFatal(macro))
return defaultEat(container, macro, verbose);
else
return "You scoop up " + container.describe(verbose) + " and crunch " + (container.count > 1 ? "them" : "it") + " in your powerful jaws, then swallow them down.";
}

function defaultStomp(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "Your paw thumps the ground.";
else if (isFatal(macro))
return "You crush " + container.describe(verbose) + " underfoot.";
else
return "You step on " + container.describe(verbose) + ".";
}

function defaultKick(container, macro, verbose) {
return "You punt " + container.describe(verbose) + ", destroying " + (container.count > 1 ? "them" : "it") + ".";
if (container.count == 0)
return "You swing your mighty paw..and hit nothing.";
else
return "You punt " + container.describe(verbose) + ", destroying " + (container.count > 1 ? "them" : "it") + ".";
}

function defaultAnalVore(container, macro, verbose) {
return "You sit yourself down on " + container.describe(verbose) + ". " + (container.count > 1 ? "They slide" : "It slides") + " inside with ease.";
if (container.count == 0)
return "You're pretty sure you just sat on a rock.";
else
return "You sit yourself down on " + container.describe(verbose) + ". " + (container.count > 1 ? "They slide" : "It slides") + " inside with ease.";
}

function defaultAssCrush(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "You take a seat. It's good to have a break!";
else if (isFatal(macro))
return "Your heavy ass obliterates " + container.describe(verbose) + ". ";
else
return "You sit on " + container.describe(verbose);
}

function defaultTailSlap(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "Your " + (macro.tailCount > 1 ? "tails swing" : "tail swings") + " to and fro";
else if (isFatal(macro))
return "Your " + macro.describeTail + (macro.tailCount > 1 ? " tails swing" : " tail swings") + " into " + container.describe(verbose) + ", smashing everything in " +
(macro.tailCount > 1 ? "their" : "its") + " path.";
else
@@ -155,7 +173,9 @@ function defaultTailSlap(container, macro, verbose) {
}

function defaultTailVore(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "Your " + (macro.tailCount > 1 ? "drooling tails swing" : "drooling tail swings") + " to and fro";
else if (isFatal(macro))
return "Your " + macro.describeTail + (macro.tailCount > 1 ? " tails lunge, maws agape, " : " tail lunges, maw agape, ") + "at " + container.describe(verbose) +
". " + (macro.tailCount > 1 ? "They" : "It") + " scarf down everything in a second, gulping forcefully to drag your prey into your sloppy guts.";
else
@@ -164,7 +184,10 @@ function defaultTailVore(container, macro, verbose) {
}

function defaultCleavageStuff(container, macro, verbose) {
return "You snatch up " + container.describe(verbose) + " and stuff " + (container.count > 1 ? "them" : "it") + " into your cleavage.";
if (container.count == 0)
return "You can't fit anything into your cleavage right now.";
else
return "You snatch up " + container.describe(verbose) + " and stuff " + (container.count > 1 ? "them" : "it") + " into your cleavage.";
}

function defaultCleavageCrush(container, macro, verbose) {
@@ -195,30 +218,43 @@ function defaultCleavageAbsorb(container, macro, verbose) {
}

function defaultBreastCrush(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "Your thump your breasts against the ground.";
else if (isFatal(macro))
return "Your heavy breasts obliterate " + container.describe(verbose) + ". ";
else
return "You smoosh " + container.describe(verbose) + " with your breasts.";
}

function defaultBreastVore(container, macro, verbose) {
return "Your nipples envelop " + container.describe(verbose) + ", pulling them into your breasts. ";
if (container.count == 0)
return "It'd be pretty hot to stick someone in your breasts. Shame you can't right now.";
else
return "Your nipples envelop " + container.describe(verbose) + ", pulling them into your breasts. ";
}


function defaultBreastMilk(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "You squeeze your breasts, coaxing out $VOLUME of warm, creamy milk that splatters on the ground.";
else if (isFatal(macro))
return "You squeeze your breasts, coaxing out $VOLUME of warm, creamy milk that floods " + container.describe(verbose) + " in an unstoppable wave of white.";
else
return "You squeeze your breasts, coaxing out $VOLUME of warm, creamy milk that floods " + container.describe(verbose) + ".";
}

function defaultUnbirth(container, macro, verbose) {
return "You gasp as you slide " + container.describe(verbose) + " up your slit. ";
if (container.count == 0)
return "You grab " + new Person(1).describe(verbose) + " and grind them against your slit...but they won't fit.";
else
return "You gasp as you slide " + container.describe(verbose) + " up your slit. ";
}

function defaultSheathStuff(container, macro, verbose) {
return "You pluck " + container.describe(verbose) + " from the ground and slip them into your musky sheath.";
if (container.count == 0)
return "You grab a " + new Person(1).describe(verbose) + " and grind them against your sheath-slit...but they won't fit.";
else
return "You pluck " + container.describe(verbose) + " from the ground and slip them into your musky sheath.";
}

function defaultSheathSqueeze(container, macro, verbose) {
@@ -250,7 +286,9 @@ function defaultSheathSqueeze(container, macro, verbose) {
}

function defaultSheathCrush(container, macro, verbose) {
if (isGory(macro))
if (container.count == 0)
return "Your orgasm causes your " + macro.describeDick + " cock to swell and surge.";
else if (isGory(macro))
return "Your powerful orgasm causes your throbbing " + macro.describeDick + " cock to swell and crush the life from everything in your sheath, reducing " + container.describe(false) + " to a gory paste that slickens your spurting shaft.";
else if (isFatal(macro))
return "Your orgasm causes your " + macro.describeDick + " shaft to throb and swell, smashing " + container.describe(false) + " trapped in your musky sheath.";
@@ -266,46 +304,61 @@ function defaultSheathAbsorb(container, macro, verbose) {
}

function defaultCockVore(container, macro, verbose) {
return "You stuff " + container.describe(verbose) + " into your throbbing shaft, forcing them down to your heavy balls.";
if (container.count == 0)
return "You grab " + new Person(1).describe(verbose) + " and grind them against your cock...but they won't fit.";
else
return "You stuff " + container.describe(verbose) + " into your throbbing shaft, forcing them down to your heavy balls.";
}

function defaultCockslap(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "Your " + macro.describeDick + " swings through the air. Lewd!";
else if (isFatal(macro))
return "Your swaying " + macro.describeDick + " cock crushes " + container.describe(verbose) + ". ";
else
return "You smack " + container.describe(verbose) + " with your " + macro.describeDick + " shaft.";
}

function defaultBallSmother(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "You rest your heavy balls on the ground.";
else if (isFatal(macro))
return "Your weighty balls spread over " + container.describe(verbose) + ", drowning them in musk.";
else
return "Your weighty balls spread over " + container.describe(verbose) + ".";
}

function defaultMaleSpurt(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "Your " + macro.describeDick + " cock spurts out $VOLUME of bitter precum.";
else if (isFatal(macro))
return "Your " + macro.describeDick + " cock spurts out $VOLUME of bitter precum, drowning " + container.describe(verbose) + " in a deluge of musk.";
else
return "Your " + macro.describeDick + " shaft spurts out $VOLUME of precum, splooging " + container.describe(verbose) + ".";
}

function defaultMaleOrgasm(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "Your " + macro.describeDick + " cock spurts out $VOLUME of seed.";
else if (isFatal(macro))
return "You're cumming! Your " + macro.describeDick + " cock gushes $VOLUME of seed, obliterating " + container.describe(verbose) + " in a torrent of cum.";
else
return "You're cumming! Your " + macro.describeDick + " shaft gushes $VOLUME of seed, splooging " + container.describe(verbose) + ".";
}

function defaultFemaleSpurt(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "Your moist slit splatters $VOLUME of slick juices.";
else if (isFatal(macro))
return "Your moist slit splatters $VOLUME of slick juices, drowning " + container.describe(verbose) + " in your building lust.";
else
return "Your moist slit splatters $VOLUME of slick juices, splooging " + container.describe(verbose) + ".";
}

function defaultFemaleOrgasm(container, macro, verbose) {
if (isFatal(macro))
if (container.count == 0)
return "Your moist slit splatters $VOLUME of slick femcum.";
else if (isFatal(macro))
return "Your moist slit sprays $VOLUME of slick femcum, obliterating " + container.describe(verbose) + " in a torrent of femcum.";
else
return "Your moist slit sprays $VOLUME of slick femcum, splooging " + container.describe(verbose) + ".";
@@ -314,32 +367,47 @@ function defaultFemaleOrgasm(container, macro, verbose) {
function defaultGrind(container, macro, verbose) {
var mid = isFatal(macro) ? ", smashing them apart" : ", using them as a toy";
var end = macro.arousalEnabled ? " to fuel your lust." : ".";
var desc = container.counter > 0 ? container.describe(verbose) + mid + end : "the ground.";
if (macro.maleParts && macro.femaleParts) {
return "You grind your " + macro.describeDick + " cock and " + macro.describeVagina + " slit against " + container.describe(verbose) + mid + end;
return "You grind your " + macro.describeDick + " cock and " + macro.describeVagina + " slit against " + desc;
} else if (macro.maleParts && !macro.femaleParts) {
return "You grind your " + macro.describeDick + " shaft against " + container.describe(verbose) + mid + end;
return "You grind your " + macro.describeDick + " shaft against " + desc;
} else if (!macro.maleParts && macro.femaleParts) {
return "You grind your " + macro.describeVagina + " slit against " + container.describe(verbose) + mid + end;
return "You grind your " + macro.describeVagina + " slit against " + desc;
} else {
return "You grind your hips against " + container.describe(verbose) + mid + end;
return "You grind your hips against " + desc;
}
}

function defaultPouchStuff(container, macro, verbose) {
return "You grab " + container.describe(verbose) + " and stuff " + (container.count > 1 ? "them" : "it") + " into your pouch.";
if (container.count == 0)
return "You grab " + new Person(1).describe(verbose) + " and stuff them against your pouch...but they won't fit!";
else
return "You grab " + container.describe(verbose) + " and stuff " + (container.count > 1 ? "them" : "it") + " into your pouch.";
}

function defaultPouchEat(container, macro, verbose) {
return "You snatch " + container.describe(verbose) + " from your pouch and shove " + (container.count > 1 ? "them" : "it") + " down your gullet!";
if (container.count == 0)
return "There's nothing in your pouch!";
else
return "You snatch " + container.describe(verbose) + " from your pouch and shove " + (container.count > 1 ? "them" : "it") + " down your gullet!";
}

function defaultSoulVore(container, macro, verbose) {
return "You open your jaws and inhale, ripping the souls from " + container.describe(verbose) + " and dragging them down deep inside.";
if (container.count == 0)
return "No souls here.";
else
return "You open your jaws and inhale, ripping the souls from " + container.describe(verbose) + " and dragging them down deep inside.";
}

function defaultSoulAbsorbPaw(container, macro, verbose) {
let sum = container.sum()["Person"];
return "Your paw slams down on " + container.describe(verbose) + ", smashing them to pieces and absorbing " + sum + (sum == 1 ? " soul" : " souls") + " into your pads.";
if (container.count == 0)
return "Your paw thumps against the ground";
else if (sum == 0)
return "Your paw slams down on " + container.describe(verb0se) + "...but there aren't any souls within!";
else
return "Your paw slams down on " + container.describe(verbose) + ", smashing them to pieces and absorbing " + sum + (sum == 1 ? " soul" : " souls") + " into your pads.";
}

function defaultStomach(container, macro, verbose) {


+ 1
- 4
recursive-macro.js Целия файл

@@ -147,10 +147,7 @@ function fill_area(area, weights, variance=0.15)
result.push(new things[candidate.name](count));
}

if (result.length > 0)
return new Container(result);
else
return new Container([new Person(1)]);
return new Container(result);
}
// describes everything in the container



+ 11
- 3
stroll.html Целия файл

@@ -73,7 +73,7 @@
</div>
<div id="log-area">
<div id="log">
<div>Welcome to Stroll 0.5.4</div>
<div>Welcome to Stroll 0.5.5</div>
<div><b>This game features 18+ content</b></div>
<div><a href="https://chemicalcrux.org/stroll">Changelog</a></div>
<div><a href="https://t.me/joinchat/BSXHzUZmSqc-CXB1khkuYw">Telegram discussion group</a></div>
@@ -135,7 +135,7 @@


<div class="option-container" id="option-panel">
<p>Welcome to Stroll 0.5.4</p>
<p>Welcome to Stroll 0.5.5</p>
<p><b>This game features 18+ content</b></p>
<p><a href="https://chemicalcrux.org/stroll">Changelog</a></p>
<p><a href="https://t.me/joinchat/BSXHzUZmSqc-CXB1khkuYw">Telegram discussion group</a></p>
@@ -183,7 +183,7 @@
<input type="checkbox" checked="true" name="analVore"/><br>
</li>
<li>
<label for="baseAsArea">Ass area</label>
<label for="baseAssArea">Ass area</label>
<input type="number" name="baseAssArea" placeholder="0.4"><br>
</li>
<br>
@@ -212,6 +212,14 @@
</li>
</ul>
<br>
<li>
<label class="has-tooltip" for="sameSizeVore" title="Can you eat people your own size?">Same-size predator</label>
<input type="checkbox" checked="true" name="sameSizeVore"/><br>
</li>
<li>
<label class="has-tooltip" for="sameSizeStomp" title="Can you stomp and sit on people your own size?">Same-size stomper</label>
<input type="checkbox" checked="true" name="sameSizeStomp"/><br>
</li>
<li>
<label for="soulVoreEnabled">Soul vore</label>
<input type="checkbox" checked="true" name="soulVoreEnabled"/><br>


Loading…
Отказ
Запис