feat:数据统计计入1防御与1护盾减伤

This commit is contained in:
ShakeFlower 2026-02-26 21:55:10 +08:00
parent 8169653d94
commit 7f963be004
5 changed files with 40 additions and 3 deletions

View File

@ -444,6 +444,8 @@ control.prototype._initStatistics = function (totalTime) {
'extraDamage': 0,
'moveDirectly': 0,
'ignoreSteps': 0,
'oneDefEffect': 0,
'oneMdefEffect': 0,
}
}

View File

@ -407,6 +407,16 @@ enemys.prototype.getDefDamage = function (enemy, k, x, y, floorId) {
return nowDamage - nextDamage;
}
////// N魔防减伤计算 //////
enemys.prototype.getMdefDamage = function (enemy, k, x, y, floorId) {
if (typeof enemy == 'string') enemy = core.getEnemyValue(enemy, null, x, y, floorId);
k = k || 1;
const nowDamage = this._getDamage(enemy, null, x, y, floorId);
const nextDamage = this._getDamage(enemy, { "mdef": core.status.hero.mdef + k }, x, y, floorId);
if (nowDamage == null || nextDamage == null) return "???";
return nowDamage - nextDamage;
}
enemys.prototype.getEnemyInfo = function (enemy, hero, x, y, floorId) {
if (enemy == null) return null;
if (typeof enemy == 'string') enemy = core.getEnemyValue(enemy, null, x, y, floorId);

View File

@ -271,6 +271,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
"afterBattle": function (enemyId, x, y) {
// 战斗结束后触发的事件
const floorId = core.status.floorId;
var enemy = core.getEnemyValue(enemyId, null, x, y);
var special = enemy.special;
@ -308,6 +309,11 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
return;
}
const defDamage = core.enemys.getDefDamage(enemy, -1, x, y, floorId);
if (typeof defDamage === "number") core.status.hero.statistics.oneDefEffect -= defDamage;
const mdefDamage = core.enemys.getMdefDamage(enemy, -1, x, y, floorId);
if (typeof mdefDamage === "number") core.status.hero.statistics.oneMdefEffect -= mdefDamage;
// 扣减体力值并记录统计数据
core.status.hero.hp -= damage;
core.status.hero.statistics.battleDamage += damage;

View File

@ -10129,7 +10129,9 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
+ "受到的总伤害为" + core.formatBigNumber(statistics.battleDamage + statistics.poisonDamage + statistics.extraDamage)
+ ",其中战斗伤害" + core.formatBigNumber(statistics.battleDamage) + "点"
+ (core.flags.statusBarItems.indexOf('enableDebuff') >= 0 ? (",中毒伤害" + core.formatBigNumber(statistics.poisonDamage) + "点") : "")
+ ",领域/夹击/阻击/血网伤害" + core.formatBigNumber(statistics.extraDamage) + "点。";
+ ",领域/夹击/阻击/血网伤害" + core.formatBigNumber(statistics.extraDamage) + "点。\n\n"
+ "1防御累计减伤为" + core.formatBigNumber(statistics.oneDefEffect || 0)
+ ",1护盾累计减伤为" + core.formatBigNumber(statistics.oneMdefEffect || 0) + "。";
core.drawTextContent(ctx, str, {
left: 30, top: 30, color: "black", maxWidth: 360, fontSize: 14
});

21
runtime.d.ts vendored
View File

@ -198,7 +198,9 @@ type HeroStatus = {
moveDirectly: number
poisonDamage: number
start: number
totalTime: number
totalTime: number,
oneDefEffect: number,
oneMdefEffect: number,
}
[key: string]: any
}
@ -1642,6 +1644,18 @@ interface enemys {
*/
getDefDamage(enemy: string | Enemy, k?: number, x?: number, y?: number, floorId?: string): number
/**
* 计算再加若干点护盾能使某只敌人对主角的总伤害降低多少
* @example core.nextCriticals('greenSlime', 10, 0, 0, 'MT0') // 再加10点防御能使绿头怪的伤害降低多少
* @param enemy 敌人id或敌人对象
* @param k 假设主角增加的护盾,可选,默认为1
* @param x 敌人的横坐标,可选
* @param y 敌人的纵坐标,可选
* @param floorId 敌人所在的地图,可选
* @returns 总伤害的减少量
*/
getMdefDamage(enemy: string | Enemy, k?: number, x?: number, y?: number, floorId?: string): number
/**
* 获得某张地图的敌人集合,用于手册绘制
* @example core.getCurrentEnemys('MT0') // 主塔0层的敌人集合
@ -3358,7 +3372,10 @@ declare class PaginationClass extends MenuBaseClass {
type CoreMixin = {
firstData: { [x: string]: any }
/** 全塔属性开关 */flags: { [flagName: string]: boolean | number}
/** 全塔属性开关 */flags: {
statusBarItems: string[]
[flagName: string]: boolean | number
}
/** 全局数值 */values:
{
/** 全局帧动画时间 */animateSpeed: number;