Skip to content

Commit

Permalink
feat(models): make Hero skills props partial
Browse files Browse the repository at this point in the history
  • Loading branch information
rudnovd committed Apr 1, 2022
1 parent 6738606 commit 269dab6
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 22 deletions.
47 changes: 36 additions & 11 deletions src/models/Hero.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export interface Hero {
id: number
name: string
classId: number
skills: Partial<Skills>
specialtySkill?: number
specialtySpell?: number
specialtyUnit?: Array<number>
Expand All @@ -14,6 +15,39 @@ export interface HeroTranslation {
name: string
}

interface Skills {
[key: string]: number
offense: number
armorer: number
archery: number
artillery: number
air: number
fire: number
earth: number
water: number
ballistics: number
diplomacy: number
eagleEye: number
estates: number
firstAid: number
intelligence: number
learning: number
logistics: number
luck: number
mysticism: number
navigation: number
necromancy: number
pathfinding: number
resistance: number
scholar: number
scouting: number
sorcery: number
tactics: number
wisdom: number
interference: number
leadership: number
}

export class HeroInstance implements Hero {
id: number
name: string
Expand All @@ -30,17 +64,7 @@ export class HeroInstance implements Hero {
power: number
knowledge: number
}
skills: {
[key: string]: number
offense: number
armorer: number
archery: number
artillery: number
air: number
fire: number
earth: number
water: number
}
skills: Partial<Skills>

constructor(hero: Hero) {
this.id = hero.id
Expand All @@ -66,6 +90,7 @@ export class HeroInstance implements Hero {
fire: 0,
earth: 0,
water: 0,
...hero.skills,
}

const heroClass = classes.find((classObject) => classObject.id === this.classId)
Expand Down
22 changes: 11 additions & 11 deletions src/modules/effects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ export const Effects = {
// get creature values for modify them
let { minDamage, maxDamage } = target

if (!initiator.hero || initiator.hero.skills.fire <= 1 || minDamage === 1) {
if (!initiator.hero || !initiator.hero.skills.fire || initiator.hero.skills.fire <= 1 || minDamage === 1) {
maxDamage = minDamage
} else if (initiator.hero.skills.fire >= 2) {
minDamage = minDamage - 1
Expand All @@ -124,7 +124,7 @@ export const Effects = {
// get creature values for modify them
let { attack } = target

if (!initiator.hero || initiator.hero.skills.fire <= 1) {
if (!initiator.hero || !initiator.hero.skills.fire || initiator.hero.skills.fire <= 1) {
attack += 3
} else if (initiator.hero.skills.fire >= 2) {
attack += 6
Expand All @@ -147,7 +147,7 @@ export const Effects = {
// get creature values for modify them
let { attack, defense } = target

if (!initiator.hero || initiator.hero.skills.fire <= 1) {
if (!initiator.hero || !initiator.hero.skills.fire || initiator.hero.skills.fire <= 1) {
attack += defense
} else if (initiator.hero.skills.fire === 2) {
attack += defense * 1.5
Expand Down Expand Up @@ -195,7 +195,7 @@ export const Effects = {
Creatures.AzureDragon,
]

if (initiator.hero) {
if (initiator.hero && initiator.hero.skills.fire) {
if (initiator.hero.skills.fire > 1) {
slayerCreatures.push(Creatures.Angel, Creatures.Archangel, Creatures.Devil, Creatures.ArchDevil)
}
Expand Down Expand Up @@ -231,7 +231,7 @@ export const Effects = {
// get creature values for modify them
let { attack, defense } = target

if (!initiator.hero || initiator.hero.skills.water <= 1) {
if (!initiator.hero || !initiator.hero.skills.water || initiator.hero.skills.water <= 1) {
attack += 2
defense += 2
} else if (initiator.hero.skills.water >= 2) {
Expand All @@ -258,7 +258,7 @@ export const Effects = {
let { attack } = target

if (target.ranged) {
if (!initiator.hero || initiator.hero.skills.air <= 1) {
if (!initiator.hero || !initiator.hero.skills.air || initiator.hero.skills.air <= 1) {
attack += 3
} else if (initiator.hero.skills.air >= 2) {
attack += 6
Expand All @@ -282,7 +282,7 @@ export const Effects = {
// get creature values for modify them
let { defense } = target

if (!initiator.hero || initiator.hero.skills.earth <= 1) {
if (!initiator.hero || !initiator.hero.skills.earth || initiator.hero.skills.earth <= 1) {
defense += 3
} else if (initiator.hero.skills.earth >= 2) {
defense += 6
Expand All @@ -305,7 +305,7 @@ export const Effects = {
// get creature values for modify them
let { attack } = target

if (!initiator.hero || initiator.hero.skills.water <= 1) {
if (!initiator.hero || !initiator.hero.skills.water || initiator.hero.skills.water <= 1) {
attack -= 3
} else if (initiator.hero.skills.water >= 2) {
attack -= 6
Expand All @@ -332,7 +332,7 @@ export const Effects = {
// get creature values for modify them
let { defense } = target

if (!initiator.hero || initiator.hero.skills.air <= 1) {
if (!initiator.hero || !initiator.hero.skills.air || initiator.hero.skills.air <= 1) {
defense -= 3
} else if (initiator.hero.skills.air === 2) {
defense -= 4
Expand Down Expand Up @@ -363,7 +363,7 @@ export const Effects = {
calculation: { defenseMagicBonus },
} = target

if (!initiator.hero || initiator.hero.skills.earth <= 1) {
if (!initiator.hero || !initiator.hero.skills.earth || initiator.hero.skills.earth <= 1) {
defenseMagicBonus += 0.15
} else if (initiator.hero.skills.earth >= 2) {
defenseMagicBonus += 0.3
Expand Down Expand Up @@ -397,7 +397,7 @@ export const Effects = {
} = target

if (defender.activeCreature?.ranged) {
if (!initiator.hero || initiator.hero.skills.air < 2) {
if (!initiator.hero || !initiator.hero.skills.air || initiator.hero.skills.air < 2) {
defenseMagicBonus += 0.25
} else if (initiator.hero.skills.air > 1) {
defenseMagicBonus += 0.5
Expand Down

0 comments on commit 269dab6

Please sign in to comment.