Parcourir la source

Added toe wedging. Fixed scat using gas multiplier. Added piss/scat digestion multipliers. Removed extra whitespace

tags/v0.7.0
Fen Dweller il y a 7 ans
Parent
révision
da29fcff8a
4 fichiers modifiés avec 121 ajouts et 107 suppressions
  1. +100
    -8
      game.js
  2. +13
    -1
      recursive-desc.js
  3. +0
    -98
      recursive-macro.js
  4. +8
    -0
      stroll.html

+ 100
- 8
game.js Voir le fichier

@@ -397,7 +397,7 @@ let macro =
},

"digest": function(owner,organ) {
setTimeout(function() { owner.digest(owner,organ); }, 5000);
setTimeout(function() { owner.digest(owner,organ); }, 100);

let count = Math.min(organ.contents.length, organ.maxDigest);

@@ -464,7 +464,7 @@ let macro =
if (owner.gasEnabled)
owner.gasStorage.amount += container.sum_property("mass") * this.owner.gasDigestFactor / 1e4;
if (owner.scatEnabled) {
owner.scatStorage.amount += container.sum_property("mass") * this.owner.gasDigestFactor / 1e3;
owner.scatStorage.amount += container.sum_property("mass") * this.owner.scatDigestFactor / 1e3;
owner.scatStorage.victims = owner.scatStorage.victims.merge(container);
}
},
@@ -512,7 +512,7 @@ let macro =
if (owner.gasEnabled)
owner.gasStorage.amount += container.sum_property("mass") * this.owner.gasDigestFactor / 1e3;
if (owner.scatEnabled) {
owner.scatStorage.amount += container.sum_property("mass") * this.owner.gasDigestFactor / 1e3;
owner.scatStorage.amount += container.sum_property("mass") * this.owner.scatDigestFactor / 1e3;
owner.scatStorage.victims = owner.scatStorage.victims.merge(container);
}
},
@@ -658,6 +658,8 @@ let macro =
"stages" : 2
},

"pissDigestFactor": 1,

"bladder": {
"name" : "bladder",
"setup": function(owner) {
@@ -677,7 +679,7 @@ let macro =
},
"fill": function(owner,container) {
if (macro.lactationEnabled) {
owner.pissStorage.amount += container.sum_property("mass") / 1e3;
owner.pissStorage.amount += container.sum_property("mass") * owner.pissDigestFactor / 1e3;
}
},
get description() {
@@ -817,6 +819,20 @@ let macro =
}
},

"paws": {
"name": "paws",
"container": new Container(),
get description() {
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);
},
"add": function(victims) {
this.container = this.container.merge(victims);
}
},

"init": function() {
this.stomach.setup(this);
this.bowels.setup(this);
@@ -832,6 +848,8 @@ let macro =
this.pissStorage.owner = this;
this.scatStorage.owner = this;

this.paws.owner = this;

if (this.analVoreToStomach) {
this.bowels.moves = this.stomach;
}
@@ -901,7 +919,7 @@ let macro =
} else if (self.fartEnabled) {
fart(amount);
}
self.gasStorage.amount = self.gasStorage.limit*3/4;
}
setTimeout(function () { self.fillGas(self); }, 100);
update();
@@ -929,6 +947,8 @@ let macro =
update();
},

"scatDigestFactor": 1,

// no actual filling, but it handles updates
"fillScat": function(self) {
if (self.scatStorage.amount > self.scatStorage.limit * 2)
@@ -1145,6 +1165,24 @@ let macro =
}
},

get totalMass() {
let base = this.baseMass;

if (this.hasTail) {
base += this.tailMass * this.tailCount;
}

if (this.maleParts) {
base += this.dickMass;
base += this.ballMass * 2;
}

if (this.hasBreasts) {
base += this.breastMass * 2;
}

return base;
},

get description() {
let result = [];
@@ -1212,6 +1250,11 @@ let macro =
result.push(line);
}

line = "Your two " + macro.footDesc(true) + " shake the earth.";
result.push(line);




return result;
},
@@ -1609,11 +1652,55 @@ function stomp()

macro.arouse(5);

stomp_wedge();

if (macro.stenchEnabled) {
paw_stench();
}
}

function stomp_wedge() {
let area = 0;

if (!macro.footWear || (!macro.footSockWorn && !macro.footShoeWorn))
area = macro.pawArea/10;
else if (macro.footShoeWorn)
area = macro.pawArea/25;
else
area = 0;

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

if (prey.count == 0)
return;

let line = describe("stomp-wedge", prey, macro, verbose);
let linesummary = summarize(prey.sum(), false);

let people = get_living_prey(prey.sum());

let sound = "Thump";

if (people < 3) {
sound = "Thump!";
} else if (people < 10) {
sound = "Squish!";
} else if (people < 50) {
sound = "Crunch!";
} else if (people < 500) {
sound = "CRUNCH!";
} else if (people < 5000) {
sound = "CRRUUUNCH!!";
} else {
sound = "Oh the humanity!";
}
let preyMass = prey.sum_property("mass");

add_victim_people("stomped",prey);

update([sound,line,linesummary,newline]);
}

