浏览代码

Added stench and gas

tags/v0.7.0
Fen Dweller 7 年前
父节点
当前提交
4e14bdfe9b
共有 3 个文件被更改,包括 280 次插入10 次删除
  1. +184
    -2
      game.js
  2. +43
    -5
      recursive-desc.js
  3. +53
    -3
      stroll.html

+ 184
- 2
game.js 查看文件

@@ -360,7 +360,7 @@ let macro =
return describe("stomach",container,this.owner,verbose);
},
"fill": function(owner,container) {
//no-op
owner.gasStorage.amount += container.sum_property("mass") * this.owner.gasDigestFactor / 1e4;
},
get description() {
let prey = new Container();
@@ -403,7 +403,7 @@ let macro =
return describe("bowels",container,this.owner,verbose);
},
"fill": function(owner,container) {
//no-op
owner.gasStorage.amount += container.sum_property("mass") * this.owner.gasDigestFactor / 1e3;
},
get description() {
let prey = new Container();
@@ -646,10 +646,12 @@ let macro =
this.cumStorage.owner = this;
this.femcumStorage.owner = this;
this.milkStorage.owner = this;
this.gasStorage.owner = this;

if (this.analVoreToStomach) {
this.bowels.moves = this.stomach;
}

if (this.maleParts)
this.fillCum(this);
if (this.femaleParts)
@@ -659,6 +661,9 @@ let macro =
if (this.arousalEnabled) {
this.quenchExcess(this);
}
if (this.gasEnabled) {
this.fillGas(this);
}
},

"maleParts": true,
@@ -693,6 +698,26 @@ let macro =
update();
},

"fillGas": function(self) {
self.gasStorage.amount += self.gasScale * self.gasStorage.limit / 3600;

let ratio = self.gasStorage.amount / self.gasStorage.limit;

if (ratio > 1 && Math.random()*100 < ratio || ratio > 2) {
let amount = self.gasStorage.amount - self.gasStorage.limit*3/4;
if (self.belchEnabled && self.fartEnabled) {
Math.random() < 0.5 ? belch(amount) : fart(amount);
} else if (self.belchEnabled) {
belch(amount);
} else if (self.fartEnabled) {
fart(amount);
}
self.gasStorage.amount = self.gasStorage.limit*3/4;
}
setTimeout(function () { self.fillGas(self); }, 100);
update();
},

"cumStorage": {
"amount": 0,
get limit() {
@@ -714,6 +739,38 @@ let macro =
}
},

"gasStorage": {
"amount": 0,
get limit() {
return Math.pow(this.owner.scale,3) / 1000;
}
},

"stenchEnabled": true,
"basePawStenchArea": 1,
get pawStenchArea() {
return this.pawArea * this.basePawStenchArea;
},
"baseAssStenchArea": 1,
get assStenchArea() {
return this.assArea * this.baseAssStenchArea;
},

"gasEnabled": true,
"gasScale": 1,
"gasFactor": 1,
"baseGasDigestFactor": 1,
"gasScaleWithSize": true,
get gasDigestFactor() {
if (this.gasScaleWithSize) {
return this.baseGasDigestFactor * this.scale;
} else {
return this.baseGasDigestFactor;
}
},
"belchEnabled": true,
"fartEnabled": true,

"orgasm": false,
"afterglow": false,

@@ -1340,6 +1397,32 @@ function stomp()
update([sound,line,linesummary,newline]);

macro.arouse(5);

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

function paw_stench() {

let area = macro.pawStenchArea;
let prey = getPrey(biome, area);
let line = describe("paw-stench", prey, macro, verbose);
let linesummary = summarize(prey.sum(), true);

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

if (prey.sum()["Person"] == undefined)
return;

let preyMass = prey.sum_property("mass");

macro.addGrowthPoints(preyMass);

updateVictims("stomped",prey);
update([line,linesummary,newline]);

macro.arouse(5);
}

function grind()
@@ -1457,6 +1540,32 @@ function sit()
update([sound,line,linesummary,newline]);

macro.arouse(5);

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

function ass_stench() {

let area = macro.assStenchArea;
let prey = getPrey(biome, area);
let line = describe("ass-stench", prey, macro, verbose);
let linesummary = summarize(prey.sum(), true);

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

if (prey.sum()["Person"] == undefined)
return;

let preyMass = prey.sum_property("mass");

macro.addGrowthPoints(preyMass);

updateVictims("stomped",prey);
update([line,linesummary,newline]);

macro.arouse(5);
}

function cleavage_stuff()
@@ -2403,6 +2512,74 @@ function soul_absorb_paw()
macro.arouse(25);
}

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

let prey = getPrey(biome, area);
let line = describe("belch", prey, macro, verbose).replace("$VOLUME",volume(vol,unit,false));
let linesummary = summarize(prey.sum(), true);

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

let sound = "Urp.";

if (people < 3) {
sound = "Burp.";
} else if (people < 10) {
sound = "Urph.";
} else if (people < 50) {
sound = "Urrrrrph.";
} else if (people < 500) {
sound = "UUURRP!";
} else if (people < 5000) {
sound = "BUUUUURRRRRRRRRRPHHH!!";
} else {
sound = "Oh the humanity!";
}

