From 02bf39a62db187a34f3613e960f65624cca3ebc9 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Fri, 19 Jun 2026 01:21:03 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E8=B0=83=E6=95=B4=E5=8B=87=E5=A3=AB?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages-user/data-base/src/hero/attribute.ts | 20 ++++++++++++++++-- packages-user/data-base/src/hero/types.ts | 21 ++++++++++++++----- packages-user/data-fallback/src/hero.ts | 2 +- .../data-system/src/combat/damage.ts | 4 ++-- 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/packages-user/data-base/src/hero/attribute.ts b/packages-user/data-base/src/hero/attribute.ts index ef55598..34b146e 100644 --- a/packages-user/data-base/src/hero/attribute.ts +++ b/packages-user/data-base/src/hero/attribute.ts @@ -113,12 +113,12 @@ export class HeroAttribute implements IHeroAttribute { return this.finalAttribute[name]; } - setBaseAttribute(name: K, value: THero[K]): void { + set(name: K, value: THero[K]): void { this.attribute[name] = value; this.markDirty(name); } - addBaseAttribute>( + add>( name: K, value: number ): void { @@ -126,6 +126,22 @@ export class HeroAttribute implements IHeroAttribute { this.markDirty(name); } + mul>( + name: K, + value: number + ): void { + (this.attribute[name] as number) *= value; + this.markDirty(name); + } + + div>( + name: K, + value: number + ): void { + (this.attribute[name] as number) /= value; + this.markDirty(name); + } + addModifier( name: K, modifier: IHeroModifier diff --git a/packages-user/data-base/src/hero/types.ts b/packages-user/data-base/src/hero/types.ts index e0d9895..42febfe 100644 --- a/packages-user/data-base/src/hero/types.ts +++ b/packages-user/data-base/src/hero/types.ts @@ -110,17 +110,28 @@ export interface IHeroAttribute extends IReadonlyHeroAttribute { * @param name 属性名称 * @param value 要设置为的值 */ - setBaseAttribute(name: K, value: THero[K]): void; + set(name: K, value: THero[K]): void; /** * 增减勇士属性 * @param name 属性名称 * @param value 属性增减值 */ - addBaseAttribute>( - name: K, - value: number - ): void; + add>(name: K, value: number): void; + + /** + * 将勇士属性乘以某一个值 + * @param name 属性名称 + * @param value 属性乘数 + */ + mul>(name: K, value: number): void; + + /** + * 将勇士属性除以某一个值 + * @param name 属性名称 + * @param value 属性除数 + */ + div>(name: K, value: number): void; /** * 向一个属性添加属性修饰器 diff --git a/packages-user/data-fallback/src/hero.ts b/packages-user/data-fallback/src/hero.ts index e7e609c..2c146ae 100644 --- a/packages-user/data-fallback/src/hero.ts +++ b/packages-user/data-fallback/src/hero.ts @@ -11,7 +11,7 @@ export function patchHero(state: ICoreState) { logger.warn(56, 'core.status.hero', 'state.hero'); target[p] = newValue; // @ts-expect-error 旧样板无法处理此类型 - attr.setBaseAttribute(p, newValue); + attr.set(p, newValue); return true; }, get(_, p) { diff --git a/packages-user/data-system/src/combat/damage.ts b/packages-user/data-system/src/combat/damage.ts index da168c1..d1f5b18 100644 --- a/packages-user/data-system/src/combat/damage.ts +++ b/packages-user/data-system/src/combat/damage.ts @@ -215,7 +215,7 @@ export class DamageContext implements IDamageContext< let left = currentValue; let right = upperLimit; - hero.setBaseAttribute(attribute, right as THero[typeof attribute]); + hero.set(attribute, right as THero[typeof attribute]); let targetInfo = this.calculator!.calculate(handler); if (targetInfo.damage >= referenceDamage) return null; @@ -223,7 +223,7 @@ export class DamageContext implements IDamageContext< let iter = 0; while (iter++ < maxIterations) { const middle = Math.floor((left + right) / 2); - hero.setBaseAttribute(attribute, middle as THero[typeof attribute]); + hero.set(attribute, middle as THero[typeof attribute]); const middleInfo = this.calculator!.calculate(handler); if (middleInfo.damage < referenceDamage) {