Pārlūkot izejas kodu

Geta is edible. Updated preferences so that enemies can have prefs, too.

tags/v0.2.8
Fen Dweller pirms 7 gadiem
vecāks
revīzija
9b68b50b0c
6 mainītis faili ar 75 papildinājumiem un 26 dzēšanām
  1. +46
    -6
      combat.js
  2. +7
    -2
      customs.js
  3. +4
    -4
      feast.html
  4. +7
    -13
      feast.js
  5. +1
    -1
      objects.js
  6. +10
    -0
      vore.js

+ 46
- 6
combat.js Parādīt failu

@@ -122,9 +122,9 @@ function grappleDevour(attacker) {
return attacker.description("The") + " tries to swallow you down, but you manage to resist their hunger."; return attacker.description("The") + " tries to swallow you down, but you manage to resist their hunger.";
} }
}, requirements: [ }, requirements: [
function(attacker, defender) { return isNormal(attacker) && isGrappled(defender); }
function(attacker, defender) { return isNormal(attacker) && isGrappled(defender) && defender.flags.shrunk != true; }
], conditions: [ ], conditions: [
function(prefs, player=false) { return player || prefs.player.prey; }
function(attacker, defender) { return defender.prefs.prey; }
], ],
priority: 1, priority: 1,
}; };
@@ -145,9 +145,9 @@ function grappleAnalVore(attacker) {
return "Your grasp and shove " + defender.description("the") + ", but they manage to avoid becoming " + attacker.species + " chow."; return "Your grasp and shove " + defender.description("the") + ", but they manage to avoid becoming " + attacker.species + " chow.";
} }
}, requirements: [ }, requirements: [
function(attacker, defender) { return isNormal(attacker) && isGrappled(defender); }
function(attacker, defender) { return isNormal(attacker) && isGrappled(defender) && defender.flags.shrunk != true ; }
], conditions: [ ], conditions: [
function(prefs, player=false) { return player || prefs.player.prey; }
function(attacker, defender) { return defender.prefs.prey && defender.prefs.analVore; }
], ],
priority: 1, priority: 1,
}; };
@@ -227,6 +227,46 @@ function grappledReverse(attacker) {
}; };
} }


function shrunkGrapple(attacker) {
return {
name: "Grab",
desc: "Grab this fun-sized snack",
attack: function(defender) {
let success = statCheck(attacker, defender, "dex") || statCheck(attacker, defender, "dex");
if (success) {
defender.flags.grappled = true;
return "You snatch up " + defender.description("the");
} else {
return "You try to grab " + defender.description("the") + ", but they elude your grasp.";
}
},
requirements: [
function(attacker, defender) {
return isNormal(attacker) && defender.flags.grappled != true && defender.flags.shrunk == true;
}
],
priority: 2
};
}

function shrunkSwallow(attacker) {
return {
name: "Swallow",
desc: "Swallow your prey",
attack: function(defender) {
changeMode("explore");
attacker.stomach.feed(defender);
return "With a light swallow, " + defender.description("the") + " is dragged down to your sloppy guts.";
},
requirements: [
function(attacker, defender) {
return isNormal(attacker) && defender.flags.grappled == true && defender.flags.shrunk == true;
}
],
priority: 2
};
}

