mirror of
https://github.com/motajs/template.git
synced 2026-07-17 09:21:09 +08:00
Compare commits
2 Commits
3c0d8cc138
...
d60000d16f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d60000d16f | ||
| 02bf39a62d |
@ -113,12 +113,12 @@ export class HeroAttribute<THero> implements IHeroAttribute<THero> {
|
||||
return this.finalAttribute[name];
|
||||
}
|
||||
|
||||
setBaseAttribute<K extends keyof THero>(name: K, value: THero[K]): void {
|
||||
set<K extends keyof THero>(name: K, value: THero[K]): void {
|
||||
this.attribute[name] = value;
|
||||
this.markDirty(name);
|
||||
}
|
||||
|
||||
addBaseAttribute<K extends keyof SelectType<THero, number>>(
|
||||
add<K extends keyof SelectType<THero, number>>(
|
||||
name: K,
|
||||
value: number
|
||||
): void {
|
||||
@ -126,6 +126,22 @@ export class HeroAttribute<THero> implements IHeroAttribute<THero> {
|
||||
this.markDirty(name);
|
||||
}
|
||||
|
||||
mul<K extends keyof SelectType<THero, number>>(
|
||||
name: K,
|
||||
value: number
|
||||
): void {
|
||||
(this.attribute[name] as number) *= value;
|
||||
this.markDirty(name);
|
||||
}
|
||||
|
||||
div<K extends keyof SelectType<THero, number>>(
|
||||
name: K,
|
||||
value: number
|
||||
): void {
|
||||
(this.attribute[name] as number) /= value;
|
||||
this.markDirty(name);
|
||||
}
|
||||
|
||||
addModifier<K extends keyof THero>(
|
||||
name: K,
|
||||
modifier: IHeroModifier<THero[K], unknown>
|
||||
|
||||
@ -110,17 +110,28 @@ export interface IHeroAttribute<THero> extends IReadonlyHeroAttribute<THero> {
|
||||
* @param name 属性名称
|
||||
* @param value 要设置为的值
|
||||
*/
|
||||
setBaseAttribute<K extends keyof THero>(name: K, value: THero[K]): void;
|
||||
set<K extends keyof THero>(name: K, value: THero[K]): void;
|
||||
|
||||
/**
|
||||
* 增减勇士属性
|
||||
* @param name 属性名称
|
||||
* @param value 属性增减值
|
||||
*/
|
||||
addBaseAttribute<K extends SelectKey<THero, number>>(
|
||||
name: K,
|
||||
value: number
|
||||
): void;
|
||||
add<K extends SelectKey<THero, number>>(name: K, value: number): void;
|
||||
|
||||
/**
|
||||
* 将勇士属性乘以某一个值
|
||||
* @param name 属性名称
|
||||
* @param value 属性乘数
|
||||
*/
|
||||
mul<K extends SelectKey<THero, number>>(name: K, value: number): void;
|
||||
|
||||
/**
|
||||
* 将勇士属性除以某一个值
|
||||
* @param name 属性名称
|
||||
* @param value 属性除数
|
||||
*/
|
||||
div<K extends SelectKey<THero, number>>(name: K, value: number): void;
|
||||
|
||||
/**
|
||||
* 向一个属性添加属性修饰器
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -215,7 +215,7 @@ export class DamageContext<TEnemy, THero> 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<TEnemy, THero> 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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user