Преглед изворни кода

Added foreskins. Literally no testing

tags/v1.0.0
Fen Dweller пре 6 година
родитељ
комит
998f4e3077
3 измењених фајлова са 243 додато и 4 уклоњено
  1. +29
    -0
      features.js
  2. +120
    -0
      game.js
  3. +94
    -4
      recursive-desc.js

+ 29
- 0
features.js Прегледај датотеку

@@ -175,6 +175,22 @@ panels = {
"name": "Absorb Sheath",
"target": "sheath_absorb"
},
{
"name": "Stuff Foreskin",
"target": "foreskin_stuff"
},
{
"name": "Squeeze Foreskin",
"target": "foreskin_toy"
},
{
"name": "Clench Foreskin",
"target": "foreskin_clench"
},
{
"name": "Absorb Foreskin",
"target": "foreskin_absorb"
},
{
"name": "Cockslap",
"target": "cockslap"
@@ -1004,6 +1020,19 @@ options = [
}
]
},
{
"name": "Foreskin",
"id": "hasForeskin",
"type": "subcategory",
"entries":
[
{
"name": "Absorption",
"id": "foreskinAbsorptionEnabled",
"type": "checkbox"
}
]
},
{
"name": "Musk",
"id": "maleMuskEnabled",


+ 120
- 0
game.js Прегледај датотеку

@@ -1080,6 +1080,20 @@ let macro =
}
},

"foreskin": {
"name": "foreskin",
"container": new Container(),
get description() {
if (this.container.count == 0)
return "Your foreskin is wrapped tightly around your shaft.";
else
return "Your foreskin bulges with " + this.container.describeSimple(verbose || flat);
},
"add": function(victims) {
this.container = this.container.merge(victims);
}
},

"cleavage": {
"name": "cleavage",
"container": new Container(),
@@ -1354,6 +1368,8 @@ let macro =
this.maleOrgasm(this);
if (this.sheath.container.count > 0)
sheath_crush();
if (this.foreskin.container.count > 0)
foreskin_crush();
}
if (this.femaleParts) {
this.femaleOrgasm(this);
@@ -2674,6 +2690,96 @@ function sheath_absorb()
macro.arouse(45);
}

function foreskin_stuff()
{
let area = Math.min(macro.handArea, macro.dickArea);
let prey = getPrey(biome, area, macro.sameSizeVore);
let line = describe("foreskin-stuff", prey, macro, verbose, flat);
let linesummary = summarize(prey.sum(), false);

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

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

let sound = getSound("insert",preyMass);

macro.foreskin.add(prey);
update([sound,line,linesummary,newline]);

macro.arouse(15);
}

function foreskin_toy()
{
let prey = macro.foreskin.container;
let line = describe("foreskin-toy", prey, macro, verbose, flat);
let linesummary = summarize(prey.sum(), false);

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

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

let sound = getSound("insert",preyMass);

update([sound,line,linesummary,newline]);
macro.arouse(15);
}

function foreskin_clench()
{
let prey = macro.foreskin.container;
macro.foreskin.container = new Container();
let line = describe("foreskin-clench", prey, macro, verbose, flat);
let linesummary = summarize(prey.sum(), true);

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

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

let sound = getSound("crush",preyMass);

add_victim_people("foreskin-crush",prey);
update([sound,line,linesummary,newline]);
macro.arouse(45);
}

function foreskin_crush()
{
let prey = macro.foreskin.container;
macro.foreskin.container = new Container();
let line = describe("foreskin-crush", prey, macro, verbose, flat);
let linesummary = summarize(prey.sum(), true);

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

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

let sound = getSound("crush",preyMass);

add_victim_people("foreskin-crush",prey);
update([sound,line,linesummary,newline]);
macro.arouse(45);
}

function foreskin_absorb()
{
let prey = macro.foreskin.container;
macro.foreskin.container = new Container();
let line = describe("foreskin-absorb", prey, macro, verbose, flat);
let linesummary = summarize(prey.sum(), true);

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

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

let sound = getSound("insert",preyMass);

add_victim_people("foreskin-absorb",prey);
update([sound,line,linesummary,newline]);

macro.arouse(45);
}

