mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-16 13:17:32 +00:00
新增星见雅伤害计算等
1、新增星见雅面板伤害计算 2、补充星见雅技能倍率、专属音擎属性参数 3、补充折枝剑歌套装效果计算 4、补充霞落星殿音擎效果计算 5、补充伤害计算抗性区计算缺失 6、完善伤害计算防御区针对技能生效减抗 7、修改伤害计算失衡易伤区为1.0 8、删除无用重复计算 9、修正艾莲连携技倍率参数错误 10、补充角色属性map
This commit is contained in:
parent
8312fc9c56
commit
e73c0178c3
10 changed files with 325 additions and 71 deletions
|
|
@ -16,6 +16,7 @@ const skilldict = getMapData('SkillData');
|
|||
export const avatar_ability = (data, base_detail, bonus_detail) => {
|
||||
const damagelist = [];
|
||||
switch (data.id) {
|
||||
// 艾莲
|
||||
case 1191: {
|
||||
/** 处理命座加成 */
|
||||
if (data.rank >= 1) {
|
||||
|
|
@ -194,9 +195,9 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
value: damagelist6,
|
||||
};
|
||||
damagelist.push(damage6);
|
||||
logger.debug('伤害', damagelist);
|
||||
break;
|
||||
}
|
||||
// 朱鸢
|
||||
case 1241: {
|
||||
/** 处理命座加成 */
|
||||
if (data.rank >= 2) {
|
||||
|
|
@ -352,6 +353,7 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage5);
|
||||
break;
|
||||
}
|
||||
// 11号
|
||||
case 1041: {
|
||||
/** 处理命座加成 */
|
||||
if (data.rank >= 2) {
|
||||
|
|
@ -380,8 +382,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
|
||||
/** 计算伤害 */
|
||||
/** 计算普攻伤害 */
|
||||
const skill_multiplier1 = getskilllevelnum(data.id,data.skills,'A','A');
|
||||
const damagelist1 = calculate_damage(base_detail,bonus_detail,'A','A','Fire',skill_multiplier1,data.level);
|
||||
const skill_multiplier1 = getskilllevelnum(data.id, data.skills, 'A', 'A');
|
||||
const damagelist1 = calculate_damage(base_detail, bonus_detail, 'A', 'A', 'Fire', skill_multiplier1, data.level);
|
||||
const damage1 = {
|
||||
title: '普通攻击:火力镇压',
|
||||
value: damagelist1,
|
||||
|
|
@ -389,8 +391,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage1);
|
||||
|
||||
/** 计算冲刺伤害 */
|
||||
const skill_multiplier2 = getskilllevelnum(data.id,data.skills,'C','C');
|
||||
const damagelist2 = calculate_damage(base_detail,bonus_detail,'C','C','Fire',skill_multiplier2,data.level);
|
||||
const skill_multiplier2 = getskilllevelnum(data.id, data.skills, 'C', 'C');
|
||||
const damagelist2 = calculate_damage(base_detail, bonus_detail, 'C', 'C', 'Fire', skill_multiplier2, data.level);
|
||||
const damage2 = {
|
||||
title: '闪避反击:逆火',
|
||||
value: damagelist2,
|
||||
|
|
@ -398,8 +400,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage2);
|
||||
|
||||
/** 计算强化特殊技伤害 */
|
||||
const skill_multiplier3 = getskilllevelnum(data.id,data.skills,'E','E');
|
||||
let damagelist3 = calculate_damage(base_detail,bonus_detail,'E','E','Fire',skill_multiplier3,data.level);
|
||||
const skill_multiplier3 = getskilllevelnum(data.id, data.skills, 'E', 'E');
|
||||
let damagelist3 = calculate_damage(base_detail, bonus_detail, 'E', 'E', 'Fire', skill_multiplier3, data.level);
|
||||
const damage3 = {
|
||||
title: '强化特殊技:盛燃烈火',
|
||||
value: damagelist3,
|
||||
|
|
@ -407,8 +409,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage3);
|
||||
|
||||
/** 计算连携技伤害 */
|
||||
const skill_multiplier4 = getskilllevelnum(data.id,data.skills,'L','L');
|
||||
const damagelist4 = calculate_damage(base_detail,bonus_detail,'L','L','Fire',skill_multiplier4,data.level);
|
||||
const skill_multiplier4 = getskilllevelnum(data.id, data.skills, 'L', 'L');
|
||||
const damagelist4 = calculate_damage(base_detail, bonus_detail, 'L', 'L', 'Fire', skill_multiplier4, data.level);
|
||||
const damage4 = {
|
||||
title: '连携技:昂扬烈焰',
|
||||
value: damagelist4,
|
||||
|
|
@ -416,8 +418,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage4);
|
||||
|
||||
/** 计算终结技伤害 */
|
||||
const skill_multiplier5 = getskilllevelnum(data.id,data.skills,'R','R');
|
||||
const damagelist5 = calculate_damage(base_detail,bonus_detail,'R','R','Fire',skill_multiplier5,data.level);
|
||||
const skill_multiplier5 = getskilllevelnum(data.id, data.skills, 'R', 'R');
|
||||
const damagelist5 = calculate_damage(base_detail, bonus_detail, 'R', 'R', 'Fire', skill_multiplier5, data.level);
|
||||
const damage5 = {
|
||||
title: '终结技:轰鸣烈焰',
|
||||
value: damagelist5,
|
||||
|
|
@ -425,6 +427,7 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage5);
|
||||
break;
|
||||
}
|
||||
// 青衣
|
||||
case 1251: {
|
||||
/** 处理命座加成 */
|
||||
if (data.rank >= 1) {
|
||||
|
|
@ -454,7 +457,7 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
if (ImpactRatio >= 220) {
|
||||
let AttackDelta = _.get(bonus_detail, 'AttackDelta', 0);
|
||||
bonus_detail['AttackDelta'] = AttackDelta + 600;
|
||||
}else{
|
||||
} else {
|
||||
let AttackDelta = _.get(bonus_detail, 'AttackDelta', 0);
|
||||
bonus_detail['AttackDelta'] = (AttackDelta - 120) * 6;
|
||||
}
|
||||
|
|
@ -462,8 +465,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
|
||||
/** 计算伤害 */
|
||||
/** 计算普攻伤害 */
|
||||
const skill_multiplier1 = getskilllevelnum(data.id,data.skills,'A','A');
|
||||
const damagelist1 = calculate_damage(base_detail,bonus_detail,'A','A','Electric',skill_multiplier1,data.level);
|
||||
const skill_multiplier1 = getskilllevelnum(data.id, data.skills, 'A', 'A');
|
||||
const damagelist1 = calculate_damage(base_detail, bonus_detail, 'A', 'A', 'Electric', skill_multiplier1, data.level);
|
||||
const damage1 = {
|
||||
title: '普通攻击:醉花月云转',
|
||||
value: damagelist1,
|
||||
|
|
@ -471,8 +474,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage1);
|
||||
|
||||
/** 计算冲刺伤害 */
|
||||
const skill_multiplier2 = getskilllevelnum(data.id,data.skills,'C','C');
|
||||
const damagelist2 = calculate_damage(base_detail,bonus_detail,'C','C','Electric',skill_multiplier2,data.level);
|
||||
const skill_multiplier2 = getskilllevelnum(data.id, data.skills, 'C', 'C');
|
||||
const damagelist2 = calculate_damage(base_detail, bonus_detail, 'C', 'C', 'Electric', skill_multiplier2, data.level);
|
||||
const damage2 = {
|
||||
title: '闪避反击:意不尽',
|
||||
value: damagelist2,
|
||||
|
|
@ -480,8 +483,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage2);
|
||||
|
||||
/** 计算强化特殊技伤害 */
|
||||
const skill_multiplier3 = getskilllevelnum(data.id,data.skills,'E','E');
|
||||
let damagelist3 = calculate_damage(base_detail,bonus_detail,'E','E','Ether',skill_multiplier3,data.level);
|
||||
const skill_multiplier3 = getskilllevelnum(data.id, data.skills, 'E', 'E');
|
||||
let damagelist3 = calculate_damage(base_detail, bonus_detail, 'E', 'E', 'Ether', skill_multiplier3, data.level);
|
||||
const damage3 = {
|
||||
title: '强化特殊技:月上海棠',
|
||||
value: damagelist3,
|
||||
|
|
@ -489,8 +492,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage3);
|
||||
|
||||
/** 计算连携技伤害 */
|
||||
const skill_multiplier4 = getskilllevelnum(data.id,data.skills,'L','L');
|
||||
const damagelist4 = calculate_damage(base_detail,bonus_detail,'L','L','Electric',skill_multiplier4,data.level);
|
||||
const skill_multiplier4 = getskilllevelnum(data.id, data.skills, 'L', 'L');
|
||||
const damagelist4 = calculate_damage(base_detail, bonus_detail, 'L', 'L', 'Electric', skill_multiplier4, data.level);
|
||||
const damage4 = {
|
||||
title: '连携技:太平令',
|
||||
value: damagelist4,
|
||||
|
|
@ -498,8 +501,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage4);
|
||||
|
||||
/** 计算终结技伤害 */
|
||||
const skill_multiplier5 = getskilllevelnum(data.id,data.skills,'R','R');
|
||||
const damagelist5 = calculate_damage(base_detail,bonus_detail,'R','R','Electric',skill_multiplier5,data.level);
|
||||
const skill_multiplier5 = getskilllevelnum(data.id, data.skills, 'R', 'R');
|
||||
const damagelist5 = calculate_damage(base_detail, bonus_detail, 'R', 'R', 'Electric', skill_multiplier5, data.level);
|
||||
const damage5 = {
|
||||
title: '终结技:八声甘州',
|
||||
value: damagelist5,
|
||||
|
|
@ -507,6 +510,7 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage5);
|
||||
break;
|
||||
}
|
||||
// 猫又
|
||||
case 1021: {
|
||||
/** 处理命座加成 */
|
||||
if (data.rank >= 1) {
|
||||
|
|
@ -532,8 +536,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
|
||||
/** 计算伤害 */
|
||||
/** 计算普攻伤害 */
|
||||
const skill_multiplier1 = getskilllevelnum(data.id,data.skills,'A','A');
|
||||
const damagelist1 = calculate_damage(base_detail,bonus_detail,'A','A','Physical',skill_multiplier1,data.level);
|
||||
const skill_multiplier1 = getskilllevelnum(data.id, data.skills, 'A', 'A');
|
||||
const damagelist1 = calculate_damage(base_detail, bonus_detail, 'A', 'A', 'Physical', skill_multiplier1, data.level);
|
||||
const damage1 = {
|
||||
title: '普通攻击:猫猫爪刺',
|
||||
value: damagelist1,
|
||||
|
|
@ -541,8 +545,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage1);
|
||||
|
||||
/** 计算冲刺伤害 */
|
||||
const skill_multiplier2 = getskilllevelnum(data.id,data.skills,'C','C');
|
||||
const damagelist2 = calculate_damage(base_detail,bonus_detail,'C','C','Physical',skill_multiplier2,data.level);
|
||||
const skill_multiplier2 = getskilllevelnum(data.id, data.skills, 'C', 'C');
|
||||
const damagelist2 = calculate_damage(base_detail, bonus_detail, 'C', 'C', 'Physical', skill_multiplier2, data.level);
|
||||
const damage2 = {
|
||||
title: '闪避反击:虚影双刺',
|
||||
value: damagelist2,
|
||||
|
|
@ -550,8 +554,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage2);
|
||||
|
||||
/** 计算强化特殊技伤害 */
|
||||
const skill_multiplier3 = getskilllevelnum(data.id,data.skills,'E','E');
|
||||
let damagelist3 = calculate_damage(base_detail,bonus_detail,'E','E','Physical',skill_multiplier3,data.level);
|
||||
const skill_multiplier3 = getskilllevelnum(data.id, data.skills, 'E', 'E');
|
||||
let damagelist3 = calculate_damage(base_detail, bonus_detail, 'E', 'E', 'Physical', skill_multiplier3, data.level);
|
||||
const damage3 = {
|
||||
title: '强化特殊技:超~凶奇袭!',
|
||||
value: damagelist3,
|
||||
|
|
@ -559,8 +563,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage3);
|
||||
|
||||
/** 计算连携技伤害 */
|
||||
const skill_multiplier4 = getskilllevelnum(data.id,data.skills,'L','L');
|
||||
const damagelist4 = calculate_damage(base_detail,bonus_detail,'L','L','Physical',skill_multiplier4,data.level);
|
||||
const skill_multiplier4 = getskilllevelnum(data.id, data.skills, 'L', 'L');
|
||||
const damagelist4 = calculate_damage(base_detail, bonus_detail, 'L', 'L', 'Physical', skill_multiplier4, data.level);
|
||||
const damage4 = {
|
||||
title: '连携技:刃爪挥击',
|
||||
value: damagelist4,
|
||||
|
|
@ -568,8 +572,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage4);
|
||||
|
||||
/** 计算终结技伤害 */
|
||||
const skill_multiplier5 = getskilllevelnum(data.id,data.skills,'R','R');
|
||||
const damagelist5 = calculate_damage(base_detail,bonus_detail,'R','R','Physical',skill_multiplier5,data.level);
|
||||
const skill_multiplier5 = getskilllevelnum(data.id, data.skills, 'R', 'R');
|
||||
const damagelist5 = calculate_damage(base_detail, bonus_detail, 'R', 'R', 'Physical', skill_multiplier5, data.level);
|
||||
const damage5 = {
|
||||
title: '终结技:刃爪强袭',
|
||||
value: damagelist5,
|
||||
|
|
@ -577,6 +581,7 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage5);
|
||||
break;
|
||||
}
|
||||
// 安东
|
||||
case 1111: {
|
||||
/** 处理命座加成 */
|
||||
if (data.rank >= 4) {
|
||||
|
|
@ -594,12 +599,12 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
/** 获取天赋等级与加成倍率 */
|
||||
const TF = getskilllevelnum(data.id, data.skills, 'T', 'T');
|
||||
const TF2 = getskilllevelnum(data.id, data.skills, 'T', 'T2');
|
||||
|
||||
|
||||
let A_DmgAdd = _.get(bonus_detail, 'A_DmgAdd', 0);
|
||||
bonus_detail['A_DmgAdd'] = A_DmgAdd + TF2;
|
||||
let C_DmgAdd = _.get(bonus_detail, 'C_DmgAdd', 0);
|
||||
bonus_detail['C_DmgAdd'] = C_DmgAdd + TF2;
|
||||
|
||||
|
||||
let E_DmgAdd = _.get(bonus_detail, 'E_DmgAdd', 0);
|
||||
bonus_detail['E_DmgAdd'] = E_DmgAdd + TF;
|
||||
let L_DmgAdd = _.get(bonus_detail, 'L_DmgAdd', 0);
|
||||
|
|
@ -609,8 +614,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
|
||||
/** 计算伤害 */
|
||||
/** 计算普攻伤害 */
|
||||
const skill_multiplier1 = getskilllevelnum(data.id,data.skills,'A','A');
|
||||
const damagelist1 = calculate_damage(base_detail,bonus_detail,'A','A','Electric',skill_multiplier1,data.level);
|
||||
const skill_multiplier1 = getskilllevelnum(data.id, data.skills, 'A', 'A');
|
||||
const damagelist1 = calculate_damage(base_detail, bonus_detail, 'A', 'A', 'Electric', skill_multiplier1, data.level);
|
||||
const damage1 = {
|
||||
title: '普通攻击:热血上工操',
|
||||
value: damagelist1,
|
||||
|
|
@ -618,8 +623,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage1);
|
||||
|
||||
/** 计算冲刺伤害 */
|
||||
const skill_multiplier2 = getskilllevelnum(data.id,data.skills,'C','C');
|
||||
const damagelist2 = calculate_damage(base_detail,bonus_detail,'C','C','Electric',skill_multiplier2,data.level);
|
||||
const skill_multiplier2 = getskilllevelnum(data.id, data.skills, 'C', 'C');
|
||||
const damagelist2 = calculate_damage(base_detail, bonus_detail, 'C', 'C', 'Electric', skill_multiplier2, data.level);
|
||||
const damage2 = {
|
||||
title: '闪避反击:过载钻击',
|
||||
value: damagelist2,
|
||||
|
|
@ -627,8 +632,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage2);
|
||||
|
||||
/** 计算强化特殊技伤害 */
|
||||
const skill_multiplier3 = getskilllevelnum(data.id,data.skills,'E','E');
|
||||
let damagelist3 = calculate_damage(base_detail,bonus_detail,'E','E','Electric',skill_multiplier3,data.level);
|
||||
const skill_multiplier3 = getskilllevelnum(data.id, data.skills, 'E', 'E');
|
||||
let damagelist3 = calculate_damage(base_detail, bonus_detail, 'E', 'E', 'Electric', skill_multiplier3, data.level);
|
||||
const damage3 = {
|
||||
title: '特殊技:爆发钻击',
|
||||
value: damagelist3,
|
||||
|
|
@ -636,8 +641,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage3);
|
||||
|
||||
/** 计算连携技伤害 */
|
||||
const skill_multiplier4 = getskilllevelnum(data.id,data.skills,'L','L');
|
||||
const damagelist4 = calculate_damage(base_detail,bonus_detail,'L','L','Electric',skill_multiplier4,data.level);
|
||||
const skill_multiplier4 = getskilllevelnum(data.id, data.skills, 'L', 'L');
|
||||
const damagelist4 = calculate_damage(base_detail, bonus_detail, 'L', 'L', 'Electric', skill_multiplier4, data.level);
|
||||
const damage4 = {
|
||||
title: '连携技:转转转!',
|
||||
value: damagelist4,
|
||||
|
|
@ -645,8 +650,8 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage4);
|
||||
|
||||
/** 计算终结技伤害 */
|
||||
const skill_multiplier5 = getskilllevelnum(data.id,data.skills,'R','R');
|
||||
const damagelist5 = calculate_damage(base_detail,bonus_detail,'R','R','Electric',skill_multiplier5,data.level);
|
||||
const skill_multiplier5 = getskilllevelnum(data.id, data.skills, 'R', 'R');
|
||||
const damagelist5 = calculate_damage(base_detail, bonus_detail, 'R', 'R', 'Electric', skill_multiplier5, data.level);
|
||||
const damage5 = {
|
||||
title: '终结技:转转转转转!',
|
||||
value: damagelist5,
|
||||
|
|
@ -654,8 +659,128 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
|||
damagelist.push(damage5);
|
||||
break;
|
||||
}
|
||||
// 星见雅
|
||||
case 1091: {
|
||||
/** 处理命座加成 */
|
||||
if (data.rank >= 1) {
|
||||
const AUP_IgnoreDefence = _.get(bonus_detail, 'AUP_IgnoreDefence', 0)
|
||||
bonus_detail['AUP_IgnoreDefence'] = AUP_IgnoreDefence + 0.36
|
||||
}
|
||||
if (data.rank >= 2) {
|
||||
const A_DmgAdd = _.get(bonus_detail, 'A_DmgAdd', 0)
|
||||
bonus_detail['A_DmgAdd'] = A_DmgAdd + 0.30
|
||||
const C_DmgAdd = _.get(bonus_detail, 'C_DmgAdd', 0)
|
||||
bonus_detail['C_DmgAdd'] = C_DmgAdd + 0.30
|
||||
const CriticalChanceBase = _.get(bonus_detail, 'CriticalChanceBase', 0)
|
||||
bonus_detail['CriticalChanceBase'] = CriticalChanceBase + 0.15
|
||||
}
|
||||
if (data.rank >= 4) {
|
||||
const TP_DmgAdd = _.get(bonus_detail, 'TP_DmgAdd', 0)
|
||||
bonus_detail['TP_DmgAdd'] = TP_DmgAdd + 0.3
|
||||
}
|
||||
if (data.rank >= 6) {
|
||||
const AUP_DmgAdd = _.get(bonus_detail, 'AUP_DmgAdd', 0)
|
||||
bonus_detail['AUP_DmgAdd'] = AUP_DmgAdd + 0.3
|
||||
}
|
||||
|
||||
/** 处理天赋加成 */
|
||||
/** 获取天赋等级与加成倍率 */
|
||||
const AUP_DmgAdd = _.get(bonus_detail, 'AUP_DmgAdd', 0)
|
||||
bonus_detail['AUP_DmgAdd'] = AUP_DmgAdd + 0.6
|
||||
const AUP_ResistancePenetration = _.get(bonus_detail, 'AUP_ResistancePenetration', 0)
|
||||
bonus_detail['AUP_ResistancePenetration'] = AUP_ResistancePenetration + 0.3 // 紊乱无视冰抗
|
||||
const R_DmgAdd = _.get(bonus_detail, 'R_DmgAdd', 0) // 终结技30%冰伤加成
|
||||
bonus_detail['R_DmgAdd'] = R_DmgAdd + 0.3
|
||||
|
||||
logger.debug('最终bonus_detail', bonus_detail)
|
||||
/** 计算伤害 */
|
||||
/** 计算普攻伤害 */
|
||||
const A_multiplier = getskilllevelnum(data.id, data.skills, 'A', 'A')
|
||||
const A_damage = calculate_damage(base_detail, bonus_detail, 'A', 'A', 'Ice', A_multiplier, data.level)
|
||||
damagelist.push({
|
||||
title: '普通攻击:风花五段',
|
||||
value: A_damage,
|
||||
})
|
||||
|
||||
/** 计算闪避反击伤害 */
|
||||
const C_multiplier = getskilllevelnum(data.id, data.skills, 'C', 'C')
|
||||
const C_damage = calculate_damage(base_detail, bonus_detail, 'C', 'C', 'Ice', C_multiplier, data.level)
|
||||
damagelist.push({
|
||||
title: '闪避反击:寒雀',
|
||||
value: C_damage,
|
||||
})
|
||||
|
||||
/** 计算霜灼·破伤害 */
|
||||
const TP_multiplier = getskilllevelnum(data.id, data.skills, 'T', 'TP')
|
||||
const TP_damage = calculate_damage(base_detail, bonus_detail, 'TP', 'TP', 'Ice', TP_multiplier, data.level)
|
||||
damagelist.push({
|
||||
title: '霜灼·破',
|
||||
value: TP_damage,
|
||||
})
|
||||
|
||||
/** 计算蓄力攻击伤害 */
|
||||
const AUP1_multiplier = getskilllevelnum(data.id, data.skills, 'A', 'AUP1')
|
||||
const AUP1_damage = calculate_damage(base_detail, bonus_detail, 'AUP', 'AUP1', 'Ice', AUP1_multiplier, data.level)
|
||||
damagelist.push({
|
||||
title: '蓄力攻击:一段蓄',
|
||||
value: AUP1_damage,
|
||||
})
|
||||
const AUP2_multiplier = getskilllevelnum(data.id, data.skills, 'A', 'AUP2')
|
||||
const AUP2_damage = calculate_damage(base_detail, bonus_detail, 'AUP', 'AUP2', 'Ice', AUP2_multiplier, data.level)
|
||||
if (data.rank >= 6) { // 6命累加蓄力伤害
|
||||
AUP2_damage['cd'] += AUP1_damage['cd']
|
||||
AUP2_damage['qw'] += AUP1_damage['qw']
|
||||
}
|
||||
damagelist.push({
|
||||
title: '蓄力攻击:二段蓄',
|
||||
value: AUP2_damage,
|
||||
})
|
||||
const AUP3_multiplier = getskilllevelnum(data.id, data.skills, 'A', 'AUP3')
|
||||
const AUP3_damage = calculate_damage(base_detail, bonus_detail, 'AUP', 'AUP3', 'Ice', AUP3_multiplier, data.level)
|
||||
if (data.rank >= 6) {
|
||||
AUP3_damage['cd'] += AUP2_damage['cd']
|
||||
AUP3_damage['qw'] += AUP2_damage['qw']
|
||||
}
|
||||
damagelist.push({
|
||||
title: '蓄力攻击:三段蓄',
|
||||
value: AUP3_damage,
|
||||
})
|
||||
|
||||
/** 计算特殊技伤害 */
|
||||
const E_multiplier = getskilllevelnum(data.id, data.skills, 'E', 'EF')
|
||||
const E_damage = calculate_damage(base_detail, bonus_detail, 'EUP', 'EF', 'Ice', E_multiplier, data.level)
|
||||
damagelist.push({
|
||||
title: '强化特殊技:飞雪',
|
||||
value: E_damage,
|
||||
})
|
||||
|
||||
const EZ_multiplier = getskilllevelnum(data.id, data.skills, 'E', 'EF2')
|
||||
const EZ_damage = calculate_damage(base_detail, bonus_detail, 'EUP', 'EF2', 'Ice', EZ_multiplier, data.level)
|
||||
damagelist.push({
|
||||
title: '强化特殊技:飞雪(二段)',
|
||||
value: EZ_damage,
|
||||
})
|
||||
|
||||
/** 计算连携技伤害 */
|
||||
const RL_multiplier = getskilllevelnum(data.id, data.skills, 'R', 'RL')
|
||||
const RL_damage = calculate_damage(base_detail, bonus_detail, 'RL', 'RL', 'Ice', RL_multiplier, data.level)
|
||||
damagelist.push({
|
||||
title: '连携技:春临',
|
||||
value: RL_damage,
|
||||
})
|
||||
|
||||
/** 计算终结技伤害 */
|
||||
const R_multiplier = getskilllevelnum(data.id, data.skills, 'R', 'R')
|
||||
const R_damage = calculate_damage(base_detail, bonus_detail, 'R', 'R', 'Ice', R_multiplier, data.level)
|
||||
damagelist.push({
|
||||
title: '终结技:名残雪',
|
||||
value: R_damage,
|
||||
})
|
||||
break
|
||||
}
|
||||
}
|
||||
return damagelist;
|
||||
logger.debug(logger.green(data.name_mi18n + '伤害:'), damagelist)
|
||||
return damagelist
|
||||
};
|
||||
|
||||
export const getskilllevelnum = (avatarId, skills, skilltype, skillname) => {
|
||||
|
|
|
|||
|
|
@ -11,6 +11,16 @@ import { ZZZAvatarInfo } from '../avatar.js';
|
|||
*/
|
||||
export const relice_ability = (set_id, set_num, base_detail, bonus_detail) => {
|
||||
switch (set_id) {
|
||||
case '32700':
|
||||
if (set_num >= 4) {
|
||||
let CriticalDamageBase = _.get(bonus_detail, 'CriticalDamageBase', 0);
|
||||
bonus_detail['CriticalDamageBase'] = CriticalDamageBase + 0.3;
|
||||
let CriticalChanceBase = _.get(bonus_detail, 'CriticalChanceBase', 0);
|
||||
bonus_detail['CriticalChanceBase'] = CriticalChanceBase + 0.12;
|
||||
logger.debug('32700,4,CriticalDamageBase');
|
||||
logger.debug('32700,4,CriticalChanceBase');
|
||||
}
|
||||
break;
|
||||
case '31100':
|
||||
if (set_num >= 4) {
|
||||
let R_DmgAdd = _.get(bonus_detail, 'R_DmgAdd', 0);
|
||||
|
|
|
|||
|
|
@ -12,12 +12,28 @@ export const calculate_damage = (
|
|||
const merged_attr = merge_attribute(base_detail, bonus_detail);
|
||||
logger.debug('merged_attr', merged_attr);
|
||||
|
||||
logger.debug(logger.green(skill_type + `(${add_skill_type})伤害乘区计算:`));
|
||||
const attack = merged_attr.attack;
|
||||
logger.debug('攻击区', attack);
|
||||
|
||||
const defence_multiplier = get_defence_multiplier(merged_attr, level);
|
||||
logger.debug('技能倍率', skill_multiplier);
|
||||
|
||||
const defence_multiplier = get_defence_multiplier(
|
||||
merged_attr,
|
||||
level,
|
||||
skill_type,
|
||||
add_skill_type,
|
||||
);
|
||||
logger.debug('防御区', defence_multiplier);
|
||||
|
||||
const resistance_area = get_resistance_area(
|
||||
merged_attr,
|
||||
skill_type,
|
||||
add_skill_type,
|
||||
avatar_element
|
||||
);
|
||||
logger.debug('抗性区', resistance_area);
|
||||
|
||||
const injury_area = get_injury_area(
|
||||
merged_attr,
|
||||
skill_type,
|
||||
|
|
@ -57,25 +73,26 @@ export const calculate_damage = (
|
|||
attack *
|
||||
skill_multiplier *
|
||||
defence_multiplier *
|
||||
resistance_area *
|
||||
injury_area *
|
||||
damage_ratio *
|
||||
critical_damage_base *
|
||||
1.2 *
|
||||
1.5;
|
||||
1.0; // 失衡易伤不计
|
||||
const damage_qw =
|
||||
attack *
|
||||
skill_multiplier *
|
||||
defence_multiplier *
|
||||
resistance_area *
|
||||
injury_area *
|
||||
damage_ratio *
|
||||
qiwang_damage *
|
||||
1.2 *
|
||||
1.5;
|
||||
1.0;
|
||||
|
||||
const damagelist = {
|
||||
cd: damage_cd,
|
||||
qw: damage_qw,
|
||||
};
|
||||
logger.debug('最终伤害', damagelist);
|
||||
return damagelist;
|
||||
};
|
||||
|
||||
|
|
@ -152,6 +169,27 @@ export const get_damage_ratio = (
|
|||
return damage_ratio + 1;
|
||||
};
|
||||
|
||||
export const get_resistance_area = (
|
||||
merged_attr,
|
||||
skill_type,
|
||||
add_skill_type,
|
||||
avatar_element
|
||||
) => {
|
||||
let resistance_area = 1.2
|
||||
for (const attr in merged_attr) {
|
||||
if (attr.search('_ResistancePenetration') != -1) {
|
||||
const attr_name = attr.split('_ResistancePenetration')[0]
|
||||
if (
|
||||
[skill_type, add_skill_type, 'All', avatar_element].includes(attr_name)
|
||||
) {
|
||||
logger.debug(attr + '对' + attr_name + '有' + merged_attr[attr] + '减抗')
|
||||
resistance_area += merged_attr[attr]
|
||||
}
|
||||
}
|
||||
}
|
||||
return resistance_area
|
||||
}
|
||||
|
||||
export const get_injury_area = (
|
||||
merged_attr,
|
||||
skill_type,
|
||||
|
|
@ -185,13 +223,32 @@ export const get_injury_area = (
|
|||
return injury_area;
|
||||
};
|
||||
|
||||
export const get_defence_multiplier = (merged_attr, level) => {
|
||||
export const get_defence_multiplier = (
|
||||
merged_attr,
|
||||
level,
|
||||
skill_type,
|
||||
add_skill_type
|
||||
) => {
|
||||
/** 计算防御基础值 */
|
||||
const defadd = 0.155 * (level * level) + 3.12 * level + 46.95;
|
||||
/** 计算降防 */
|
||||
let ignore_defence = 1.0;
|
||||
const merged_attrkey = Object.keys(merged_attr);
|
||||
for (const attr of merged_attrkey) {
|
||||
if (attr.search('_IgnoreDefence') != -1) {
|
||||
const attr_name = attr.split('_IgnoreDefence')[0];
|
||||
if (
|
||||
[skill_type, add_skill_type, 'All'].includes(attr_name)
|
||||
) {
|
||||
logger.debug(
|
||||
attr + '对' + attr_name + '有' + merged_attr[attr] + '无视防御'
|
||||
);
|
||||
ignore_defence -= merged_attr[attr];
|
||||
}
|
||||
}
|
||||
}
|
||||
if (merged_attr.ignore_defence) {
|
||||
ignore_defence = 1 - merged_attr.ignore_defence;
|
||||
ignore_defence -= merged_attr.ignore_defence;
|
||||
}
|
||||
/** 计算穿透率 */
|
||||
let penratio = 1.0;
|
||||
|
|
@ -212,7 +269,7 @@ export const merge_attribute = (base_detail, bonus_detail) => {
|
|||
for (const merged of bonus_detailkey) {
|
||||
if (
|
||||
merged.search('Attack') != -1 ||
|
||||
merged.search('Defence') != -1 ||
|
||||
(merged.search('Defence') != -1 && merged.search('IgnoreDefence') === -1) ||
|
||||
merged.search('HP') != -1
|
||||
) {
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,14 @@ const weapon_effect = getMapData('weapon_effect');
|
|||
export const weapon_ability = (equipment, base_detail, bonus_detail) => {
|
||||
let equipid = equipment.id
|
||||
switch (equipid) {
|
||||
case 14109:{
|
||||
let CriticalDamageBase = _.get(bonus_detail, 'CriticalDamageBase', 0);
|
||||
bonus_detail['CriticalDamageBase'] = CriticalDamageBase + weapon_effect[equipment.id]['Param']['CriticalDamageBase'][equipment.star - 1];
|
||||
|
||||
let IceDmgAdd = _.get(bonus_detail, 'Ice_DmgAdd', 0);
|
||||
bonus_detail['Ice_DmgAdd'] = IceDmgAdd + weapon_effect[equipment.id]['Param']['IceDmgAdd'][equipment.star - 1];
|
||||
break;
|
||||
}
|
||||
case 14119:{
|
||||
let IceDmgAdd = _.get(bonus_detail, 'Ice_DmgAdd', 0);
|
||||
bonus_detail['Ice_DmgAdd'] = IceDmgAdd + weapon_effect[equipment.id]['Param']['IceDmgAdd'][equipment.star - 1];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue