diff --git a/src/game/combat/actions.ts b/src/game/combat/actions.ts index 6cf9f78..0ace451 100644 --- a/src/game/combat/actions.ts +++ b/src/game/combat/actions.ts @@ -7,6 +7,7 @@ import { LogLine, LogLines, LogEntry } from '@/game/interface' import { Connection, Container } from '@/game/vore' import { CapableCondition, UserDrainedVigorCondition, TogetherCondition, EnemyCondition, SoloCondition, PairCondition, ContainsCondition, ContainedByCondition, HasRoomCondition } from '@/game/combat/conditions' import { ConsumeConsequence } from '@/game/combat/consequences' +import * as Words from '@/game/words' /** * The PassAction has no effect. @@ -276,8 +277,12 @@ export class RubAction extends Action { } execute (user: Creature, target: Creature): LogEntry { - const results = this.container.tick(60) - return new LogLines(results) + const results: Array = [] + results.push(new LogLine( + `${user.name.capital} ${user.name.conjugate(Words.Rub)} ${user.pronouns.possessive} ${Words.Full} ${this.container.name}.` + )) + results.push(this.container.tick(60)) + return new LogLines(...results) } describe (user: Creature, target: Creature): LogEntry { diff --git a/src/game/vore.ts b/src/game/vore.ts index e07b482..f963941 100644 --- a/src/game/vore.ts +++ b/src/game/vore.ts @@ -144,6 +144,9 @@ export abstract class DefaultContainer implements Container { this.actions.push(new ReleaseAction(this)) this.actions.push(new StruggleAction(this)) } + if (capabilities.has(ContainerCapability.Digest)) { + this.actions.push(new RubAction(this)) + } } connect (connection: Connection): void { @@ -258,7 +261,7 @@ export abstract class DefaultContainer implements Container { const options = [ new LogLine(`${user.name.capital} ${user.name.conjugate(Words.Churns)} ${target.name.objective} ${this.strugglePreposition} ${user.pronouns.possessive} ${this.name} for `, args.damage.renderShort(), `.`), new LogLine(`${user.name.capital.possessive} ${this.name} ${user.name.conjugate(Words.Churns)}, ${Words.Churns.present} ${target.name.objective} for `, args.damage.renderShort(), `.`), - new LogLine(`${target.name.capital} ${target.name.conjugate(new Verb("thrash", "thrashes"))} ${this.strugglePreposition} ${user.name.possessive} ${Words.Slick} ${this.name} as it ${Words.Churns.singular} ${target.pronouns.objective} for `, args.damage.renderShort(), `.`) + new LogLine(`${target.name.capital} ${target.name.conjugate(Words.Struggle)} ${this.strugglePreposition} ${user.name.possessive} ${Words.Slick} ${this.name} as it ${Words.Churns.singular} ${target.pronouns.objective} for `, args.damage.renderShort(), `.`) ] if (this.fluid) { @@ -420,6 +423,6 @@ export class Throat extends DefaultContainer { export function transferDescription (verb: Word, preposition: Preposition): ((from: Container, to: Container, prey: Creature) => LogEntry) { return (from: Container, to: Container, prey: Creature) => { - return new LogLine(`${from.owner.name.capital} ${verb.singular} ${prey.name.objective} ${preposition} ${to.consumePreposition} ${from.owner.name.possessive} ${to.name}.`) + return new LogLine(`${from.owner.name.capital} ${verb.singular} ${prey.name.objective} ${preposition} ${to.consumePreposition} ${from.owner.pronouns.possessive} ${to.name}.`) } } diff --git a/src/game/words.ts b/src/game/words.ts index 124e87e..3e57bf2 100644 --- a/src/game/words.ts +++ b/src/game/words.ts @@ -125,3 +125,16 @@ export const Stuck = new RandomWord([ new Adjective("trapped"), new Adjective("imprisoned") ]) + +export const Rub = new RandomWord([ + new Verb("rub", "rubs", "rubbing", "rubbed"), + new Verb("knead", "kneads", "kneading", "kneaded"), + new Verb("press over", "presses over", "pressing over", "pressed over") +]) + +export const Full = new RandomWord([ + new Adjective("full"), + new Adjective("stuffed"), + new Adjective("packed"), + new Adjective("bulging") +])