From 70cb18122256b45b90a66b5fa83c6af241fc23ff Mon Sep 17 00:00:00 2001 From: luying Date: Tue, 6 Jul 2021 20:14:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A6=E5=B0=86=EF=BC=9A=E5=8D=87=E9=98=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/role/handler/heroHandler.ts | 8 +++----- shared/pubUtils/dictionary/DicJob.ts | 15 +++++++++------ shared/pubUtils/playerCe.ts | 6 +++--- shared/resource/jsons/dic_zyz_job.json | 2 +- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/game-server/app/servers/role/handler/heroHandler.ts b/game-server/app/servers/role/handler/heroHandler.ts index 33ec3b160..a64ae3c9c 100644 --- a/game-server/app/servers/role/handler/heroHandler.ts +++ b/game-server/app/servers/role/handler/heroHandler.ts @@ -404,7 +404,7 @@ export class HeroHandler { let dicJob = gameData.job.get(hero.job); if (!dicJob) return resResult(STATUS.DIC_DATA_NOT_FOUND); - if (hero.jobStage >= ABI_STAGE.END) + if (hero.jobStage >= dicJob.maxStage) return resResult(STATUS.HERO_JOB_STAGE_REACH_MAX_STAGE); if (hero.job >= getMaxGradeByjobClass(dicJob.job_class)) return resResult(STATUS.HERO_JOB_REACH_MAX_STAGE); @@ -434,7 +434,6 @@ export class HeroHandler { //进阶 async heroJobStageUp(msg: { hid: number }, session: BackendSession) { - console.log(JSON.stringify([...gameData.jobClassMaxGrades])) let roleId: string = session.get('roleId'); const serverId = session.get('serverId'); let sid: string = session.get('sid'); @@ -538,10 +537,9 @@ export class HeroHandler { let hero = await HeroModel.findByHidAndRole(hid, roleId); if (!hero) return resResult(STATUS.ROLE_HERO_NOT_EXISTS); - let { favourLv: oldLv, favour: oldExp } = hero; + let { favourLv: oldLv, favour: oldExp, lv } = hero; - let maxLv = gameData.maxFriendShipLv.max; // 好感度最大等级 - console.log(maxLv) + let maxLv = lv > gameData.maxFriendShipLv.max? gameData.maxFriendShipLv.max: lv; // 好感度最大等级 if (maxLv <= oldLv) return resResult(STATUS.HERO_FAVOUR_LEVEL_REACH_MAXT); diff --git a/shared/pubUtils/dictionary/DicJob.ts b/shared/pubUtils/dictionary/DicJob.ts index 69a9f0168..5d94bd40a 100644 --- a/shared/pubUtils/dictionary/DicJob.ts +++ b/shared/pubUtils/dictionary/DicJob.ts @@ -24,12 +24,14 @@ export interface DicJob { // 升阶消耗 readonly upGradeConsume: Array; // 每阶升级属性 - readonly ceAttr: Map + readonly ceAttr: Map; + // 一共有多少阶升级 + readonly maxStage: number; } type KeysEnum = { [P in keyof Required]: true }; -const DicJobKeys: KeysEnum = {jobid: true, name: true, grade: true, unlockLevel: true, job_class: true, type: true, seid: true,trainingConsume: true, upGradeConsume: true, ceAttr: true}; +const DicJobKeys: KeysEnum = {jobid: true, name: true, grade: true, unlockLevel: true, job_class: true, type: true, seid: true,trainingConsume: true, upGradeConsume: true, ceAttr: true, maxStage: true}; export const dicJob = new Map(); export const jobClassMaxGrades = new Map(); @@ -42,8 +44,9 @@ export function loadJob() { arr.forEach(o => { o.seid = parseNumberList(o.seid); o.trainingConsume = parseGoodStr(o.trainingConsume); + o.maxStage = o.trainingConsume.length; o.upGradeConsume = parseGoodStr(o.upGradeConsume); - o.ceAttr = parseCeAttr(o.attr); + o.ceAttr = parseCeAttr(o.maxStage, o.attr); dicJob.set(o.jobid, _.pick(o, Object.keys(DicJobKeys))); let jobClass = jobClassMaxGrades.get(o.job_class); if (!jobClass || jobClass.grade < o.grade) { @@ -55,12 +58,12 @@ export function loadJob() { arr = undefined; } -function parseCeAttr(str: string) { +function parseCeAttr(maxStage: number, str: string) { let result = new Map(); if (!str) return result; let decodeArr = decodeArrayListStr(str); - for (let i = 0; i < decodeArr.length; i++) { - let [id, attr] = decodeArr[i]; + for (let i = 1; i <= maxStage; i++) { + let [id, attr] = decodeArr[i]||[i.toString(), "0"]; if (isNaN(parseInt(id)) || isNaN(parseInt(attr))) { throw new Error('data table format wrong'); } diff --git a/shared/pubUtils/playerCe.ts b/shared/pubUtils/playerCe.ts index 6e7b01cc6..74f809cd9 100644 --- a/shared/pubUtils/playerCe.ts +++ b/shared/pubUtils/playerCe.ts @@ -444,16 +444,16 @@ export function calHeroTrainIncAttr(originHero: HeroType, update: HeroUpdate) { let dicJob = gameData.job.get(job); - if (dicJob.grade > 1) { + if (dicJob.grade >= 1) { let jobGradeAndClass = getJobByGradeAndClass(dicJob.job_class, dicJob.grade - 1); let lastJob = gameData.job.get(jobGradeAndClass.jobid); let targetAttrId = dicJob.ceAttr.get(jobStage).id; let inc = (dicJob.ceAttr.get(jobStage).attr - lastJob.ceAttr.get(jobStage).attr) * HERO_CE_RATIO; - updateHeroAttr(heroAttrs, targetAttrId, { inc: { fixUp: inc } }) + updateHeroAttr(heroAttrs, targetAttrId, { inc: { fixUp: inc } }); } else { let targetAttrId = dicJob.ceAttr.get(jobStage).id; let inc = dicJob.ceAttr.get(jobStage).attr * HERO_CE_RATIO; - updateHeroAttr(heroAttrs, targetAttrId, { inc: { fixUp: inc } }) + updateHeroAttr(heroAttrs, targetAttrId, { inc: { fixUp: inc } }); } return heroAttrs; } diff --git a/shared/resource/jsons/dic_zyz_job.json b/shared/resource/jsons/dic_zyz_job.json index 4b6de4a30..9ed84d1f5 100644 --- a/shared/resource/jsons/dic_zyz_job.json +++ b/shared/resource/jsons/dic_zyz_job.json @@ -1838,7 +1838,7 @@ { "jobid": 700, "name": "名医0阶", - "grade": 1, + "grade": 0, "unlockLevel": 1, "job_class": 7, "type": 2,