Quellcode durchsuchen

Split Speed into Reflexes and Agility

vintage
Fen Dweller vor 5 Jahren
Ursprung
Commit
ae99e570b7
15 geänderte Dateien mit 39 neuen und 31 gelöschten Zeilen
  1. +11
    -8
      src/game/combat.ts
  2. +3
    -2
      src/game/creatures/cafat.ts
  3. +1
    -1
      src/game/creatures/dragon.ts
  4. +1
    -1
      src/game/creatures/geta.ts
  5. +1
    -1
      src/game/creatures/goldeneye.ts
  6. +1
    -1
      src/game/creatures/human.ts
  7. +1
    -1
      src/game/creatures/kenzie.ts
  8. +1
    -1
      src/game/creatures/kuro.ts
  9. +1
    -1
      src/game/creatures/player.ts
  10. +3
    -3
      src/game/creatures/shingo.ts
  11. +2
    -2
      src/game/creatures/withers.ts
  12. +1
    -1
      src/game/creatures/wolf.ts
  13. +1
    -1
      src/game/entity.ts
  14. +3
    -3
      src/game/items.ts
  15. +8
    -4
      src/game/maps/town.ts

+ 11
- 8
src/game/combat.ts Datei anzeigen

@@ -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


+ 3
- 2
src/game/creatures/cafat.ts Datei anzeigen

@@ -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 }
)))


+ 1
- 1
src/game/creatures/dragon.ts Datei anzeigen

@@ -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(


+ 1
- 1
src/game/creatures/geta.ts Datei anzeigen

@@ -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


+ 1
- 1
src/game/creatures/goldeneye.ts Datei anzeigen

@@ -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


+ 1
- 1
src/game/creatures/human.ts Datei anzeigen

@@ -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
}


+ 1
- 1
src/game/creatures/kenzie.ts Datei anzeigen

@@ -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


+ 1
- 1
src/game/creatures/kuro.ts Datei anzeigen

@@ -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


+ 1
- 1
src/game/creatures/player.ts Datei anzeigen

@@ -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


+ 3
- 3
src/game/creatures/shingo.ts Datei anzeigen

@@ -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


+ 2
- 2
src/game/creatures/withers.ts Datei anzeigen

@@ -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


+ 1
- 1
src/game/creatures/wolf.ts Datei anzeigen

@@ -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


+ 1
- 1
src/game/entity.ts Datei anzeigen

@@ -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
}
}



+ 3
- 3
src/game/items.ts Datei anzeigen

@@ -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 }
])
])


+ 8
- 4
src/game/maps/town.ts Datei anzeigen

@@ -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
}


Laden…
Abbrechen
Speichern