|
|
@@ -0,0 +1,68 @@ |
|
|
|
|
|
import { Creature } from "../creature" |
|
|
|
|
|
import { Damage, DamageType, ConstantDamageFormula, Vigor, Side, StatDamageFormula, Stat } from '../combat' |
|
|
|
|
|
import { MalePronouns, ImproperNoun, Verb } from '../language' |
|
|
|
|
|
import { Stomach, Bowels, Cock, Balls, anyVore, biconnectContainers } from '../vore' |
|
|
|
|
|
import { AttackAction, TransferAction, FeedAction } from '../combat/actions' |
|
|
|
|
|
import { VoreAI } from '../ai' |
|
|
|
|
|
|
|
|
|
|
|
export class Werewolf extends Creature { |
|
|
|
|
|
constructor () { |
|
|
|
|
|
super( |
|
|
|
|
|
new ImproperNoun('werewolf', 'werewolves'), |
|
|
|
|
|
new ImproperNoun('werewolf', 'werewolves'), |
|
|
|
|
|
MalePronouns, |
|
|
|
|
|
{ Toughness: 40, Power: 50, Reflexes: 40, Agility: 30, Willpower: 20, Charm: 50 }, |
|
|
|
|
|
anyVore, |
|
|
|
|
|
anyVore, |
|
|
|
|
|
100 |
|
|
|
|
|
) |
|
|
|
|
|
this.actions.push( |
|
|
|
|
|
new AttackAction( |
|
|
|
|
|
new StatDamageFormula([ |
|
|
|
|
|
{ fraction: 1, stat: Stat.Power, target: Vigor.Health, type: DamageType.Pierce }, |
|
|
|
|
|
{ fraction: 0.5, stat: Stat.Power, target: Vigor.Health, type: DamageType.Crush } |
|
|
|
|
|
]), |
|
|
|
|
|
new Verb("bite") |
|
|
|
|
|
) |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
this.ai = new VoreAI() |
|
|
|
|
|
this.side = Side.Monsters |
|
|
|
|
|
|
|
|
|
|
|
const stomach = new Stomach(this, 2, new ConstantDamageFormula(new Damage( |
|
|
|
|
|
{ amount: 60, type: DamageType.Acid, target: Vigor.Health }, |
|
|
|
|
|
{ amount: 30, type: DamageType.Crush, target: Vigor.Stamina }, |
|
|
|
|
|
{ amount: 30, type: DamageType.Dominance, target: Vigor.Resolve } |
|
|
|
|
|
))) |
|
|
|
|
|
this.containers.push(stomach) |
|
|
|
|
|
|
|
|
|
|
|
const bowels = new Bowels(this, 2, new ConstantDamageFormula(new Damage( |
|
|
|
|
|
{ amount: 30, type: DamageType.Crush, target: Vigor.Health }, |
|
|
|
|
|
{ amount: 60, type: DamageType.Crush, target: Vigor.Stamina }, |
|
|
|
|
|
{ amount: 60, 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, 2, new ConstantDamageFormula(new Damage( |
|
|
|
|
|
{ amount: 30, type: DamageType.Crush, target: Vigor.Health }, |
|
|
|
|
|
{ amount: 60, type: DamageType.Crush, target: Vigor.Stamina }, |
|
|
|
|
|
{ amount: 60, type: DamageType.Dominance, target: Vigor.Resolve } |
|
|
|
|
|
))) |
|
|
|
|
|
|
|
|
|
|
|
const balls = new Balls(this, 2, new ConstantDamageFormula(new Damage( |
|
|
|
|
|
{ amount: 30, type: DamageType.Crush, target: Vigor.Health }, |
|
|
|
|
|
{ amount: 60, type: DamageType.Crush, target: Vigor.Stamina }, |
|
|
|
|
|
{ amount: 60, type: DamageType.Dominance, target: Vigor.Resolve } |
|
|
|
|
|
)), cock) |
|
|
|
|
|
|
|
|
|
|
|
this.containers.push(balls) |
|
|
|
|
|
this.containers.push(cock) |
|
|
|
|
|
|
|
|
|
|
|
biconnectContainers(cock, balls) |
|
|
|
|
|
} |
|
|
|
|
|
} |