let preyMass = prey.sum_property("mass");

macro.addGrowthPoints(preyMass);

updateVictims("splooged",prey);
update([sound,line,linesummary,newline]);
}

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

let prey = getPrey(biome, area);
let line = describe("fart", prey, macro, verbose).replace("$VOLUME",volume(vol,unit,false));
let linesummary = summarize(prey.sum(), true);

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

let sound = "Pft.";

if (people < 3) {
sound = "Pft.";
} else if (people < 10) {
sound = "Pffft.";
} else if (people < 50) {
sound = "Pfffbt.";
} else if (people < 500) {
sound = "Pffffffbt.";
} else if (people < 5000) {
sound = "PFFFBT.";
} else {
sound = "Oh the humanity!";
}

let preyMass = prey.sum_property("mass");

macro.addGrowthPoints(preyMass);

updateVictims("splooged",prey);
update([sound,line,linesummary,newline]);
}

function transformNumbers(line)
{
return line.toString().replace(/[0-9]+(\.[0-9]+)?(e\+[0-9]+)?/g, function(text) { return number(text, numbers); });
@@ -2432,6 +2609,8 @@ function update(lines = [])
document.getElementById("femcumPercent").innerHTML = Math.round(macro.femcumStorage.amount / macro.femcumStorage.limit * 100) + "%";
document.getElementById("milk").innerHTML = "Milk: " + transformNumbers(volume(macro.milkStorage.amount,unit,false));
document.getElementById("milkPercent").innerHTML = Math.round(macro.milkStorage.amount / macro.milkStorage.limit * 100) + "%";
document.getElementById("gas").innerHTML = "Gas: " + transformNumbers(volume(macro.gasStorage.amount,unit,false));
document.getElementById("gasPercent").innerHTML = Math.round(macro.gasStorage.amount / macro.gasStorage.limit * 100) + "%";

for (let type in victims) {
if (victims.hasOwnProperty(type)) {
@@ -2905,6 +3084,9 @@ function startGame(e) {

}

if (macro.gasEnabled) {
enable_stat("gas");
}
if (macro.brutality > 0) {
enable_button("chew");
}


+ 43
- 5
recursive-desc.js 查看文件

@@ -20,8 +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","pouch-rub","pouch-eat","pouch-absorb","soul-vore","soul-absorb-paw","stomach","womb",
"balls","bowels","bowels-to-stomach","breasts","soul-digest"];
"female-orgasm","grind","pouch-stuff","pouch-rub","pouch-eat","pouch-absorb","soul-vore","soul-absorb-paw",
"paw-stench","ass-stench","belch","fart","stomach","womb","balls","bowels","bowels-to-stomach","breasts","soul-digest"];

for (let i=0; i<actions.length; i++) {
rules[actions[i]] = [];
@@ -426,11 +426,49 @@ function defaultSoulAbsorbPaw(container, macro, verbose) {
return "Your " + macro.footDesc() + " 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) {
function defaultPawStench(container, macro, verbose) {
let sum = container.sum()["Person"];
if (isFatal(macro))
return "Vile fumes waft from your " + macro.footDesc(true) + " , choking the life from " + (sum > 1 ? sum + " people." : "a person.");
else
return "Your stinky " + macro.footDesc(true) + " overwhelm" + (sum > 1 ? sum + " people" : "a person") + " with your scent!";
}

function defaultAssStench(container, macro, verbose) {
let sum = container.sum()["Person"];
if (isFatal(macro))
return "Vile miasma from your bitter ass snuffs out " + (sum > 1 ? sum + " people" : "a person") + ", suffocating them in your stench.";
else
return "Your stinky ass sicens " + (sum > 1 ? sum + " people" : "a person") + " with your scent!";
}

function defaultBelch(container, macro, verbose) {
let sum = container.sum()["Person"];
if (container.count == 0)
return "An ominous groan precedes a crass belch.";
if (isFatal(macro))
return "Your stomach gurgles as it digests " + container.describe(false);
return "A rancid belch flows from your " + macro.jawDesc(verbose) + ", corroding " + container.describe(verbose) + " with your vile fumes.";
else
return "You let out a loud burp, blowing over " + container.describe(verbose) + "!";
}

function defaultFart(container, macro, verbose) {
let sum = container.sum()["Person"];
if (container.count == 0)
return "An ominous groan precedes a loud, pungent fart.";
if (isFatal(macro))
return "An ominous groan precedes a loud, pungent fart, corroding " + container.describe(verbose) + " with truly vile vapors.";
else
return "You let out a crass fart, blowing over " + container.describe(verbose) + "!";
}

function defaultStomach(container, macro, verbose) {
if (isGory(macro))
return "Your caustic stomach grinds " + container.describe(false) + " to a gory pulp.";
else if (isFatal(macro))
return "Your stomach gurgles as it digests " + container.describe(false) + ".";
else
return "Your stomach groans as it absorbs " + container.describe(false);
return "Your stomach groans and abosrbs " + container.describe(false) + ".";
}

function defaultBowels(container, macro, verbose) {


+ 53
- 3
stroll.html 查看文件

@@ -25,6 +25,8 @@
<div class="stat-line-hidden" id="femcumPercent"></div>
<div class="stat-line-hidden" id="milk"></div>
<div class="stat-line-hidden" id="milkPercent"></div>
<div class="stat-line-hidden" id="gas"></div>
<div class="stat-line-hidden" id="gasPercent"></div>
</div>
<div class="stat-header-self">Growth</div>
<table id="grow-panel">
@@ -72,7 +74,7 @@
</div>
<div id="log-area">
<div id="log">
<div>Welcome to Stroll 0.5.13</div>
<div>Welcome to Stroll 0.5.14</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>
@@ -98,6 +100,7 @@
<button class="action-button" id="button-action-sit">Sit</button>
<button class="action-button" id="button-action-grind">Grind</button>
</div>

<div class="action-tab" id="actions-tails">
<button class="action-button" id="button-action-tail_slap">Tail Slap</button>
<button class="action-button" id="button-action-tail_vore_only">Tail Vore</button>
@@ -105,6 +108,7 @@
<button class="action-button" id="button-action-tail_vore_some">Tail Vore (some)</button>
<button class="action-button" id="button-action-tail_vore_all">Tail Vore (all!)</button>
</div>

<div class="action-tab" id="actions-breasts">
<button class="action-button" id="button-action-cleavage_stuff">Stuff Cleavage</button>
<button class="action-button" id="button-action-cleavage_crush">Crush Cleavage</button>
@@ -114,9 +118,11 @@
<button class="action-button" id="button-action-breast_vore">Breast Vore</button>
<button class="action-button" id="button-action-breast_milk">Milk Breasts</button>
</div>

<div class="action-tab" id="actions-vagina">
<button class="action-button" id="button-action-unbirth">Unbirth</button>
</div>

<div class="action-tab" id="actions-dick">
<button class="action-button" id="button-action-sheath_stuff">Stuff Sheath</button>
<button class="action-button" id="button-action-sheath_squeeze">Squeeze Sheath</button>
@@ -125,10 +131,12 @@
<button class="action-button" id="button-action-cock_vore">Cock Vore</button>
<button class="action-button" id="button-action-ball_smother">Ball Smother</button>
</div>

<div class="action-tab" id="actions-souls">
<button class="action-button" id="button-action-soul_vore">Soul Vore</button>
<button class="action-button" id="button-action-soul_absorb_paw">Paws</button>
</div>

<div class="action-tab" id="actions-misc">
<button class="action-button" id="button-action-pouch_stuff">Stuff Pouch</button>
<button class="action-button" id="button-action-pouch_rub">Rub Pouch</button>
@@ -138,7 +146,7 @@
</div>
</div>
<div class="character-build">
<p>Welcome to Stroll 0.5.13</p>
<p>Welcome to Stroll 0.5.14</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>
@@ -276,7 +284,7 @@
</li>
<li>
<label for="soulVoreEnabled">Soul vore</label>
<input type="checkbox" checked="true" name="soulVoreEnabled"/>
<input type="checkbox" name="soulVoreEnabled"/>
</li>
<li>
<label for="footType">Foot type</label>
@@ -482,6 +490,48 @@
</li>
</div>
</div>

<div class="custom-category">
<input class="custom-header-checkbox" type="checkbox" id="stenchEnabled" name="stenchEnabled"/>
<label class="custom-header" for="stenchEnabled">Stench</label>
<div class="reveal-if-active">
<li>
<label class="has-tooltip" for="basePawStenchArea" title="How many times your paw area should be covered in stench">Paw stench area</label>
<input type="number" id="basePawStenchArea" name="basePawStenchArea" placeholder="1"/>
</li>
<li>
<label class="has-tooltip" for="baseAssStenchArea" title="How many times your ass' area should be covered in stench">Paw stench area</label>
<input type="number" id="baseAssStenchArea" name="baseAssStenchArea" placeholder="1"/>
</li>
</div>
</div>

<div class="custom-category">
<input class="custom-header-checkbox" type="checkbox" id="gasEnabled" name="gasEnabled"/>
<label class="custom-header" for="gasEnabled">Gas</label>
<div class="reveal-if-active">
<li>
<label for="belchEnabled">Belching</label>
<input type="checkbox" checked="true" name="belchEnabled"/>
</li>
<li>
<label for="fartEnabled">Farting</label>
<input type="checkbox" name="fartEnabled"/>
</li>
<li>
<label for="gasScale">Gas production factor</label>
<input type="number" id="gasScale" name="gasScale" placeholder="1"/>
</li>
<li>
<label for="baseGasDigestFactor">Gas digestion factor</label>
<input type="number" id="baseGasDigestFactor" name="baseGasDigestFactor" placeholder="1"/>
</li>
<li>
<label class="has-tooltip" for="gasScaleWithSize" title="If checked, produces more gas from the same prey as you get larger">Scale gas with size</label>
<input type="checkbox" id="gasScaleWithSize" name="gasScaleWithSize"/>
</li>
</div>
</div>
</ul>
</form>
</div>


正在加载...
取消
保存