feat(重生): 重生不重置星级

This commit is contained in:
luying
2022-11-08 14:45:20 +08:00
parent 3f0474d99a
commit 2eb2bc7573
3 changed files with 64 additions and 12 deletions

View File

@@ -3,7 +3,7 @@ import { handleCost, addItems, unlockFigure, getCoinObject, getGoldObject } from
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';
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, CHECK_HERO_CONSUME } from '../../../consts';
import { RoleModel } from '../../../db/Role';
import { ItemModel } from '../../../db/Item';
import { gameData, getHeroExpByLv, getHeroStarByQuality, getHeroWakeByQuality, getHeroLvByExp, getMaxGradeByjobClass, getJobByGradeAndClass, getConnectLvByExp, getEquipByJobClassAndEPlace, getScollByStar, getExpByLv, getConnectMaxLv, getFriendShipByIdAndLv } from '../../../pubUtils/data';
@@ -14,7 +14,7 @@ import { PvpDefenseModel } from '../../../db/PvpDefense';
import { checkTask, checkTaskInHeroGiveFavor, checkTaskInHeroQUalityUp, checkTaskInHeroStarUp, checkTaskInHeroTrain, checkTaskInHeroWakeUp } from '../../../services/task/taskService';
import { isNumber, pick } from 'underscore';
import { updateEplaces } from '../../../services/equipService';
import { addConnect, addConsumeToHero, checkUnlockTalentCondition, initSkinTalent, updateSkinTalent } from '../../../services/roleService';
import { addConnect, addConsumeToHero, calStarUpConsume, checkUnlockTalentCondition, initSkinTalent, updateSkinTalent } from '../../../services/roleService';
import { JewelModel, jewelUpdate } from '../../../db/Jewel';
import { HERO, REBORN } from '../../../pubUtils/dicParam';
import { createHero, createHeroes } from '../../../services/role/createHero';
@@ -187,7 +187,9 @@ export class HeroHandler {
let update = {
star: isUpStar ? oldStar + 1 : oldStar,
starStage: isUpStar ? ABI_STAGE.START : newStarStage,
consumes: addConsumeToHero(hero.consumes, consumes)
}
if(CHECK_HERO_CONSUME) {
update['consumes'] = addConsumeToHero(hero.consumes, consumes)
}
@@ -237,7 +239,9 @@ export class HeroHandler {
let update = {
quality: hero.quality + 1,
consumes: addConsumeToHero(hero.consumes, material)
}
if(CHECK_HERO_CONSUME) {
update['consumes'] = addConsumeToHero(hero.consumes, material)
}
await SchoolModel.updateByHid(roleId, hid, { hid, star: update.quality });
@@ -556,9 +560,9 @@ export class HeroHandler {
let roleId: string = session.get('roleId');
let { hid } = msg;
let hero = await HeroModel.findByHidAndRole(hid, roleId, 'consumes');
let hero = await HeroModel.findByHidAndRole(hid, roleId, 'hid consumes star starStage quality');
if(!hero) return resResult(STATUS.HERO_NOT_FIND);
let consumes = hero.consumes||[];
let { consumes} = calStarUpConsume(hero);
return resResult(STATUS.SUCCESS, { previewGoods: consumes.filter(consume => consume.count > 0) });
}
@@ -584,19 +588,24 @@ export class HeroHandler {
}
// 皮肤处理
let { skins, skinId, consumes, ce, scrollActive } = hero;
let { skins, skinId, ce, scrollActive, quality, star, starStage } = hero;
let dicHero = gameData.hero.get(skinId);
let dicJob = getJobByGradeAndClass(dicHero.jobClass, 0);
let { consumes: consumesResult, newConsumes } = calStarUpConsume(hero);
let newSkins = initSkinTalent(skins);
let dicHeroScroll = getScollByStar(dicHero.quality, dicHero.initialStar, dicHero.quality, dicHero.initialColorStar);
let newQuality = quality >= 3? ( dicHero.quality >= 3? dicHero.quality: 3 ): quality;
let dicHeroScroll = getScollByStar(dicHero.quality, star, newQuality, dicHero.initialColorStar);
let initInfo = HeroModel.getInitInfo(hid, {
job: dicJob.jobid, skins: newSkins, skinId, ce,
star, starStage, colorStar: dicHero.initialColorStar, colorStarStage: 0, quality: newQuality,
scrollActive: scrollActive,
scrollId: scrollActive? dicHeroScroll.id: 0,
scrollStar: scrollActive? dicHeroScroll.stars: 0,
scrollQuality: scrollActive? dicHeroScroll.quality: 0,
scrollColorStar: scrollActive? dicHeroScroll.colorstars: 0,
consumes: newConsumes
});
// 天晶石
@@ -614,7 +623,7 @@ export class HeroHandler {
let school = await SchoolModel.findByHid(roleId, hid);
let { curHero } = await calculateCeWithHero(HERO_SYSTEM_TYPE.REBIRTH, roleId, serverId, sid, hid, initInfo, { schoolId: school?.schoolId });
let goods = await addItems(roleId, roleName, sid, consumes, ITEM_CHANGE_REASON.REBIRTH);
let goods = await addItems(roleId, roleName, sid, consumesResult, ITEM_CHANGE_REASON.REBIRTH);
saveRebirthLog(session, hero);
const heroResult = new HeroParam(curHero);