一个全随机的刷装备小游戏
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
3.8 KiB

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 owner.dmg > 0 && 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);
2 months ago
owner.atteckLog(replace(t('skill.tongjuefanji.2'), [t(target.type), owner.dmg]));
}
}