|
|
|
import { SufPassiveSkill, PrePassiveSkill, PassiveSkill, CounterSkill } from './base';
|
|
|
|
import i18n from '../i18n';
|
|
|
|
import { BattleRole, callDmgPercent, replace } from '@/tool';
|
|
|
|
import { ControlBuff, CritDmgBuff, CritDmgReducBuff } from './buff';
|
|
|
|
const { t } = i18n;
|
|
|
|
|
|
|
|
//森罗万象
|
|
|
|
export class SLWX extends PrePassiveSkill {
|
|
|
|
name: string = 'SLWX';
|
|
|
|
percent: number = 30;
|
|
|
|
desc(): string {
|
|
|
|
return replace(t('skill.SLWX.1'), [this.percent]);
|
|
|
|
}
|
|
|
|
trigger(owner: BattleRole, target: BattleRole): boolean {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
takeEffect(owner: BattleRole, target: BattleRole): void {
|
|
|
|
const extra = owner.extraAttr;
|
|
|
|
extra.atkPercent += this.percent;
|
|
|
|
extra.dmgPercent = callDmgPercent(extra.dmgPercent, this.percent);
|
|
|
|
extra.crit += this.percent;
|
|
|
|
extra.critDmg += this.percent;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//金刚琢
|
|
|
|
export class JinGangZhuo extends SufPassiveSkill {
|
|
|
|
name: string = 'jinggangzhuo';
|
|
|
|
rate: number = 10;
|
|
|
|
last: number = 2;
|
|
|
|
desc(): string {
|
|
|
|
return replace(t('skill.jinggangzhuo.1'), [this.rate, this.last]);
|
|
|
|
}
|
|
|
|
trigger(owner: BattleRole, target: BattleRole): boolean {
|
|
|
|
return Math.random() < this.rate / 100;
|
|
|
|
}
|
|
|
|
takeEffect(owner: BattleRole, target: BattleRole): void {
|
|
|
|
target.putBuff(new ControlBuff(this.name, this.last));
|
|
|
|
owner.extraDmgLog(replace(t('skill.jinggangzhuo.2'), [this.last]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//奉邪
|
|
|
|
export class FengXie extends SufPassiveSkill {
|
|
|
|
name: string = 'fengxie';
|
|
|
|
critDmg: number = 50;
|
|
|
|
layer: number = 0;
|
|
|
|
maxLayer: number = 5;
|
|
|
|
desc(): string {
|
|
|
|
return replace(t('skill.fengxie.1'), [this.critDmg, this.maxLayer]);
|
|
|
|
}
|
|
|
|
trigger(owner: BattleRole, target: BattleRole): boolean {
|
|
|
|
return owner.dmg > 0;
|
|
|
|
}
|
|
|
|
takeEffect(owner: BattleRole, target: BattleRole): void {
|
|
|
|
const fengxie = new CritDmgBuff(this.name, this.critDmg, 9999, this.maxLayer);
|
|
|
|
if (owner.crit) {
|
|
|
|
owner.putBuff(fengxie);
|
|
|
|
owner.gainLog(replace(t('skill.fengxie.2'), [fengxie.layer]));
|
|
|
|
} else {
|
|
|
|
owner.attackBuff.delete(this.name);
|
|
|
|
owner.debuffLog(t('skill.fengxie.3'));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//噬忠
|
|
|
|
export class ShiZhong extends CounterSkill {
|
|
|
|
name: string = 'shizhong';
|
|
|
|
critDmgReduc: number = 50;
|
|
|
|
layer: number = 0;
|
|
|
|
maxLayer: number = 3;
|
|
|
|
desc(): string {
|
|
|
|
return replace(t('skill.shizhong.1'), [this.critDmgReduc, this.maxLayer]);
|
|
|
|
}
|
|
|
|
trigger(owner: BattleRole, target: BattleRole): boolean {
|
|
|
|
return target.crit;
|
|
|
|
}
|
|
|
|
takeEffect(owner: BattleRole, target: BattleRole): void {
|
|
|
|
const shizhong = new CritDmgReducBuff(this.name, this.critDmgReduc, 9999, this.maxLayer);
|
|
|
|
owner.putBuff(shizhong);
|
|
|
|
owner.gainLog(replace(t('skill.shizhong.2'), [shizhong.layer]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//神赏
|
|
|
|
export class ShenShang extends SufPassiveSkill {
|
|
|
|
name: string = 'shenshang';
|
|
|
|
rate: number = 20;
|
|
|
|
hp: number = 10000;
|
|
|
|
desc(): string {
|
|
|
|
return replace(t('skill.shenshang.1'), [this.rate, this.hp]);
|
|
|
|
}
|
|
|
|
trigger(owner: BattleRole, target: BattleRole): boolean {
|
|
|
|
return owner.crit && Math.random() < this.rate / 100;
|
|
|
|
}
|
|
|
|
takeEffect(owner: BattleRole, target: BattleRole): void {
|
|
|
|
owner.addHp(this.hp);
|
|
|
|
owner.gainLog(replace(t('skill.shenshang.2'), [this.hp]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//痛觉反击
|
|
|
|
export class TongJueFanJi extends CounterSkill {
|
|
|
|
name: string = 'tongjuefanji';
|
|
|
|
percent: number = 100;
|
|
|
|
desc(): string {
|
|
|
|
return replace(t('skill.tongjuefanji.1'), [this.percent]);
|
|
|
|
}
|
|
|
|
trigger(owner: BattleRole, target: BattleRole): boolean {
|
|
|
|
return target.crit;
|
|
|
|
}
|
|
|
|
takeEffect(owner: BattleRole, target: BattleRole): void {
|
|
|
|
if (!owner.action) {
|
|
|
|
const log = replace(t('skill.tongjuefanji.3'), [t(owner.type)]);
|
|
|
|
owner.debuffLog(log);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
owner.skillPercent = this.percent;
|
|
|
|
owner.callDmg(target);
|
|
|
|
target.addHp(-1 * owner.dmg);
|
|
|
|
owner.atteckLog(replace(t('skill.tongjuefanji.2'), [t(target.type), owner.dmg]));
|
|
|
|
}
|
|
|
|
}
|