|
|
|
import { SufPassiveSkill, PrePassiveSkill, PassiveSkill, CounterSkill } from './base';
|
|
|
|
import i18n from '../i18n';
|
|
|
|
import { BattleRole, callDmgPercent, replace } from '@/tool';
|
|
|
|
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.control = target.control > this.last ? target.control : this.last;
|
|
|
|
owner.battleLog(replace(t('skill.jinggangzhuo.2'), [this.last]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//奉邪
|
|
|
|
export class FengXie extends PassiveSkill {
|
|
|
|
name: string = 'fengxie';
|
|
|
|
critDmg: number = 50;
|
|
|
|
layer: number = 0;
|
|
|
|
maxLayer: number = 5;
|
|
|
|
desc(): string {
|
|
|
|
return replace(t('skill.fengxie.1'), [this.critDmg, this.maxLayer]);
|
|
|
|
}
|
|
|
|
beforeAtk(owner: BattleRole, target: BattleRole): void {
|
|
|
|
this.takeEffect(owner, target);
|
|
|
|
}
|
|
|
|
trigger(owner: BattleRole, target: BattleRole): boolean {
|
|
|
|
return owner.crit;
|
|
|
|
}
|
|
|
|
takeEffect(owner: BattleRole, target: BattleRole): void {
|
|
|
|
owner.extraAttr.critDmg = this.critDmg * this.layer;
|
|
|
|
}
|
|
|
|
afterAtk(owner: BattleRole, target: BattleRole): void {
|
|
|
|
if (this.trigger(owner, target)) {
|
|
|
|
this.layer < this.maxLayer && this.layer++;
|
|
|
|
owner.battleLog(replace(t('skill.fengxie.2'), [this.layer]));
|
|
|
|
} else {
|
|
|
|
this.layer = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//噬忠
|
|
|
|
export class ShiZhong extends PassiveSkill {
|
|
|
|
name: string = 'shizhong';
|
|
|
|
critDmgReduc: number = 50;
|
|
|
|
layer: number = 0;
|
|
|
|
maxLayer: number = 3;
|
|
|
|
desc(): string {
|
|
|
|
return replace(t('skill.shizhong.1'), [this.critDmgReduc, this.maxLayer]);
|
|
|
|
}
|
|
|
|
beforeAtk(owner: BattleRole, target: BattleRole): void {
|
|
|
|
this.takeEffect(owner, target);
|
|
|
|
}
|
|
|
|
trigger(owner: BattleRole, target: BattleRole): boolean {
|
|
|
|
return target.crit;
|
|
|
|
}
|
|
|
|
takeEffect(owner: BattleRole, target: BattleRole): void {
|
|
|
|
owner.extraAttr.critDmgReduc = this.critDmgReduc * this.layer;
|
|
|
|
}
|
|
|
|
onAtked(owner: BattleRole, target: BattleRole): void {
|
|
|
|
if (this.trigger(owner, target)) {
|
|
|
|
this.layer < this.maxLayer && this.layer++;
|
|
|
|
owner.battleLog(replace(t('skill.shizhong.2'), [this.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.battleLog(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.control > 0) {
|
|
|
|
const log = replace(t('skill.control.3'), [t(owner.type), owner.control]);
|
|
|
|
owner.battleLog(log);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
owner.skillPercent = this.percent;
|
|
|
|
owner.callDmg(target);
|
|
|
|
target.addHp(-1 * owner.dmg);
|
|
|
|
owner.battleLog(replace(t('skill.tongjuefanji.2'), [owner.dmg]));
|
|
|
|
}
|
|
|
|
}
|