|
- import { Creature, Entity } from '../entity'
- import { Stat, Damage, DamageType, ConstantDamageFormula, Vigor } from '../combat'
- import { MalePronouns, ImproperNoun, POVPair, POVPairArgs, POV } from '../language'
- import { LogLine, LogLines } from '../interface'
- import { VoreType, Stomach, Bowels } from '../vore'
- import { StatTest } from '../combat/tests'
- import { AttackAction, TransferAction, FeedAction } from '../combat/actions'
-
- class BiteAction extends AttackAction {
- constructor () {
- super(new ConstantDamageFormula(new Damage({ amount: 10, type: DamageType.Slash, target: Vigor.Health })))
- this.name = "Bite"
- }
- }
-
- class HypnoAction extends AttackAction {
- protected successLines: POVPairArgs<Entity, Entity, { damage: Damage }> = new POVPairArgs([
- [[POV.Second, POV.Third], (user, target, args) => new LogLine(
- `You hypnotize ${target.name} for `,
- args.damage.renderShort()
- )],
- [[POV.Third, POV.Second], (user, target, args) => new LogLine(
- `${user.name.capital} hypnotizes you for `,
- args.damage.renderShort()
- )],
- [[POV.Third, POV.Third], (user, target, args) => new LogLine(
- `${user.name.capital} hypnotizes ${target.name} for `,
- args.damage.renderShort()
- )]
- ])
-
- protected failLines: POVPair<Entity, Entity> = new POVPair([
- [[POV.Second, POV.Third], (user, target) => new LogLine(`You try to hypnotize ${target.name}, but you miss`)],
- [[POV.Third, POV.Second], (user, target) => new LogLine(`${user.name.capital} misses you`)],
- [[POV.Third, POV.Third], (user, target) => new LogLine(`${target.name} misses ${target.name}`)]
- ])
-
- constructor () {
- super(new ConstantDamageFormula(new Damage({ amount: 30, type: DamageType.Dominance, target: Vigor.Resolve })))
- this.test = new StatTest(Stat.Willpower)
- this.name = "Hypnotize"
- }
- }
-
- export class Wolf extends Creature {
- constructor () {
- super(new ImproperNoun('wolf', 'wolves'), new ImproperNoun('wolf', 'wolves'), MalePronouns, { Toughness: 20, Power: 20, Speed: 20, Willpower: 20, Charm: 20 }, new Set([VoreType.Oral, VoreType.Anal]), new Set([VoreType.Oral, VoreType.Anal]), 25)
- this.actions.push(new BiteAction())
- this.actions.push(new HypnoAction())
-
- const stomach = new Stomach(this, 50, new Damage(
- { amount: 20, type: DamageType.Acid, target: Vigor.Health },
- { amount: 10, type: DamageType.Crush, target: Vigor.Stamina },
- { amount: 10, type: DamageType.Dominance, target: Vigor.Resolve }
- ))
-
- this.containers.push(stomach)
-
- const bowels = new Bowels(this, 50, new Damage(
- { amount: 10, type: DamageType.Crush, target: Vigor.Health },
- { amount: 25, type: DamageType.Crush, target: Vigor.Stamina },
- { amount: 25, type: DamageType.Dominance, target: Vigor.Resolve }
- ))
-
- this.containers.push(bowels)
-
- this.actions.push(new TransferAction(bowels, stomach))
-
- this.otherActions.push(new FeedAction(stomach))
- }
- }
|