瀏覽代碼

Change containers to use damage formulas, not a plain Damage object

master
Fen Dweller 5 年之前
父節點
當前提交
f53413bc96
共有 11 個檔案被更改,包括 66 行新增60 行删除
  1. +4
    -4
      src/game/creatures/cafat.ts
  2. +4
    -4
      src/game/creatures/dragon.ts
  3. +8
    -8
      src/game/creatures/geta.ts
  4. +4
    -2
      src/game/creatures/goldeneye.ts
  5. +3
    -3
      src/game/creatures/kenzie.ts
  6. +8
    -8
      src/game/creatures/kuro.ts
  7. +2
    -2
      src/game/creatures/player.ts
  8. +2
    -2
      src/game/creatures/shingo.ts
  9. +2
    -2
      src/game/creatures/withers.ts
  10. +12
    -12
      src/game/creatures/wolf.ts
  11. +17
    -13
      src/game/vore.ts

+ 4
- 4
src/game/creatures/cafat.ts 查看文件

@@ -83,21 +83,21 @@ export class Cafat extends Creature {

this.side = Side.Monsters

const stomach = new Stomach(this, 1, new Damage(
const stomach = new Stomach(this, 1, new ConstantDamageFormula(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 }
))
)))

stomach.name = new ImproperNoun("upper stomach", "upper stomachs").all

this.containers.push(stomach)

const lowerStomach = new InnerStomach(this, 1.5, new Damage(
const lowerStomach = new InnerStomach(this, 1.5, new ConstantDamageFormula(new Damage(
{ amount: 40, type: DamageType.Acid, target: Vigor.Health },
{ amount: 20, type: DamageType.Crush, target: Vigor.Stamina },
{ amount: 20, type: DamageType.Dominance, target: Vigor.Resolve }
), stomach)
)), stomach)

lowerStomach.name = new ImproperNoun("lower stomach", "lower stomachs").all



+ 4
- 4
src/game/creatures/dragon.ts 查看文件

