var strolling = false; var maxStomachDigest = 10; var maxBowelsDigest = 10; var unit = "metric"; var verbose = true; var biome = "suburb"; var newline = " "; victims = {}; var macro = { "scaling": function(value, scale, factor) { return value * Math.pow(scale,factor); }, "species": "crux", "color" : "blue", "baseHeight": 2.26, get height() { return this.scaling(this.baseHeight, this.scale, 1); }, "baseMass": 135, get mass () { return this.scaling(this.baseMass, this.scale, 3); }, "basePawArea": 0.1, get pawArea() { return this.scaling(this.basePawArea, this.scale, 2); }, "baseAnalVoreArea": 0.1, get analVoreArea() { return this.scaling(this.baseAnalVoreArea, this.scale, 2); }, "baseAssArea": 0.4, get assArea() { return this.scaling(this.baseAssArea, this.scale, 2); }, "baseHandArea": 0.3, get handArea() { return this.scaling(this.baseHandArea, this.scale, 2); }, "scale": 3, "scaleWithMass": function(mass) { var startMass = this.mass; var newMass = startMass + mass; this.scale = Math.pow(newMass / this.baseMass, 1/3); } } function look() { var line1 = "You are a " + length(macro.height, unit, true) + " tall " + macro.species + ". You weigh " + mass(macro.mass, unit) + "."; var line2 = "" switch(biome) { case "rural": line2 = "You're standing amongst rural farmhouses and expansive ranches. Cattle are milling about at your feet."; break; case "suburb": line2 = "You're striding through the winding roads of a suburb."; break; case "city": line2 = "You're terrorizing the streets of a city. Heavy traffic, worsened by your rampage, is everywhere."; break; case "downtown": line2 = "You're lurking amongst the skyscrapers of downtown. The streets are packed, and the buildings are practically begging you to knock them over."; } update([line1,newline,line2,newline]); } function get_living_prey(sum) { var total = 0; for (var key in sum) { if (sum.hasOwnProperty(key)) { if (key == "Person" || key == "Cow") total += sum[key]; } } return total; } function toggle_auto() { strolling = !strolling; document.getElementById("button-stroll").innerHTML = "Status: " + (strolling ? "Strolling" : "Standing"); if (strolling) update(["You start walking.",newline]); else update(["You stop walking.",newline]); } function change_location() { switch(biome) { case "suburb": biome = "city"; break; case "city": biome = "downtown"; break; case "downtown": biome = "rural"; break; case "rural": biome = "suburb"; break; } document.getElementById("button-location").innerHTML = "Location: " + biome.charAt(0).toUpperCase() + biome.slice(1); } function toggle_units() { switch(unit) { case "metric": unit = "customary"; break; case "customary": unit = "approx"; break; case "approx": unit = "metric"; break; } document.getElementById("button-units").innerHTML = "Units: " + unit.charAt(0).toUpperCase() + unit.slice(1); update(); } function toggle_verbose() { verbose = !verbose; document.getElementById("button-verbose").innerHTML = "Descriptions: " + (verbose ? "Verbose" : "Simple"); } function initVictims() { return { "Person": 0, "Cow": 0, "Car": 0, "Bus": 0, "Tram": 0, "Motorcycle": 0, "House": 0, "Barn": 0, "Small Skyscraper": 0, "Train": 0, "Train Car": 0, "Parking Garage": 0, "Overpass": 0, }; }; // lists out total people function summarize(sum, fatal = true) { var count = get_living_prey(sum); return "(" + count + " " + (fatal ? (count > 1 ? "kills" : "kill") : (count > 1 ? "prey" : "prey")) + ")"; } var stomach = [] var bowels = [] function getOnePrey(biome,area) { var potential = ["Person"]; switch(biome) { case "suburb": potential = ["Person", "Car", "Bus", "Train", "House"]; break; case "city": potential = ["Person", "Car", "Bus", "Train", "Tram", "House", "Parking Garage"]; break; case "downtown": potential = ["Person", "Car", "Bus", "Tram", "Small Skyscraper", "Parking Garage"]; break; case "rural": potential = ["Person", "Barn", "House", "Cow"]; break; } var potAreas = [] potential.forEach(function (x) { potAreas.push([x,areas[x]]); }); potAreas = potAreas.sort(function (x,y) { return y[1] - x[1]; }); for (var i=0; i 0) { --count; var toDigest = digestType.shift(); if (toDigest.name != "Container") toDigest = new Container([toDigest]); container = container.merge(toDigest); } var digested = container.sum(); for (var key in victims[containerName]) { if (victims[containerName].hasOwnProperty(key) && digested.hasOwnProperty(key) ) { victims["digested"][key] += digested[key]; victims[containerName][key] -= digested[key]; } } if (containerName == "stomach") update(["Your stomach gurgles as it digests " + container.describe(false),summarize(container.sum()),newline]); else if (containerName == "bowels") update(["Your bowels churn as they absorb " + container.describe(false),summarize(container.sum()),newline]); if (digestType.length > 0) { setTimeout(function() { doDigest(containerName); }, 15000); } } window.addEventListener('load', function(event) { victims["stomped"] = initVictims(); victims["digested"] = initVictims(); victims["stomach"] = initVictims(); victims["bowels"] = initVictims(); document.getElementById("button-look").addEventListener("click",look); document.getElementById("button-grow").addEventListener("click",grow); document.getElementById("button-feed").addEventListener("click",feed); document.getElementById("button-stomp").addEventListener("click",stomp); document.getElementById("button-anal_vore").addEventListener("click",anal_vore); document.getElementById("button-stroll").addEventListener("click",toggle_auto); document.getElementById("button-location").addEventListener("click",change_location); document.getElementById("button-units").addEventListener("click",toggle_units); document.getElementById("button-verbose").addEventListener("click",toggle_verbose); setTimeout(pick_move, 2000); update(); });