Quellcode durchsuchen

Add unbirthing; fix inner-container escapes not putting the prey in the right spot

master
Fen Dweller vor 5 Jahren
Ursprung
Commit
e812c42250
2 geänderte Dateien mit 70 neuen und 3 gelöschten Zeilen
  1. +33
    -3
      src/game/creatures/wolf.ts
  2. +37
    -0
      src/game/vore.ts

+ 33
- 3
src/game/creatures/wolf.ts Datei anzeigen

@@ -1,13 +1,21 @@
import { Creature } from "../creature"
import { Damage, DamageType, ConstantDamageFormula, Vigor, Side } from '../combat'
import { MalePronouns, ImproperNoun, ProperNoun, ObjectPronouns } from '../language'
import { VoreType, Stomach, Bowels, Cock, Balls } from '../vore'
import { MalePronouns, ImproperNoun, ProperNoun, ObjectPronouns, FemalePronouns, TheyPronouns } from '../language'
import { VoreType, Stomach, Bowels, Cock, Balls, anyVore, Slit, Womb } from '../vore'
import { AttackAction, TransferAction, FeedAction } from '../combat/actions'
import { Human } from '../creatures'

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, VoreType.Cock]), new Set([VoreType.Oral, VoreType.Anal, VoreType.Cock]), 25)
super(
new ImproperNoun('wolf', 'wolves'),
new ImproperNoun('wolf', 'wolves'),
[MalePronouns, FemalePronouns, TheyPronouns][Math.floor(Math.random() * 3)],
{ Toughness: 20, Power: 20, Speed: 20, Willpower: 20, Charm: 20 },
anyVore,
anyVore,
25
)
this.actions.push(
new AttackAction(
new ConstantDamageFormula(
@@ -51,7 +59,29 @@ export class Wolf extends Creature {
{ amount: 60, type: DamageType.Dominance, target: Vigor.Resolve }
), cock)

const slit = new Slit(this, 50, 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 womb = new Womb(this, 50, 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 }
), slit)

this.containers.push(balls)
this.containers.push(cock)
this.containers.push(slit)
this.containers.push(womb)

this.actions.push(
new TransferAction(cock, balls)
)

this.actions.push(
new TransferAction(slit, womb)
)
}
}

+ 37
- 0
src/game/vore.ts Datei anzeigen

@@ -12,6 +12,13 @@ export enum VoreType {
Unbirth = "Unbirthing"
}

export const anyVore = new Set([
VoreType.Oral,
VoreType.Anal,
VoreType.Cock,
VoreType.Unbirth
])

export abstract class Vore extends Mortal {
containers: Array<VoreContainer> = []
otherContainers: Array<Container> = []
@@ -340,6 +347,7 @@ export abstract class InnerVoreContainer extends NormalVoreContainer {
release (prey: Vore): LogEntry {
prey.containedIn = this.escape
this.contents = this.contents.filter(victim => victim !== prey)
this.escape.consume(prey)
return this.releaseLine(this.owner, prey, { container: this })
}
}
@@ -411,3 +419,32 @@ export class Balls extends InnerVoreContainer {
)
}
}

export class Slit extends NormalVoreContainer {
fluidColor = "#cccccc99";

constructor (owner: Vore, capacity: number, damage: Damage) {
super(
new ImproperNoun('slit').all,
owner,
new Set([VoreType.Unbirth]),
capacity,
damage
)
}
}

export class Womb extends InnerVoreContainer {
fluidColor = "#ddddddbb";

constructor (owner: Vore, capacity: number, damage: Damage, escape: Container) {
super(
new ImproperNoun('womb').all,
owner,
new Set([VoreType.Unbirth]),
capacity,
damage,
escape
)
}
}

Laden…
Abbrechen
Speichern