From eb4b370533a0fe4bcf0d17f4da23f2ed4cd932f6 Mon Sep 17 00:00:00 2001 From: pan Date: Thu, 13 Aug 2026 11:09:37 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E5=87=BB?= =?UTF-8?q?=E9=80=80=E6=9C=BA=E5=88=B6=EF=BC=8C=E5=B0=86=E6=A6=82=E7=8E=87?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E8=B7=9D=E7=A6=BB=E5=A2=9E=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 调整近战默认攻击距离从150改为100 2. 将击退相关属性从概率改为击退距离增量,同步更新所有配置、UI显示和技能描述 3. 移除旧的击退概率判定逻辑,改为直接应用击退距离增量 4. 优化受击击退的处理流程,统一参数传递 --- assets/script/game/common/config/BuffSet.ts | 4 +- assets/script/game/common/config/GameSet.ts | 1 - assets/script/game/common/config/HeroAttrs.ts | 2 +- assets/script/game/common/config/ICardSet.ts | 2 +- .../script/game/common/config/SkillDescSet.ts | 2 +- assets/script/game/common/config/SkillSet.ts | 8 +- assets/script/game/common/config/heroSet.ts | 6 +- assets/script/game/hero/Hero.ts | 2 +- assets/script/game/hero/HeroAtkSystem.ts | 19 ++-- assets/script/game/hero/HeroAttrsComp.ts | 6 +- assets/script/game/hero/HeroViewComp.ts | 5 +- assets/script/game/hero/Mon.ts | 2 +- assets/script/game/hero/MoveComp.ts | 101 +----------------- assets/script/game/map/HeroMoreCom.ts | 9 +- 14 files changed, 34 insertions(+), 135 deletions(-) diff --git a/assets/script/game/common/config/BuffSet.ts b/assets/script/game/common/config/BuffSet.ts index a1fdbab3..0c3a40a4 100644 --- a/assets/script/game/common/config/BuffSet.ts +++ b/assets/script/game/common/config/BuffSet.ts @@ -104,12 +104,12 @@ export const BuffList: Record = { modifiers: [{ attr: Attrs.critical, op: ModOp.Flat, value: 30 }], info: "暴击率提升 30%,持续 5 秒", }, - // 击退概率强化(限时) + // 击退距离强化(限时) 7013: { id: 7013, name: "击退爆发", icon: "Stat_Stun_01", category: BuffCategory.Buff, duration: 5, max_stack: 1, modifiers: [{ attr: Attrs.knockback_chance, op: ModOp.Flat, value: 30 }], - info: "击退概率提升 30%,持续 5 秒", + info: "击退距离提升 30,持续 5 秒", }, // 穿透强化(限时) 7014: { diff --git a/assets/script/game/common/config/GameSet.ts b/assets/script/game/common/config/GameSet.ts index fbb35314..72825a1d 100644 --- a/assets/script/game/common/config/GameSet.ts +++ b/assets/script/game/common/config/GameSet.ts @@ -39,7 +39,6 @@ export enum FightSet { // BACK_RANG=30,//后退范围 BACK_RANG = 30,//后退范围 FiIGHT_TIME = 30,//战斗时间 - // BACK_CHANCE=40,//击退概率 FROST_TIME = 3,//冰冻时间 STUN_TIME = 2,//击晕时间 SKILL_CAST_DELAY = 0.15, diff --git a/assets/script/game/common/config/HeroAttrs.ts b/assets/script/game/common/config/HeroAttrs.ts index 15cfb12c..c6278a5f 100644 --- a/assets/script/game/common/config/HeroAttrs.ts +++ b/assets/script/game/common/config/HeroAttrs.ts @@ -31,7 +31,7 @@ export enum Attrs { freeze_res = "freeze_res", // 冰冻抗性 stun_chance = "stun_chance", // 击晕概率 stun_res = "stun_res", // 击晕抗性 - knockback_chance = "knockback_chance", // 击退概率 + knockback_chance = "knockback_chance", // 击退强化(原击退概率,现转换为击退距离增量) knockback_distance = "knockback_distance", // 击退距离强化 knockback_res = "knockback_res", // 击退抗性 invincible_time = "invincible_time",// 无敌时间 diff --git a/assets/script/game/common/config/ICardSet.ts b/assets/script/game/common/config/ICardSet.ts index b59f0033..e58c111a 100644 --- a/assets/script/game/common/config/ICardSet.ts +++ b/assets/script/game/common/config/ICardSet.ts @@ -38,7 +38,7 @@ const ItemCardData: ItemCardRaw[] = [ // ==================== 计时性强化(统一 5s) ==================== { uuid: 9102, skill: 6503, icon: "Sub_Item-FA_WP_Sub_Potion_001_Red", name: "攻击药水", info: "全体友方攻击力提升", cost: 0, weight: 15 }, { uuid: 9103, skill: 6504, icon: "Sub_Item-FA_WP_Sub_Potion_001_Yellow", name: "暴击药水", info: "全体友方暴击率提升", cost: 0, weight: 15 }, - { uuid: 9104, skill: 6505, icon: "Sub_Item-FA_WP_Sub_Potion_001_Purple", name: "击退药水", info: "全体友方击退概率提升", cost: 0, weight: 12 }, + { uuid: 9104, skill: 6505, icon: "Sub_Item-FA_WP_Sub_Potion_001_Purple", name: "击退药水", info: "全体友方击退距离提升", cost: 0, weight: 12 }, { uuid: 9105, skill: 6506, icon: "Sub_Item-FA_WP_Sub_Potion_001_Blue", name: "穿透药水", info: "全体友方穿透概率提升", cost: 0, weight: 12 }, { uuid: 9106, skill: 6507, icon: "Sub_Item-FA_WP_Sub_Potion_001_Red", name: "攻速药水", info: "全体友方攻击速度提升", cost: 0, weight: 15 }, { uuid: 9107, skill: 6508, icon: "Sub_Item-FA_WP_Sub_Potion_001_Purple", name: "风怒药水", info: "全体友方风怒概率提升", cost: 0, weight: 12 }, diff --git a/assets/script/game/common/config/SkillDescSet.ts b/assets/script/game/common/config/SkillDescSet.ts index 157044cd..f57ebf41 100644 --- a/assets/script/game/common/config/SkillDescSet.ts +++ b/assets/script/game/common/config/SkillDescSet.ts @@ -221,7 +221,7 @@ export const SkillDescSet: Record = { templTimed: "{target}{verb}{value}{unit},持续{dur}秒", }, 6505: { - verb: "击退概率提升", unit: "%", permField: "ap", timedField: "buff_value", + verb: "击退距离提升", unit: "", permField: "ap", timedField: "buff_value", templPerm: "{target}{verb}{value}{unit}", templTimed: "{target}{verb}{value}{unit},持续{dur}秒", }, diff --git a/assets/script/game/common/config/SkillSet.ts b/assets/script/game/common/config/SkillSet.ts index 4ce0407d..f3ee6bd9 100644 --- a/assets/script/game/common/config/SkillSet.ts +++ b/assets/script/game/common/config/SkillSet.ts @@ -1,4 +1,4 @@ -// ========== 从 HeroAttrs.ts 导入属性相关定义 ========== +// ========== 从 HeroAttrs.ts 导入属性相关定义 ========== import { Attrs } from "./HeroAttrs"; export enum HSSet { @@ -152,7 +152,7 @@ export interface SkillConfig { crt?: number, // 额外暴击率 frz?: number, // 额外冰冻概率 stun?: number, // 额外击晕概率 - bck?: number, // 额外击退概率 + bck?: number, // 额外击退强化(击退距离增量) buff_type?: Attrs, // Buff 类型 (单一职责) timed_buff_id?: number, // 计时性 buff 配置 id(指向 BuffList),存在时走 buffManager 而非永久 add_* buff_value?: number, // 覆写计时 buff 的修饰数值(modifiers.value / tick.damage_or_heal),由药水卡自定义档位 @@ -363,7 +363,7 @@ export const SkillSet: Record = { 6406: { uuid: 6406, name: "击退强化", sp_name: "buff_wind", icon: "Stat_Stun_01", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk", DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support, - RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_chance, timed_buff_id: 7013, info: "全体友方击退概率限时提升, 持续5秒", + RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_chance, timed_buff_id: 7013, info: "全体友方击退距离限时提升, 持续5秒", }, 6407: { uuid: 6407, name: "距推强化", sp_name: "buff_wind", icon: "Stat_Stun_01", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk", @@ -416,7 +416,7 @@ export const SkillSet: Record = { 6505: { uuid: 6505, name: "击退爆发", sp_name: "buff_wind", icon: "Stat_Stun_01", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk", DTType: DTType.single, kind: SkillKind.Support, ap: 0, hit_count: 3, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support, - RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_chance, timed_buff_id: 7013, info: "全体友方击退概率提升30%, 持续5秒", + RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_chance, timed_buff_id: 7013, info: "全体友方击退距离提升30, 持续5秒", }, 6506: { uuid: 6506, name: "穿透爆发", sp_name: "buff_wind", icon: "Stat_Tripleshot", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk", diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index d409fa44..508d9259 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -85,9 +85,9 @@ export const FormationPointX = { [HType.Long]: 100, } as const; -/** 各攻击定位的默认攻击距离(像素):近战150 / 中程300 / 远程450;英雄配置了 dis 时优先取配置值 */ +/** 各攻击定位的默认攻击距离(像素):近战100 / 中程300 / 远程450;英雄配置了 dis 时优先取配置值 */ export const HeroDisVal: Record = { - [HType.Melee]: 150, + [HType.Melee]: 100, [HType.Mid]: 300, [HType.Long]: 450, } @@ -1161,7 +1161,9 @@ function calcSupportEffectValue(config: SkillConfig, apEff: number, cd: number, return (value / 100) * (apEff / cd) * 0.05 * weights.W_DPS_PER_SEC * seconds; case Attrs.stun_chance: case Attrs.freeze_chance: + return value * weights.W_control; case Attrs.knockback_chance: + // 击退强化已改为击退距离增量,按距离价值折算 return value * weights.W_control; case Attrs.speed: return (value / 100) * (apEff / cd) * weights.W_DPS_PER_SEC * seconds; diff --git a/assets/script/game/hero/Hero.ts b/assets/script/game/hero/Hero.ts index d253589d..943446ca 100644 --- a/assets/script/game/hero/Hero.ts +++ b/assets/script/game/hero/Hero.ts @@ -122,7 +122,7 @@ export class Hero extends ecs.Entity { model.grow_type = hero.grow_type; model.role = hero.role; model.fac = FacSet.HERO; - // 攻击距离:配置优先;未配置按攻击定位取默认值(近战150 / 中程300 / 远程450) + // 攻击距离:配置优先;未配置按攻击定位取默认值(近战100 / 中程300 / 远程450) model.dis = hero.dis ?? HeroDisVal[hero.type as HType.Melee | HType.Mid | HType.Long]; model.posIndex = posIndex; if (posIndex >= 0) { diff --git a/assets/script/game/hero/HeroAtkSystem.ts b/assets/script/game/hero/HeroAtkSystem.ts index fe85d1ac..95ddd118 100644 --- a/assets/script/game/hero/HeroAtkSystem.ts +++ b/assets/script/game/hero/HeroAtkSystem.ts @@ -175,11 +175,6 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda TAttrsComp.atked_count++; this.checkAndTriggerAtkedSkills(TAttrsComp, targetView); - // 受击者产生击退效果 - // if (damage > 0 && targetView) { - // targetView.back(); - // } - mLogger.log(this.debugMode, 'HeroAtkSystem', ` 英雄${TAttrsComp.hero_name} (uuid: ${TAttrsComp.hero_uuid}) 受到 eid:${casterEid} 的 伤害 ${damage},${isCrit ? "暴击" : "普通"}攻击,技能ID ${damageEvent.s_uuid}`); // 冰冻判定 @@ -190,13 +185,14 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda const stunChance = (damageEvent.Attrs[Attrs.stun_chance] || 0) - TAttrsComp.getFinalStunRes(); const isStun = !TAttrsComp.isStun() && this.checkChance(stunChance); - // 击退判定 - const knockbackChance = (damageEvent.Attrs[Attrs.knockback_chance] || 0) - (TAttrsComp.knockback_res || 0); - const isKnockback = this.checkChance(knockbackChance); + // 击退:受击默认后退,击退属性不再作为概率,而是转换为后退距离的增量 + // 击退增量 = 施法者击退强化(原击退概率)- 被攻击者击退抗性 + 击退距离强化 + const knockbackBonus = (damageEvent.Attrs[Attrs.knockback_chance] || 0) - (TAttrsComp.getFinalKnockbackRes() || 0); + const knockbackExtra = Math.max(0, knockbackBonus + (damageEvent.Attrs[Attrs.knockback_distance] || 0)); // ✅ 触发视图层表现(伤害数字、受击动画、冰冻、击晕、击退) if (targetView) { - targetView.do_atked(damage, isCrit, damageEvent.s_uuid, false); + targetView.do_atked(damage, isCrit, damageEvent.s_uuid, knockbackExtra); targetView.playEnd(skillConf.endAnm); if (isFrost) { TAttrsComp.toFrost(); @@ -212,9 +208,6 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda smc.vmdata.scores.stun_count++; } } - if (isKnockback) { - targetView.back(damageEvent.Attrs[Attrs.knockback_distance] || 0); - } } @@ -395,7 +388,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda * 用于所有概率相关的判定: * - 暴击率判定 * - 闪避率判定 - * - 击退概率判定 + * - 冰冻/击晕概率判定 * - 其他特殊效果概率 * * @param rate 概率值(0-100的百分比) diff --git a/assets/script/game/hero/HeroAttrsComp.ts b/assets/script/game/hero/HeroAttrsComp.ts index a40557fc..624ed3b4 100644 --- a/assets/script/game/hero/HeroAttrsComp.ts +++ b/assets/script/game/hero/HeroAttrsComp.ts @@ -82,9 +82,9 @@ export class HeroAttrsComp extends ecs.Comp { freeze_res: number = 0; // 冰冻抗性 stun_chance: number = 0; // 击晕概率 stun_res: number = 0; // 击晕抗性 - knockback_chance: number = 0; // 击退概率 + knockback_chance: number = 0; // 击退强化(原击退概率,现转换为击退距离增量) knockback_distance: number = 0; // 击退距离强化 - knockback_res: number = 0; // 击退抗性 + knockback_res: number = 0; // 击退抗性(削减击退距离增量) crit_damage: number = 0; // 额外暴击伤害 puncture_chance: number = 0; // 穿透概率 puncture_dmg_bonus: number = 0; // 穿透后伤害增量(百分点,乘算加成) @@ -449,7 +449,7 @@ export class HeroAttrsComp extends ecs.Comp { return base + mods.flatSum + mods.pctSum; } - /** 最终击退概率 = 基础击退 + 限时修饰(加法模型) */ + /** 最终击退强化 = 基础击退强化 + 限时修饰(加法模型,转换为击退距离增量) */ public getFinalKnockbackChance(): number { const mods = this.aggregateTimedMods(Attrs.knockback_chance); return this.knockback_chance + mods.flatSum + mods.pctSum; diff --git a/assets/script/game/hero/HeroViewComp.ts b/assets/script/game/hero/HeroViewComp.ts index a1950a5e..2a94b293 100644 --- a/assets/script/game/hero/HeroViewComp.ts +++ b/assets/script/game/hero/HeroViewComp.ts @@ -525,7 +525,8 @@ export class HeroViewComp extends CCComp { }) .start(); } - do_atked(damage: number, isCrit: boolean, s_uuid: number, isBack: boolean = false) { + /** 受击表现(伤害数字、受击动画、击退) */ + do_atked(damage: number, isCrit: boolean, s_uuid: number, knockbackExtra: number = 0) { // 受到攻击时更新最后更新时间 this.activateTopBar(); this.lastBarUpdateTime = Date.now() / 1000; @@ -542,7 +543,7 @@ export class HeroViewComp extends CCComp { // 视图层表现 let SConf = SkillSet[s_uuid] const hitAnm = SConf?.DAnm || "atked"; - if (isBack) this.back() + this.back(knockbackExtra) this.in_atked(hitAnm, this.model.fac == FacSet.HERO ? 1 : -1); this.showDamage(damage, isCrit); } diff --git a/assets/script/game/hero/Mon.ts b/assets/script/game/hero/Mon.ts index 492c2fd7..c2da950b 100644 --- a/assets/script/game/hero/Mon.ts +++ b/assets/script/game/hero/Mon.ts @@ -174,7 +174,7 @@ export class Monster extends ecs.Entity { model.speed = hero.speed ?? 800; model.type = hero.type; model.fac = FacSet.MON; - // 攻击距离:配置优先;未配置按攻击定位取默认值(近战150 / 中程300 / 远程450) + // 攻击距离:配置优先;未配置按攻击定位取默认值(近战100 / 中程300 / 远程450) model.dis = hero.dis ?? HeroDisVal[hero.type as HType.Melee | HType.Mid | HType.Long]; model.posIndex = laneIndex; if (laneIndex >= 0) { diff --git a/assets/script/game/hero/MoveComp.ts b/assets/script/game/hero/MoveComp.ts index bdfc6cbf..3da80f12 100644 --- a/assets/script/game/hero/MoveComp.ts +++ b/assets/script/game/hero/MoveComp.ts @@ -136,14 +136,9 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate return dist <= attackRange; } - /** 同阵营横向最小间距,防止停止移动时完全重叠 */ - private static readonly ALLY_MIN_GAP_X = 10; - /** 挤位时的蠕动幅度(像素) */ - private static readonly JOSTLE_AMPLITUDE = 2; - /** * 战斗位移:向最近敌人推进,进入攻击范围后停止。 - * 推进无上限限制,可穿越队友;停止移动后受同阵营最小间距约束。 + * 推进无上限限制,但击退/位移受阵营后退边界保护。 */ private processCombatLogic(_e: ecs.Entity, move: MoveComp, view: HeroViewComp, model: HeroAttrsComp, enemy: HeroViewComp) { const selfX = view.node.position.x; @@ -160,10 +155,8 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate if (view.status === "move") { view.status_change("idle"); } - /** 停止时若与队友重叠,则向后微调保持最小间距,并加入蠕动避免死板 */ - this.adjustSpacingWhenIdle(_e, view, move, model); } else { - /** 未接触:向敌人方向推进(可穿越队友,但同点时后来者稍停) */ + /** 未接触:向敌人方向推进 */ model.is_atking = false; const dir = enemyX > selfX ? 1 : -1; move.direction = dir; @@ -171,9 +164,6 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate const delta = speed * this.dt * dir; let newX = selfX + delta; - /** 推进时若与队友同点,后来者稍停避让 */ - newX = this.adjustSpacingWhileMoving(_e, view, move, model, newX, dir); - /** 后退边界钳制:防止被击退/位移推出屏幕 */ newX = this.clampByFacBoundary(newX, model.fac); @@ -184,93 +174,6 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate } } - /** - * 推进时的间距避让。 - * Why: 允许穿越队友,但若与队友完全同点(重叠),后来者稍停一拍, - * 避免视觉上的"穿模"过于生硬,营造"挤过去"的自然感。 - * @returns 调整后的目标 X(被阻挡时返回 selfX,即本帧不移动) - */ - private adjustSpacingWhileMoving(self: ecs.Entity, view: HeroViewComp, selfMove: MoveComp, model: HeroAttrsComp, targetX: number, _dir: number): number { - const selfX = view.node.position.x; - const selfY = view.node.position.y; - - let blocked = false; - ecs.query(this.getHeroViewMatcher()).forEach(e => { - if (e === self) return; - const attrs = e.get(HeroAttrsComp); - const v = e.get(HeroViewComp); - const mv = e.get(MoveComp); - if (!attrs || !v?.node || !mv) return; - if (attrs.is_dead || attrs.is_reviving) return; - if (attrs.fac !== model.fac) return; - if (Math.abs(v.node.position.y - selfY) > 30) return; - - const otherX = v.node.position.x; - /** 同点判定:间距小于最小间距的一半视为完全重叠 */ - if (Math.abs(selfX - otherX) < MoveSystem.ALLY_MIN_GAP_X * 0.5) { - /** spawnOrder 大者(后来者)被阻挡 */ - if (selfMove.spawnOrder > mv.spawnOrder) { - blocked = true; - } - } - }); - - return blocked ? selfX : targetX; - } - - /** - * 停止移动时的间距微调 + 蠕动效果。 - * Why: 允许推进时穿越队友,但进入攻击范围停下后若与队友重叠, - * 则向后微调保持 ALLY_MIN_GAP_X 间距,避免视觉完全重叠。 - * 同时加入基于时间的随机蠕动,营造"挤到前方攻击"的生动感。 - * Y 轴不变,仅约束 X。 - * 优先级:spawnOrder 小者(先出生)不动,大者向后让位。 - */ - private adjustSpacingWhenIdle(self: ecs.Entity, view: HeroViewComp, selfMove: MoveComp, model: HeroAttrsComp): void { - const selfX = view.node.position.x; - const selfY = view.node.position.y; - let adjustX = selfX; - let isCrowded = false; - - ecs.query(this.getHeroViewMatcher()).forEach(e => { - if (e === self) return; - const attrs = e.get(HeroAttrsComp); - const v = e.get(HeroViewComp); - const mv = e.get(MoveComp); - if (!attrs || !v?.node || !mv) return; - if (attrs.is_dead || attrs.is_reviving) return; - if (attrs.fac !== model.fac) return; - /** 只约束同排(Y 差在阈值内)的队友 */ - if (Math.abs(v.node.position.y - selfY) > 30) return; - - const otherX = v.node.position.x; - const gap = Math.abs(adjustX - otherX); - if (gap >= MoveSystem.ALLY_MIN_GAP_X) return; - - isCrowded = true; - /** spawnOrder 小者不动,大者向后让位 */ - if (selfMove.spawnOrder > mv.spawnOrder) { - /** 自己靠后:向远离对方的方向后退到最小间距处 */ - const dir = adjustX >= otherX ? 1 : -1; - adjustX = otherX + dir * MoveSystem.ALLY_MIN_GAP_X; - } - }); - - /** 拥挤时加入蠕动:基于时间+出生序的伪随机偏移,避免多个单位同步抖动 */ - if (isCrowded) { - const time = Date.now() / 1000; - const jostlePhase = time * 3 + selfMove.spawnOrder * 0.7; // 不同单位错开相位 - const jostleOffset = Math.sin(jostlePhase) * MoveSystem.JOSTLE_AMPLITUDE; - adjustX += jostleOffset; - } - - if (Math.abs(adjustX - selfX) >= 0.01) { - /** 后退边界钳制 */ - adjustX = this.clampByFacBoundary(adjustX, model.fac); - view.node.setPosition(adjustX, view.node.position.y, 0); - } - } - /** * 按阵营裁剪 X 坐标,防止被击退/位移推出屏幕。 * HERO 后退不越过 BoxSet.LETF_END;MON 后退不越过 BoxSet.RIGHT_END。 diff --git a/assets/script/game/map/HeroMoreCom.ts b/assets/script/game/map/HeroMoreCom.ts index 62214193..95d43741 100644 --- a/assets/script/game/map/HeroMoreCom.ts +++ b/assets/script/game/map/HeroMoreCom.ts @@ -61,10 +61,10 @@ export class HeroMoreCom extends Component { /** 冰冻率附加值 */ @property(Label) private freeze_plus_label: Label = null; - /** 击退率总值(百分点) */ + /** 击退强化总值(击退距离增量) */ @property(Label) private knockback_all_label: Label = null; - /** 击退率附加值 */ + /** 击退强化附加值 */ @property(Label) private knockback_plus_label: Label = null; /** 穿透率总值(百分点) */ @@ -177,12 +177,13 @@ export class HeroMoreCom extends Component { const finalCritDmg = this.model.getFinalCritDamage(); this.setStatRow(this.crit_dmg_all_label, this.crit_dmg_plus_label, finalCritDmg, finalCritDmg - (this.model.crit_damage ?? 0), "%"); - // ---- 冰冻率 / 击退率 / 穿透率 / 风怒率(百分点) ---- + // ---- 冰冻率 / 击退强化 / 穿透率 / 风怒率 ---- const finalFreeze = this.model.getFinalFreezeChance(); this.setStatRow(this.freeze_all_label, this.freeze_plus_label, finalFreeze, finalFreeze - (this.model.freeze_chance ?? 0), "%"); + // 击退强化已改为击退距离增量,不再按百分比显示 const finalKnockback = this.model.getFinalKnockbackChance(); - this.setStatRow(this.knockback_all_label, this.knockback_plus_label, finalKnockback, finalKnockback - (this.model.knockback_chance ?? 0), "%"); + this.setStatRow(this.knockback_all_label, this.knockback_plus_label, finalKnockback, finalKnockback - (this.model.knockback_chance ?? 0), ""); const finalPuncture = this.model.getFinalPunctureChance(); this.setStatRow(this.puncture_all_label, this.puncture_plus_label, finalPuncture, finalPuncture - (this.model.puncture_chance ?? 0), "%");