|
|
|
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 = 10;
|
|
|
|
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 = 3000;
|
|
|
|
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.3'), [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.3'), [this.layer]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|