@@ -20,19 +20,19 @@ export class Dragon extends Creature {

this.side = Side.Monsters

const stomach = new Stomach(this, 0.5, new Damage(
const stomach = new Stomach(this, 0.5, new ConstantDamageFormula(new Damage(
{ amount: 40, type: DamageType.Acid, target: Vigor.Health },
{ amount: 20, type: DamageType.Crush, target: Vigor.Stamina },
{ amount: 20, type: DamageType.Dominance, target: Vigor.Resolve }
))
)))

this.containers.push(stomach)

const bowels = new Bowels(this, 0.5, new Damage(
const bowels = new Bowels(this, 0.5, new ConstantDamageFormula(new Damage(
{ amount: 10, type: DamageType.Crush, target: Vigor.Health },
{ amount: 25, type: DamageType.Crush, target: Vigor.Stamina },
{ amount: 50, type: DamageType.Dominance, target: Vigor.Resolve }
))
)))

this.containers.push(bowels)



+ 8
- 8
src/game/creatures/geta.ts 查看文件

@@ -23,18 +23,18 @@ export class Geta extends Creature {

this.side = Side.Monsters

const stomach = new Stomach(this, 0.25, new Damage(
const stomach = new Stomach(this, 0.25, new ConstantDamageFormula(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, 0.25, new Damage(
const bowels = new Bowels(this, 0.25, new ConstantDamageFormula(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)

@@ -42,11 +42,11 @@ export class Geta extends Creature {

this.otherActions.push(new FeedAction(stomach))

const cock = new Cock(this, 0.25, new Damage(
const cock = new Cock(this, 0.25, new ConstantDamageFormula(new Damage(
{ amount: 10, type: DamageType.Crush, target: Vigor.Health },
{ amount: 50, type: DamageType.Crush, target: Vigor.Stamina },
{ amount: 150, type: DamageType.Dominance, target: Vigor.Resolve }
))
)))

cock.digestLine = (user, target, args) => {
return new LogLine(`${user.name.capital.possessive} ${args.container.name} throbs as it abruptly absorbs ${target.name.objective}, transforming ${target.name.objective} into more of ${user.pronouns.possessive} meaty shaft.`)
@@ -85,11 +85,11 @@ export class Geta extends Creature {
)
)

const balls = new Balls(this, 0.25, new Damage(
const balls = new Balls(this, 0.25, new ConstantDamageFormula(new Damage(
{ amount: 50, type: DamageType.Acid, target: Vigor.Health },
{ amount: 25, type: DamageType.Crush, target: Vigor.Stamina },
{ amount: 50, type: DamageType.Dominance, target: Vigor.Resolve }
), cock)
)), cock)

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


+ 4
- 2
src/game/creatures/goldeneye.ts 查看文件

@@ -109,8 +109,10 @@ class GoldeneyeStomach extends InnerVoreContainer {
owner,
new Set([VoreType.Oral]),
900,
new Damage(
{ amount: 1000, target: Vigor.Health, type: DamageType.Acid }
new ConstantDamageFormula(
new Damage(
{ amount: 1000, target: Vigor.Health, type: DamageType.Acid }
)
),
crop
)


+ 3
- 3
src/game/creatures/kenzie.ts 查看文件

@@ -1,7 +1,7 @@
import { Creature } from "../creature"
import { ProperNoun, ImproperNoun, FemalePronouns, Verb } from '../language'
import { VoreType, Stomach } from '../vore'
import { Side, Damage, DamageType, Vigor, StatDamageFormula, Stat, VoreStat, DamageFormula } from '../combat'
import { Side, Damage, DamageType, Vigor, StatDamageFormula, Stat, VoreStat, DamageFormula, ConstantDamageFormula } from '../combat'
import { AttackAction, DevourAction } from '../combat/actions'
import { LogEntry, LogLines } from '../interface'
import { StunEffect, PredatorCounterEffect } from '../combat/effects'
@@ -39,11 +39,11 @@ export class Kenzie extends Creature {

this.side = Side.Monsters

const stomach = new Stomach(this, 0.1, new Damage(
const stomach = new Stomach(this, 0.1, new ConstantDamageFormula(new Damage(
{ amount: 100, type: DamageType.Acid, target: Vigor.Health },
{ amount: 100, type: DamageType.Crush, target: Vigor.Stamina },
{ amount: 100, type: DamageType.Dominance, target: Vigor.Resolve }
))
)))

this.applyEffect(new PredatorCounterEffect(new DevourAction(stomach), 0.4))



+ 8
- 8
src/game/creatures/kuro.ts 查看文件

@@ -18,18 +18,18 @@ export class Kuro extends Creature {

this.side = Side.Monsters

const stomach = new Stomach(this, 0.5, new Damage(
const stomach = new Stomach(this, 0.5, new ConstantDamageFormula(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, 0.5, new Damage(
const bowels = new Bowels(this, 0.5, new ConstantDamageFormula(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)

@@ -37,17 +37,17 @@ export class Kuro extends Creature {

this.otherActions.push(new FeedAction(stomach))

const cock = new Cock(this, 0.5, new Damage(
const cock = new Cock(this, 0.5, new ConstantDamageFormula(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, 0.5, new Damage(
const balls = new Balls(this, 0.5, new ConstantDamageFormula(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)
)), cock)

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


+ 2
- 2
src/game/creatures/player.ts 查看文件

@@ -18,10 +18,10 @@ 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 Damage({ amount: 20, type: DamageType.Acid, target: Vigor.Health }, { amount: 10, type: DamageType.Crush, target: Vigor.Health }))
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 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)
this.perspective = POV.Second


+ 2
- 2
src/game/creatures/shingo.ts 查看文件

@@ -158,11 +158,11 @@ export class Shingo extends Creature {

this.side = Side.Monsters

const stomach = new Stomach(this, 0.1, new Damage(
const stomach = new Stomach(this, 0.1, new ConstantDamageFormula(new Damage(
{ amount: 200, type: DamageType.Acid, target: Vigor.Health },
{ amount: 100, type: DamageType.Crush, target: Vigor.Stamina },
{ amount: 100, type: DamageType.Dominance, target: Vigor.Resolve }
))
)))

this.containers.push(stomach)



+ 2
- 2
src/game/creatures/withers.ts 查看文件

@@ -317,11 +317,11 @@ export class Withers extends Creature {

this.side = Side.Monsters

const stomach = new Stomach(this, 0.1, new Damage(
const stomach = new Stomach(this, 0.1, new ConstantDamageFormula(new Damage(
{ amount: 300, type: DamageType.Acid, target: Vigor.Health },
{ amount: 200, type: DamageType.Crush, target: Vigor.Stamina },
{ amount: 200, type: DamageType.Dominance, target: Vigor.Resolve }
))
)))

this.containers.push(stomach)
this.otherActions.push(new FeedAction(stomach))


+ 12
- 12
src/game/creatures/wolf.ts 查看文件

@@ -28,18 +28,18 @@ export class Wolf extends Creature {

this.side = Side.Monsters

const stomach = new Stomach(this, 2, new Damage(
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 Damage(
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)

@@ -47,29 +47,29 @@ export class Wolf extends Creature {

this.otherActions.push(new FeedAction(stomach))

const cock = new Cock(this, 2, new Damage(
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 Damage(
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)
)), cock)

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

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


+ 17
- 13
src/game/vore.ts 查看文件

@@ -1,5 +1,5 @@
import { Mortal } from './entity'
import { Damage, DamageType, Stats, Actionable, Action, Vigor, VoreStats, VisibleStatus, VoreStat, DamageInstance } from './combat'
import { Damage, DamageType, Stats, Actionable, Action, Vigor, VoreStats, VisibleStatus, VoreStat, DamageInstance, DamageFormula } from './combat'
import { LogLines, LogEntry, LogLine, nilLog } from './interface'
import { Noun, Pronoun, ImproperNoun, TextLike, Verb, SecondPersonPronouns, PronounAsNoun, FirstPersonPronouns, PairLineArgs, SoloLine, POV, RandomWord } from './language'
import { DigestAction, DevourAction, ReleaseAction, StruggleAction, TransferAction } from './combat/actions'
@@ -172,7 +172,7 @@ export abstract class NormalVoreContainer extends NormalContainer implements Vor
digested: Array<Creature> = []
absorbed: Array<Creature> = []

constructor (name: Noun, owner: Creature, voreTypes: Set<VoreType>, capacity: number, private damage: Damage) {
constructor (name: Noun, owner: Creature, voreTypes: Set<VoreType>, capacity: number, private damage: DamageFormula) {
super(name, owner, voreTypes, capacity)

this.name = name
@@ -204,13 +204,14 @@ export abstract class NormalVoreContainer extends NormalContainer implements Vor
const justDigested: Array<Creature> = []
const justAbsorbed: Array<Creature> = []

const scaled = this.damage.scale(dt / 60)

const damageResults: Array<LogEntry> = []

const tickedEntries = new LogLines(...this.contents.map(prey => this.tickLine(this.owner, prey, { container: this, damage: scaled })))
const tickedEntryList: LogEntry[] = []

this.contents.forEach(prey => {
const scaled = this.damage.calc(this.owner, prey).scale(dt / 60)
tickedEntryList.push(this.tickLine(this.owner, prey, { container: this, damage: scaled }))

damageResults.push(prey.takeDamage(scaled))

if (prey.vigors[Vigor.Health] <= 0) {
@@ -221,7 +222,10 @@ export abstract class NormalVoreContainer extends NormalContainer implements Vor
}
})

const tickedEntries = new LogLines(...tickedEntryList)

this.digested.forEach(prey => {
const scaled = this.damage.calc(this.owner, prey).scale(dt / 60)
const damageTotal: number = prey.effectiveDamage(scaled).damages.filter(instance => instance.target === Vigor.Health).reduce(
(total: number, instance: DamageInstance) => total + instance.amount,
0
@@ -271,7 +275,7 @@ export abstract class NormalVoreContainer extends NormalContainer implements Vor
}

export abstract class InnerVoreContainer extends NormalVoreContainer {
constructor (name: Noun, owner: Creature, voreTypes: Set<VoreType>, capacity: number, damage: Damage, private escape: Container) {
constructor (name: Noun, owner: Creature, voreTypes: Set<VoreType>, capacity: number, damage: DamageFormula, private escape: Container) {
super(name, owner, voreTypes, capacity, damage)

this.actions = []
@@ -289,7 +293,7 @@ export abstract class InnerVoreContainer extends NormalVoreContainer {
}

export class Stomach extends NormalVoreContainer {
constructor (owner: Creature, capacity: number, damage: Damage) {
constructor (owner: Creature, capacity: number, damage: DamageFormula) {
super(new ImproperNoun('stomach', 'stomachs').all, owner, new Set([VoreType.Oral]), capacity, damage)
}

@@ -316,13 +320,13 @@ export class Stomach extends NormalVoreContainer {
export class InnerStomach extends InnerVoreContainer {
consumeVerb = new Verb('swallow')
releaseVerb = new Verb('hork')
constructor (owner: Creature, capacity: number, damage: Damage, escape: VoreContainer) {
constructor (owner: Creature, capacity: number, damage: DamageFormula, escape: VoreContainer) {
super(new ImproperNoun('inner stomach', 'inner stomachs').all, owner, new Set([VoreType.Oral]), capacity, damage, escape)
}
}

export class Bowels extends NormalVoreContainer {
constructor (owner: Creature, capacity: number, damage: Damage) {
constructor (owner: Creature, capacity: number, damage: DamageFormula) {
super(new ImproperNoun('bowel', 'bowels').plural.all, owner, new Set([VoreType.Anal]), capacity, damage)
}

@@ -339,7 +343,7 @@ export class Bowels extends NormalVoreContainer {
export class Cock extends NormalVoreContainer {
fluidColor = "#eeeeee66";

constructor (owner: Creature, capacity: number, damage: Damage) {
constructor (owner: Creature, capacity: number, damage: DamageFormula) {
super(
new ImproperNoun('cock').all,
owner,
@@ -362,7 +366,7 @@ export class Cock extends NormalVoreContainer {
export class Balls extends InnerVoreContainer {
fluidColor = "#eeeeeecc";

constructor (owner: Creature, capacity: number, damage: Damage, escape: Container) {
constructor (owner: Creature, capacity: number, damage: DamageFormula, escape: Container) {
super(
new ImproperNoun('ball', 'balls').all.plural,
owner,
@@ -377,7 +381,7 @@ export class Balls extends InnerVoreContainer {
export class Slit extends NormalVoreContainer {
fluidColor = "#cccccc99";

constructor (owner: Creature, capacity: number, damage: Damage) {
constructor (owner: Creature, capacity: number, damage: DamageFormula) {
super(
new ImproperNoun('slit').all,
owner,
@@ -391,7 +395,7 @@ export class Slit extends NormalVoreContainer {
export class Womb extends InnerVoreContainer {
fluidColor = "#ddddddbb";

constructor (owner: Creature, capacity: number, damage: Damage, escape: Container) {
constructor (owner: Creature, capacity: number, damage: DamageFormula, escape: Container) {
super(
new ImproperNoun('womb').all,
owner,


Loading…
取消
儲存