|
- 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 { 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'
-
- export class Geta extends Creature {
- constructor () {
- super(
- new ProperNoun('Geta'),
- new ImproperNoun('fox', 'foxes'),
- MalePronouns,
- { Toughness: 10, Power: 10, Speed: 30, Willpower: 15, Charm: 40 },
- new Set([VoreType.Oral, VoreType.Anal, VoreType.Cock]),
- new Set([VoreType.Oral, VoreType.Anal, VoreType.Cock]),
- 100
- )
-
- this.side = Side.Monsters
-
- const stomach = new Stomach(this, 10, new Damage(
- { amount: 100, type: DamageType.Acid, target: Vigor.Health },
- { amount: 40, type: DamageType.Crush, target: Vigor.Stamina },
- { amount: 80, type: DamageType.Dominance, target: Vigor.Resolve }
- ))
- this.containers.push(stomach)
-
- const bowels = new Bowels(this, 10, new Damage(
- { amount: 30, type: DamageType.Crush, target: Vigor.Health },
- { amount: 90, type: DamageType.Crush, target: Vigor.Stamina },
- { amount: 120, type: DamageType.Dominance, target: Vigor.Resolve }
- ))
-
- this.containers.push(bowels)
-
- this.actions.push(new TransferAction(bowels, stomach))
-
- this.otherActions.push(new FeedAction(stomach))
-
- const cock = new Cock(this, 10, new Damage(
- { amount: 10, type: DamageType.Crush, target: Vigor.Health },
- { amount: 30, type: DamageType.Crush, target: Vigor.Stamina },
- { amount: 30, type: DamageType.Dominance, target: Vigor.Resolve }
- ))
-
- const balls = new Balls(this, 10, new Damage(
- { amount: 50, type: DamageType.Acid, target: Vigor.Health },
- { amount: 25, type: DamageType.Crush, target: Vigor.Stamina },
- { amount: 150, type: DamageType.Dominance, target: Vigor.Resolve }
- ), cock)
-
- this.containers.push(balls)
- this.containers.push(cock)
-
- biconnectContainers(cock, balls)
-
- const shrinkAction = new CompositionAction(
- "Shrink",
- "Zap!",
- {
- conditions: [
- new TogetherCondition()
- ],
- consequences: [
- new LogConsequence(
- (user, target) => new LogLine(`ZAP!`)
- ),
- new StatusConsequence(
- () => new SizeEffect(0.25)
- )
- ]
- }
- )
- this.actions.push(
- shrinkAction
- )
-
- this.otherActions.push(
- shrinkAction
- )
-
- const crushAction = new CompositionAction(
- "Crush",
- "Crush them like a bug underfoot",
- {
- conditions: [
- new TogetherCondition(),
- new MassRatioCondition(10)
- ],
- consequences: [
- new LogConsequence(
- (user, target) => new LogLine(`CRUNCH`)
- ),
- new StatusConsequence(
- () => new InstantKillEffect()
- )
- ]
- }
- )
-
- this.actions.push(
- crushAction
- )
-
- this.otherActions.push(
- crushAction
- )
- }
- }
|