Преглед на файлове

Explain the results of composition actions

master
Fen Dweller преди 5 години
родител
ревизия
3cf99ff163
променени са 3 файла, в които са добавени 43 реда и са изтрити 11 реда
  1. +13
    -3
      src/game/combat.ts
  2. +15
    -0
      src/game/combat/consequences.ts
  3. +15
    -8
      src/game/items.ts

+ 13
- 3
src/game/combat.ts Целия файл

@@ -201,7 +201,7 @@ export class ConstantDamageFormula implements DamageFormula {
}

explain (user: Creature): LogEntry {
return new LogLine('Deal ', this.damage.renderShort(), ' damage')
return new LogLine('Deal ', this.damage.renderShort(), '.')
}
}

@@ -222,7 +222,7 @@ export class UniformRandomDamageFormula implements DamageFormula {
}

explain (user: Creature): LogEntry {
return new LogLine('Deal between ', this.damage.scale(1 - this.variance).renderShort(), ' and ', this.damage.scale(1 + this.variance).renderShort(), ' damage.')
return new LogLine('Deal between ', this.damage.scale(1 - this.variance).renderShort(), ' and ', this.damage.scale(1 + this.variance).renderShort(), '.')
}
}

@@ -385,7 +385,9 @@ export class CompositionAction extends Action {
}

describe (user: Creature, target: Creature): LogEntry {
return new LogLine(`No descriptions yet...`)
return new LogLines(
...this.consequences.map(consequence => consequence.describePair(user, target))
)
}
}

@@ -635,5 +637,13 @@ export abstract class Consequence {
return this.conditions.every(cond => cond.allowed(user, target))
}

describeSolo (user: Creature): LogEntry {
return nilLog
}

describePair (user: Creature, target: Creature): LogEntry {
return nilLog
}

abstract apply (user: Creature, target: Creature): LogEntry
}

+ 15
- 0
src/game/combat/consequences.ts Целия файл

@@ -10,6 +10,14 @@ export class ArbitraryConsequence extends Consequence {
constructor (public apply: (user: Creature, target: Creature) => LogEntry, conditions: Condition[] = []) {
super(conditions)
}

describeSolo (user: Creature): LogEntry {
return new LogLine(`It does...something`)
}

describePair (user: Creature): LogEntry {
return new LogLine(`It does...something`)
}
}

/**
@@ -57,6 +65,13 @@ export class HealingConsequence extends Consequence {
target.takeDamage(damage)
)
}

describePair (user: Creature, target: Creature): LogEntry {
return new LogLine(
`Heals for `,
this.damageFormula.describe(user, target)
)
}
}

/**


+ 15
- 8
src/game/items.ts Целия файл

@@ -1,5 +1,5 @@
import { TextLike, LiveText, DynText, Word, ImproperNoun, Verb } from './language'
import { Actionable, Action, DamageFormula, ConstantDamageFormula, Damage, DamageType, Vigor, StatDamageFormula, Stat, Effective, CompositionAction, Condition } from './combat'
import { Actionable, Action, DamageFormula, ConstantDamageFormula, Damage, DamageType, Vigor, StatDamageFormula, Stat, Effective, CompositionAction, Condition, CompositeDamageFormula } from './combat'
import { AttackAction } from './combat/actions'
import { Resistances } from './entity'
import { DamageTypeResistanceEffect } from './combat/effects'
@@ -191,13 +191,20 @@ export class HealthPotion extends Consumable {
(user, target) => new LogLine(`${user.name.capital} ${user.name.conjugate(new Verb('drink'))} a potion.`)
),
new HealingConsequence(
new ConstantDamageFormula(
new Damage(
{ amount: 100, target: Vigor.Health, type: DamageType.Heal },
{ amount: 100, target: Vigor.Stamina, type: DamageType.Heal },
{ amount: 100, target: Vigor.Resolve, type: DamageType.Heal }
)
)
new CompositeDamageFormula([
new ConstantDamageFormula(
new Damage(
{ amount: 100, target: Vigor.Health, type: DamageType.Heal },
{ amount: 100, target: Vigor.Stamina, type: DamageType.Heal },
{ amount: 100, target: Vigor.Resolve, type: DamageType.Heal }
)
),
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.Willpower, target: Vigor.Resolve, type: DamageType.Heal }
])
])
)
]
}


Loading…
Отказ
Запис