|  |  | @@ -434,3 +434,109 @@ function tranceDigestInstakill(predator) { | 
		
	
		
			
			|  |  |  | weight: function(attacker, defender) { return defender.stamina <= 0 ? 5 : 0.1; } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | /* TALUTHUS */ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function Taluthus() { | 
		
	
		
			
			|  |  |  | Creature.call(this, "Taluthus", 40, 40, 60); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.hasName = true; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.description = function() { return "Taluthus"; }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.startCombat = function() { return ["You jump back as a hulking kitsune leaps out at you, his four massive tails swaying as he sizes you up."]; }; | 
		
	
		
			
			|  |  |  | this.finishDigest = function() { return ["The kitsune's guts melt you down..."]; }; | 
		
	
		
			
			|  |  |  | this.defeated = function() { changeMode("explore"); moveToByName("Nature Trail"); update(["The kitsune growls and vanishes in a blinding flash of light. You pass out, eventually coming to in the woods."]); }; | 
		
	
		
			
			|  |  |  | this.prefs.prey = false; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.attacks.push(taluthusPunchAttack(this)); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.attacks.push(taluthusGrab(this)); | 
		
	
		
			
			|  |  |  | this.attacks.push(taluthusGrabDevour(this)); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | //this.attacks.push(taluthusTailDevour(this)); | 
		
	
		
			
			|  |  |  | //this.attacks.push(taluthusTailSwallow(this)); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.digests = []; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.digests.push(taluthusDigest(this)); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.struggles = []; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | this.struggles.push(rub(this)); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function taluthusPunchAttack(attacker) { | 
		
	
		
			
			|  |  |  | return { | 
		
	
		
			
			|  |  |  | attackPlayer: function(defender) { | 
		
	
		
			
			|  |  |  | let damage = attack(attacker, defender, attacker.str); | 
		
	
		
			
			|  |  |  | return ["Taluthus lunges, striking you for " + damage + " damage"]; | 
		
	
		
			
			|  |  |  | }, requirements: [ | 
		
	
		
			
			|  |  |  | function(attacker, defender) { return isNormal(attacker) && isNormal(defender); } | 
		
	
		
			
			|  |  |  | ], | 
		
	
		
			
			|  |  |  | priority: 1, | 
		
	
		
			
			|  |  |  | weight: function(attacker, defender) { return defender.health / defender.maxHealth; } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function taluthusGrab(attacker) { | 
		
	
		
			
			|  |  |  | return { | 
		
	
		
			
			|  |  |  | attackPlayer: function(defender) { | 
		
	
		
			
			|  |  |  | let success = statHealthCheck(attacker, defender, "str"); | 
		
	
		
			
			|  |  |  | if (success) { | 
		
	
		
			
			|  |  |  | attacker.changeStamina(-15); | 
		
	
		
			
			|  |  |  | defender.changeStamina(-50); | 
		
	
		
			
			|  |  |  | defender.flags.grappled = true; | 
		
	
		
			
			|  |  |  | return ["The kitsune snatches you up in his stocky grip, lifting you off the ground and cramming your head into his sloppy maw!"]; | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | attacker.changeStamina(-25); | 
		
	
		
			
			|  |  |  | defender.changeStamina(-15); | 
		
	
		
			
			|  |  |  | return ["Taluthus tries to grab you, but you manage to avoid his grasp."]; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | requirements: [ | 
		
	
		
			
			|  |  |  | function(attacker, defender) { return isNormal(attacker) && isNormal(defender); } | 
		
	
		
			
			|  |  |  | ], | 
		
	
		
			
			|  |  |  | priority: 1, | 
		
	
		
			
			|  |  |  | weight: function(attacker, defender) { return 7 - 6 * defender.health / defender.maxHealth; } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function taluthusGrabDevour(attacker) { | 
		
	
		
			
			|  |  |  | return { | 
		
	
		
			
			|  |  |  | attackPlayer: function(defender) { | 
		
	
		
			
			|  |  |  | let success = statHealthCheck(attacker, defender, "str"); | 
		
	
		
			
			|  |  |  | if(success) { | 
		
	
		
			
			|  |  |  | attacker.changeStamina(-10); | 
		
	
		
			
			|  |  |  | defender.changeStamina(-50); | 
		
	
		
			
			|  |  |  | defender.flags.grappled = false; | 
		
	
		
			
			|  |  |  | changeMode("eaten"); | 
		
	
		
			
			|  |  |  | return ["Taluthus forces your head into his glowing throat, swallowing forcefully to pull you down to his predatory depths."]; | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | attacker.changeStamina(-25); | 
		
	
		
			
			|  |  |  | defender.changeStamina(-25); | 
		
	
		
			
			|  |  |  | return ["The kitsune forces your head into his gullet, but you manage to pry yourself free before peristalsis can claim you."]; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }, requirements: [ | 
		
	
		
			
			|  |  |  | function(attacker, defender) { return isNormal(attacker) && isGrappled(defender) && defender.flags.shrunk != true; } | 
		
	
		
			
			|  |  |  | ], conditions: [ | 
		
	
		
			
			|  |  |  | function(attacker, defender) { return defender.prefs.prey; } | 
		
	
		
			
			|  |  |  | ], | 
		
	
		
			
			|  |  |  | priority: 1, | 
		
	
		
			
			|  |  |  | weight: function(attacker, defender) { return 3 - 2 * defender.health / defender.maxHealth; } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function taluthusDigest(predator,damage=50) { | 
		
	
		
			
			|  |  |  | return { | 
		
	
		
			
			|  |  |  | digest: function(player) { | 
		
	
		
			
			|  |  |  | attack(predator, player, damage); | 
		
	
		
			
			|  |  |  | player.changeStamina(-50); | 
		
	
		
			
			|  |  |  | return pickRandom([ | 
		
	
		
			
			|  |  |  | ["Powerful stomach muscles grind at your body, swiftly digesting you."] | 
		
	
		
			
			|  |  |  | ]); | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | priority: 1, | 
		
	
		
			
			|  |  |  | weight: function() { return 1; } | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | } |