mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-16 21:27:47 +00:00
commit
da16687863
10 changed files with 325 additions and 71 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -9,3 +9,4 @@ data/**/*.*
|
||||||
|
|
||||||
resources/images/**/*.*
|
resources/images/**/*.*
|
||||||
resources/data/**/*.*
|
resources/data/**/*.*
|
||||||
|
resources/map/*.js
|
||||||
|
|
|
||||||
|
|
@ -315,22 +315,23 @@ export class ZZZAvatarInfo {
|
||||||
* set_detail: Record<string, number>;
|
* set_detail: Record<string, number>;
|
||||||
* }} */
|
* }} */
|
||||||
get damage_basic_properties() {
|
get damage_basic_properties() {
|
||||||
|
const basic_properties = this.basic_properties;
|
||||||
const base_detail = {
|
const base_detail = {
|
||||||
hp: Number(this.basic_properties.hpmax.final),
|
hp: Number(basic_properties.hpmax.final),
|
||||||
attack: Number(this.basic_properties.attack.final),
|
attack: Number(basic_properties.attack.final),
|
||||||
defence: Number(this.basic_properties.def.final),
|
defence: Number(basic_properties.def.final),
|
||||||
ImpactRatio: Number(this.basic_properties.breakstun.final),
|
ImpactRatio: Number(basic_properties.breakstun.final),
|
||||||
CriticalChanceBase:
|
CriticalChanceBase:
|
||||||
Number(this.basic_properties.crit.final.replace('%', '')) / 100,
|
Number(basic_properties.crit.final.replace('%', '')) / 100,
|
||||||
CriticalDamageBase:
|
CriticalDamageBase:
|
||||||
Number(this.basic_properties.critdam.final.replace('%', '')) / 100,
|
Number(basic_properties.critdam.final.replace('%', '')) / 100,
|
||||||
ElementAbnormalPower: Number(
|
ElementAbnormalPower: Number(
|
||||||
this.basic_properties.elementabnormalpower.final
|
basic_properties.elementabnormalpower.final
|
||||||
),
|
),
|
||||||
ElementMystery: Number(this.basic_properties.elementmystery.final),
|
ElementMystery: Number(basic_properties.elementmystery.final),
|
||||||
PenRatioBase:
|
PenRatioBase:
|
||||||
Number(this.basic_properties.penratio.final.replace('%', '')) / 100,
|
Number(basic_properties.penratio.final.replace('%', '')) / 100,
|
||||||
SpGetRatio: Number(this.basic_properties.sprecover.final),
|
SpGetRatio: Number(basic_properties.sprecover.final),
|
||||||
};
|
};
|
||||||
/** 计算伤害加成与穿透值
|
/** 计算伤害加成与穿透值
|
||||||
* 穿透值23203
|
* 穿透值23203
|
||||||
|
|
@ -378,9 +379,7 @@ export class ZZZAvatarInfo {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
/** 处理基础数据 */
|
/** 处理基础数据 */
|
||||||
let base_detail = this.damage_basic_properties.base_detail;
|
let { base_detail, bonus_detail, set_detail } = this.damage_basic_properties;
|
||||||
let bonus_detail = this.damage_basic_properties.bonus_detail;
|
|
||||||
let set_detail = this.damage_basic_properties.set_detail;
|
|
||||||
|
|
||||||
/** 处理驱动盘套装加成 */
|
/** 处理驱动盘套装加成 */
|
||||||
let set_detailkeys = Object.keys(set_detail);
|
let set_detailkeys = Object.keys(set_detail);
|
||||||
|
|
@ -394,12 +393,12 @@ export class ZZZAvatarInfo {
|
||||||
bonus_detail
|
bonus_detail
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
logger.debug('bonus_detail', bonus_detail);
|
logger.debug('+套装bonus_detail', bonus_detail);
|
||||||
|
|
||||||
/** 处理音频加成 */
|
/** 处理音频加成 */
|
||||||
if (this.weapon)
|
if (this.weapon)
|
||||||
bonus_detail = weapon_ability(this.weapon, base_detail, bonus_detail);
|
bonus_detail = weapon_ability(this.weapon, base_detail, bonus_detail);
|
||||||
logger.debug('bonus_detail', bonus_detail);
|
logger.debug('+音频bonus_detail', bonus_detail);
|
||||||
|
|
||||||
/** 处理角色加成 */
|
/** 处理角色加成 */
|
||||||
const damagelist = avatar_ability(this, base_detail, bonus_detail);
|
const damagelist = avatar_ability(this, base_detail, bonus_detail);
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ const skilldict = getMapData('SkillData');
|
||||||
export const avatar_ability = (data, base_detail, bonus_detail) => {
|
export const avatar_ability = (data, base_detail, bonus_detail) => {
|
||||||
const damagelist = [];
|
const damagelist = [];
|
||||||
switch (data.id) {
|
switch (data.id) {
|
||||||
|
// 艾莲
|
||||||
case 1191: {
|
case 1191: {
|
||||||
/** 处理命座加成 */
|
/** 处理命座加成 */
|
||||||
if (data.rank >= 1) {
|
if (data.rank >= 1) {
|
||||||
|
|
@ -194,9 +195,9 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
||||||
value: damagelist6,
|
value: damagelist6,
|
||||||
};
|
};
|
||||||
damagelist.push(damage6);
|
damagelist.push(damage6);
|
||||||
logger.debug('伤害', damagelist);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// 朱鸢
|
||||||
case 1241: {
|
case 1241: {
|
||||||
/** 处理命座加成 */
|
/** 处理命座加成 */
|
||||||
if (data.rank >= 2) {
|
if (data.rank >= 2) {
|
||||||
|
|
@ -352,6 +353,7 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
||||||
damagelist.push(damage5);
|
damagelist.push(damage5);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// 11号
|
||||||
case 1041: {
|
case 1041: {
|
||||||
/** 处理命座加成 */
|
/** 处理命座加成 */
|
||||||
if (data.rank >= 2) {
|
if (data.rank >= 2) {
|
||||||
|
|
@ -425,6 +427,7 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
||||||
damagelist.push(damage5);
|
damagelist.push(damage5);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// 青衣
|
||||||
case 1251: {
|
case 1251: {
|
||||||
/** 处理命座加成 */
|
/** 处理命座加成 */
|
||||||
if (data.rank >= 1) {
|
if (data.rank >= 1) {
|
||||||
|
|
@ -507,6 +510,7 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
||||||
damagelist.push(damage5);
|
damagelist.push(damage5);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// 猫又
|
||||||
case 1021: {
|
case 1021: {
|
||||||
/** 处理命座加成 */
|
/** 处理命座加成 */
|
||||||
if (data.rank >= 1) {
|
if (data.rank >= 1) {
|
||||||
|
|
@ -577,6 +581,7 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
||||||
damagelist.push(damage5);
|
damagelist.push(damage5);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// 安东
|
||||||
case 1111: {
|
case 1111: {
|
||||||
/** 处理命座加成 */
|
/** 处理命座加成 */
|
||||||
if (data.rank >= 4) {
|
if (data.rank >= 4) {
|
||||||
|
|
@ -654,8 +659,128 @@ export const avatar_ability = (data, base_detail, bonus_detail) => {
|
||||||
damagelist.push(damage5);
|
damagelist.push(damage5);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// 星见雅
|
||||||
|
case 1091: {
|
||||||
|
/** 处理命座加成 */
|
||||||
|
if (data.rank >= 1) {
|
||||||
|
const AUP_IgnoreDefence = _.get(bonus_detail, 'AUP_IgnoreDefence', 0)
|
||||||
|
bonus_detail['AUP_IgnoreDefence'] = AUP_IgnoreDefence + 0.36
|
||||||
}
|
}
|
||||||
return damagelist;
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logger.debug(logger.green(data.name_mi18n + '伤害:'), damagelist)
|
||||||
|
return damagelist
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getskilllevelnum = (avatarId, skills, skilltype, skillname) => {
|
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) => {
|
export const relice_ability = (set_id, set_num, base_detail, bonus_detail) => {
|
||||||
switch (set_id) {
|
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':
|
case '31100':
|
||||||
if (set_num >= 4) {
|
if (set_num >= 4) {
|
||||||
let R_DmgAdd = _.get(bonus_detail, 'R_DmgAdd', 0);
|
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);
|
const merged_attr = merge_attribute(base_detail, bonus_detail);
|
||||||
logger.debug('merged_attr', merged_attr);
|
logger.debug('merged_attr', merged_attr);
|
||||||
|
|
||||||
|
logger.debug(logger.green(skill_type + `(${add_skill_type})伤害乘区计算:`));
|
||||||
const attack = merged_attr.attack;
|
const attack = merged_attr.attack;
|
||||||
logger.debug('攻击区', 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);
|
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(
|
const injury_area = get_injury_area(
|
||||||
merged_attr,
|
merged_attr,
|
||||||
skill_type,
|
skill_type,
|
||||||
|
|
@ -57,25 +73,26 @@ export const calculate_damage = (
|
||||||
attack *
|
attack *
|
||||||
skill_multiplier *
|
skill_multiplier *
|
||||||
defence_multiplier *
|
defence_multiplier *
|
||||||
|
resistance_area *
|
||||||
injury_area *
|
injury_area *
|
||||||
damage_ratio *
|
damage_ratio *
|
||||||
critical_damage_base *
|
critical_damage_base *
|
||||||
1.2 *
|
1.0; // 失衡易伤不计
|
||||||
1.5;
|
|
||||||
const damage_qw =
|
const damage_qw =
|
||||||
attack *
|
attack *
|
||||||
skill_multiplier *
|
skill_multiplier *
|
||||||
defence_multiplier *
|
defence_multiplier *
|
||||||
|
resistance_area *
|
||||||
injury_area *
|
injury_area *
|
||||||
damage_ratio *
|
damage_ratio *
|
||||||
qiwang_damage *
|
qiwang_damage *
|
||||||
1.2 *
|
1.0;
|
||||||
1.5;
|
|
||||||
|
|
||||||
const damagelist = {
|
const damagelist = {
|
||||||
cd: damage_cd,
|
cd: damage_cd,
|
||||||
qw: damage_qw,
|
qw: damage_qw,
|
||||||
};
|
};
|
||||||
|
logger.debug('最终伤害', damagelist);
|
||||||
return damagelist;
|
return damagelist;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -152,6 +169,27 @@ export const get_damage_ratio = (
|
||||||
return damage_ratio + 1;
|
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 = (
|
export const get_injury_area = (
|
||||||
merged_attr,
|
merged_attr,
|
||||||
skill_type,
|
skill_type,
|
||||||
|
|
@ -185,13 +223,32 @@ export const get_injury_area = (
|
||||||
return 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;
|
const defadd = 0.155 * (level * level) + 3.12 * level + 46.95;
|
||||||
/** 计算降防 */
|
/** 计算降防 */
|
||||||
let ignore_defence = 1.0;
|
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) {
|
if (merged_attr.ignore_defence) {
|
||||||
ignore_defence = 1 - merged_attr.ignore_defence;
|
ignore_defence -= merged_attr.ignore_defence;
|
||||||
}
|
}
|
||||||
/** 计算穿透率 */
|
/** 计算穿透率 */
|
||||||
let penratio = 1.0;
|
let penratio = 1.0;
|
||||||
|
|
@ -212,7 +269,7 @@ export const merge_attribute = (base_detail, bonus_detail) => {
|
||||||
for (const merged of bonus_detailkey) {
|
for (const merged of bonus_detailkey) {
|
||||||
if (
|
if (
|
||||||
merged.search('Attack') != -1 ||
|
merged.search('Attack') != -1 ||
|
||||||
merged.search('Defence') != -1 ||
|
(merged.search('Defence') != -1 && merged.search('IgnoreDefence') === -1) ||
|
||||||
merged.search('HP') != -1
|
merged.search('HP') != -1
|
||||||
) {
|
) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,14 @@ const weapon_effect = getMapData('weapon_effect');
|
||||||
export const weapon_ability = (equipment, base_detail, bonus_detail) => {
|
export const weapon_ability = (equipment, base_detail, bonus_detail) => {
|
||||||
let equipid = equipment.id
|
let equipid = equipment.id
|
||||||
switch (equipid) {
|
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:{
|
case 14119:{
|
||||||
let IceDmgAdd = _.get(bonus_detail, 'Ice_DmgAdd', 0);
|
let IceDmgAdd = _.get(bonus_detail, 'Ice_DmgAdd', 0);
|
||||||
bonus_detail['Ice_DmgAdd'] = IceDmgAdd + weapon_effect[equipment.id]['Param']['IceDmgAdd'][equipment.star - 1];
|
bonus_detail['Ice_DmgAdd'] = IceDmgAdd + weapon_effect[equipment.id]['Param']['IceDmgAdd'][equipment.star - 1];
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
"1031": "Ether",
|
"1031": "Ether",
|
||||||
"1041": "Fire",
|
"1041": "Fire",
|
||||||
"1061": "Physical",
|
"1061": "Physical",
|
||||||
|
"1071": "Physical",
|
||||||
"1081": "Physical",
|
"1081": "Physical",
|
||||||
"1091": "Ice",
|
"1091": "Ice",
|
||||||
"1101": "Fire",
|
"1101": "Fire",
|
||||||
|
|
@ -13,6 +14,7 @@
|
||||||
"1141": "Ice",
|
"1141": "Ice",
|
||||||
"1151": "Fire",
|
"1151": "Fire",
|
||||||
"1161": "Electric",
|
"1161": "Electric",
|
||||||
|
"1171": "Fire",
|
||||||
"1181": "Electric",
|
"1181": "Electric",
|
||||||
"1191": "Ice",
|
"1191": "Ice",
|
||||||
"1201": "Ether",
|
"1201": "Ether",
|
||||||
|
|
@ -20,6 +22,7 @@
|
||||||
"1221": "Ether",
|
"1221": "Ether",
|
||||||
"1241": "Ether",
|
"1241": "Ether",
|
||||||
"1251": "Electric",
|
"1251": "Electric",
|
||||||
|
"1261": "Physical",
|
||||||
"1271": "Electric",
|
"1271": "Electric",
|
||||||
"1281": "Physical"
|
"1281": "Physical"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
18.908,20.627,22.346,24.065,25.784,27.503,29.222,30.941,32.66,34.379,36.098,37.817,39.536,41.255,42.974,44.693
|
18.908,20.627,22.346,24.065,25.784,27.503,29.222,30.941,32.66,34.379,36.098,37.817,39.536,41.255,42.974,44.693
|
||||||
],
|
],
|
||||||
"RL": [
|
"RL": [
|
||||||
7.946,8.669,9.392,10.115,10.838,11.561,12.284,13.007,13.73,14.453,15.176,15.898,16.622,17.345,18.068,18.791
|
7.946,8.669,9.392,10.115,10.838,11.561,12.284,13.007,13.73,14.453,15.176,15.899,16.622,17.345,18.068,18.791
|
||||||
],
|
],
|
||||||
"T": [
|
"T": [
|
||||||
0.5, 0.583, 0.666, 0.75, 0.833, 0.916, 1
|
0.5, 0.583, 0.666, 0.75, 0.833, 0.916, 1
|
||||||
|
|
@ -124,5 +124,37 @@
|
||||||
"T2": [
|
"T2": [
|
||||||
0.2, 0.233, 0.266, 0.3, 0.333, 0.366, 0.4
|
0.2, 0.233, 0.266, 0.3, 0.333, 0.366, 0.4
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"1091": {
|
||||||
|
"A": [
|
||||||
|
1.29,1.408,1.526,1.644,1.762,1.88,1.998,2.116,2.234,2.352,2.47,2.588,2.706,2.824,2.942,3.06
|
||||||
|
],
|
||||||
|
"C": [
|
||||||
|
2.459,2.683,2.907,3.131,3.355,3.579,3.803,4.027,4.251,4.475,4.699,4.923,5.147,5.371,5.595,5.819
|
||||||
|
],
|
||||||
|
"AUP1": [
|
||||||
|
4.547,4.961,5.375,5.789,6.203,6.617,7.031,7.445,7.859,8.273,8.687,9.101,9.515,9.929,10.343,10.757
|
||||||
|
],
|
||||||
|
"AUP2": [
|
||||||
|
8.581,9.362,10.143,10.924,11.705,12.486,13.267,14.048,14.829,15.61,16.391,17.172,17.953,18.734,19.515,20.296
|
||||||
|
],
|
||||||
|
"AUP3": [
|
||||||
|
21.411,23.358,25.305,27.252,29.199,31.146,33.093,35.04,36.987,38.934,40.881,42.828,44.775,46.722,48.669,50.616
|
||||||
|
],
|
||||||
|
"EF": [
|
||||||
|
3.934,4.293,4.652,5.011,5.37,5.729,6.088,6.447,6.806,7.165,7.524,7.883,8.242,8.601,8.96,9.319
|
||||||
|
],
|
||||||
|
"EF2": [
|
||||||
|
4.83,5.272,5.712,6.152,6.592,7.032,7.472,7.912,8.352,8.792,9.232,9.672,10.112,10.552,10.992,11.432
|
||||||
|
],
|
||||||
|
"R": [
|
||||||
|
23.88,26.051,28.222,30.393,32.564,34.735,36.906,39.077,41.248,43.419,45.59,47.761,49.932,52.103,54.274,56.445
|
||||||
|
],
|
||||||
|
"RL": [
|
||||||
|
6.28,6.853,7.426,7.999,8.572,9.145,9.718,10.291,10.864,11.437,12.01,12.583,13.156,13.729,14.302,14.875
|
||||||
|
],
|
||||||
|
"TP": [
|
||||||
|
7.5,8.75,10,11.25,12.5,13.75,15
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,22 @@
|
||||||
{
|
{
|
||||||
|
"14109": {
|
||||||
|
"Param": {
|
||||||
|
"CriticalDamageBase": [
|
||||||
|
0.5,
|
||||||
|
0.57,
|
||||||
|
0.65,
|
||||||
|
0.72,
|
||||||
|
0.8
|
||||||
|
],
|
||||||
|
"IceDmgAdd": [
|
||||||
|
0.2,
|
||||||
|
0.23,
|
||||||
|
0.26,
|
||||||
|
0.29,
|
||||||
|
0.32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"14119": {
|
"14119": {
|
||||||
"Param": {
|
"Param": {
|
||||||
"IceDmgAdd": [
|
"IceDmgAdd": [
|
||||||
|
|
|
||||||
|
|
@ -210,7 +210,8 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{{if charData?.damages && charData?.damages?.length}}
|
{{set damages = charData?.damages}}
|
||||||
|
{{if damages && damages?.length}}
|
||||||
<div class="title damage-title">
|
<div class="title damage-title">
|
||||||
<% include(sys.specialTitle, {en: 'DAMAGE' , cn: '伤害统计' }) %>
|
<% include(sys.specialTitle, {en: 'DAMAGE' , cn: '伤害统计' }) %>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -220,7 +221,7 @@
|
||||||
<div class="dmg-td">暴击伤害</div>
|
<div class="dmg-td">暴击伤害</div>
|
||||||
<div class="dmg-td">期望伤害</div>
|
<div class="dmg-td">期望伤害</div>
|
||||||
</div>
|
</div>
|
||||||
{{each charData.damages damage}}
|
{{each damages damage}}
|
||||||
<div class="dmg-tr">
|
<div class="dmg-tr">
|
||||||
<div class="dmg-td no-zzz-font">{{damage.title}}</div>
|
<div class="dmg-td no-zzz-font">{{damage.title}}</div>
|
||||||
<div class="dmg-td">{{damage.value.cd.toFixed(0)}}</div>
|
<div class="dmg-td">{{damage.value.cd.toFixed(0)}}</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue