武将重生:添加消耗记录
This commit is contained in:
@@ -16,6 +16,8 @@ import { PvpDefenseModel } from '../../../db/PvpDefense';
|
||||
import { checkTaskWithHero, checkTask, checkActivityTask } from '../../../services/taskService';
|
||||
import { pick } from 'underscore';
|
||||
import { updateEplaces } from '../../../services/equipService';
|
||||
import { addConsumeToHero } from '../../../services/roleService';
|
||||
import { getCoinObject } from '../../../pubUtils/itemUtils';
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -116,7 +118,8 @@ export class HeroHandler {
|
||||
|
||||
let update = {
|
||||
lv: newLv,
|
||||
exp: newExp
|
||||
exp: newExp,
|
||||
consumes: addConsumeToHero(hero.consumes, material)
|
||||
}
|
||||
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.LVUP, sid, roleId, hero, update);
|
||||
@@ -180,7 +183,8 @@ export class HeroHandler {
|
||||
|
||||
let update = {
|
||||
star: isUpStar ? oldStar + 1 : oldStar,
|
||||
starStage: isUpStar ? ABI_STAGE.START : newStarStage
|
||||
starStage: isUpStar ? ABI_STAGE.START : newStarStage,
|
||||
consumes: addConsumeToHero(hero.consumes, consumes)
|
||||
}
|
||||
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.STAR, sid, roleId, hero, update);
|
||||
@@ -237,12 +241,15 @@ export class HeroHandler {
|
||||
if (!curDicHeroQualityUp) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
let { fragmentNum } = curDicHeroQualityUp;
|
||||
|
||||
let costResult = await handleCost(roleId, sid, [{ id: pieceId, count: fragmentNum }], ITEM_CHANGE_REASON.HERO_QUALITY_UP);
|
||||
let material = [{ id: pieceId, count: fragmentNum }];
|
||||
let costResult = await handleCost(roleId, sid, material, ITEM_CHANGE_REASON.HERO_QUALITY_UP);
|
||||
if (!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.QUALITY, sid, roleId, hero, {
|
||||
quality: hero.quality + 1
|
||||
});
|
||||
let update = {
|
||||
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]); // 升品可能影响到百家学院全局加成
|
||||
|
||||
// 任务
|
||||
@@ -313,7 +320,8 @@ export class HeroHandler {
|
||||
let update = {
|
||||
quality: isWakeUp? quality + 1: quality,
|
||||
colorStar: isUpStar ? oldColorStar + 1 : oldColorStar,
|
||||
colorStarStage: isUpStar ? ABI_STAGE.START : newColorStarStage
|
||||
colorStarStage: isUpStar ? ABI_STAGE.START : newColorStarStage,
|
||||
consumes: addConsumeToHero(hero.consumes, consumes)
|
||||
}
|
||||
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.COLORSTAR, sid, roleId, hero, update);
|
||||
@@ -378,9 +386,11 @@ export class HeroHandler {
|
||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||
|
||||
//重算战力并下发
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.TRAIN, sid, roleId, hero, {
|
||||
jobStage: newJobStage
|
||||
});
|
||||
let update = {
|
||||
jobStage: newJobStage,
|
||||
consumes: addConsumeToHero(hero.consumes, consumes)
|
||||
}
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.TRAIN, sid, roleId, hero, update);
|
||||
// 任务
|
||||
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_TRAIN, hero, [oldJob, oldJobStage]);
|
||||
await checkTask(roleId, sid, TASK_TYPE.HERO_TRAIN_SUM, newJobStage - oldJobStage, true, {});
|
||||
@@ -407,7 +417,8 @@ export class HeroHandler {
|
||||
return resResult(STATUS.NOT_REACH_UNLOCK_LEVEL);
|
||||
if (curJob >= getMaxGradeByjobClass(heroJob.job_class))
|
||||
return resResult(STATUS.HERO_JOB_REACH_MAX_STAGE);
|
||||
let result = await handleCost(roleId, sid, heroJob.upGradeConsume, ITEM_CHANGE_REASON.HERO_JOB_STAGEUP);
|
||||
let consumes = heroJob.upGradeConsume;
|
||||
let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.HERO_JOB_STAGEUP);
|
||||
if (!result) {
|
||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||
}
|
||||
@@ -417,7 +428,8 @@ export class HeroHandler {
|
||||
//重算战力并下发
|
||||
let update = {
|
||||
job: nextHeroJob.jobid,
|
||||
jobStage: 0
|
||||
jobStage: 0,
|
||||
consumes: addConsumeToHero(hero.consumes, consumes)
|
||||
}
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.STAGEUP, sid, roleId, hero, update);
|
||||
// 任务
|
||||
@@ -465,12 +477,17 @@ export class HeroHandler {
|
||||
if (member.star + member.colorStar < friendShip.level)
|
||||
return resResult(STATUS.NOT_REACH_UNLOCK_LEVEL);
|
||||
}
|
||||
let result = await handleCost(roleId, sid, [{ id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.COIN), count: friendShip.costCoin }], ITEM_CHANGE_REASON.HERO_CONNECT_ACTIVE);
|
||||
let consumes = [getCoinObject(friendShip.costCoin)];
|
||||
let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.HERO_CONNECT_ACTIVE);
|
||||
if (!result) {
|
||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||
}
|
||||
let update = {
|
||||
connections: heroConnections,
|
||||
consumes: addConsumeToHero(hero.consumes, consumes)
|
||||
}
|
||||
//重算战力并下发
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.CONNECT, sid, roleId, hero, { connections: heroConnections }, [shipId]);
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.CONNECT, sid, roleId, hero, update, [shipId]);
|
||||
|
||||
// 任务
|
||||
await checkTask(roleId, sid, TASK_TYPE.HERO_CONNECT, 1, true, { connectLv: level })
|
||||
@@ -540,18 +557,23 @@ export class HeroHandler {
|
||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||
}
|
||||
|
||||
let updateConsume = addConsumeToHero(hero.consumes, material);
|
||||
let update = {
|
||||
favour: newExp,
|
||||
favourLv: newLv,
|
||||
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, {
|
||||
favour: newExp, favourLv: newLv
|
||||
}, [oldLv]);
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.FAVOUR, sid, roleId, hero, update, [oldLv]);
|
||||
|
||||
// 任务
|
||||
await checkTaskWithHero(roleId, sid, TASK_TYPE.HERO_FAVOUR_LV, hero, [oldLv]);
|
||||
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.HERO_FAVOUR_LV, 1, { lv: newLv, oldLv });
|
||||
} else {
|
||||
hero = await HeroModel.updateHeroInfo(roleId, hero.hid, { favour: newExp, favourLv: newLv });
|
||||
hero = await HeroModel.updateHeroInfo(roleId, hero.hid, update);
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { curHero: { hid: hero.hid, favour: hero.favour, favourLv: hero.favourLv, cost: material } });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user