战力:替换新方法

This commit is contained in:
陆莹
2022-03-26 19:19:51 +08:00
parent 68e4d2232d
commit f35af70adc
18 changed files with 1294 additions and 1249 deletions

View File

@@ -1,7 +1,6 @@
import { Application, BackendSession, ChannelService, HandlerService, } from 'pinus';
import { handleCost, addItems, unlockFigure, getCoinObject, getGoldObject } from '../../../services/role/rewardService';
import { calPlayerCeAndSave, calAllHeroCe } from '../../../services/playerCeService';
import { resResult, deepCopy, reduceCe, parseGoodStr } from '../../../pubUtils/util';
import { resResult, deepCopy, parseGoodStr } from '../../../pubUtils/util';
import { STATUS } from '../../../consts/statusCode';
import { HeroModel, Connect, HeroSkin, HeroUpdate, EPlace, Talent } from '../../../db/Hero';
import { CURRENCY_BY_TYPE, CURRENCY_TYPE, CONSUME_TYPE, HERO_GROW_MAX, HERO_SYSTEM_TYPE, ABI_STAGE, DEBUG_MAGIC_WORD, HERO_INITIAL_QUALITY, REDIS_KEY, TASK_TYPE, ITEM_CHANGE_REASON } from '../../../consts';
@@ -23,6 +22,7 @@ import { HERO, REBORN } from '../../../pubUtils/dicParam';
import { createHero, createHeroes } from '../../../services/role/createHero';
import { CheckMeterial } from '../../../services/role/checkMaterial';
import { HeroParam } from '../../../domain/roleField/hero';
import { calculateCe } from '../../../services/playerCeService';
export default function (app: Application) {
new HandlerService(app, {});
@@ -127,15 +127,11 @@ export class HeroHandler {
consumes: addConsumeToHero(hero.consumes, material)
}
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.LVUP, sid, roleId, hero, update);
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.LVUP, roleId, serverId, sid, update, {}, { hid });
// 任务
await checkTask(serverId, roleId, sid, TASK_TYPE.HERO_LV, { oldLv, hero });
const curHero = {
hid, lv: hero.lv, exp: hero.exp
}
return resResult(STATUS.SUCCESS, { curHero, cost: material });
await checkTask(serverId, roleId, sid, TASK_TYPE.HERO_LV, { oldLv, hero: curHero });
return resResult(STATUS.SUCCESS, { curHero: pick(curHero, ['hid', 'lv', 'exp']), cost: material });
}
@@ -191,21 +187,12 @@ export class HeroHandler {
consumes: addConsumeToHero(hero.consumes, consumes)
}
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.STAR, sid, roleId, hero, update);
if (isUpStar) {
await calAllHeroCe(HERO_SYSTEM_TYPE.STAR, sid, roleId, {}, [hid, isUpStar ? 1 : 0]); // 升星可能影响到百家学院全局加成
// 任务
await checkTaskInHeroStarUp(serverId, roleId, sid, hero, oldStar);
}
const curHero = {
hid,
star: hero.star,
starStage: hero.starStage,
colorStar: hero.colorStar,
colorStarStage: hero.colorStarStage
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.STAR, roleId, serverId, sid, update, {}, { hid, hero, isUpStar });
if (isUpStar) {
await checkTaskInHeroStarUp(serverId, roleId, sid, curHero, oldStar); // 任务
}
return resResult(STATUS.SUCCESS, { isUpStar, curHero });
return resResult(STATUS.SUCCESS, { isUpStar, curHero: pick(curHero, ['hid', 'star', 'starStage', 'colorStar', 'colorStarStage']) });
}
// 武将升品
@@ -248,16 +235,11 @@ export class HeroHandler {
quality: hero.quality + 1,
consumes: addConsumeToHero(hero.consumes, material)
}
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.QUALITY, sid, roleId, hero, update);
await calAllHeroCe(HERO_SYSTEM_TYPE.QUALITY, sid, roleId, {}, [hid, 0]); // 升品可能影响到百家学院全局加成
await checkTaskInHeroQUalityUp(serverId, roleId, sid, hero);
const curHero = {
hid,
quality: hero.quality
}
pushHeroQualityUpMsg(roleId, roleName, serverId, hero);
return resResult(STATUS.SUCCESS, { curHero });
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.QUALITY, roleId, serverId, sid, update, {}, { hid, hero });
await checkTaskInHeroQUalityUp(serverId, roleId, sid, curHero);
pushHeroQualityUpMsg(roleId, roleName, serverId, curHero);
return resResult(STATUS.SUCCESS, { curHero: pick(curHero, ['hid', 'quality']) });
}
// 武将觉醒
@@ -319,25 +301,13 @@ export class HeroHandler {
consumes: addConsumeToHero(hero.consumes, consumes)
}
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.COLORSTAR, sid, roleId, hero, update);
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.COLORSTAR, roleId, serverId, sid, update, {}, { hid, hero, isUpStar });
if (isUpStar) {
await calAllHeroCe(HERO_SYSTEM_TYPE.COLORSTAR, sid, roleId, {}, [hid, isUpStar ? 1 : 0]); // 升星可能影响到百家学院全局加成
// 任务
await checkTaskInHeroWakeUp(serverId, roleId, sid, hero, oldColorStar);
await checkTaskInHeroWakeUp(serverId, roleId, sid, curHero, oldColorStar); // 任务
}
const curHero = {
hid,
quality: hero.quality,
star: hero.star,
starStage: hero.starStage,
colorStar: hero.colorStar,
colorStarStage: hero.colorStarStage
}
if (isWakeUp) pushHeroWakeUp(roleId, roleName, serverId, hero); // 第一次觉醒
pushHeroStarMax(roleId, roleName, serverId, hero);
return resResult(STATUS.SUCCESS, { isUpStar, curHero });
if (isWakeUp) pushHeroWakeUp(roleId, roleName, serverId, curHero); // 第一次觉醒
pushHeroStarMax(roleId, roleName, serverId, curHero);
return resResult(STATUS.SUCCESS, { isUpStar, curHero: pick(curHero, ['hid', 'quality', 'star', 'starStage', 'colorStar', 'colorStarStage']) });
}
//训练
@@ -383,11 +353,9 @@ export class HeroHandler {
jobStage: newJobStage,
consumes: addConsumeToHero(hero.consumes, consumes)
}
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.TRAIN, sid, roleId, hero, update);
// 任务
await checkTaskInHeroTrain(serverId, roleId, sid, hero, trainCount);
return resResult(STATUS.SUCCESS, { curHero: { hid: hero.hid, job: hero.job, jobStage: hero.jobStage } });
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.TRAIN, roleId, serverId, sid, update, {}, { hid, hero });
await checkTaskInHeroTrain(serverId, roleId, sid, curHero, trainCount); // 任务
return resResult(STATUS.SUCCESS, { curHero: pick(curHero, ['hid', 'job', 'jobStage'])});
}
//进阶
@@ -420,11 +388,10 @@ export class HeroHandler {
jobStage: 0,
consumes: addConsumeToHero(hero.consumes, consumes)
}
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.STAGEUP, sid, roleId, hero, update);
// 任务
await checkTask(serverId, roleId, sid, TASK_TYPE.HERO_STAGE_UP, { hero, stageUpCnt: 1 })
const heroResult = new HeroParam(hero);
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.STAGEUP, roleId, serverId, sid, update, {}, { hid, hero });
await checkTask(serverId, roleId, sid, TASK_TYPE.HERO_STAGE_UP, { hero: curHero, stageUpCnt: 1 }); // 任务
const heroResult = new HeroParam(curHero);
return resResult(STATUS.SUCCESS, { curHero: {...pick(heroResult, ['hid', 'job', 'jobStage', 'totalTalentPoint']) }});
}
@@ -477,11 +444,10 @@ export class HeroHandler {
consumes: addConsumeToHero(hero.consumes, consumes)
}
//重算战力并下发
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.CONNECT, sid, roleId, hero, update, [shipId]);
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.CONNECT, roleId, serverId, sid, update, {}, { hid: hero.hid, shipId });
// 任务
await checkTask(serverId, roleId, sid, TASK_TYPE.HERO_CONNECT, { connectLv: level })
return resResult(STATUS.SUCCESS, { curHero: { hid: hero.hid, connections: hero.connections } });
return resResult(STATUS.SUCCESS, { curHero: pick(curHero, ['hid', 'connections']) });
}
//赠送(包括一键赠送)
@@ -554,17 +520,23 @@ export class HeroHandler {
consumes: updateConsume
}
//重算战力并下发
if (oldLv != newLv) {
await unlockFigure(sid, roleId, [{ type: FIGURE_UNLOCK_CONDITION.HERO_FAVOR, paramHid: hero.hid, paramFavourLv: hero.favourLv }]);
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.FAVOUR, sid, roleId, hero, update, [oldLv]);
let isFavourLvUp = oldLv == newLv;
// //重算战力并下发
// if (oldLv != newLv) {
// await unlockFigure(sid, roleId, [{ type: FIGURE_UNLOCK_CONDITION.HERO_FAVOR, paramHid: hero.hid, paramFavourLv: hero.favourLv }]);
// hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.FAVOUR, sid, roleId, hero, update, [oldLv]);
// 任务
await checkTask(serverId, roleId, sid, TASK_TYPE.HERO_FAVOUR_LV, { hero, oldFavourLv: oldLv });
} else {
hero = await HeroModel.updateHeroInfo(roleId, hero.hid, update);
// // 任务
// await checkTask(serverId, roleId, sid, TASK_TYPE.HERO_FAVOUR_LV, { hero, oldFavourLv: oldLv });
// } else {
// hero = await HeroModel.updateHeroInfo(roleId, hero.hid, update);
// }
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.FAVOUR, roleId, serverId, sid, update, {}, { hid: hero.hid, isFavourLvUp });
if(isFavourLvUp) {
await unlockFigure(sid, roleId, [{ type: FIGURE_UNLOCK_CONDITION.HERO_FAVOR, paramHid: curHero.hid, paramFavourLv: curHero.favourLv }]);
await checkTask(serverId, roleId, sid, TASK_TYPE.HERO_FAVOUR_LV, { hero: curHero, oldFavourLv: oldLv }); // 任务
}
return resResult(STATUS.SUCCESS, { curHero: { hid: hero.hid, favour: hero.favour, favourLv: hero.favourLv, cost: material } });
return resResult(STATUS.SUCCESS, { curHero: { ...pick(curHero, ['hid', 'favour', 'favourLv']), cost: material } });
}
//穿带时装
@@ -613,9 +585,14 @@ export class HeroHandler {
}
let { newEplace } = updateEplaces(oldEplace, eplaceIds);
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.SKIN, sid, roleId, hero, { skins: newHeroSkins, skinId: dicSkin.heroId, job: dicNewJob.jobid, ePlace: newEplace });
let resultHero = new HeroParam(hero);
let update = {
skins: newHeroSkins,
skinId: dicSkin.heroId,
job: dicNewJob.jobid,
ePlace: newEplace
}
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.SKIN, roleId, serverId, sid, update, {}, { hid: hero.hid });
let resultHero = new HeroParam(curHero);
return resResult(STATUS.SUCCESS, { curHero: {...pick(resultHero, ['hid', 'skins', 'skinId', 'job', 'talent', 'usedTalentPoint']), ePlace: newEplace }});
}
@@ -634,6 +611,7 @@ export class HeroHandler {
let roleId: string = session.get('roleId');
let roleName: string = session.get('roleName');
let sid: string = session.get('sid');
let serverId: number = session.get('serverId');
let { hid } = msg;
if(!isNumber(hid) && !hid) return resResult(STATUS.WRONG_PARMS);
@@ -665,7 +643,7 @@ export class HeroHandler {
let calHeroCe = new CalHeroCe(hid, initInfo);
let heroAttr = calHeroCe.cal(HERO_SYSTEM_TYPE.REBIRTH);
await HeroModel.updateHeroInfo(roleId, hid, { ...initInfo, attr: heroAttr });
// await HeroModel.updateHeroInfo(roleId, hid, { ...initInfo, attr: heroAttr });
// 天晶石
let curJewels: jewelUpdate[] = [];
@@ -680,9 +658,7 @@ export class HeroHandler {
}
}
let { heros } = await calAllHeroCe(HERO_SYSTEM_TYPE.REBIRTH, sid, roleId, {}, [hid], { originHero: hero, heroUpdate: initInfo });
let curHero = heros.find(cur => cur.hid == hid);
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.REBIRTH, roleId, serverId, sid, {...initInfo, attr: heroAttr}, {}, { hid });
let goods = await addItems(roleId, roleName, sid, consumes, ITEM_CHANGE_REASON.REBIRTH);
const heroResult = new HeroParam(curHero);
@@ -693,6 +669,7 @@ export class HeroHandler {
public async unlockTalent(msg: { hid: number, id: number }, session: BackendSession) {
let roleId = session.get('roleId');
let sid = session.get('sid');
let serverId = session.get('serverId');
let { hid, id } = msg;
let hero = await HeroModel.findByHidAndRole(hid, roleId);
@@ -721,9 +698,8 @@ export class HeroHandler {
let { newSkins } = updateSkinTalent(skins, new Talent(id), usedTalentPoint + needTalentPoint);
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.TALENT, sid, roleId, hero, { skins: newSkins });
const heroResult = new HeroParam(hero);
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.TALENT, roleId, serverId, sid, { skins: newSkins }, {}, { hid });
const heroResult = new HeroParam(curHero);
return resResult(STATUS.SUCCESS, { curHero: {...pick(heroResult, ['hid', 'talent', 'usedTalentPoint', 'totalTalentPoint']) }});
}
@@ -732,6 +708,7 @@ export class HeroHandler {
public async upgradeTalent(msg: { hid: number, id: number }, session: BackendSession) {
let roleId = session.get('roleId');
let sid = session.get('sid');
let serverId = session.get('serverId');
let { hid, id } = msg;
let hero = await HeroModel.findByHidAndRole(hid, roleId);
@@ -758,9 +735,8 @@ export class HeroHandler {
let { newSkins } = updateSkinTalent(skins, new Talent(id, talent.level + 1), usedTalentPoint + needTalentPoint);
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.TALENT, sid, roleId, hero, { skins: newSkins });
const heroResult = new HeroParam(hero);
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.TALENT, roleId, serverId, sid, { skins: newSkins }, {}, { hid });
const heroResult = new HeroParam(curHero);
return resResult(STATUS.SUCCESS, { curHero: {...pick(heroResult, ['hid', 'talent', 'usedTalentPoint', 'totalTalentPoint']) }});
}
@@ -768,6 +744,7 @@ export class HeroHandler {
public async resetTalent(msg: { hid: number }, session: BackendSession) {
let roleId = session.get('roleId');
let sid = session.get('sid');
let serverId = session.get('serverId');
let { hid } = msg;
let hero = await HeroModel.findByHidAndRole(hid, roleId);
@@ -783,9 +760,9 @@ export class HeroHandler {
let newSkins = initSkinTalent(skins);
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.TALENT, sid, roleId, hero, { skins: newSkins });
let { curHero } = await calculateCe(HERO_SYSTEM_TYPE.TALENT, roleId, serverId, sid, { skins: newSkins }, {}, { hid });
const heroResult = new HeroParam(hero);
const heroResult = new HeroParam(curHero);
return resResult(STATUS.SUCCESS, { curHero: {...pick(heroResult, ['hid', 'talent', 'usedTalentPoint', 'totalTalentPoint']) }});
}