diff --git a/src/game/creatures/geta.ts b/src/game/creatures/geta.ts index 3bae277..32d8f9b 100644 --- a/src/game/creatures/geta.ts +++ b/src/game/creatures/geta.ts @@ -1,12 +1,12 @@ import { Creature } from "../creature" import { Damage, DamageType, ConstantDamageFormula, Vigor, Side, CompositionAction } from '../combat' -import { MalePronouns, ImproperNoun, ProperNoun, ObjectPronouns, FemalePronouns, TheyPronouns } from '../language' -import { VoreType, Stomach, Bowels, Cock, Balls, anyVore, Slit, Womb, biconnectContainers } from '../vore' +import { MalePronouns, ImproperNoun, ProperNoun, ObjectPronouns, FemalePronouns, TheyPronouns, Verb } from '../language' +import { VoreType, Stomach, Bowels, Cock, Balls, anyVore, Slit, Womb, biconnectContainers, Hand } from '../vore' import { AttackAction, TransferAction, FeedAction } from '../combat/actions' import { StatusConsequence, LogConsequence, DamageConsequence } from '../combat/consequences' import { SizeEffect, DamageTypeResistanceEffect, InstantKillEffect } from '../combat/effects' import { LogLine } from '../interface' -import { TogetherCondition, MassRatioCondition } from '../combat/conditions' +import { TogetherCondition, MassRatioCondition, ContainsCondition } from '../combat/conditions' export class Geta extends Creature { constructor () { @@ -70,7 +70,7 @@ export class Geta extends Creature { (user, target) => new LogLine(`ZAP!`) ), new StatusConsequence( - () => new SizeEffect(0.25) + () => new SizeEffect(0.1) ) ] } @@ -93,7 +93,9 @@ export class Geta extends Creature { ], consequences: [ new LogConsequence( - (user, target) => new LogLine(`CRUNCH`) + (user, target) => new LogLine( + `${user.name.capital} ${user.name.conjugate(new Verb("raise"))} ${user.pronouns.possessive} paw over ${target.name.objective}, stomping down hard and crushing the life from ${user.pronouns.possessive} prey with a sickening CRUNCH.` + ) ), new StatusConsequence( () => new InstantKillEffect() @@ -109,5 +111,33 @@ export class Geta extends Creature { this.otherActions.push( crushAction ) + + const hand = new Hand(this, 10) + + this.otherContainers.push( + hand + ) + + this.actions.push( + new CompositionAction( + "Grip", + "Squeeze your prey like a grape", + { + conditions: [ + new ContainsCondition(hand) + ], + consequences: [ + new LogConsequence( + (user, target) => new LogLine( + `${user.name.capital} ${user.name.conjugate(new Verb("crush", "crushes"))} ${target.name.objective} in ${user.pronouns.possessive} merciless grip, breaking bones and pulping ${user.pronouns.possessive} victim with ease.` + ) + ), + new StatusConsequence( + () => new InstantKillEffect() + ) + ] + } + ) + ) } } diff --git a/src/game/vore.ts b/src/game/vore.ts index 63c1074..11cb736 100644 --- a/src/game/vore.ts +++ b/src/game/vore.ts @@ -212,6 +212,18 @@ export abstract class NormalContainer implements Container { } } +export class Hand extends NormalContainer { + consumeVerb = new Verb("grab") + constructor (owner: Vore, capacity: number) { + super( + new ImproperNoun('hand'), + owner, + new Set(), + capacity + ) + } +} + export abstract class InnerContainer extends NormalContainer { constructor (name: Noun, owner: Vore, voreTypes: Set, capacity: number, private escape: Container) { super(name, owner, voreTypes, capacity)