新增星见雅伤害计算等

1、新增星见雅面板伤害计算
2、补充星见雅技能倍率、专属音擎属性参数
3、补充折枝剑歌套装效果计算
4、补充霞落星殿音擎效果计算
5、补充伤害计算抗性区计算缺失
6、完善伤害计算防御区针对技能生效减抗
7、修改伤害计算失衡易伤区为1.0
8、删除无用重复计算
9、修正艾莲连携技倍率参数错误
10、补充角色属性map
This commit is contained in:
UCPr 2025-01-01 21:50:46 +08:00
parent 8312fc9c56
commit e73c0178c3
10 changed files with 325 additions and 71 deletions

View file

@ -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) => {