Merge branch 'master' of gitlab.trgame.cn:zyztech/zyz_server
This commit is contained in:
@@ -3,7 +3,6 @@ import { index, getModelForClass, prop, DocumentType, modelOptions } from '@type
|
|||||||
import { COUNTER } from '../consts';
|
import { COUNTER } from '../consts';
|
||||||
import { CounterModel } from './Counter';
|
import { CounterModel } from './Counter';
|
||||||
import { HeroModel } from './Hero';
|
import { HeroModel } from './Hero';
|
||||||
import { CeAttrNumber } from './generalField';
|
|
||||||
|
|
||||||
export class RandSe {
|
export class RandSe {
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
@@ -70,9 +69,6 @@ export default class Equip extends BaseModel {
|
|||||||
@prop({ required: true, type: Holes, default: [] })
|
@prop({ required: true, type: Holes, default: [] })
|
||||||
holes: Holes[];
|
holes: Holes[];
|
||||||
|
|
||||||
@prop({required: true, default: new CeAttrNumber() })
|
|
||||||
ceAttr: CeAttrNumber; // 影响战力的属性
|
|
||||||
|
|
||||||
public static async findbyRole(roleId: string, lean = true) {
|
public static async findbyRole(roleId: string, lean = true) {
|
||||||
const equips: EquipType[] = await EquipModel.find({ roleId }).lean(lean);
|
const equips: EquipType[] = await EquipModel.find({ roleId }).lean(lean);
|
||||||
return equips;
|
return equips;
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ export class CeAttrData {
|
|||||||
ratioUp: number = 0;
|
ratioUp: number = 0;
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
fixUp: number = 0;
|
fixUp: number = 0;
|
||||||
|
@prop({ required: true })
|
||||||
|
equipUp: number = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class CeAttr {
|
export class CeAttr {
|
||||||
|
|||||||
@@ -38,19 +38,19 @@ export function calPlayerCe(hero: HeroType, type: number, args: Array<number>) {
|
|||||||
} else if (type == HERO_SYSTEM_TYPE.CONNECT) {
|
} else if (type == HERO_SYSTEM_TYPE.CONNECT) {
|
||||||
reIncAttr = calHeroConectIncAttr(hero, args);
|
reIncAttr = calHeroConectIncAttr(hero, args);
|
||||||
} else if (type == HERO_SYSTEM_TYPE.EQUIP) {
|
} else if (type == HERO_SYSTEM_TYPE.EQUIP) {
|
||||||
reIncAttr = calHeroEquipIncAttr(hero, args);
|
reIncAttr = calHeroEquipIncAttr(hero);
|
||||||
}
|
}
|
||||||
|
|
||||||
addSeidEffect(reIncAttr, addSeidList, removeSeidList); // 处理加值
|
addSeidEffect(reIncAttr, addSeidList, removeSeidList); // 处理加值
|
||||||
if(!hero.ceAttr) hero.ceAttr = new CeAttr();
|
if(!hero.ceAttr) hero.ceAttr = new CeAttr();
|
||||||
for (let attrName in reIncAttr) {
|
for (let attrName in reIncAttr) {
|
||||||
let originalAttrData: CeAttrData = hero.ceAttr[attrName]||new CeAttrData();
|
let originalAttrData: CeAttrData = hero.ceAttr[attrName]||new CeAttrData();
|
||||||
let oldCe = originalAttrData.fixUp * HERO_CE_RATIO + originalAttrData.base *(HERO_CE_RATIO + originalAttrData.ratioUp)
|
let oldCe = (originalAttrData.fixUp + originalAttrData.equipUp||0) * HERO_CE_RATIO + originalAttrData.base *(HERO_CE_RATIO + originalAttrData.ratioUp);
|
||||||
if(!hero.ceAttr[attrName]) hero.ceAttr[attrName] = new CeAttrData();
|
if(!hero.ceAttr[attrName]) hero.ceAttr[attrName] = new CeAttrData();
|
||||||
for (let attrKey in reIncAttr[attrName]) {
|
for (let attrKey in reIncAttr[attrName]) {
|
||||||
hero.ceAttr[attrName][attrKey] = parseInt(reIncAttr[attrName][attrKey]);
|
hero.ceAttr[attrName][attrKey] = parseInt(reIncAttr[attrName][attrKey]||0);
|
||||||
}
|
}
|
||||||
incArr[attrName] = reIncAttr[attrName].fixUp * HERO_CE_RATIO + reIncAttr[attrName].base *(HERO_CE_RATIO + reIncAttr[attrName].ratioUp) - oldCe; //计算属性
|
incArr[attrName] = (reIncAttr[attrName].fixUp + reIncAttr[attrName].equipUp||0) * HERO_CE_RATIO + reIncAttr[attrName].base *(HERO_CE_RATIO + reIncAttr[attrName].ratioUp) - oldCe; //计算属性
|
||||||
incCe += incArr[attrName] * getAttrCeRatio(attrName);
|
incCe += incArr[attrName] * getAttrCeRatio(attrName);
|
||||||
}
|
}
|
||||||
hero.ce += incCe;
|
hero.ce += incCe;
|
||||||
@@ -229,31 +229,59 @@ export function calHeroFavourUpIncAttr(hero: HeroType, args: Array<number>) {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function calHeroEquipIncAttr(hero: HeroType, args: Array<number>) {
|
export function calHeroEquipIncAttr(hero: HeroType) {
|
||||||
let res: CeAttr = {};
|
let res: CeAttr = {};
|
||||||
let {ePlace} = hero;
|
let {ePlace} = hero;
|
||||||
|
|
||||||
for(let {equip, lv, refineLv} of ePlace) {
|
for(let {equip, lv, refineLv} of ePlace) {
|
||||||
if(equip) {
|
if(equip) {
|
||||||
let e = <EquipType>equip;
|
let e = <EquipType>equip;
|
||||||
console.log(e.id, e._id);
|
|
||||||
let dicGoods = gameData.goods.get(e.id);
|
let dicGoods = gameData.goods.get(e.id);
|
||||||
let {goodsAbility, goodsAbilityUp} = dicGoods;
|
let {goodsAbility, goodsAbilityUp} = dicGoods;
|
||||||
let dicRefine = gameData.refine.get(refineLv);
|
let dicRefine = gameData.refine.get(refineLv);
|
||||||
|
|
||||||
for(let i = ABI_TYPE.ABI_HP; i < ABI_TYPE.ABI_MAX; i++) {
|
let jewel = new Map<number, number>();
|
||||||
let jewel = 0;
|
for(let {jewel: jewelId} of e.holes) {
|
||||||
for(let j = 0; j < e.holes.length; i++) {
|
if(jewelId > 0) {
|
||||||
|
let g = gameData.goods.get(jewelId);
|
||||||
|
if(g) {
|
||||||
|
let jGoods = g.goodsAbility;
|
||||||
|
jGoods.forEach((value, key) => {
|
||||||
|
if(jewel.has(key)) {
|
||||||
|
jewel.set(key, value);
|
||||||
|
} else {
|
||||||
|
jewel.set(key, jewel.get(key) + value);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(let i = ABI_TYPE.ABI_HP; i < ABI_TYPE.ABI_MAX; i++) {
|
||||||
|
if(i == ABI_TYPE.ABI_SPEED || i == ABI_TYPE.ABI_AP) continue;
|
||||||
|
let attrName = getAtrrNameById(i);
|
||||||
|
// console.log('***', i, attrName);
|
||||||
|
let value1 = goodsAbility.get(i)||0 * (HERO_CE_RATIO + e.randRange);
|
||||||
|
// console.log('基础值', value1);
|
||||||
|
let valueup = goodsAbilityUp.get(i)||0;
|
||||||
|
// console.log('成长', lv, valueup);
|
||||||
|
let valueRefine = dicRefine?dicRefine.upPercent:0;
|
||||||
|
// console.log('refine', dicRefine?dicRefine.upPercent:0 );
|
||||||
|
let valueJewel = jewel.get(i)||0;
|
||||||
|
// console.log('jewel', valueJewel);
|
||||||
|
let attr = (value1 + lv * valueup) * ( HERO_CE_RATIO + valueRefine) + valueJewel * HERO_CE_RATIO;
|
||||||
|
|
||||||
|
|
||||||
|
let originalCe = hero.ceAttr[attrName].equipUp||0;
|
||||||
|
|
||||||
|
if(attr != originalCe) {
|
||||||
|
console.log('装备战力:', attr, originalCe);
|
||||||
|
|
||||||
|
res[attrName] = {fixUp: hero.ceAttr[attrName].fixUp, base: hero.ceAttr[attrName].base, ratioUp: hero.ceAttr[attrName].ratioUp, equipUp: originalCe};
|
||||||
|
console.log(attr, originalCe)
|
||||||
|
res[attrName].equipUp += attr * HERO_CE_RATIO - originalCe;
|
||||||
}
|
}
|
||||||
let attr = (goodsAbility.get(i) + lv * goodsAbilityUp.get(i)) * ( 1 + dicRefine.upPercent);
|
|
||||||
|
|
||||||
console.log(jewel, attr, args);
|
|
||||||
}
|
}
|
||||||
// 基础属性
|
|
||||||
// 装备栏强化
|
|
||||||
// 精炼
|
|
||||||
// 宝石
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
|
|||||||
Reference in New Issue
Block a user