@@ -81,6 +81,16 @@ export class Attribute {
|
||||
@prop({ required: false })
|
||||
damageCri: number = 0;
|
||||
@prop({ required: false })
|
||||
pDamageInc: number = 0;
|
||||
@prop({ required: false })
|
||||
mDamageInc: number = 0;
|
||||
@prop({ required: false })
|
||||
pDamageDec: number = 0;
|
||||
@prop({ required: false })
|
||||
mDemageDec: number = 0;
|
||||
@prop({ required: false })
|
||||
strikeBack: number = 0;
|
||||
@prop({ required: false })
|
||||
ce?: number = 0;
|
||||
|
||||
setByDbData(roleAttrs: CeAttrDataRole[], heroAttrs: CeAttrData[]) {
|
||||
@@ -118,6 +128,17 @@ export class Attribute {
|
||||
}
|
||||
}
|
||||
|
||||
setByMap( attributes: Map<number, number>, ratio: number = 1 ) {
|
||||
for(let [id, val] of attributes) {
|
||||
let attrName = getAtrrNameById(id);
|
||||
if(ABI_TYPE_MAIN.includes(id)) {
|
||||
if(attrName in this) this[attrName] = Math.floor(val * ratio * HERO_CE_RATIO * HERO_CE_RATIO);
|
||||
} else {
|
||||
if(attrName in this) this[attrName] = Math.floor(val * HERO_CE_RATIO * HERO_CE_RATIO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private calAttrValue(roleFix: number = 0, roleRatio: number = 0, heroBase: number = 0, heroFix: number = 0, heroRatio: number = 0, heroEquip: number = 0) {
|
||||
return (heroFix + heroEquip + roleFix) * HERO_CE_RATIO + heroBase * ( HERO_CE_RATIO + heroRatio + roleRatio );
|
||||
}
|
||||
@@ -131,7 +152,12 @@ export class Attribute {
|
||||
damageIncrease: this.damageIncrease / HERO_SUB_ATTR_RATIO / HERO_CE_RATIO / HERO_CE_RATIO,
|
||||
damageDecrease: this.damageDecrease / HERO_SUB_ATTR_RATIO / HERO_CE_RATIO / HERO_CE_RATIO,
|
||||
defIngnore: this.defIngnore / HERO_SUB_ATTR_RATIO / HERO_CE_RATIO / HERO_CE_RATIO,
|
||||
damageCri: this.damageCri / HERO_SUB_ATTR_RATIO / HERO_CE_RATIO / HERO_CE_RATIO
|
||||
damageCri: this.damageCri / HERO_SUB_ATTR_RATIO / HERO_CE_RATIO / HERO_CE_RATIO,
|
||||
pDamageInc: this.pDamageInc / HERO_SUB_ATTR_RATIO / HERO_CE_RATIO / HERO_CE_RATIO,
|
||||
mDamageInc: this.mDamageInc / HERO_SUB_ATTR_RATIO / HERO_CE_RATIO / HERO_CE_RATIO,
|
||||
pDamageDec: this.pDamageDec / HERO_SUB_ATTR_RATIO / HERO_CE_RATIO / HERO_CE_RATIO,
|
||||
mDemageDec: this.mDemageDec / HERO_SUB_ATTR_RATIO / HERO_CE_RATIO / HERO_CE_RATIO,
|
||||
strikeBack: this.strikeBack / HERO_SUB_ATTR_RATIO / HERO_CE_RATIO / HERO_CE_RATIO
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,6 +187,11 @@ export class Attribute {
|
||||
newAttr.bloodSuck = reduceCe(this.bloodSuck);
|
||||
newAttr.ap = reduceCe(this.ap);
|
||||
newAttr.damageCri = reduceCe(this.damageCri);
|
||||
newAttr.pDamageInc = reduceCe(this.pDamageInc);
|
||||
newAttr.mDamageInc = reduceCe(this.mDamageInc);
|
||||
newAttr.pDamageDec = reduceCe(this.pDamageDec);
|
||||
newAttr.mDemageDec = reduceCe(this.mDemageDec);
|
||||
newAttr.strikeBack = reduceCe(this.strikeBack);
|
||||
return newAttr;
|
||||
}
|
||||
|
||||
@@ -189,6 +220,12 @@ export class Attribute {
|
||||
return ce > 0? ce: 1;
|
||||
}
|
||||
|
||||
// 计算未装备的装备的简易战力公式
|
||||
public calEquipCe() {
|
||||
let { hp, atk, def, mdef } = this.getRealMainAttr();
|
||||
return hp * 1 + atk * 3 + def * 2 + mdef * 2;
|
||||
}
|
||||
|
||||
public calCelAndReduce() {
|
||||
return Math.floor(this.calCe() / HERO_CE_RATIO / HERO_CE_RATIO);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user