🐞 fix(重生体验优化): 更新职业
This commit is contained in:
@@ -14,7 +14,7 @@ import { PvpDefenseModel } from '../../../db/PvpDefense';
|
|||||||
import { checkTask, checkTaskInHeroGiveFavor, checkTaskInHeroQUalityUp, checkTaskInHeroStarUp, checkTaskInHeroTrain, checkTaskInHeroWakeUp } from '../../../services/task/taskService';
|
import { checkTask, checkTaskInHeroGiveFavor, checkTaskInHeroQUalityUp, checkTaskInHeroStarUp, checkTaskInHeroTrain, checkTaskInHeroWakeUp } from '../../../services/task/taskService';
|
||||||
import { isNumber, pick } from 'underscore';
|
import { isNumber, pick } from 'underscore';
|
||||||
import { updateEplaces } from '../../../services/equipService';
|
import { updateEplaces } from '../../../services/equipService';
|
||||||
import { addConnect, addConsumeToHero, calStarUpConsume, checkUnlockTalentCondition, getHeroNewEplace, initSkinTalent, updateSkinTalent } from '../../../services/roleService';
|
import { addConnect, addConsumeToHero, calStarUpConsume, checkUnlockTalentCondition, getHeroNewEplace, getNewJob, initSkinTalent, updateSkinTalent } from '../../../services/roleService';
|
||||||
import { JewelModel, JewelType, jewelUpdate } from '../../../db/Jewel';
|
import { JewelModel, JewelType, jewelUpdate } from '../../../db/Jewel';
|
||||||
import { HERO, REBORN } from '../../../pubUtils/dicParam';
|
import { HERO, REBORN } from '../../../pubUtils/dicParam';
|
||||||
import { createHero, createHeroes } from '../../../services/role/createHero';
|
import { createHero, createHeroes } from '../../../services/role/createHero';
|
||||||
@@ -829,16 +829,26 @@ export class HeroHandler {
|
|||||||
let originHero = heroMap.get(originHid);
|
let originHero = heroMap.get(originHid);
|
||||||
let targetHero = heroMap.get(targetHid);
|
let targetHero = heroMap.get(targetHid);
|
||||||
|
|
||||||
swapFields(originHero || {}, targetHero || {}, ['lv', 'job', 'jobStage']);
|
//交换 lv exp jobStage
|
||||||
|
swapFields(originHero || {}, targetHero || {}, ['lv', 'exp', 'jobStage']);
|
||||||
|
|
||||||
|
//交换job
|
||||||
|
let originJob = originHero.job, targetJob = targetHero.job
|
||||||
|
originHero.job = getNewJob(originHero, targetJob);
|
||||||
|
targetHero.job = getNewJob(targetHero, originJob);
|
||||||
|
|
||||||
|
//天赋树置空
|
||||||
if (originHero.skins || originHero.skins.length > 0) originHero.skins.forEach((cur) => { cur.talent = [], cur.usedTalentPoint = 0; });
|
if (originHero.skins || originHero.skins.length > 0) originHero.skins.forEach((cur) => { cur.talent = [], cur.usedTalentPoint = 0; });
|
||||||
if (targetHero.skins || targetHero.skins.length > 0) targetHero.skins.forEach((cur) => { cur.talent = [], cur.usedTalentPoint = 0; });
|
if (targetHero.skins || targetHero.skins.length > 0) targetHero.skins.forEach((cur) => { cur.talent = [], cur.usedTalentPoint = 0; });
|
||||||
|
|
||||||
|
//装备养成交换
|
||||||
let tempOriginEPlace = [], tempTargetEPlace = []
|
let tempOriginEPlace = [], tempTargetEPlace = []
|
||||||
if (originHero.ePlace || targetHero.ePlace.length > 0) tempOriginEPlace = getHeroNewEplace(originHero, targetHero?.ePlace || []);
|
if (originHero.ePlace || targetHero.ePlace.length > 0) tempOriginEPlace = getHeroNewEplace(originHero, targetHero?.ePlace || []);
|
||||||
if (targetHero.ePlace || originHero.ePlace.length > 0) tempTargetEPlace = getHeroNewEplace(targetHero, originHero?.ePlace || []);
|
if (targetHero.ePlace || originHero.ePlace.length > 0) tempTargetEPlace = getHeroNewEplace(targetHero, originHero?.ePlace || []);
|
||||||
originHero.ePlace = tempOriginEPlace;
|
originHero.ePlace = tempOriginEPlace;
|
||||||
targetHero.ePlace = tempTargetEPlace;
|
targetHero.ePlace = tempTargetEPlace;
|
||||||
|
|
||||||
|
// 天晶地玉
|
||||||
let jewels: JewelType[] = [];
|
let jewels: JewelType[] = [];
|
||||||
let curJewels: jewelUpdate[] = [];
|
let curJewels: jewelUpdate[] = [];
|
||||||
for (let { jewel } of originHero.ePlace) {
|
for (let { jewel } of originHero.ePlace) {
|
||||||
@@ -858,7 +868,7 @@ export class HeroHandler {
|
|||||||
|
|
||||||
let heroesRet: HeroType[] = [];
|
let heroesRet: HeroType[] = [];
|
||||||
for (let hero of [originHero, targetHero]) {
|
for (let hero of [originHero, targetHero]) {
|
||||||
let result = await HeroModel.updateHeroInfo(roleId, hero.hid, { ...pick(hero, ['lv', 'job', 'jobStage', 'ePlace', 'skins']) });
|
let result = await HeroModel.updateHeroInfo(roleId, hero.hid, { ...pick(hero, ['lv','exp', 'job', 'jobStage', 'ePlace', 'skins']) });
|
||||||
if (!result) return resResult(STATUS.HERO_NOT_FIND);
|
if (!result) return resResult(STATUS.HERO_NOT_FIND);
|
||||||
heroesRet.push(result);
|
heroesRet.push(result);
|
||||||
}
|
}
|
||||||
@@ -871,7 +881,7 @@ export class HeroHandler {
|
|||||||
let curHeroes = [];
|
let curHeroes = [];
|
||||||
for (let hero of (heroes || [])) {
|
for (let hero of (heroes || [])) {
|
||||||
const heroResult = new HeroParam(hero);
|
const heroResult = new HeroParam(hero);
|
||||||
curHeroes.push({ ...pick(heroResult, ['seqId', 'hid', 'ce', 'lv', 'job', 'jobStage', 'ePlace', 'talent', 'usedTalentPoint', 'totalTalentPoint']) });
|
curHeroes.push({ ...pick(heroResult, ['seqId', 'hid', 'ce','exp', 'lv', 'job', 'jobStage', 'ePlace', 'talent', 'usedTalentPoint', 'totalTalentPoint']) });
|
||||||
}
|
}
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, { curHeroes, curJewels })
|
return resResult(STATUS.SUCCESS, { curHeroes, curJewels })
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { DEFAULT_HEROES, LINEUP_NUM, ROLE_SELECT, TALENT_RELATION_TYPE, TERAPH_R
|
|||||||
import { DicTeraph } from '../pubUtils/dictionary/DicTeraph';
|
import { DicTeraph } from '../pubUtils/dictionary/DicTeraph';
|
||||||
import { Teraph, RoleModel, RoleType, RoleUpdate } from '../db/Role';
|
import { Teraph, RoleModel, RoleType, RoleUpdate } from '../db/Role';
|
||||||
import { SCHOOL } from '../pubUtils/dicParam';
|
import { SCHOOL } from '../pubUtils/dicParam';
|
||||||
import { gameData, getEquipByJobClassAndEPlace, getHeroInitTalent, getHeroStarByQuality } from '../pubUtils/data';
|
import { gameData, getEquipByJobClassAndEPlace, getHeroInitTalent, getHeroStarByQuality, getJobByGradeAndClass } from '../pubUtils/data';
|
||||||
import { SchoolModel } from '../db/School';
|
import { SchoolModel } from '../db/School';
|
||||||
import { SclResultInter, SclPosInter, RewardInter, ItemInter } from '../pubUtils/interface';
|
import { SclResultInter, SclPosInter, RewardInter, ItemInter } from '../pubUtils/interface';
|
||||||
import { Connect, EPlace, HeroModel, HeroSkin, HeroType, HeroUpdate, Talent } from '../db/Hero';
|
import { Connect, EPlace, HeroModel, HeroSkin, HeroType, HeroUpdate, Talent } from '../db/Hero';
|
||||||
@@ -403,4 +403,11 @@ export function getHeroNewEplace(hero: HeroType, ePlace: EPlace[]) {
|
|||||||
newEplace.push({ ...eP, equipId: dicEquip.id });
|
newEplace.push({ ...eP, equipId: dicEquip.id });
|
||||||
}
|
}
|
||||||
return newEplace;
|
return newEplace;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getNewJob(hero: HeroType, job: number) {
|
||||||
|
const dicHero = gameData.hero.get(hero.skinId);
|
||||||
|
let dicMyJob = gameData.job.get(job);
|
||||||
|
let dicNewJob = getJobByGradeAndClass(dicHero.jobClass, dicMyJob.grade);
|
||||||
|
return dicNewJob?.jobid || 0;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user