From 4d7e19e37d61d2f9eb662cb04ecbb3140941ca7a Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Mon, 12 Oct 2020 19:25:33 -0400 Subject: [PATCH] Add bladder/breast vore; enable all kinds of vore for the player --- src/game/creatures/human.ts | 4 +-- src/game/creatures/player.ts | 28 ++++++++++++++++--- src/game/vore.ts | 52 +++++++++++++++++++++++++++++++++--- 3 files changed, 76 insertions(+), 8 deletions(-) diff --git a/src/game/creatures/human.ts b/src/game/creatures/human.ts index 01d9f47..7536f99 100644 --- a/src/game/creatures/human.ts +++ b/src/game/creatures/human.ts @@ -1,7 +1,7 @@ import { Creature } from "../creature" import { Vigor, Stats, Vigors, CompositionAction } from '../combat' import { Noun, Pronoun, ImproperNoun } from '../language' -import { VoreType } from '../vore' +import { anyVore, VoreType } from '../vore' import { StatusConsequence } from '../combat/consequences' import { SurrenderEffect } from '../combat/effects' import { SoloCondition } from '../combat/conditions' @@ -21,7 +21,7 @@ export class Human extends Creature { } else { stats = options.stats } - super(name, new ImproperNoun('human', 'humans'), pronouns, stats, new Set([VoreType.Oral, VoreType.Anal, VoreType.Cock, VoreType.Unbirth]), new Set([VoreType.Oral, VoreType.Anal]), 25) + super(name, new ImproperNoun('human', 'humans'), pronouns, stats, anyVore, anyVore, 25) this.title = "Snack" this.desc = "Definitely going on an adventure" diff --git a/src/game/creatures/player.ts b/src/game/creatures/player.ts index ee0e5bc..090a24a 100644 --- a/src/game/creatures/player.ts +++ b/src/game/creatures/player.ts @@ -1,7 +1,7 @@ import { Creature } from "../creature" import { ProperNoun, TheyPronouns, ImproperNoun, POV } from '../language' import { Damage, DamageType, Vigor, ConstantDamageFormula, CompositionAction, UniformRandomDamageFormula, StatDamageFormula, Stat } from '../combat' -import { Stomach, Bowels, VoreType, anyVore } from '../vore' +import { Stomach, Bowels, VoreType, anyVore, Bladder, Cock, Balls, Breasts, InnerBladder, Slit, Womb, biconnectContainers } from '../vore' import { AttackAction } from '../combat/actions' import { TogetherCondition } from '../combat/conditions' import { DamageConsequence } from '../combat/consequences' @@ -24,11 +24,33 @@ export class Player extends Creature { this.actions.push(new AttackAction(new ConstantDamageFormula(new Damage({ type: DamageType.Pierce, amount: 20, target: Vigor.Health }, { type: DamageType.Pierce, amount: 20, target: Vigor.Stamina })))) const stomach = new Stomach(this, 2, new ConstantDamageFormula(new Damage({ amount: 20, type: DamageType.Acid, target: Vigor.Health }, { amount: 10, type: DamageType.Crush, target: Vigor.Health }))) - this.containers.push(stomach) - const bowels = new Bowels(this, 2, new ConstantDamageFormula(new Damage({ amount: 20, type: DamageType.Crush, target: Vigor.Health }))) + const bowels = new Bowels(this, 2, new ConstantDamageFormula(new Damage({ amount: 20, type: DamageType.Crush, target: Vigor.Health }))) this.containers.push(bowels) + + const cock = new Cock(this, 2, new ConstantDamageFormula(new Damage({ amount: 20, type: DamageType.Crush, target: Vigor.Health }))) + this.containers.push(cock) + + const balls = new Balls(this, 2, new ConstantDamageFormula(new Damage({ amount: 20, type: DamageType.Crush, target: Vigor.Health })), cock) + this.containers.push(balls) + + const slit = new Slit(this, 2, new ConstantDamageFormula(new Damage({ amount: 20, type: DamageType.Crush, target: Vigor.Health }))) + this.containers.push(slit) + + const womb = new Womb(this, 2, new ConstantDamageFormula(new Damage({ amount: 20, type: DamageType.Crush, target: Vigor.Health })), slit) + this.containers.push(womb) + + const bladder = new InnerBladder(this, 2, new ConstantDamageFormula(new Damage({ amount: 20, type: DamageType.Crush, target: Vigor.Health })), cock) + this.containers.push(bladder) + + const breasts = new Breasts(this, 2, new ConstantDamageFormula(new Damage({ amount: 20, type: DamageType.Crush, target: Vigor.Health }))) + this.containers.push(breasts) + + biconnectContainers(cock, balls) + biconnectContainers(cock, bladder) + biconnectContainers(slit, womb) + this.perspective = POV.Second this.perks.push(new RavenousPerk()) diff --git a/src/game/vore.ts b/src/game/vore.ts index 716269b..971cd74 100644 --- a/src/game/vore.ts +++ b/src/game/vore.ts @@ -9,14 +9,18 @@ export enum VoreType { Oral = "Oral Vore", Anal = "Anal Vore", Cock = "Cock Vore", - Unbirth = "Unbirthing" + Unbirth = "Unbirthing", + Breast = "Breast Vore", + Bladder = "Bladder vore" } export const anyVore = new Set([ VoreType.Oral, VoreType.Anal, VoreType.Cock, - VoreType.Unbirth + VoreType.Unbirth, + VoreType.Breast, + VoreType.Bladder ]) export interface Container extends Actionable { @@ -400,7 +404,6 @@ export class Slit extends NormalVoreContainer { ) } } - export class Womb extends InnerVoreContainer { fluidColor = "#ddddddbb"; @@ -416,6 +419,49 @@ export class Womb extends InnerVoreContainer { } } +export class Breasts extends NormalVoreContainer { + fluidColor = "#eeeeeecc"; + + constructor (owner: Creature, capacity: number, damage: DamageFormula) { + super( + new ImproperNoun('breast', 'breasts').all.plural, + owner, + new Set([VoreType.Breast]), + capacity, + damage + ) + } +} + +export class Bladder extends NormalVoreContainer { + fluidColor = "#eeee3399"; + + constructor (owner: Creature, capacity: number, damage: DamageFormula) { + super( + new ImproperNoun('bladder').all, + owner, + new Set([VoreType.Bladder]), + capacity, + damage + ) + } +} + +export class InnerBladder extends InnerVoreContainer { + fluidColor = "#eeee3399"; + + constructor (owner: Creature, capacity: number, damage: DamageFormula, escape: Container) { + super( + new ImproperNoun('bladder').all, + owner, + new Set([VoreType.Bladder]), + capacity, + damage, + escape + ) + } +} + export function biconnectContainers (outer: VoreContainer, inner: VoreContainer): void { outer.onDigest = (prey: Creature) => { outer.digested = outer.digested.filter(victim => victim !== prey)