diff --git a/game-server/app/servers/role/handler/equipHandler.ts b/game-server/app/servers/role/handler/equipHandler.ts index c7e1a1323..bd6e3d58a 100644 --- a/game-server/app/servers/role/handler/equipHandler.ts +++ b/game-server/app/servers/role/handler/equipHandler.ts @@ -356,7 +356,7 @@ export class EquipHandler { // 目标镶嵌上 let curJewel = await JewelModel.putOnOrOff(seqId, hid, ePlaceId); let { newEplace, updatedEplace } = updateEplace(oldEplace, ePlaceId, { jewel: seqId }); - await calculateCeWithHero(HERO_SYSTEM_TYPE.EQUIP_JEWEL, roleId, serverId, sid, hid, { ePlace: newEplace }, { ePlaceIds: [ePlaceId], jewels: [curJewel] }); + await calculateCeWithHero(HERO_SYSTEM_TYPE.EQUIP_JEWEL, roleId, serverId, sid, hid, { ePlace: newEplace }, { ePlaceId, jewel: curJewel }); await checkTaskInPutJewel(serverId, roleId, sid, oldEplace, newEplace, ePlaceId, originJewel, curJewel); let curHero = { @@ -384,7 +384,7 @@ export class EquipHandler { let curJewel = await JewelModel.putOnOrOff(curEquip.jewel, 0, 0); let { newEplace, updatedEplace } = updateEplace(oldEplace, ePlaceId, { jewel: 0 }); - await calculateCeWithHero(HERO_SYSTEM_TYPE.EQUIP_JEWEL, roleId, serverId, sid, hid, { ePlace: newEplace }, { ePlaceIds: [ePlaceId], jewels: [] }); + await calculateCeWithHero(HERO_SYSTEM_TYPE.EQUIP_JEWEL, roleId, serverId, sid, hid, { ePlace: newEplace }, { ePlaceId, jewel: null }); await checkTaskInPutJewel(serverId, roleId, sid, oldEplace, newEplace, ePlaceId, null, curJewel); let curHero = { diff --git a/game-server/app/services/role/calCe.ts b/game-server/app/services/role/calCe.ts index b6e1baac7..e21d1501e 100644 --- a/game-server/app/services/role/calCe.ts +++ b/game-server/app/services/role/calCe.ts @@ -246,7 +246,7 @@ export class CalCe { for(let { lv, seid } of dicHeroTalent.level) { if(level >= lv) { if(!seids.has(id)) seids.set(id, []); - seids.get(id).push(seid); + seids.get(id).push(seid, 0); } } } @@ -382,13 +382,15 @@ export class CalCe { // 神像相关 public setTeraph(teraphs: Teraph[]) { + this.data.clearRoleAttr('teraph'); let teraphOfAttrId = new Map(); for(let teraph of teraphs) { - for(let [attrId, value] of teraph.attr) { // 主属性 - addToMap(teraphOfAttrId, attrId, value); - } let dicTeraph = getTeraph(teraph.id, teraph.grade); + for(let [attrId, value] of teraph.attr) { // 主属性 + let basic = dicTeraph.basicAttrValue.get(attrId)||0; + addToMap(teraphOfAttrId, attrId, value + basic); + } for(let [attrId, value] of dicTeraph.assiAttrValue) { // 次属性 addToMap(teraphOfAttrId, attrId, value); } @@ -445,7 +447,8 @@ export class CalCe { } // console.log('effectList', JSON.stringify(effectList)); - for (let { type, gainValueArr: [ability, value] } of effectList) { + for (let { type, id, gainValueArr: [ability, value] } of effectList) { + // console.log('##### addToMap type', type, 'id', id, 'ability', ability, 'value', value) if (type == SEID_TYPE.FIX) { // 加值 addToMap(fixUp, ability, value); } else if (type == SEID_TYPE.MAIN_RATIO||type == SEID_TYPE.MAIN_RATIO_2) { // 主属性加百分比 @@ -454,7 +457,7 @@ export class CalCe { } } else if (type == SEID_TYPE.SUB_RATIO||type == SEID_TYPE.SUB_RATIO_2) { // 次级属性加百分比 if(!ABI_TYPE_MAIN.includes(ability)) { - addToMap(ratioUp, ability, value * 100); + addToMap(ratioUp, ability, value); } } diff --git a/game-server/app/services/task/taskService.ts b/game-server/app/services/task/taskService.ts index f620fcf06..040e395fd 100644 --- a/game-server/app/services/task/taskService.ts +++ b/game-server/app/services/task/taskService.ts @@ -189,9 +189,9 @@ export async function checkTaskInEquipLvUp(serverId: number, roleId: string, sid export async function checkTaskInPutJewel(serverId: number, roleId: string, sid: string, oldEplace: EPlace[], newEplace: EPlace[], ePlaceId: number, originJewel: JewelType, curJewel: JewelType) { let { oldEquip, newEquip } = getEquipById(oldEplace, newEplace, ePlaceId); let task = new CheckTask(serverId, roleId); - task.setParam(TASK_TYPE.EQUIP_PUT_JEWEL, { oldEquip, newEplace, jewels: [originJewel, curJewel ] }); + task.setParam(TASK_TYPE.EQUIP_PUT_JEWEL, { oldEquip, newEquip, jewels: [originJewel, curJewel ] }); task.setParam(TASK_TYPE.EQUIP_PUT_JEWEL_CNT, { oldEquip, newEquip }); - task.setParam(TASK_TYPE.EQUIP_JEWEL_RANDSE_CNT, { oldEquip, newEplace, jewels: [originJewel, curJewel ] }); + task.setParam(TASK_TYPE.EQUIP_JEWEL_RANDSE_CNT, { oldEquip, newEquip, jewels: [originJewel, curJewel ] }); await task.saveAndPush(sid); } @@ -202,7 +202,7 @@ export async function checkTaskInPutStone(serverId: number, roleId: string, sid: task.setParam(TASK_TYPE.EQUIP_PUT_STONE_CNT, { oldEquip, newEquip }); task.setParam(TASK_TYPE.EQUIP_STONE_CNT, { oldEquip, newEquip }); task.setParam(TASK_TYPE.EQUIP_STONE_CNT_LV, { oldEquip, newEquip }); - task.setParam(TASK_TYPE.EQUIP_JEWEL_RANDSE_CNT, { oldEquip, newEplace, jewels: [jewel ] }); + task.setParam(TASK_TYPE.EQUIP_JEWEL_RANDSE_CNT, { oldEquip, newEquip, jewels: [jewel ] }); await task.saveAndPush(sid); } diff --git a/shared/pubUtils/dictionary/DicRandomEffectPool.ts b/shared/pubUtils/dictionary/DicRandomEffectPool.ts index be62eed74..acba2f841 100644 --- a/shared/pubUtils/dictionary/DicRandomEffectPool.ts +++ b/shared/pubUtils/dictionary/DicRandomEffectPool.ts @@ -36,7 +36,7 @@ export function loadRandomEffectPool() { arr.forEach(o => { o.rate = parseRate(o.count); - o.gainValueArr = parseNumberList(o.gainvalue); + o.gainValueArr = parseNumberList(o.gainValue); dicRandomEffectPool.set(o.id, o); dicRandomEffectPoolByGroupAndLv.set(`${o.group}_${o.level}`, o.id); }); diff --git a/shared/pubUtils/dictionary/DicTeraph.ts b/shared/pubUtils/dictionary/DicTeraph.ts index d6d43aaf2..86a19a919 100644 --- a/shared/pubUtils/dictionary/DicTeraph.ts +++ b/shared/pubUtils/dictionary/DicTeraph.ts @@ -23,6 +23,7 @@ export interface DicTeraph { readonly upMaterial:Array; readonly assiAttrValue:Map; // 次级属性 + readonly basicAttrValue:Map; // 主属性 readonly upGradeMaterial:Array; } export const dicTeraph = new Map(); @@ -42,6 +43,7 @@ export function loadTeraph() { criEffect: true, upMaterial: true, assiAttrValue: true, + basicAttrValue: true, upGradeMaterial: true, } @@ -51,6 +53,7 @@ export function loadTeraph() { o.upMaterial = parseGoodStr(o.upMaterial); o.mainAttrMax = parseMainAttrMax(o); o.mainAttrUp = parseMainAttrUp(o); + o.basicAttrValue = parseBasicAttr(o); dicTeraph.set(o.index + '_' + o.grade, _.pick(o, Object.keys(DicTeraphKeys))); }); @@ -72,10 +75,10 @@ function parseAttr(str: string) { function parseMainAttrMax(elem) { let result = new Map(); - result.set(ABI_TYPE.ABI_HP, elem.hpMax); - result.set(ABI_TYPE.ABI_ATK, elem.atkMax); - result.set(ABI_TYPE.ABI_DEF, elem.defMax); - result.set(ABI_TYPE.ABI_MDEF, elem.mdefMax); + result.set(ABI_TYPE.ABI_HP, elem.hpMax - elem.hpBasis); + result.set(ABI_TYPE.ABI_ATK, elem.atkMax - elem.atkBasis); + result.set(ABI_TYPE.ABI_DEF, elem.defMax - elem.defBasis); + result.set(ABI_TYPE.ABI_MDEF, elem.mdefMax - elem.mdefBasis); return result } @@ -86,4 +89,13 @@ function parseMainAttrUp(elem) { result.set(ABI_TYPE.ABI_DEF, elem.defUp); result.set(ABI_TYPE.ABI_MDEF, elem.mdefUp); return result +} + +function parseBasicAttr(elem) { + let result = new Map(); + result.set(ABI_TYPE.ABI_HP, elem.hpBasis); + result.set(ABI_TYPE.ABI_ATK, elem.atkBasis); + result.set(ABI_TYPE.ABI_DEF, elem.defBasis); + result.set(ABI_TYPE.ABI_MDEF, elem.mdefBasis); + return result } \ No newline at end of file