本模组默认按“K”键查看面板,妖兽面板可进入凡修生物查询对应属性,法宝可在凡修物品查询对应属性。(在不考虑跳劈暴击以及原版护甲机制以及原版药水,默认普攻冷却条为满状态下进行攻击)
非玩家生物造成伤害结算(包含妖兽等):物伤-受击者物防+法伤-受击者物防+雷伤-受击者雷防+火伤-受击者火防+毒伤-受击者毒防=最终伤害(若生物中没有对应伤害数值则默认为0,当某一属性伤害为0时该属性伤害与该属性防御不计入该公式,非本模组生物一般仅能造成物伤)
玩家伤害造成结算:未持有法器的情况下仅能造成面板上物伤的80%,计算公式为,面板物伤*80%-受击者物防=最终伤害。持有法器的情况下计算方式较为复杂,仅有物理伤害的法器计算公式为,(面板物攻+法器物攻+法器赋能物攻伤害)*(1+物伤加成)-受击者物防=最终伤害。拥有多种属性攻击的法器计算公式极为复杂,计算公式为(面板物攻+法器物攻)+法器赋能物攻伤害)*(1+物伤加成)-受击者物防+特殊伤害=最终结算伤害。特殊伤害需要法器能造成该属性伤害大于0,即赋能或强化普攻或其他可以造成对应伤害的,才能纳入对应属性结算,若无造成对应伤害则无法纳入结算,例桃木剑不能造成雷伤,则你即使有十亿雷攻也无法从这个没有雷伤的武器打出。特殊伤害全部公式为,(0+法器法攻+法器赋能法攻伤害)*(1+法伤加成)-受击者法防,(面板雷攻+法器雷攻+法器赋能雷攻)*(1+雷伤加成)-受击者雷防,(面板火攻+法器火攻+法器赋能火攻)*(1+火攻加成)-受击者火防,(面板毒攻+法器毒攻+法器赋能毒攻)*(1+毒攻加成)-受击者毒防,玩家面板法攻目前仅能通过法宝威能释放,法宝威能计算为,法宝威能基础伤害+法宝法攻加成倍率*面板法攻-受击者法防=最终伤害。若威能伤害为非法攻则皆以此公式替换为对应的属性结算,若威能为强化普攻则将其计算为法器赋能伤害进入下一次普攻结算。
公式:
假设使用以下字母代表不同的伤害属性:
物理伤害:P 法术伤害:M 雷电伤害:E 火焰伤害:F 毒素伤害:T
受击者的防御属性:
物理防御:DP 法术防御:DM 雷电防御:DE 火焰防御:DF 毒素防御:DT
那么,根据提供的伤害结算公式,可以得到以下字母代数公式:
非玩家生物造成伤害结算: 伤害 = P - DP + M - DP + E - DE + F - DF + T - DT
玩家伤害造成结算(无法器): 伤害 = 0.8 * P - DP
玩家伤害造成结算(持有物理伤害法器): 伤害 = (P + WP + WEP) * (1 + PDM) - DP
玩家伤害造成结算(持有多属性法器): 伤害 = (P + WP) + WEP * (1 + PDM) - DP + SP
玩家法术伤害(法宝威能): 伤害 = WB + WBM * PM - DM
其中: P:面板物理伤害 M:面板法术伤害 E:面板雷电伤害 F:面板火焰伤害 T:面板毒素伤害 DP:受击者物理防御 DM:受击者法术防御 DE:受击者雷电防御 DF:受击者火焰防御 DT:受击者毒素防御 WP:法器物理伤害 WEP:法器赋能物理伤害 PDM:物理伤害加成倍率 SP:特殊伤害 WB:法宝威能基础伤害 WBM:法宝法术伤害加成倍率 PM:面板法术伤害
计算代码:
public class DamageCalculator { public static double calculateNonPlayerDamage(double P, double DP, double M, double DM, double E, double DE, double F, double DF, double T, double DT) { return P - DP + M - DM + E - DE + F - DF + T - DT; }
public static double calculatePlayerDamageWithoutArtifact(double P, double DP) {
return 0.8 * P - DP;
}
public static double calculatePlayerDamageWithPhysicalArtifact(double P, double WP, double WEP, double PDM, double DP) {
return (P + WP + WEP) * (1 + PDM) - DP;
}
public static double calculatePlayerDamageWithMultiAttributeArtifact(double P, double WP, double WEP, double PDM, double DP, double SP) {
return (P + WP) + WEP * (1 + PDM) - DP + SP;
}
public static double calculatePlayerMagicDamage(double WB, double WBM, double PM, double DM) {
return WB + WBM * PM - DM;
}
public static void main(String[] args) {
double P = 100; // 面板物理伤害
double DP = 50; // 受击者物理防御
double M = 80; // 面板法术伤害
double DM = 30; // 受击者法术防御
double E = 60; // 面板雷电伤害
double DE = 20; // 受击者雷电防御
double F = 50; // 面板火焰伤害
double DF = 25; // 受击者火焰防御
double T = 40; // 面板毒素伤害
double DT = 15; // 受击者毒素防御
double nonPlayerDamage = calculateNonPlayerDamage(P, DP, M, DM, E, DE, F, DF, T, DT);
System.out.println("非玩家生物造成的伤害:" + nonPlayerDamage);
double playerDamageWithoutArtifact = calculatePlayerDamageWithoutArtifact(P, DP);
System.out.println("玩家造成的伤害(无法器):" + playerDamageWithoutArtifact);
double WP = 20; // 法器物理伤害
double WEP = 10; // 法器赋能物理伤害
double PDM = 0.5; // 物理伤害加成倍率
double playerDamageWithPhysicalArtifact = calculatePlayerDamageWithPhysicalArtifact(P, WP, WEP, PDM, DP);
System.out.println("玩家造成的伤害(持有物理伤害法器):" + playerDamageWithPhysicalArtifact);
double SP = 30; // 特殊伤害
double playerDamageWithMultiAttributeArtifact = calculatePlayerDamageWithMultiAttributeArtifact(P, WP, WEP, PDM, DP, SP);
System.out.println("玩家造成的伤害(持有多属性法器):" + playerDamageWithMultiAttributeArtifact);
double WB = 50; // 法宝威能基础伤害
double WBM = 0.8; // 法宝法术伤害加成倍率
double PM = 70; // 面板法术伤害
double playerMagicDamage = calculatePlayerMagicDamage(WB, WBM, PM, DM);
System.out.println("玩家法术伤害(法宝威能):" + playerMagicDamage);
double HP = 200; // 受击者血量
int numHitsToKill = (int) Math.ceil(HP / nonPlayerDamage);
System.out.println("受击者血量:" + HP);
System.out.println("需要 " + numHitsToKill + " 下才能打死受击者");
}
}
注变量数值可随意更改!
资料分类: | 模组设定 |