diff --git a/combat.js b/combat.js index 94d8f72..5b98cc2 100644 --- a/combat.js +++ b/combat.js @@ -122,9 +122,9 @@ function grappleDevour(attacker) { return attacker.description("The") + " tries to swallow you down, but you manage to resist their hunger."; } }, requirements: [ - function(attacker, defender) { return isNormal(attacker) && isGrappled(defender); } + function(attacker, defender) { return isNormal(attacker) && isGrappled(defender) && defender.flags.shrunk != true; } ], conditions: [ - function(prefs, player=false) { return player || prefs.player.prey; } + function(attacker, defender) { return defender.prefs.prey; } ], 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."; } }, requirements: [ - function(attacker, defender) { return isNormal(attacker) && isGrappled(defender); } + function(attacker, defender) { return isNormal(attacker) && isGrappled(defender) && defender.flags.shrunk != true ; } ], conditions: [ - function(prefs, player=false) { return player || prefs.player.prey; } + function(attacker, defender) { return defender.prefs.prey && defender.prefs.analVore; } ], 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) { return { name: "Flee", @@ -234,7 +274,7 @@ function flee(attacker) { attack: function(defender) { let success = statCheck(attacker, defender, "dex"); if (success) { - attacker.flags.grappled = false; + attacker.clear(); changeMode("explore"); return "You successfully run away."; } else { @@ -265,7 +305,7 @@ function devourPlayer(attacker) { name: "Devours YOU!", desc: "You won't see this", conditions: [ - function(prefs) { return prefs.player.prey; } + function(attacker, defender) { return defender.prefs.prey; } ], requirements: [ function(attacker, defender) { return attacker.leering == true; } diff --git a/customs.js b/customs.js index 2633fae..1f8e585 100644 --- a/customs.js +++ b/customs.js @@ -26,16 +26,21 @@ function Geta() { this.struggles = []; this.struggles.push(new rub(this)); + + this.prefs.analVore = false; } function getaShrink(attacker) { return { attackPlayer: function(defender) { - let success = true; + let success = Math.random() < 0.5; if (success) { 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."; + } 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: [ @@ -55,7 +60,7 @@ function getaGrab(attacker) { }, conditions: [ function(prefs) { - return prefs.player.prey; + return prefs.prey; } ], requirements: [ diff --git a/feast.html b/feast.html index eb5c354..e7e2e5a 100644 --- a/feast.html +++ b/feast.html @@ -145,12 +145,12 @@