From 35348cdc33e3b1db7a668941d484896a872e1aa1 Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Tue, 13 Oct 2020 13:38:32 -0400 Subject: [PATCH] Add some extra flavor text to digestion, including digestion type --- src/game/creatures/goldeneye.ts | 4 +++- src/game/creatures/withers.ts | 2 +- src/game/vore.ts | 29 ++++++++++++++++++++++++++--- src/game/words.ts | 21 +++++++++++++-------- 4 files changed, 43 insertions(+), 13 deletions(-) diff --git a/src/game/creatures/goldeneye.ts b/src/game/creatures/goldeneye.ts index 62c94f1..67d2e8a 100644 --- a/src/game/creatures/goldeneye.ts +++ b/src/game/creatures/goldeneye.ts @@ -1,6 +1,6 @@ import { Creature } from "../creature" import { Damage, DamageType, ConstantDamageFormula, Vigor, Side, GroupAction, FractionDamageFormula, DamageFormula, UniformRandomDamageFormula, CompositionAction, StatusEffect, CompositeDamageFormula } from '../combat' -import { MalePronouns, ImproperNoun, Verb, ProperNoun, ToBe, SoloLineArgs } from '../language' +import { MalePronouns, ImproperNoun, Verb, ProperNoun, ToBe, SoloLineArgs, Noun } from '../language' import { VoreType, NormalContainer, InnerVoreContainer, Container } from '../vore' import { TransferAction } from '../combat/actions' import { LogEntry, LogLine, LogLines } from '../interface' @@ -99,6 +99,8 @@ class Flaunt extends GroupAction { } class GoldeneyeStomach extends InnerVoreContainer { + fluidName = new Noun("chyme") + consumeVerb: Verb = new Verb('swallow') releaseVerb: Verb = new Verb('free') struggleVerb: Verb = new Verb('struggle', 'struggles', 'struggling', 'struggled') diff --git a/src/game/creatures/withers.ts b/src/game/creatures/withers.ts index 4723fee..e148bd0 100644 --- a/src/game/creatures/withers.ts +++ b/src/game/creatures/withers.ts @@ -272,7 +272,7 @@ class DevourAllAction extends GroupAction { line = (user: Creature, target: Creature) => new LogLine(`${user.name.capital} ${user.name.conjugate(new Verb('scoop'))} ${target.name} up!`) - groupLine = (user: Creature, args: { count: number }) => new LogLine(`${Words.SwallowSound.allCaps}! All ${args.count} of ${user.pronouns.possessive} prey pour down ${user.name.possessive} ${Words.Slick} gullet as ${user.pronouns.subjective} ${user.name.conjugate(Words.Swallows)}; they're just ${user.kind.all} chow now`) + groupLine = (user: Creature, args: { count: number }) => new LogLine(`${Words.SwallowSound.allCaps}! All ${args.count} of ${user.pronouns.possessive} prey pour down ${user.name.possessive} ${Words.Slick} gullet as ${user.pronouns.subjective} ${user.name.conjugate(Words.Swallow)}; they're just ${user.kind.all} chow now`) execute (user: Creature, target: Creature): LogEntry { this.container.consume(target) diff --git a/src/game/vore.ts b/src/game/vore.ts index 48673cb..e0906ec 100644 --- a/src/game/vore.ts +++ b/src/game/vore.ts @@ -1,6 +1,6 @@ import { Damage, DamageType, Actionable, Action, Vigor, DamageInstance, DamageFormula } from './combat' import { LogLines, LogEntry, LogLine, nilLog, RandomEntry } from './interface' -import { Noun, ImproperNoun, Verb, RandomWord } from './language' +import { Noun, ImproperNoun, Verb, RandomWord, Word } from './language' import { RubAction, DevourAction, ReleaseAction, StruggleAction, TransferAction } from './combat/actions' import * as Words from './words' import { Creature } from './creature' @@ -160,6 +160,7 @@ export interface VoreContainer extends Container { tick: (dt: number) => LogEntry; digest: (preys: Creature[]) => LogEntry; absorb: (preys: Creature[]) => LogEntry; + fluidName: Word; fluidColor: string; onDigest: (prey: Creature) => LogEntry; @@ -175,6 +176,8 @@ export abstract class NormalVoreContainer extends NormalContainer implements Vor digested: Array = [] absorbed: Array = [] + abstract fluidName: Word + constructor (name: Noun, owner: Creature, voreTypes: Set, capacity: number, private damage: DamageFormula) { super(name, owner, voreTypes, capacity) @@ -203,11 +206,11 @@ export abstract class NormalVoreContainer extends NormalContainer implements Vor } digestLine (user: Creature, target: Creature): LogEntry { - return new LogLine(`${user.name.capital.possessive} ${this.name} ${this.name.conjugate(new Verb('finish', 'finishes'))} ${Words.Digests.present} ${target.name.objective} down, ${target.pronouns.possessive} ${Words.Struggles.singular} fading away.`) + return new LogLine(`${user.name.capital.possessive} ${this.name} ${this.name.conjugate(new Verb('finish', 'finishes'))} ${Words.Digest.present} ${target.name.objective} down, ${target.pronouns.possessive} ${Words.Struggle.singular} fading away as ${target.pronouns.subjective} ${target.pronouns.conjugate(Words.Succumb)} and ${target.pronouns.conjugate(Words.Digest)} into ${this.fluidName}.`) } absorbLine (user: Creature, target: Creature): LogEntry { - return new LogLine(`${user.name.capital.possessive} ${this.name} ${this.name.conjugate(new Verb('finish', 'finishes'))} ${Words.Absorbs.present} ${target.name.objective}, fully claiming ${target.pronouns.objective}.`) + return new LogLine(`${user.name.capital.possessive} ${this.name} ${this.name.conjugate(new Verb('finish', 'finishes'))} ${Words.Absorb.present} ${target.name.objective}, fully claiming ${target.pronouns.objective}.`) } tick (dt: number): LogEntry { @@ -303,6 +306,8 @@ export abstract class InnerVoreContainer extends NormalVoreContainer { } export class Stomach extends NormalVoreContainer { + fluidName = new Noun("chyme") + constructor (owner: Creature, capacity: number, damage: DamageFormula) { super(new ImproperNoun('stomach', 'stomachs').all, owner, new Set([VoreType.Oral]), capacity, damage) } @@ -328,6 +333,8 @@ export class Stomach extends NormalVoreContainer { } export class InnerStomach extends InnerVoreContainer { + fluidName = new Noun("chyme") + consumeVerb = new Verb('swallow') releaseVerb = new Verb('hork') constructor (owner: Creature, capacity: number, damage: DamageFormula, escape: VoreContainer) { @@ -336,6 +343,8 @@ export class InnerStomach extends InnerVoreContainer { } export class Bowels extends NormalVoreContainer { + fluidName = new Noun("chyme") + constructor (owner: Creature, capacity: number, damage: DamageFormula) { super(new ImproperNoun('bowel', 'bowels').plural.all, owner, new Set([VoreType.Anal]), capacity, damage) } @@ -349,6 +358,8 @@ export class Bowels extends NormalVoreContainer { } export class Cock extends NormalVoreContainer { + fluidName = new Noun("cum") + fluidColor = "#eeeeee66"; constructor (owner: Creature, capacity: number, damage: DamageFormula) { @@ -367,6 +378,8 @@ export class Cock extends NormalVoreContainer { } export class Balls extends InnerVoreContainer { + fluidName = new Noun("cum") + fluidColor = "#eeeeeecc"; constructor (owner: Creature, capacity: number, damage: DamageFormula, escape: Container) { @@ -382,6 +395,8 @@ export class Balls extends InnerVoreContainer { } export class Slit extends NormalVoreContainer { + fluidName = new Noun("femcum") + fluidColor = "#cccccc99"; constructor (owner: Creature, capacity: number, damage: DamageFormula) { @@ -395,6 +410,8 @@ export class Slit extends NormalVoreContainer { } } export class Womb extends InnerVoreContainer { + fluidName = new Noun("femcum") + fluidColor = "#ddddddbb"; constructor (owner: Creature, capacity: number, damage: DamageFormula, escape: Container) { @@ -410,6 +427,8 @@ export class Womb extends InnerVoreContainer { } export class Breasts extends NormalVoreContainer { + fluidName = new Noun("milk") + fluidColor = "#eeeeeecc"; constructor (owner: Creature, capacity: number, damage: DamageFormula) { @@ -424,6 +443,8 @@ export class Breasts extends NormalVoreContainer { } export class Bladder extends NormalVoreContainer { + fluidName = new Noun("piss") + fluidColor = "#eeee3399"; constructor (owner: Creature, capacity: number, damage: DamageFormula) { @@ -438,6 +459,8 @@ export class Bladder extends NormalVoreContainer { } export class InnerBladder extends InnerVoreContainer { + fluidName = new Noun("piss") + fluidColor = "#eeee3399"; constructor (owner: Creature, capacity: number, damage: DamageFormula, escape: Container) { diff --git a/src/game/words.ts b/src/game/words.ts index ef2f88c..e511e47 100644 --- a/src/game/words.ts +++ b/src/game/words.ts @@ -18,7 +18,7 @@ export const Slick = new RandomWord([ new Adjective('glistening') ]) -export const Swallows = new RandomWord([ +export const Swallow = new RandomWord([ new Verb("swallow"), new Verb("gulp"), new Verb("consume", "consumes", "consuming", "consumed") @@ -37,18 +37,18 @@ export const Dark = new RandomWord([ new Adjective("pitch-black") ]) -export const Digests = new RandomWord([ - new Verb("digest") +export const Digest = new RandomWord([ + new Verb("digest"), + new Verb("melt down", "melts down", "melting down", "melted down"), + new Verb("dissolve", "dissolves", "dissolving", "dissolved") ]) -export const Absorbs = new RandomWord([ +export const Absorb = new RandomWord([ new Verb("absorb"), - new Verb("soak up", "soaks up", "soaking up", "soaked up"), - new Verb("melt down", "melts down", "melting down", "melted down"), - new Verb("dissolve", "dissolves", "dissolving", "dissolved") + new Verb("soak up", "soaks up", "soaking up", "soaked up") ]) -export const Struggles = new RandomWord([ +export const Struggle = new RandomWord([ new Verb("squirm"), new Verb("struggle", "struggles", "struggling", "struggled"), new Verb("thrash", "thrashes") @@ -81,3 +81,8 @@ export const Clench = new RandomWord([ new Verb("squeeze", "squeezes", "squeezing", "squeezed"), new Verb("bear down on", "bears down on", "bearing down on", "bore down on") ]) + +export const Succumb = new RandomWord([ + new Verb("succumb"), + new Verb("surrender") +])