function flee(attacker) { function flee(attacker) {
return { return {
name: "Flee", name: "Flee",
@@ -234,7 +274,7 @@ function flee(attacker) {
attack: function(defender) { attack: function(defender) {
let success = statCheck(attacker, defender, "dex"); let success = statCheck(attacker, defender, "dex");
if (success) { if (success) {
attacker.flags.grappled = false;
attacker.clear();
changeMode("explore"); changeMode("explore");
return "You successfully run away."; return "You successfully run away.";
} else { } else {
@@ -265,7 +305,7 @@ function devourPlayer(attacker) {
name: "Devours YOU!", name: "Devours YOU!",
desc: "You won't see this", desc: "You won't see this",
conditions: [ conditions: [
function(prefs) { return prefs.player.prey; }
function(attacker, defender) { return defender.prefs.prey; }
], ],
requirements: [ requirements: [
function(attacker, defender) { return attacker.leering == true; } function(attacker, defender) { return attacker.leering == true; }


+ 7
- 2
customs.js Parādīt failu

@@ -26,16 +26,21 @@ function Geta() {
this.struggles = []; this.struggles = [];


this.struggles.push(new rub(this)); this.struggles.push(new rub(this));

this.prefs.analVore = false;
} }


function getaShrink(attacker) { function getaShrink(attacker) {
return { return {
attackPlayer: function(defender) { attackPlayer: function(defender) {
let success = true;
let success = Math.random() < 0.5;


if (success) { if (success) {
defender.flags.shrunk = true; defender.flags.shrunk = true;
return attacker.description() + " pulls a strange device from his pocket and points it at you. A blinding flash envelops your vision...and as your sight returns, you find yourself shrunken down to no more than two inches tall."; return attacker.description() + " pulls a strange device from his pocket and points it at you. A blinding flash envelops your vision...and as your sight returns, you find yourself shrunken down to no more than two inches tall.";
} else {
attacker.flags.shrunk = true;
return attacker.description() + " pulls a strange device from his pocket and points it at you. A blinding flash envelops your vision...and as your sight returns, you see that he's shrunk himself!";
} }
}, },
requirements: [ requirements: [
@@ -55,7 +60,7 @@ function getaGrab(attacker) {
}, },
conditions: [ conditions: [
function(prefs) { function(prefs) {
return prefs.player.prey;
return prefs.prey;
} }
], ],
requirements: [ requirements: [


+ 4
- 4
feast.html Parādīt failu

@@ -145,12 +145,12 @@
<input type="text" id="character-species" name="species" placeholder="nerd"/> <input type="text" id="character-species" name="species" placeholder="nerd"/>
</li> </li>
<li> <li>
<label for="character-prefs-player-prey">Player can be eaten</label>
<input type="checkbox" id="character-prefs-player-prey" name="prefs-player-prey" checked=true />
<label for="character-prefs-prey">Player can be eaten</label>
<input type="checkbox" id="character-prefs-prey" name="prefs-prey" checked=true />
<li> <li>
<li> <li>
<label for="character-prefs-player-scat">Disposal/scat</label>
<input type="checkbox" id="character-prefs-player-scat" name="prefs-player-scat"/>
<label for="character-prefs-scat">Disposal/scat</label>
<input type="checkbox" id="character-prefs-scat" name="prefs-scat"/>
<li> <li>
<button type="button" id="start-button">Start</button> <button type="button" id="start-button">Start</button>
</li> </li>


+ 7
- 13
feast.js Parādīt failu

@@ -15,12 +15,6 @@ let playerAttacks = [];


let respawnRoom; let respawnRoom;


let prefs = {
player: {
prey: true
}
};

function join(things) { function join(things) {
if (things.length == 1) { if (things.length == 1) {
return things[0].description("a"); return things[0].description("a");
@@ -58,7 +52,7 @@ function pick(list, attacker, defender) {
} }


function filterValid(options, attacker, defender) { function filterValid(options, attacker, defender) {
let filtered = options.filter(option => option.conditions == undefined || option.conditions.reduce((result, test) => result && test(prefs, attacker === player), true));
let filtered = options.filter(option => option.conditions == undefined || option.conditions.reduce((result, test) => result && test(attacker, defender), true));
return filtered.filter(option => option.requirements == undefined || option.requirements.reduce((result, test) => result && test(attacker, defender), true)); return filtered.filter(option => option.requirements == undefined || option.requirements.reduce((result, test) => result && test(attacker, defender), true));
} }


@@ -82,7 +76,7 @@ function updateExploreCompass() {
button.classList.add("inactive-button"); button.classList.add("inactive-button");
button.innerHTML = ""; button.innerHTML = "";
} else { } else {
if (currentRoom.exits[i].conditions.reduce((result, test) => result && test(prefs), true)) {
if (currentRoom.exits[i].conditions.reduce((result, test) => result && test(player.prefs), true)) {
button.disabled = false; button.disabled = false;
button.classList.add("active-button"); button.classList.add("active-button");
button.innerHTML = currentRoom.exits[i].name; button.innerHTML = currentRoom.exits[i].name;
@@ -208,7 +202,7 @@ function updateDisplay() {
document.getElementById("stat-health").innerHTML = "Health: " + round(player.health,0) + "/" + round(player.maxHealth,0); document.getElementById("stat-health").innerHTML = "Health: " + round(player.health,0) + "/" + round(player.maxHealth,0);
document.getElementById("stat-stamina").innerHTML = "Stamina: " + round(player.stamina,0) + "/" + round(player.maxStamina,0); document.getElementById("stat-stamina").innerHTML = "Stamina: " + round(player.stamina,0) + "/" + round(player.maxStamina,0);
document.getElementById("stat-fullness").innerHTML = "Fullness: " + round(player.fullness(),0); document.getElementById("stat-fullness").innerHTML = "Fullness: " + round(player.fullness(),0);
if (prefs.player.scat) {
if (player.prefs.scat) {
document.getElementById("stat-bowels").innerHTML = "Bowels: " + round(player.bowels.fullness,0); document.getElementById("stat-bowels").innerHTML = "Bowels: " + round(player.bowels.fullness,0);
} else { } else {
document.getElementById("stat-bowels").innerHTML = ""; document.getElementById("stat-bowels").innerHTML = "";
@@ -252,7 +246,7 @@ function moveTo(room,desc="You go places lol") {


currentRoom.objects.forEach(function (object) { currentRoom.objects.forEach(function (object) {
object.actions.forEach(function (action) { object.actions.forEach(function (action) {
if (action.conditions == undefined || action.conditions.reduce((result, cond) => result && cond(prefs), true))
if (action.conditions == undefined || action.conditions.reduce((result, cond) => result && cond(player.prefs), true))
actions.push(action); actions.push(action);
}); });
}); });
@@ -315,7 +309,7 @@ function applySettings(settings) {
if (settings.hasOwnProperty(key)) { if (settings.hasOwnProperty(key)) {
if (key.match(/prefs/)) { if (key.match(/prefs/)) {
let tokens = key.split("-"); let tokens = key.split("-");
let pref = prefs;
let pref = player.prefs;
pref = tokens.slice(1,-1).reduce((pref, key) => pref[key], pref); pref = tokens.slice(1,-1).reduce((pref, key) => pref[key], pref);
pref[tokens.slice(-1)[0]] = settings[key]; pref[tokens.slice(-1)[0]] = settings[key];
} }
@@ -396,7 +390,7 @@ function attackClicked(index) {


if (player.health <= 0) { if (player.health <= 0) {
update(["You die..."]); update(["You die..."]);
if (prefs.player.prey) {
if (player.prefs.prey) {
changeMode("eaten"); changeMode("eaten");
} else { } else {
respawn(respawnRoom); respawn(respawnRoom);
@@ -419,7 +413,7 @@ function struggleClicked(index) {
if (result.escape) { if (result.escape) {
changeMode("explore"); changeMode("explore");
} else { } else {
let digest = pick(filterValid(currentFoe.digests, currentFoe, player), currentFoe, player);
let digest = pick(filterValid(currentFoe.digests, FurrentFoe, player), currentFoe, player);


if (digest == null) { if (digest == null) {
digest = currentFoe.backupDigest; digest = currentFoe.backupDigest;


+ 1
- 1
objects.js Parādīt failu

@@ -57,7 +57,7 @@ function Toilet() {
}, },
"conditions": [ "conditions": [
function(prefs) { function(prefs) {
return prefs.player.scat == true;
return prefs.scat == true;
} }
] ]
}); });


+ 10
- 0
vore.js Parādīt failu

@@ -37,6 +37,12 @@ function Creature(name = "Creature", str=10, dex=10, con=10) {
this.clear = function() { this.clear = function() {
this.flags = {}; this.flags = {};
}; };

this.prefs = {
prey: true,
scat: true,
analVore: true
}
} }


function Player(name = "Player") { function Player(name = "Player") {
@@ -56,6 +62,10 @@ function Player(name = "Player") {


this.attacks.push(new grappledStruggle(this)); this.attacks.push(new grappledStruggle(this));
this.attacks.push(new grappledReverse(this)); this.attacks.push(new grappledReverse(this));

this.attacks.push(new shrunkGrapple(this));
this.attacks.push(new shrunkSwallow(this));

this.attacks.push(new flee(this)); this.attacks.push(new flee(this));


this.backupAttack = new pass(this); this.backupAttack = new pass(this);


Notiek ielāde…
Atcelt
Saglabāt