Skip to content

Commit

Permalink
feat(Battle): add range penalty calculation
Browse files Browse the repository at this point in the history
  • Loading branch information
rudnovd committed Mar 30, 2022
1 parent f78d9ec commit 2e7adf0
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
10 changes: 7 additions & 3 deletions src/models/Battle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,13 @@ export class Battle {
...new CreatureInstance(attackerCreatureOriginal),
effects: this.attacker.activeCreature.effects,
count: this.attacker.activeCreature.count,
rangePenalty: this.attacker.activeCreature.rangePenalty,
}
this.defender.activeCreature = {
...new CreatureInstance(defenderCreatureOriginal),
effects: this.defender.activeCreature.effects,
count: this.defender.activeCreature.count,
rangePenalty: this.attacker.activeCreature.rangePenalty,
}

// make copy of attacker active creature with modified stats from positive and negative spells
Expand Down Expand Up @@ -230,7 +232,8 @@ export class Battle {
let damageBonus = 0,
defenseBonus = 0,
defenseMagicBonus = 0,
difference = 0
difference = 0,
rangePenalty = attacker.rangePenalty ? 0.5 : 0

if (attacker.attack > defender.defense) {
// Max attack cap = 3
Expand All @@ -246,9 +249,10 @@ export class Battle {
}
defenseBonus = 1 - defender.calculation.defenseBonus
defenseMagicBonus = 1 - defender.calculation.defenseMagicBonus
rangePenalty = 1 - rangePenalty

let minDamage = Math.abs(attacker.minDamage * (damageBonus * defenseBonus * defenseMagicBonus))
let maxDamage = Math.abs(attacker.maxDamage * (damageBonus * defenseBonus * defenseMagicBonus))
let minDamage = Math.abs(attacker.minDamage * (damageBonus * defenseBonus * defenseMagicBonus * rangePenalty))
let maxDamage = Math.abs(attacker.maxDamage * (damageBonus * defenseBonus * defenseMagicBonus * rangePenalty))
let averageDamage = Math.abs((minDamage + maxDamage) / 2)

minDamage = Math.floor(minDamage * attacker.count)
Expand Down
5 changes: 5 additions & 0 deletions src/models/Creature.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ export class CreatureInstance implements Creature {
maxKills: number
averageKills: number
}
rangePenalty?: boolean

constructor(creature: Creature) {
this.aiValue = creature.aiValue
Expand Down Expand Up @@ -117,5 +118,9 @@ export class CreatureInstance implements Creature {
maxKills: 0,
averageKills: 0,
}

if (creature.ranged) {
this.rangePenalty = false
}
}
}

0 comments on commit 2e7adf0

Please sign in to comment.