From 419220a9492fac69cdee3786cda18217ccb31904 Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Sun, 30 Dec 2018 11:18:49 -0600 Subject: [PATCH] Made the rest of the descriptions flatten properly, too --- game.js | 116 ++++++++++++++++++++++++++++++++------------- recursive-macro.js | 12 ++++- 2 files changed, 94 insertions(+), 34 deletions(-) diff --git a/game.js b/game.js index cfcf7b2..07845c1 100644 --- a/game.js +++ b/game.js @@ -477,13 +477,17 @@ let macro = prey = prey.merge(x); }); + if (verbose || flat) { + prey = flatten(prey); + } + if (prey.count == 0) { return "Your belly is flat, growling and gurgling for want of prey."; } else { if (macro.brutality > 0) { - return "Your belly churns and bubbles as it works to melt " + prey.describe(false) + " down to chyme."; + return "Your belly churns and bubbles as it works to melt " + prey.describeSimple(verbose || flat) + " down to chyme."; } else { - return "Your belly sloshes with the weight of " + prey.describe(false) + " trapped within."; + return "Your belly sloshes with the weight of " + prey.describeSimple(verbose || flat) + " trapped within."; } } }, @@ -525,16 +529,20 @@ let macro = prey = prey.merge(x); }); + if (verbose || flat) { + prey = flatten(prey); + } + if (prey.count == 0) { return "Your " + this.owner.tailDesc + " are empty."; } else { if (this.owner.tailVoreToStomach) { - return "Your " + this.owner.tailDesc + " " + (this.owner.tailCount > 1 ? "clench and squeeze around " : "clenches and squeezes around ") + prey.describe(false) + ", working them deeper and deeper inside."; + return "Your " + this.owner.tailDesc + " " + (this.owner.tailCount > 1 ? "clench and squeeze around " : "clenches and squeezes around ") + prey.describeSimple(verbose || flat) + ", working them deeper and deeper inside."; } else if (macro.brutality > 0) { - return "Your " + this.owner.tailDesc + " " + (this.owner.tailCount > 1 ? "groans" : "groan") + " ominously as " + (this.owner.tailCount > 1 ? "they gurgle" : "it gurgles" ) + " around " + prey.describe(false) + ", slowly absorbing them into your musky depths."; + return "Your " + this.owner.tailDesc + " " + (this.owner.tailCount > 1 ? "groans" : "groan") + " ominously as " + (this.owner.tailCount > 1 ? "they gurgle" : "it gurgles" ) + " around " + prey.describeSimple(verbose || flat) + ", slowly absorbing them into your musky depths."; } else { - return "Your " + this.owner.tailDesc + " " + (this.owner.tailCount > 1 ? "bulge" : "bulges") + " with " + prey.describe(false) + "."; + return "Your " + this.owner.tailDesc + " " + (this.owner.tailCount > 1 ? "bulge" : "bulges") + " with " + prey.describeSimple(verbose || flat) + "."; } } }, @@ -576,13 +584,17 @@ let macro = prey = prey.merge(x); }); + if (verbose || flat) { + prey = flatten(prey); + } + if (prey.count == 0) { return "Your bowels are empty."; } else { if (macro.brutality > 0) { - return "Your bowels groan ominously as they clench around " + prey.describe(false) + ", slowly absorbing them into your musky depths."; + return "Your bowels groan ominously as they clench around " + prey.describeSimple(verbose || flat) + ", slowly absorbing them into your musky depths."; } else { - return "Your bowels bulge with " + prey.describe(false) + "."; + return "Your bowels bulge with " + prey.describeSimple(verbose || flat) + "."; } } }, @@ -626,13 +638,17 @@ let macro = prey = prey.merge(x); }); + if (verbose || flat) { + prey = flatten(prey); + } + if (prey.count == 0) { return "Your lower belly is flat."; } else { if (macro.brutality > 0) { - return "Your womb tingles as its rhythmically grinds down on " + prey.describe(false) + ", turning them soft and wet as they start to dissolve into femcum."; + return "Your womb tingles as its rhythmically grinds down on " + prey.describeSimple(verbose || flat) + ", turning them soft and wet as they start to dissolve into femcum."; } else { - return "Your womb clenches around " + prey.describe(false) + "."; + return "Your womb clenches around " + prey.describeSimple(verbose || flat) + "."; } } }, @@ -676,13 +692,17 @@ let macro = prey = prey.merge(x); }); + if (verbose || flat) { + prey = flatten(prey); + } + if (prey.count == 0) { return "Your balls are smooth."; } else { if (macro.brutality > 0) { - return "Your balls slosh and bulge as they work to convert " + prey.describe(false) + " into hot cum."; + return "Your balls slosh and bulge as they work to convert " + prey.describeSimple(verbose || flat) + " into hot cum."; } else { - return "Your balls slosh about, loaded down with " + prey.describe(false) + "."; + return "Your balls slosh about, loaded down with " + prey.describeSimple(verbose || flat) + "."; } } }, @@ -728,13 +748,17 @@ let macro = prey = prey.merge(x); }); + if (verbose || flat) { + prey = flatten(prey); + } + if (prey.count == 0) { return "Your breasts are smooth."; } else { if (macro.brutality > 0) { - return "Your breasts slosh from side to side, " + prey.describe(false) + " slowly digesting into creamy milk."; + return "Your breasts slosh from side to side, " + prey.describeSimple(verbose || flat) + " slowly digesting into creamy milk."; } else { - return "Your breasts bulge with " + prey.describe(false) + "."; + return "Your breasts bulge with " + prey.describeSimple(verbose || flat) + "."; } } }, @@ -777,13 +801,17 @@ let macro = prey = prey.merge(x); }); + if (verbose || flat) { + prey = flatten(prey); + } + if (prey.count == 0) { return "Your bladder has nobody in it."; } else { if (macro.brutality > 0) { - return "Your bladder bulges, " + prey.describe(false) + " dissolving in your acrid piss."; + return "Your bladder bulges, " + prey.describeSimple(verbose || flat) + " dissolving in your acrid piss."; } else { - return "Your bladder bulges with " + prey.describe(false) + "."; + return "Your bladder bulges with " + prey.describeSimple(verbose || flat) + "."; } } }, @@ -866,13 +894,17 @@ let macro = prey = prey.merge(x); }); + if (verbose || flat) { + prey = flatten(prey); + } + if (prey.count == 0) { return "You contain no prey."; } else { if (macro.gooDigestion) { - return "Your gooey body contains " + prey.describe(false) + ", gradually absorbing them into your bulk."; + return "Your gooey body contains " + prey.describeSimple(verbose || flat) + ", gradually absorbing them into your bulk."; } else { - return "Your gooey body contains " + prey.describe(false) + "."; + return "Your gooey body contains " + prey.describeSimple(verbose || flat) + "."; } } }, @@ -908,10 +940,14 @@ let macro = prey = prey.merge(x); }); + if (verbose || flat) { + prey = flatten(prey); + } + if (prey.count == 0) { return "Your " + this.owner.footOnlyDesc(true) + " don't contain any prey."; } else { - return "Your " + this.owner.footOnlyDesc(true) + " have enveloped " + prey.describe(false); + return "Your " + this.owner.footOnlyDesc(true) + " have enveloped " + prey.describeSimple(verbose || flat); } }, "contents" : [], @@ -947,10 +983,14 @@ let macro = prey = prey.merge(x); }); + if (verbose || flat) { + prey = flatten(prey); + } + if (prey.count == 0) { return "Your crop don't contain any prey."; } else { - return "Your crop bulges with " + prey.describe(false) + "."; + return "Your crop bulges with " + prey.describeSimple(verbose || flat) + "."; } }, "contents" : [], @@ -986,13 +1026,17 @@ let macro = prey = prey.merge(x); }); + if (verbose || flat) { + prey = flatten(prey); + } + if (prey.count == 0) { return "Your don't have anyone trapped in your wings."; } else { if (macro.brutality > 0) { - return "Your folded wings bulge as they squeeze in on " + prey.describe(false) + ", slowly breaking them down."; + return "Your folded wings bulge as they squeeze in on " + prey.describeSimple(verbose || flat) + ", slowly breaking them down."; } else { - return "Your wings bulge with " + prey.describe(false) + "."; + return "Your wings bulge with " + prey.describeSimple(verbose || flat) + "."; } } }, @@ -1006,10 +1050,16 @@ let macro = "name": "pouch", "container": new Container(), get description() { + let prey = this.container; + + if (verbose || flat) { + prey = flatten(prey); + } + if (this.container.count == 0) return "Your pouch is empty"; else - return "Your pouch contains " + this.container.describe(false); + return "Your pouch contains " + this.container.describeSimple(verbose || flat); }, "add": function(victims) { this.container = this.container.merge(victims); @@ -1023,7 +1073,7 @@ let macro = if (this.container.count == 0) return "Your sheath is empty"; else - return "Your sheath contains " + this.container.describe(false); + return "Your sheath contains " + this.container.describeSimple(verbose || flat); }, "add": function(victims) { this.container = this.container.merge(victims); @@ -1037,7 +1087,7 @@ let macro = if (this.container.count == 0) return "Your breasts don't have anyone stuck between them"; else - return "Your cleavage contains " + this.container.describe(false); + return "Your cleavage contains " + this.container.describeSimple(verbose || flat); }, "add": function(victims) { this.container = this.container.merge(victims); @@ -1054,7 +1104,7 @@ let macro = if (this.container.count == 0) return "Your " + macro.shoeDesc(true) + " are empty."; else - return "Your " + macro.shoeDesc(true) + " contain " + this.container.describe(false); + return "Your " + macro.shoeDesc(true) + " contain " + this.container.describeSimple(verbose || flat); }, "add": function(victims) { this.container = this.container.merge(victims); @@ -1068,7 +1118,7 @@ let macro = if (this.container.count == 0) return "Your " + macro.sockDesc(true) + " are empty."; else - return "Your " + macro.sockDesc(true) + " contain " + this.container.describe(false); + return "Your " + macro.sockDesc(true) + " contain " + this.container.describeSimple(verbose || flat); }, "add": function(victims) { this.container = this.container.merge(victims); @@ -1082,7 +1132,7 @@ let macro = if (this.container.count == 0) return "You don't have anyone stuck between your " + this.owner.toeDesc(true); else - return "You have " + this.container.describe(false) + " wedged between your " + this.owner.toeDesc(true); + return "You have " + this.container.describeSimple(verbose || flat) + " wedged between your " + this.owner.toeDesc(true); }, "add": function(victims) { this.container = this.container.merge(victims); @@ -1492,7 +1542,7 @@ let macro = line += " They slosh with " + volume(this.milkStorage.amount, unit, false) + " of creamy milk."; } if (this.cleavage.container.count > 0) - line += " Between them are " + this.cleavage.container.describe(false) + "."; + line += " Between them are " + this.cleavage.container.describeSimple(verbose || flat) + "."; result.push(line); if (this.breastVore) { @@ -1515,16 +1565,16 @@ let macro = line = "Your two " + this.footDesc(true) + " shake the earth."; if (this.footShoeWorn && this.shoe.container.count > 0) { - line += " Within " + (this.shoe.container.count > 1 ? "are" : "is") + " " + this.shoe.container.describe(false); + line += " Within " + (this.shoe.container.count > 1 ? "are" : "is") + " " + this.shoe.container.describeSimple(verbose || flat); if (this.footSockWorn && this.sock.container.count > 0) { - line += " and " + this.sock.container.describe(false) + " in your socks."; + line += " and " + this.sock.container.describeSimple(verbose || flat) + " in your socks."; } } else if (this.footSockWorn && this.sock.container.count > 0) { - line += " Within " + (this.sock.container.count > 1 ? "are" : "is") + " " + this.sock.container.describe(false); + line += " Within " + (this.sock.container.count > 1 ? "are" : "is") + " " + this.sock.container.describeSimple(verbose || flat); } if (this.paws.container.count > 0) { - line += " You have " + this.paws.container.describe(false) + " wedged between your " + macro.toeDesc(true); + line += " You have " + this.paws.container.describeSimple(verbose || flat) + " wedged between your " + macro.toeDesc(true); } result.push(line); @@ -4777,7 +4827,7 @@ function showStats() { if (victims.hasOwnProperty(key)) { if (victims[key]["people"] > 0) { lines.push([ - victims[key]["people"] + " " + describe("victim-" + key, null, macro, false, flat), + victims[key]["people"] + " " + describe("victim-" + key, null, macro, false, false), victims[key]["people"] ]); total += victims[key]["people"]; diff --git a/recursive-macro.js b/recursive-macro.js index 1ebe0fd..15da2a0 100644 --- a/recursive-macro.js +++ b/recursive-macro.js @@ -499,7 +499,7 @@ function flatten(thing) { let obj = new things[key](val); obj.contents = []; - + list.push(obj); }); @@ -559,6 +559,15 @@ function defaultAddContent(thing) { }; } +function defaultDescribeSimple(thing) { + return function(flat) { + if (flat) { + return flatten(thing).describe(false) + } else { + return thing.describe(false); + } + } +} function DefaultEntity() { this.sum = defaultSum; this.area = defaultArea; @@ -566,6 +575,7 @@ function DefaultEntity() { this.sum_property = defaultSumProperty; this.merge = defaultMerge; this.multiply = defaultMultiply; + this.describeSimple = defaultDescribeSimple; return this; }