diff --git a/src/game/combat.ts b/src/game/combat.ts index b698628..75273bc 100644 --- a/src/game/combat.ts +++ b/src/game/combat.ts @@ -44,7 +44,8 @@ export type Vigors = {[key in Vigor]: number} export enum Stat { Toughness = "Toughness", Power = "Power", - Speed = "Speed", + Reflexes = "Reflexes", + Agility = "Agility", Willpower = "Willpower", Charm = "Charm" } @@ -54,15 +55,17 @@ export type Stats = {[key in Stat]: number} export const StatIcons: {[key in Stat]: string} = { Toughness: 'fas fa-heartbeat', Power: 'fas fa-fist-raised', - Speed: 'fas fa-feather', + Reflexes: 'fas fa-stopwatch', + Agility: 'fas fa-feather', Willpower: 'fas fa-book', Charm: 'fas fa-comments' } export const StatDescs: {[key in Stat]: string} = { - Toughness: 'Your physical resistance', - Power: 'Your physical power', - Speed: 'How quickly you can act', + Toughness: 'Your brute resistance', + Power: 'Your brute power', + Reflexes: 'Your ability to dodge', + Agility: 'Your ability to move quickly', Willpower: 'Your mental resistance', Charm: 'Your mental power' } @@ -599,7 +602,7 @@ export class Encounter { this.combatants.forEach(combatant => { // this should never be undefined const currentProgress = this.initiatives.get(combatant) ?? 0 - const remaining = (this.turnTime - currentProgress) / Math.sqrt(Math.max(combatant.stats.Speed, 1)) + const remaining = (this.turnTime - currentProgress) / Math.sqrt(Math.max(combatant.stats.Agility, 1)) times.set(combatant, remaining) }) @@ -609,12 +612,12 @@ export class Encounter { return closestTime <= nextTime ? closest : next }, this.combatants[0]) - const closestRemaining = (this.turnTime - (this.initiatives.get(this.currentMove) ?? 0)) / Math.sqrt(Math.max(this.currentMove.stats.Speed, 1)) + const closestRemaining = (this.turnTime - (this.initiatives.get(this.currentMove) ?? 0)) / Math.sqrt(Math.max(this.currentMove.stats.Agility, 1)) this.combatants.forEach(combatant => { // still not undefined... const currentProgress = this.initiatives.get(combatant) ?? 0 - this.initiatives.set(combatant, currentProgress + closestRemaining * Math.sqrt(Math.max(combatant.stats.Speed, 1))) + this.initiatives.set(combatant, currentProgress + closestRemaining * Math.sqrt(Math.max(combatant.stats.Agility, 1))) }) // TODO: still let the creature use drained-vigor moves diff --git a/src/game/creatures/cafat.ts b/src/game/creatures/cafat.ts index 744141b..7612bc2 100644 --- a/src/game/creatures/cafat.ts +++ b/src/game/creatures/cafat.ts @@ -76,7 +76,8 @@ export class Cafat extends Creature { super(new ProperNoun('Cafat'), new ImproperNoun('taur', 'taurs'), [TheyPronouns, FemalePronouns][Math.floor(Math.random() * 2)], { [Stat.Toughness]: 30, [Stat.Power]: 30, - [Stat.Speed]: 15, + [Stat.Agility]: 15, + [Stat.Reflexes]: 15, [Stat.Willpower]: 25, [Stat.Charm]: 20 }, new Set([VoreType.Oral, VoreType.Anal]), new Set([VoreType.Oral, VoreType.Anal]), 150) @@ -118,7 +119,7 @@ export class Cafat extends Creature { this.actions.push(new BelchAction(new Damage( { amount: 10, target: Stat.Toughness, type: DamageType.Acid }, { amount: 10, target: Stat.Power, type: DamageType.Acid }, - { amount: 10, target: Stat.Speed, type: DamageType.Acid }, + { amount: 10, target: Stat.Agility, type: DamageType.Acid }, { amount: 10, target: Stat.Willpower, type: DamageType.Acid }, { amount: 10, target: Stat.Charm, type: DamageType.Acid } ))) diff --git a/src/game/creatures/dragon.ts b/src/game/creatures/dragon.ts index ab6c2ed..bfbe54d 100644 --- a/src/game/creatures/dragon.ts +++ b/src/game/creatures/dragon.ts @@ -6,7 +6,7 @@ import { AttackAction, TransferAction, FeedAction } from '../combat/actions' export class Dragon extends Creature { constructor () { - super(new ImproperNoun('dragon', 'dragons'), new ImproperNoun('wolf', 'wolves'), FemalePronouns, { Toughness: 35, Power: 35, Speed: 15, Willpower: 30, Charm: 20 }, new Set([VoreType.Oral, VoreType.Anal]), new Set([VoreType.Oral, VoreType.Anal]), 300) + super(new ImproperNoun('dragon', 'dragons'), new ImproperNoun('wolf', 'wolves'), FemalePronouns, { Toughness: 35, Power: 35, Reflexes: 15, Agility: 15, Willpower: 30, Charm: 20 }, new Set([VoreType.Oral, VoreType.Anal]), new Set([VoreType.Oral, VoreType.Anal]), 300) this.actions.push( new AttackAction( new ConstantDamageFormula( diff --git a/src/game/creatures/geta.ts b/src/game/creatures/geta.ts index c770080..73842c3 100644 --- a/src/game/creatures/geta.ts +++ b/src/game/creatures/geta.ts @@ -15,7 +15,7 @@ export class Geta extends Creature { new ProperNoun('Geta'), new ImproperNoun('fox', 'foxes'), MalePronouns, - { Toughness: 10, Power: 10, Speed: 30, Willpower: 15, Charm: 40 }, + { Toughness: 10, Power: 10, Reflexes: 30, Agility: 30, Willpower: 15, Charm: 40 }, new Set([VoreType.Oral, VoreType.Anal, VoreType.Cock]), new Set([VoreType.Oral, VoreType.Anal, VoreType.Cock]), 40 diff --git a/src/game/creatures/goldeneye.ts b/src/game/creatures/goldeneye.ts index 68b79aa..62c94f1 100644 --- a/src/game/creatures/goldeneye.ts +++ b/src/game/creatures/goldeneye.ts @@ -125,7 +125,7 @@ export class Goldeneye extends Creature { new ProperNoun("Goldeneye"), new ImproperNoun('gryphon', 'gryphons'), MalePronouns, - { Toughness: 200, Power: 200, Speed: 200, Willpower: 200, Charm: 200 }, + { Toughness: 200, Power: 200, Reflexes: 200, Agility: 200, Willpower: 200, Charm: 200 }, new Set(), new Set([VoreType.Oral]), 2000 diff --git a/src/game/creatures/human.ts b/src/game/creatures/human.ts index d2c71da..01d9f47 100644 --- a/src/game/creatures/human.ts +++ b/src/game/creatures/human.ts @@ -17,7 +17,7 @@ export class Human extends Creature { vigors = { Health: 100, Stamina: 100, Resolve: 100 } } if (options.stats === undefined) { - stats = { Toughness: 20, Power: 20, Speed: 20, Willpower: 20, Charm: 20 } + stats = { Toughness: 20, Power: 20, Reflexes: 20, Agility: 20, Willpower: 20, Charm: 20 } } else { stats = options.stats } diff --git a/src/game/creatures/kenzie.ts b/src/game/creatures/kenzie.ts index 814c03d..657368d 100644 --- a/src/game/creatures/kenzie.ts +++ b/src/game/creatures/kenzie.ts @@ -31,7 +31,7 @@ export class Kenzie extends Creature { new ProperNoun('Kenzie'), new ImproperNoun('lycanroc', 'lycanrocs'), FemalePronouns, - { Toughness: 25, Power: 35, Speed: 20, Willpower: 20, Charm: 30 }, + { Toughness: 25, Power: 35, Reflexes: 20, Agility: 20, Willpower: 20, Charm: 30 }, new Set([VoreType.Oral]), new Set([VoreType.Oral]), 1000 diff --git a/src/game/creatures/kuro.ts b/src/game/creatures/kuro.ts index e3da667..3ceb98b 100644 --- a/src/game/creatures/kuro.ts +++ b/src/game/creatures/kuro.ts @@ -10,7 +10,7 @@ export class Kuro extends Creature { new ProperNoun('Kuro'), new ProperNoun('Luxray'), MalePronouns, - { Toughness: 20, Power: 30, Speed: 50, Willpower: 30, Charm: 50 }, + { Toughness: 20, Power: 30, Reflexes: 50, Agility: 50, Willpower: 30, Charm: 50 }, new Set(), new Set([VoreType.Oral, VoreType.Anal, VoreType.Cock]), 100 diff --git a/src/game/creatures/player.ts b/src/game/creatures/player.ts index a0b3f0e..41b791c 100644 --- a/src/game/creatures/player.ts +++ b/src/game/creatures/player.ts @@ -10,7 +10,7 @@ export class Player extends Creature { new ProperNoun('Player'), new ImproperNoun('player', 'players'), TheyPronouns, - { Toughness: 25, Power: 25, Speed: 25, Willpower: 25, Charm: 25 }, + { Toughness: 25, Power: 25, Reflexes: 25, Agility: 25, Willpower: 25, Charm: 25 }, anyVore, anyVore, 50 diff --git a/src/game/creatures/shingo.ts b/src/game/creatures/shingo.ts index e9cd6c4..03b8962 100644 --- a/src/game/creatures/shingo.ts +++ b/src/game/creatures/shingo.ts @@ -74,7 +74,7 @@ class Paw extends NormalContainer { { amount: 100, target: Vigor.Stamina, type: DamageType.Crush }, { amount: 3, target: Stat.Toughness, type: DamageType.Crush }, { amount: 5, target: Stat.Power, type: DamageType.Crush }, - { amount: 10, target: Stat.Speed, type: DamageType.Crush } + { amount: 10, target: Stat.Agility, type: DamageType.Crush } ) ), this @@ -90,7 +90,7 @@ class Paw extends NormalContainer { [ { fraction: 1, target: Stat.Toughness, type: DamageType.Pure }, { fraction: 1, target: Stat.Power, type: DamageType.Pure }, - { fraction: 1, target: Stat.Speed, type: DamageType.Pure }, + { fraction: 1, target: Stat.Agility, type: DamageType.Pure }, { fraction: 1, target: Stat.Willpower, type: DamageType.Pure }, { fraction: 1, target: Stat.Charm, type: DamageType.Pure } ] @@ -140,7 +140,7 @@ export class Shingo extends Creature { new ProperNoun('Shingo'), new ImproperNoun('red panda', 'red pandas'), MalePronouns, - { Toughness: 40, Power: 50, Speed: 30, Willpower: 30, Charm: 60 }, + { Toughness: 40, Power: 50, Reflexes: 30, Agility: 30, Willpower: 30, Charm: 60 }, new Set(), new Set([VoreType.Oral]), 3000 diff --git a/src/game/creatures/withers.ts b/src/game/creatures/withers.ts index f8fa65f..4723fee 100644 --- a/src/game/creatures/withers.ts +++ b/src/game/creatures/withers.ts @@ -128,7 +128,7 @@ class BootContainer extends NormalContainer { new UniformRandomDamageFormula(new Damage( { target: Stat.Toughness, type: DamageType.Crush, amount: 10 }, { target: Stat.Power, type: DamageType.Crush, amount: 10 }, - { target: Stat.Speed, type: DamageType.Crush, amount: 10 }, + { target: Stat.Agility, type: DamageType.Crush, amount: 10 }, { target: Stat.Willpower, type: DamageType.Crush, amount: 30 }, { target: Stat.Charm, type: DamageType.Crush, amount: 10 } ), 0.5), @@ -306,7 +306,7 @@ export class Withers extends Creature { new ProperNoun('Withers'), new ImproperNoun('hellhound', 'hellhounds'), FemalePronouns, - { Toughness: 40, Power: 50, Speed: 30, Willpower: 40, Charm: 70 }, + { Toughness: 40, Power: 50, Reflexes: 30, Agility: 30, Willpower: 40, Charm: 70 }, new Set(), new Set([VoreType.Oral]), 5000 diff --git a/src/game/creatures/wolf.ts b/src/game/creatures/wolf.ts index 75a9dc9..6271e28 100644 --- a/src/game/creatures/wolf.ts +++ b/src/game/creatures/wolf.ts @@ -11,7 +11,7 @@ export class Wolf extends Creature { 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 }, + { Toughness: 20, Power: 20, Reflexes: 20, Agility: 20, Willpower: 20, Charm: 20 }, anyVore, anyVore, 25 diff --git a/src/game/entity.ts b/src/game/entity.ts index 8c5183f..79aff6e 100644 --- a/src/game/entity.ts +++ b/src/game/entity.ts @@ -65,7 +65,7 @@ export abstract class Mortal extends Entity { return { Health: this.stats.Toughness * 10 + this.stats.Power * 5, Resolve: this.stats.Willpower * 10 + this.stats.Charm * 5, - Stamina: this.stats.Speed * 10 + this.stats.Power * 2.5 + this.stats.Charm * 2.5 + Stamina: this.stats.Agility * 5 + this.stats.Reflexes * 5 } } diff --git a/src/game/items.ts b/src/game/items.ts index c7211e8..667881f 100644 --- a/src/game/items.ts +++ b/src/game/items.ts @@ -96,8 +96,8 @@ export class Dagger extends Weapon { new ImproperNoun('dagger', 'daggers'), 'A pointy dagger', new StatDamageFormula([ - { fraction: 0.50, stat: Stat.Speed, target: Vigor.Health, type: DamageType.Pierce }, - { fraction: 0.05, stat: Stat.Speed, target: Vigor.Health, type: DamageType.Slash } + { fraction: 0.50, stat: Stat.Agility, target: Vigor.Health, type: DamageType.Pierce }, + { fraction: 0.05, stat: Stat.Agility, target: Vigor.Health, type: DamageType.Slash } ]), new Verb('stab', 'stabs', 'stabbing', 'stabbed') ) @@ -219,7 +219,7 @@ export class HealthPotion extends Consumable { ), new StatDamageFormula([ { fraction: 2, stat: Stat.Toughness, target: Vigor.Health, type: DamageType.Heal }, - { fraction: 2, stat: Stat.Speed, target: Vigor.Stamina, type: DamageType.Heal }, + { fraction: 2, stat: Stat.Agility, target: Vigor.Stamina, type: DamageType.Heal }, { fraction: 2, stat: Stat.Willpower, target: Vigor.Resolve, type: DamageType.Heal } ]) ]) diff --git a/src/game/maps/town.ts b/src/game/maps/town.ts index 0dbc767..165e322 100644 --- a/src/game/maps/town.ts +++ b/src/game/maps/town.ts @@ -15,7 +15,8 @@ function makeParty (): Creature[] { stats: { Toughness: 20, Power: 20, - Speed: 15, + Reflexes: 15, + Agility: 15, Willpower: 15, Charm: 10 } @@ -26,7 +27,8 @@ function makeParty (): Creature[] { stats: { Toughness: 10, Power: 15, - Speed: 20, + Reflexes: 20, + Agility: 20, Willpower: 15, Charm: 20 } @@ -37,7 +39,8 @@ function makeParty (): Creature[] { stats: { Toughness: 10, Power: 10, - Speed: 15, + Reflexes: 15, + Agility: 15, Willpower: 20, Charm: 25 } @@ -48,7 +51,8 @@ function makeParty (): Creature[] { stats: { Toughness: 15, Power: 15, - Speed: 10, + Reflexes: 10, + Agility: 10, Willpower: 20, Charm: 15 }