function cockslap()
{
let area = macro.dickArea;
@@ -4525,6 +4631,20 @@ function startGame(e) {
enable_button("sheath_clench");
}

if (macro.hasForeskin) {
enable_victim("foreskin-crush");

if (macro.foreskinAbsorptionEnabled) {
enable_button("foreskin_absorb");
enable_victim("foreskin-absorb");
}


enable_button("foreskin_stuff");
enable_button("foreskin_toy");
enable_button("foreskin_clench");
}

if (macro.arousalEnabled) {
enable_victim("cum-flood",describe("victim-cum-flood", null, macro, null, flat));



+ 94
- 4
recursive-desc.js Прегледај датотеку

@@ -23,17 +23,18 @@ function getDefault(name) {
var action_keys = ["eat","chew","vomit","stomp","stomp-wedge","flex-toes","kick","anal-vore","ass-crush","ass-grind","tail-slap","tail-vore","tails-vore",
"cleavage-stuff","cleavage-crush","cleavage-drop","cleavage-absorb","breast-crush",
"breast-vore","breast-milk","unbirth","sheath-stuff","sheath-clench","sheath-crush",
"sheath-absorb","cock-vore","cockslap","ball-smother","male-spurt","male-orgasm","female-spurt",
"sheath-absorb","foreskin-stuff","foreskin-clench","foreskin-crush",
"foreskin-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",
"paw-stench","ass-stench","piss-stench","scat-stench","male-orgasm-musk","female-orgasm-musk","male-spurt-musk","female-spurt-musk",
"belch","fart","stomach","tail","tail-to-stomach","womb","balls","bowels","bowels-to-stomach","breasts","bladder",
"soul-digest","wings","wings-to-stomach","wear-shoe","remove-shoe","wear-sock","remove-sock","stuff-shoe","dump-shoe","stuff-sock","dump-sock","piss","bladder-vore","scat",
"sheath-toy","slit-toy","breast-toy","melt","solidify","flood","stomp-goo","goo-digest","ass-goo","goo-stomach-pull","goo-stomach-push",
"sheath-toy","foreskin-toy","slit-toy","breast-toy","melt","solidify","flood","stomp-goo","goo-digest","ass-goo","goo-stomach-pull","goo-stomach-push",
"goo-bowels-pull","goo-bowels-push","goo-womb-pull","goo-womb-push","goo-balls-pull","goo-balls-push","goo-breasts-pull","goo-breasts-push",
"goo-tail-pull","goo-tail-push","goo-paws-pull","goo-paws-push","paw-vore","paw-vore-toes","paws","crop-swallow","crop-transfer",
"breath-fire","breath-ice","breath-electric","breath-smoke","breath-radiation","breath-foul","drool","magic-shrink","magic-hypnotize","wings-flap","wings-vore"];

var victim_keys = ["victim-cum-flood", "victim-femcum-flood", "victim-stomped", "victim-flex-toes", "victim-eaten", "victim-ass-crush", "victim-ass-ground", "victim-humped", "victim-vomit", "victim-chew", "victim-drool", "victim-anal-vore", "victim-tail-slap", "victim-tail-vore", "victim-cock-slap", "victim-cock-vore", "victim-ball-smother", "victim-sheath-crush", "victim-sheath-absorb", "victim-cum-flood", "victim-male-spurt-musk", "victim-male-orgasm-musk", "victim-unbirth", "victim-femcum-flood", "victim-female-spurt-musk", "victim-female-orgasm-musk", "victim-breast-crush", "victim-cleavage-crush", "victim-cleavage-absorb", "victim-cleavage-drop", "victim-milk-flood", "victim-breast-vore", "victim-pouch-absorb", "victim-soul-digest", "victim-soul-paw", "victim-paw-stench", "victim-ass-stench", "victim-gas-belch", "victim-gas-fart", "victim-piss", "victim-bladder-vore", "victim-piss-stench", "victim-scat", "victim-scat-stench", "victim-goo", "victim-paw-vore", "victim-breath-fire", "victim-breath-ice", "victim-breath-electric", "victim-breath-smoke", "victim-breath-radiation", "victim-breath-foul", "victim-wings-flap", "victim-wings-vore"]
var victim_keys = ["victim-cum-flood", "victim-femcum-flood", "victim-stomped", "victim-flex-toes", "victim-eaten", "victim-ass-crush", "victim-ass-ground", "victim-humped", "victim-vomit", "victim-chew", "victim-drool", "victim-anal-vore", "victim-tail-slap", "victim-tail-vore", "victim-cock-slap", "victim-cock-vore", "victim-ball-smother", "victim-sheath-crush", "victim-sheath-absorb", "victim-foreskin-crush", "victim-foreskin-absorb", "victim-cum-flood", "victim-male-spurt-musk", "victim-male-orgasm-musk", "victim-unbirth", "victim-femcum-flood", "victim-female-spurt-musk", "victim-female-orgasm-musk", "victim-breast-crush", "victim-cleavage-crush", "victim-cleavage-absorb", "victim-cleavage-drop", "victim-milk-flood", "victim-breast-vore", "victim-pouch-absorb", "victim-soul-digest", "victim-soul-paw", "victim-paw-stench", "victim-ass-stench", "victim-gas-belch", "victim-gas-fart", "victim-piss", "victim-bladder-vore", "victim-piss-stench", "victim-scat", "victim-scat-stench", "victim-goo", "victim-paw-vore", "victim-breath-fire", "victim-breath-ice", "victim-breath-electric", "victim-breath-smoke", "victim-breath-radiation", "victim-breath-foul", "victim-wings-flap", "victim-wings-vore"]

for (let i=0; i<action_keys.length; i++) {
rules[action_keys[i]] = [];
@@ -362,6 +363,14 @@ function defaultSheathStuff(container, macro, verbose, flat) {
return "You pluck " + container.describe(verbose) + " from the ground and slip them into your musky sheath.";
}

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


function defaultBreastToy(container, macro, verbose, flat) {
if (container.count > 0) {
return "You smush your breasts together, squeezing " + container.describeSimple(flat) + " between the heavy mounds.";
@@ -435,6 +444,63 @@ function defaultSheathAbsorb(container, macro, verbose, flat) {
return defaultSheathToy(container, macro, verbose, flat);
}

function defaultForeskinToy(container, macro, verbose, flat) {
if (container.count > 0) {
if (macro.orgasm) {
return "You stroke your spurting cock. Anything within your foreskin has been ground away to nothingness by the force of your orgasm.";
} else if (macro.arousal < 25) {
return "You slip your fingers into your sheath and give your shaft a squeeze, feeling " + container.describeSimple(flat) + " within rub against your " + macro.describeDick + " cock.";
} else if (macro.arousal < 75) {
return "You grip your swelling cock and squeeze, feeling " + container.describeSimple(flat) + " between your " + macro.describeDick + " and your foreskin.";
} else if (macro.arousal < 150) {
return "You run your fingers down your " + macro.describeDick + " shaft, squeezing it to feel " + container.describeSimple(flat) + " being smothered against your throbbing cock.";
} else {
return "Trembling with your impending orgasm, your fingers play over your taut foreskin, feeling " + container.describeSimple(flat) + " within rub against your " + macro.describeDick + " cock.";
}
} else {
if (macro.orgasm) {
return "You stroke your spurting cock. Anything within your foreskin has been ground away to nothingness by the force of your orgasm.";
} else if (macro.arousal < 25) {
return "You grip your soft foreskin and give it a squeeze.";
} else if (macro.arousal < 75) {
return "You grip your swelling cock and squeeze.";
} else if (macro.arousal < 150) {
return "You run your fingers over your " + macro.describeDick + " shaft and grip your taut foreskin, squeezing it gently.";
} else {
return "Trembling with your impending orgasm, your fingers play over your shaft.";
}
}
}

function defaultForeskinClench(container, macro, verbose, flat) {
if (container.count == 0)
return "You squeeze your foreskin.";
else if (isGory(macro))
return "You squeeze your foreskin, reducing " + container.describeSimple(flat) + " to a gory paste that slickens your throbbing shaft.";
else if (isFatal(macro))
return "Your fingers run over your packed foreskin, squeezing on the " + macro.describeDick + " shaft within and smashing " + container.describeSimple(flat);
else
return "Your squeeze your foreskin, pushing " + container.describeSimple(flat) + " out of your foreskin.";
}

function defaultForeskinCrush(container, macro, verbose, flat) {
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 foreskin, reducing " + container.describeSimple(flat) + " 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.describeSimple(flat) + " trapped in your musky foreskin.";
else
return "Your orgasm causes your " + macro.describeDick + " cock to swell, squeezing " + container.describeSimple(flat) + " out from your foreskin.";
}

function defaultForeskinAbsorb(container, macro, verbose, flat) {
if (container.count > 0)
return "You grip your cock and give it a firm <i>squeeze</i>, abruptly absorbing " + container.describeSimple(flat) + " into your musky foreskin.";
else
return defaultForeskinToy(container, macro, verbose, flat);
}

function defaultCockVore(container, macro, verbose, flat) {
if (container.count == 0)
return "You grab " + (macro.victimsHuman ? new Human(1).describe(verbose) : new Person(1).describe(verbose)) + " and grind them against your cock...but they won't fit.";
@@ -1140,7 +1206,7 @@ function defaultDrool(container, macro, verbose, flat) {
}

function defaultMagicShrink(container, macro, verbose, flat) {
return "You envelop " + container.describe(verbose) + " in swirling tendrils of magic, shrinking " + (container.count == 1 ? "it" : "them") + " down!";
return "You envelop " + container.describeSimple(flat) + " in swirling tendrils of magic, shrinking " + (container.count == 1 ? "it" : "them") + " down!";
}

function defaultWingsFlap(container, macro, verbose, flat) {
@@ -1388,6 +1454,30 @@ function defaultVictimSheathAbsorb(container, macro, verbose, flat) {
}
}

function defaultVictimForeskinCrush(container, macro, verbose, flat) {
if (isSadistic(macro)) {
return "crushed and smeared between your shaft and sheath";
} else if (isGory(macro)) {
return "ground into paste within your sheath";
} else if (isFatal(macro)) {
return "crushed between your sheath and shaft";
} else if (isNonFatal(macro)) {
return "squeezed in your sheath";
}
}

function defaultVictimForeskinAbsorb(container, macro, verbose, flat) {
if (isSadistic(macro)) {
return "dissolved and absorbed into your tight sheath";
} else if (isGory(macro)) {
return "absorbed by the flesh of your sheath";
} else if (isFatal(macro)) {
return "absorbed into your sheath";
} else if (isNonFatal(macro)) {
return "taken into your sheath";
}
}

function defaultVictimCumFlood(container, macro, verbose, flat) {
if (isSadistic(macro)) {
return "drowned in a caustic flood of cum";


Loading…
Откажи
Сачувај