From 6e7081d4be21927e7c994bb8f96a4820b766cc68 Mon Sep 17 00:00:00 2001 From: luying Date: Fri, 7 May 2021 16:57:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=98=E5=8A=9B=EF=BC=9A=E8=A3=85=E5=A4=87?= =?UTF-8?q?=E6=88=98=E5=8A=9B=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/pubUtils/playerCe.ts | 48 ++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/shared/pubUtils/playerCe.ts b/shared/pubUtils/playerCe.ts index c3e2638c4..ae1800b2d 100644 --- a/shared/pubUtils/playerCe.ts +++ b/shared/pubUtils/playerCe.ts @@ -347,24 +347,29 @@ export function calHeroStarIncAttr(originHero: HeroType, update: HeroUpdate, typ type updateCeAttr = Partial; function updateHeroAttr(heroAttrs: CeAttrData[], id: number, update: { inc?: updateCeAttr, set?: updateCeAttr }) { - let curAttr = heroAttrs.find(cur => cur.id == id); + let index = heroAttrs.findIndex(cur => cur.id == id); + let curAttr = heroAttrs[index]; if(!curAttr) { curAttr = new CeAttrData(id); heroAttrs.push(curAttr); + index = heroAttrs.length - 1; } if(update.inc) { let { base, equipUp, fixUp, ratioUp } = update.inc; - if(base) curAttr.base += base; - if(equipUp) curAttr.equipUp += equipUp; - if(fixUp) curAttr.fixUp += fixUp; - if(ratioUp) curAttr.ratioUp += ratioUp; + if(base != undefined) curAttr.base += base; + if(equipUp != undefined) curAttr.equipUp += equipUp; + if(fixUp != undefined) curAttr.fixUp += fixUp; + if(ratioUp != undefined) curAttr.ratioUp += ratioUp; } if(update.set) { let { base, equipUp, fixUp, ratioUp } = update.set; - if(base) curAttr.base = base; - if(equipUp) curAttr.equipUp = equipUp; - if(fixUp) curAttr.fixUp = fixUp; - if(ratioUp) curAttr.ratioUp = ratioUp; + if(base != undefined) curAttr.base = base; + if(equipUp != undefined) curAttr.equipUp = equipUp; + if(fixUp != undefined) curAttr.fixUp = fixUp; + if(ratioUp != undefined) curAttr.ratioUp = ratioUp; + } + if(curAttr.base <= 0 && curAttr.equipUp <=0 && curAttr.fixUp <=0 && curAttr.ratioUp <= 0) { + heroAttrs.splice(index, 1); } } @@ -685,7 +690,7 @@ export function calEquipSeids(hero: HeroType) { } } } - suits.forEach((suitId, count) => { + suits.forEach((count, suitId) => { let { effect } = gameData.suit.get(suitId); for (let e of effect) { if (count >= e.count) { @@ -703,6 +708,7 @@ export function calEquipSeids(hero: HeroType) { export function calHeroEquipIncAttr(hero: HeroType) { let { ePlace, attr: heroAttrs } = hero; + let setMap = new Map(); for (let { equip, lv, refineLv } of ePlace) { if (equip) { let e = equip; @@ -728,7 +734,7 @@ export function calHeroEquipIncAttr(hero: HeroType) { } for (let i = ABI_TYPE.ABI_HP; i < ABI_TYPE.ABI_MAX; i++) { - // console.log('***', i, attrName); + // console.log('***', i); let value1 = goodsAbility.get(i) || 0 * (HERO_CE_RATIO + e.randRange); // console.log('基础值', value1); let valueup = goodsAbilityUp.get(i) || 0; @@ -739,12 +745,22 @@ export function calHeroEquipIncAttr(hero: HeroType) { // console.log('jewel', valueJewel); let attr = (value1 + lv * valueup) * (HERO_CE_RATIO + valueRefine) + valueJewel * HERO_CE_RATIO; - if(attr > 0) { + if(attr >= 0) { // console.log('装备战力:', i, attr); - updateHeroAttr(heroAttrs, i, { set: { equipUp: attr } }) + if(setMap.has(i)) { + setMap.set(i, setMap.get(i) + attr); + } else { + setMap.set(i, attr); + } } } } + + } + + for (let i = ABI_TYPE.ABI_HP; i < ABI_TYPE.ABI_MAX; i++) { + let attr = setMap.get(i)||0; + updateHeroAttr(heroAttrs, i, { set: { equipUp: attr } }) } hero.attr = heroAttrs; @@ -782,8 +798,8 @@ export function calRestrengthenIncAttr(hero: HeroType, ePaceId: number, seids: A // 添加技能增加的被动属性 function addSeidEffect(heroAttrs: CeAttrData[], addSeidList: Array, removeSeidList: Array) { - console.log('addSeidList', addSeidList) - console.log('removeSeidList', removeSeidList) + // console.log('addSeidList', addSeidList.join()) + // console.log('removeSeidList', removeSeidList.join()) let otiginalSeidList = [ { list: addSeidList, multi: 1 }, { list: removeSeidList, multi: -1 } @@ -801,6 +817,7 @@ function addSeidEffect(heroAttrs: CeAttrData[], addSeidList: Array, remo } } + // console.log('effectList', JSON.stringify(effectList)); for (let { type, gainValueArr: [ability, value] } of effectList) { if (type == SEID_TYPE.TYPE101) { // 加值 updateHeroAttr(heroAttrs, ability, { inc: {fixUp: value * multi * HERO_CE_RATIO} }); @@ -818,7 +835,6 @@ function addSeidEffect(heroAttrs: CeAttrData[], addSeidList: Array, remo // 获取dic_zyz_se内容 function addSeid(effectList: Array, seidId: number, rand: number, seidValue = new Array()) { - // console.log('addSeidEffect', seidId, seidValue) let curSeid: DicSe | DicRandomEffectPool = gameData.se.get(seidId); if (!curSeid) curSeid = gameData.randomEffectPool.get(seidId); if (!curSeid) { console.log("seidId not found:" + seidId); return; }