mirror of
https://github.com/motajs/template.git
synced 2026-08-15 05:08:58 +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];
|
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.attribute[name] = value;
|
||||||
this.markDirty(name);
|
this.markDirty(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
addBaseAttribute<K extends keyof SelectType<THero, number>>(
|
add<K extends keyof SelectType<THero, number>>(
|
||||||
name: K,
|
name: K,
|
||||||
value: number
|
value: number
|
||||||
): void {
|
): void {
|
||||||
@ -126,6 +126,22 @@ export class HeroAttribute<THero> implements IHeroAttribute<THero> {
|
|||||||
this.markDirty(name);
|
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>(
|
addModifier<K extends keyof THero>(
|
||||||
name: K,
|
name: K,
|
||||||
modifier: IHeroModifier<THero[K], unknown>
|
modifier: IHeroModifier<THero[K], unknown>
|
||||||
|
|||||||
@ -110,17 +110,28 @@ export interface IHeroAttribute<THero> extends IReadonlyHeroAttribute<THero> {
|
|||||||
* @param name 属性名称
|
* @param name 属性名称
|
||||||
* @param value 要设置为的值
|
* @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 name 属性名称
|
||||||
* @param value 属性增减值
|
* @param value 属性增减值
|
||||||
*/
|
*/
|
||||||
addBaseAttribute<K extends SelectKey<THero, number>>(
|
add<K extends SelectKey<THero, number>>(name: K, value: number): void;
|
||||||
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');
|
logger.warn(56, 'core.status.hero', 'state.hero');
|
||||||
target[p] = newValue;
|
target[p] = newValue;
|
||||||
// @ts-expect-error 旧样板无法处理此类型
|
// @ts-expect-error 旧样板无法处理此类型
|
||||||
attr.setBaseAttribute(p, newValue);
|
attr.set(p, newValue);
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
get(_, p) {
|
get(_, p) {
|
||||||
|
|||||||
@ -215,7 +215,7 @@ export class DamageContext<TEnemy, THero> implements IDamageContext<
|
|||||||
let left = currentValue;
|
let left = currentValue;
|
||||||
let right = upperLimit;
|
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);
|
let targetInfo = this.calculator!.calculate(handler);
|
||||||
if (targetInfo.damage >= referenceDamage) return null;
|
if (targetInfo.damage >= referenceDamage) return null;
|
||||||
@ -223,7 +223,7 @@ export class DamageContext<TEnemy, THero> implements IDamageContext<
|
|||||||
let iter = 0;
|
let iter = 0;
|
||||||
while (iter++ < maxIterations) {
|
while (iter++ < maxIterations) {
|
||||||
const middle = Math.floor((left + right) / 2);
|
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);
|
const middleInfo = this.calculator!.calculate(handler);
|
||||||
|
|
||||||
if (middleInfo.damage < referenceDamage) {
|
if (middleInfo.damage < referenceDamage) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user