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.
124 lines
3.8 KiB
124 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); |
|
owner.atteckLog(replace(t('skill.tongjuefanji.2'), [t(target.type), owner.dmg])); |
|
} |
|
}
|
|
|