import { SufPassiveSkill, PassiveSkill, PrePassiveSkill } from './base'; import i18n from '../i18n'; import { BattleRole, replace } from '@/tool'; const { t } = i18n; //断 export class Duan extends SufPassiveSkill { name: string = 'duan'; hpPercent: number = 20; order: number = 999; dmg: number = 999999999; desc(): string { return replace(t('skill.duan.1'), [this.hpPercent]); } trigger(owner: BattleRole, target: BattleRole): boolean { return owner.dmg > 0 && target.attr.curHp / target.attr.hp < this.hpPercent / 100; } takeEffect(owner: BattleRole, target: BattleRole): void { target.addHp(-1 * this.dmg); owner.battleLog(replace(t('skill.duan.2'), [this.hpPercent, this.dmg])); } } //红眼 export class HongYan extends PrePassiveSkill { name: string = 'hongyan'; hpPercent: number = 65; atk: number = 2000; atkPercent: number = 200; desc(): string { return replace(t('skill.hongyan.1'), [this.hpPercent, this.atk, this.atkPercent]); } trigger(owner: BattleRole, target: BattleRole): boolean { return owner.attr.curHp / owner.attr.hp < this.hpPercent / 100; } takeEffect(owner: BattleRole, target: BattleRole): void { owner.extraAttr.baseAtk += this.atk; } afterAtk(owner: BattleRole, target: BattleRole): void { if (this.trigger(owner, target)) { const additional = Math.ceil((owner.atk * this.atkPercent) / 100); target.addHp(-1 * additional); owner.battleLog(replace(t('skill.hongyan.2'), [this.hpPercent, additional])); } } } //杀意 export class ShaYi extends PrePassiveSkill { name: string = 'shayi'; atkPercent: number = 3; layer: number = 0; maxLayer: number = 10; reduc: number = 3; desc(): string { return replace(t('skill.shayi.1'), [this.atkPercent, this.reduc, this.maxLayer]); } trigger(owner: BattleRole, target: BattleRole): boolean { return true; } takeEffect(owner: BattleRole, target: BattleRole): void { owner.extraAttr.baseAtk += (this.atkPercent / 100) * this.layer * owner.attr.baseAtk; } afterAtk(owner: BattleRole, target: BattleRole): void { this.layer < this.maxLayer && this.layer++; owner.battleLog(replace(t('skill.shayi.2'), [this.layer])); } onAtked(owner: BattleRole, target: BattleRole): void { if (target.crit) { this.layer -= this.reduc; this.layer < 0 && (this.layer = 0); owner.battleLog(replace(t('skill.shayi.2'), [this.reduc])); } } } //怒目 export class NuMu extends PrePassiveSkill { name: string = 'numu'; atkPercent: number = 3; layer: number = 0; maxLayer: number = 10; desc(): string { return replace(t('skill.numu.1'), [this.atkPercent, this.maxLayer]); } trigger(owner: BattleRole, target: BattleRole): boolean { return true; } takeEffect(owner: BattleRole, target: BattleRole): void { owner.extraAttr.baseAtk += (this.atkPercent / 100) * this.layer * owner.attr.baseAtk; } onAtked(owner: BattleRole, target: BattleRole): void { if (target.dmg > 0) { this.layer < this.maxLayer && this.layer++; owner.battleLog(replace(t('skill.numu.2'), [this.layer])); } } }