武将重生:完成接口
This commit is contained in:
@@ -7,7 +7,7 @@ import { HeroModel, Connect, HeroSkin, HeroUpdate, EPlace } from '../../../db/He
|
||||
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';
|
||||
import { RoleModel } from '../../../db/Role';
|
||||
import { ItemModel } from '../../../db/Item';
|
||||
import { gameData, getHeroExpByLv, getHeroStarByQuality, getHeroWakeByQuality, getHeroLvByExp, getMaxGradeByjobClass, getJobByGradeAndClass, getFriendShipById, getFavourLvByExp, reloadDicParam, getEquipByJobClassAndEPlace } from '../../../pubUtils/data';
|
||||
import { gameData, getHeroExpByLv, getHeroStarByQuality, getHeroWakeByQuality, getHeroLvByExp, getMaxGradeByjobClass, getJobByGradeAndClass, getFriendShipById, getFavourLvByExp, reloadDicParam, getEquipByJobClassAndEPlace, getScollByStar } from '../../../pubUtils/data';
|
||||
import { ItemInter, RewardInter } from '../../../pubUtils/interface';
|
||||
import { getDropItems, FIGURE_UNLOCK_CONDITION } from '../../../consts/constModules/itemConst'
|
||||
import { pushComposeOrangeHero, pushHeroQualityUpMsg, pushHeroStarMax, pushHeroWakeUp } from '../../../services/chatService';
|
||||
@@ -17,7 +17,10 @@ import { checkTaskWithHero, checkTask, checkActivityTask } from '../../../servic
|
||||
import { pick } from 'underscore';
|
||||
import { updateEplaces } from '../../../services/equipService';
|
||||
import { addConsumeToHero } from '../../../services/roleService';
|
||||
import { getCoinObject } from '../../../pubUtils/itemUtils';
|
||||
import { getCoinObject, getGoldObject } from '../../../pubUtils/itemUtils';
|
||||
import { JewelModel, jewelUpdate } from '../../../db/Jewel';
|
||||
import { CalHeroCe } from '../../../domain/roleField/calCe';
|
||||
import { REBORN } from '../../../pubUtils/dicParam';
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -629,6 +632,68 @@ export class HeroHandler {
|
||||
return resResult(STATUS.SUCCESS, { curHero: {...pick(hero, ['hid', 'skins', 'skinId', 'job']), ePlace: newEplace }});
|
||||
}
|
||||
|
||||
public async previewRebirth(msg: { hid: number }, session: BackendSession) {
|
||||
let roleId: string = session.get('roleId');
|
||||
let { hid } = msg;
|
||||
|
||||
let hero = await HeroModel.findByHidAndRole(hid, roleId, 'consumes');
|
||||
if(!hero) return resResult(STATUS.HERO_NOT_FIND);
|
||||
let consumes = hero.consumes||[];
|
||||
|
||||
return resResult(STATUS.SUCCESS, { previewGoods: consumes });
|
||||
}
|
||||
|
||||
public async rebirth(msg: { hid: number }, session: BackendSession) {
|
||||
let roleId: string = session.get('roleId');
|
||||
let roleName: string = session.get('roleName');
|
||||
let sid: string = session.get('sid');
|
||||
|
||||
let { hid } = msg;
|
||||
// 武将初始,但是皮肤这里不初始
|
||||
let hero = await HeroModel.findByHidAndRole(hid, roleId);
|
||||
if(!hero) return resResult(STATUS.HERO_NOT_FIND);
|
||||
|
||||
// 消耗
|
||||
let cost = [getGoldObject(REBORN.REBORON_HERO)];
|
||||
let costResult = await handleCost(roleId, sid, cost, ITEM_CHANGE_REASON.REBIRTH);
|
||||
if(!costResult) return resResult(STATUS.BATTLE_GOLD_NOT_ENOUGH);
|
||||
|
||||
// 皮肤处理
|
||||
let { skins, skinId, consumes, ce } = hero;
|
||||
let dicHero = gameData.hero.get(skinId);
|
||||
let dicJob = getJobByGradeAndClass(dicHero.jobClass, 0);
|
||||
|
||||
let dicHeroScroll = getScollByStar(dicHero.quality, dicHero.initialStars, dicHero.quality, 0);
|
||||
let initInfo = HeroModel.getInitInfo({
|
||||
job: dicJob.jobid, skins, skinId, ce,
|
||||
star: dicHero.initialStars, quality: dicHero.quality,
|
||||
scrollActive: true, scrollId: dicHeroScroll.id, scrollStar: dicHeroScroll.stars, scrollQuality: dicHeroScroll.quality, scrollColorStar: dicHeroScroll.colorstars
|
||||
});
|
||||
let calHeroCe = new CalHeroCe(hid, initInfo);
|
||||
let heroAttr = calHeroCe.cal(HERO_SYSTEM_TYPE.REBIRTH);
|
||||
await HeroModel.updateHeroInfo(roleId, hid, { ...initInfo, attr: heroAttr });
|
||||
|
||||
// 天晶石
|
||||
let curJewels: jewelUpdate[] = [];
|
||||
for(let { jewel, id } of hero.ePlace) {
|
||||
if(jewel > 0) {
|
||||
let jewelInfo = await JewelModel.putOnOrOff(jewel, hid, id);
|
||||
curJewels.push({
|
||||
seqId: jewelInfo.seqId,
|
||||
id: jewelInfo.id,
|
||||
hid: jewelInfo.hid,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
let { heros } = await calAllHeroCe(HERO_SYSTEM_TYPE.REBIRTH, sid, roleId, {}, [hid], { originHero: hero, heroUpdate: initInfo });
|
||||
let curHeo = heros.find(cur => cur.hid == hid);
|
||||
|
||||
let goods = await addItems(roleId, roleName, sid, consumes, ITEM_CHANGE_REASON.REBIRTH);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { curHeo, curJewels, goods });
|
||||
}
|
||||
|
||||
// ! debug接口 一键全武将
|
||||
public async debugGetAllHeroes(msg: { magicWord: string }, session: BackendSession) {
|
||||
let roleId: string = session.get('roleId');
|
||||
|
||||
Reference in New Issue
Block a user