function paw_stench() {

let area = macro.pawStenchArea;
@@ -2731,9 +2818,11 @@ function soul_absorb_paw()
function belch(vol)
{
if (vol == undefined) {
vol = macro.gasStorage.amount;
vol = Math.min(macro.gasStorage.amount,macro.gasStorage.limit/3);
}

macro.gasStorage.amount -= vol;

let area = Math.pow(vol, 2/3);

let prey = getPrey(biome, area);
@@ -2770,8 +2859,11 @@ function belch(vol)
function fart(vol)
{
if (vol == undefined) {
vol = macro.gasStorage.amount;
vol = Math.min(macro.gasStorage.amount,macro.gasStorage.limit/2);
}

macro.gasStorage.amount -= vol;

let area = Math.pow(vol, 2/3);

let prey = getPrey(biome, area);
@@ -3063,7 +3155,7 @@ function update(lines = [])
log.scrollTop = log.scrollHeight;

document.getElementById("height").innerHTML = "Height: " + transformNumbers(length(macro.height, unit));
document.getElementById("mass").innerHTML = "Mass: " + transformNumbers(mass(macro.mass, unit));
document.getElementById("mass").innerHTML = "Mass: " + transformNumbers(mass(macro.totalMass, unit));
document.getElementById("arousal").innerHTML = "Arousal: " + round(macro.arousal,0) + "%";
document.getElementById("edge").innerHTML = "Edge: " + round(macro.edge * 100,0) + "%";
document.getElementById("cum").innerHTML = "Cum: " + transformNumbers(volume(macro.cumStorage.amount,unit,false));


+ 13
- 1
recursive-desc.js Voir le fichier

@@ -16,7 +16,7 @@ function getDefault(name) {
return window[funcName];
}

var actions = ["eat","chew","stomp","kick","anal-vore","ass-crush","tail-slap","tail-vore",
var actions = ["eat","chew","stomp","stomp-wedge","kick","anal-vore","ass-crush","tail-slap","tail-vore",
"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",
@@ -142,6 +142,18 @@ function defaultStomp(container, macro, verbose) {
return "You step on " + container.describe(verbose) + ".";
}

function defaultStompWedge(container, macro, verbose) {
if (container.count == 1) {
let line = container.describe(verbose);
line = line.charAt(0).toUpperCase() + line.slice(1);
return line + " is wedged between your " + macro.toeDesc(true);
} else {
let line = container.describe(verbose);
line = line.charAt(0).toUpperCase() + line.slice(1);
return line + " are wedged between your " + macro.toeDesc(true);
}
}

function defaultKick(container, macro, verbose) {
if (container.count == 0)
return "You swing your mighty " + macro.footDesc() + "..and hit nothing.";


+ 0
- 98
recursive-macro.js Voir le fichier

@@ -354,7 +354,6 @@ function distribution(min, max, samples) {
}
}


return result;
}

@@ -511,7 +510,6 @@ function Person(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);


this.describeOne = function (verbose=true) {
var body = random_desc(["skinny","fat","tall","short","stocky","spindly"], (verbose ? 0.6 : 0));
var sex = random_desc(["male", "female"], (verbose ? 1 : 0));
@@ -547,7 +545,6 @@ function Human(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);


this.describeOne = function (verbose=true) {
var body = random_desc(["skinny","fat","tall","short","stocky","spindly"], (verbose ? 0.6 : 0));
var sex = random_desc(["man", "woman"], 1);
@@ -581,7 +578,6 @@ function Cow(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);


this.describeOne = function (verbose=true) {
var body = random_desc(["skinny","fat","tall","short","stocky","spindly"], (verbose ? 0.6 : 0));
var sex = random_desc(["male", "female"], (verbose ? 1 : 0));
@@ -614,9 +610,6 @@ function EmptyCar(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);




this.describeOne = function(verbose=true) {
var color = random_desc(["black","black","gray","gray","blue","red","tan","white","white"]);
var adjective = random_desc(["rusty","brand-new"],0.3);
@@ -649,8 +642,6 @@ function Car(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);



this.describeOne = function(verbose=true) {
var color = random_desc(["black","black","gray","gray","blue","red","tan","white","white"], (verbose ? 1 : 0));
var adjective = random_desc(["rusty","brand-new"], (verbose ? 0.3 : 0));
@@ -683,8 +674,6 @@ function Bus(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);



this.describeOne = function(verbose=true) {
var adjective = random_desc(["rusty","brand-new"], (verbose ? 0.3 : 0));
var color = random_desc(["black","tan","gray"], (verbose ? 1 : 0));
@@ -717,8 +706,6 @@ function Tram(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);



this.describeOne = function(verbose=true) {
var adjective = random_desc(["rusty","weathered"], (verbose ? 0.3 : 0));
var color = random_desc(["blue","brown","gray"], (verbose ? 1 : 0));
@@ -742,7 +729,6 @@ function Tram(count = 1) {
}
};


this.anal_vore = function() {
return "You slide " + this.describe() + " up your tight ass";
};
@@ -792,8 +778,6 @@ function TrainCar(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);



this.describeOne = function(verbose=true) {
var adjective = random_desc(["rusty","brand-new"], (verbose ? 0.3 : 0));
var color = random_desc(["black","tan","gray"], (verbose ? 1 : 0));
@@ -816,9 +800,6 @@ function House(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);




this.describeOne = function(verbose=true) {
var size = random_desc(["little","two-story","large"], (verbose ? 0.5 : 0));
var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0));
@@ -849,10 +830,6 @@ function Barn(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);





this.describeOne = function(verbose=true) {
var size = random_desc(["little","big","large"], (verbose ? 0.5 : 0));
var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0));
@@ -883,10 +860,6 @@ function SmallSkyscraper(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);





this.describeOne = function(verbose=true) {
var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0));
var name = random_desc(["skyscraper","office tower","office building"], 1);
@@ -917,10 +890,6 @@ function LargeSkyscraper(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);





this.describeOne = function(verbose=true) {
var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0));
var name = random_desc(["skyscraper","office tower","office building"], 1);
@@ -950,13 +919,6 @@ function ParkingGarage(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);








this.describeOne = function(verbose=true) {
return "a parking garage";
};
@@ -976,18 +938,6 @@ function Town(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);













this.describe = function(verbose = true) {
if (verbose) {
return (this.count == 1 ? "a town" : this.count + " towns") + " with " + describe_all(this.contents, verbose) + " in " + (this.count == 1 ? "it" : "them");
@@ -1003,26 +953,6 @@ function City(count = 1) {
copy_defaults(this,new DefaultEntity());
this.count = count;
this.contents = initContents(this.name,this.count);





















this.describe = function(verbose = true) {
if (verbose) {
@@ -1040,18 +970,6 @@ function Continent(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);













this.describe = function(verbose = true) {
if (verbose) {
return (this.count == 1 ? "a continent" : this.count + " continents") + " with " + describe_all(this.contents, verbose) + " on " + (this.count == 1 ? "it" : "them");
@@ -1068,8 +986,6 @@ function Planet(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);



this.describe = function(verbose = true) {
if (verbose) {
return (this.count == 1 ? "a planet" : this.count + " planets") + " with " + describe_all(this.contents, verbose) + " on " + (this.count == 1 ? "it" : "them");
@@ -1098,10 +1014,6 @@ function SolarSystem(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);





this.describe = function(verbose = true) {
if (verbose) {
return (this.count == 1 ? "a solar system" : this.count + " solar systems") + " made up of " + describe_all(this.contents, verbose);
@@ -1118,10 +1030,6 @@ function Galaxy(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);





this.describe = function(verbose = true) {
if (verbose) {
return (this.count == 1 ? "a galaxy" : this.count + " galaxies") + " made up of " + describe_all(this.contents, verbose);
@@ -1150,8 +1058,6 @@ function Tank(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);



this.describe = function(verbose = true) {
if (verbose) {
return (this.count == 1 ? "a tank" : this.count + " tanks") + " with " + describe_all(this.contents, verbose) + " trapped inside.";
@@ -1168,8 +1074,6 @@ function Artillery(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);



this.describe = function(verbose = true) {
if (verbose) {
return (this.count == 1 ? "an artillery unit" : this.count + " artillery units") + " with " + describe_all(this.contents, verbose) + " trapped inside.";
@@ -1186,8 +1090,6 @@ function Helicopter(count = 1) {
this.count = count;
this.contents = initContents(this.name,this.count);



this.describe = function(verbose = true) {
if (verbose) {
return (this.count == 1 ? "a helicopter" : this.count + " helicopters") + " with " + describe_all(this.contents, verbose) + " riding inside.";


+ 8
- 0
stroll.html Voir le fichier

@@ -681,6 +681,10 @@
<label for="urethraStretchiness">Urethra stretchiness</label>
<input type="number" step="any" id="urethraStretchiness" name="urethraStretchiness" placeholder="5" />
</li>
<li>
<label for="pissDigestFactor">Piss digestion factor</label>
<input type="number" step="any" id="pissDigestFactor" name="pissDigestFactor" placeholder="1" />
</li>
</div>
</ul>
</div>
@@ -694,6 +698,10 @@
<li>
<div>note - setting tailhole diameter requires anal vore to be enabled</div>
</li>
<li>
<label for="scatDigestFactor">Scat digestion factor</label>
<input type="number" step="any" id="scatDigestFactor" name="scatDigestFactor" placeholder="1" />
</li>
</div>
</div>



Chargement…
Annuler
Enregistrer