Merge branch 'feature/login'
Conflicts: game-server/app/servers/role/handler/heroHandler.ts game-server/app/services/redisService.ts shared/consts/index.ts shared/resource/jsons/dic_zyz_gk_main.json
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import {Application, BackendSession, ChannelService} from 'pinus';
|
||||
import { handleCost, addItems } from '../../../services/rewardService';
|
||||
import { calPlayerCeAndSave } from '../../../services/playerCeService';
|
||||
import { resResult, returnHeroCeRatio } from '../../../pubUtils/util';
|
||||
import { calPlayerCeAndSave, calAllHeroCe } from '../../../services/playerCeService';
|
||||
import { resResult, returnHeroCeRatio, deepCopy } from '../../../pubUtils/util';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import {HeroModel} from '../../../db/Hero';
|
||||
import { HeroModel, Connect } from '../../../db/Hero';
|
||||
import {CURRENCY_BY_TYPE, CURRENCY_TYPE, CONSUME_TYPE, HERO_GROW_MAX, HERO_SYSTEM_TYPE, ITID, ABI_STAGE, HERO_CE_RATIO} from '../../../consts';
|
||||
import { RoleModel } from '../../../db/Role';
|
||||
import { ItemModel } from '../../../db/Item';
|
||||
@@ -12,6 +12,8 @@ import { RewardInter } from '../../../pubUtils/interface';
|
||||
import { getDropItems } from '../../../consts/constModules/itemConst'
|
||||
import { getRoleOnlineInfo, getAllOnlineRoles } from '../../../services/redisService';
|
||||
import { pushHeroQualityUpMsg } from '../../../services/chatService';
|
||||
import { CeAttrDataRole, CeAttrData } from '../../../domain/roleField/attribute';
|
||||
|
||||
export default function(app: Application) {
|
||||
return new HeroHandler(app);
|
||||
}
|
||||
@@ -81,8 +83,9 @@ export class HeroHandler {
|
||||
let curHero = await HeroModel.createHero({
|
||||
roleId, serverId, roleName, hid, hName, star, quality, job, skins:[{id: initialSkin, enable: true}]
|
||||
});
|
||||
await calPlayerCeAndSave(sid, roleId, [curHero], HERO_SYSTEM_TYPE.INIT);
|
||||
return resResult(STATUS.SUCCESS, {curHero: returnHeroCeRatio(curHero)});
|
||||
let hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.INIT, sid, roleId, curHero, {});
|
||||
await calAllHeroCe(HERO_SYSTEM_TYPE.ADD_SKIN, sid, roleId, {}, [initialSkin])
|
||||
return resResult(STATUS.SUCCESS, {curHero: returnHeroCeRatio(hero)});
|
||||
}
|
||||
|
||||
// 武将升级
|
||||
@@ -138,12 +141,14 @@ export class HeroHandler {
|
||||
let costResult = await handleCost(roleId, sid, material);
|
||||
if(!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
|
||||
hero.lv = playerLv > newLv?newLv: playerLv;
|
||||
hero.exp = newExp;
|
||||
let update = {
|
||||
lv: playerLv > newLv?newLv: playerLv,
|
||||
exp: newExp
|
||||
}
|
||||
|
||||
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.LVUP, [hid]);
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.LVUP, sid, roleId, hero, update);
|
||||
const curHero = {
|
||||
hid, lv : heros[0].lv, exp : heros[0].exp
|
||||
hid, lv : hero.lv, exp : hero.exp
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { curHero });
|
||||
|
||||
@@ -178,16 +183,20 @@ export class HeroHandler {
|
||||
if(!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
|
||||
let isUpStar = oldStarStage + 1 == ABI_STAGE.END;
|
||||
hero.star = isUpStar? oldStar + 1: oldStar;
|
||||
hero.starStage = isUpStar? ABI_STAGE.START: oldStarStage + 1;
|
||||
|
||||
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.STAR, [hid, isUpStar?1:0]);
|
||||
let update = {
|
||||
star: isUpStar? oldStar + 1: oldStar,
|
||||
starStage: isUpStar? ABI_STAGE.START: oldStarStage + 1
|
||||
}
|
||||
|
||||
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]); // 升星可能影响到百家学院全局加成
|
||||
const curHero = {
|
||||
hid,
|
||||
star : heros[0].star,
|
||||
starStage : heros[0].starStage,
|
||||
colorStar: heros[0].colorStar,
|
||||
colorStarStage: heros[0].colorStarStage
|
||||
star : hero.star,
|
||||
starStage : hero.starStage,
|
||||
colorStar: hero.colorStar,
|
||||
colorStarStage: hero.colorStarStage
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, {isUpStar, curHero});
|
||||
}
|
||||
@@ -226,11 +235,14 @@ export class HeroHandler {
|
||||
let costResult = await handleCost(roleId, sid, [{id: pieceId, count: fragmentNum}]);
|
||||
if(!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
|
||||
hero.quality ++;
|
||||
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.QUALITY, [hid]);
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.QUALITY, sid, roleId, hero, {
|
||||
quality: hero.quality + 1
|
||||
});
|
||||
await calAllHeroCe(HERO_SYSTEM_TYPE.QUALITY, sid, roleId, {}, [hid, 0]); // 升品可能影响到百家学院全局加成
|
||||
|
||||
const curHero = {
|
||||
hid,
|
||||
quality : heros[0].quality
|
||||
quality : hero.quality
|
||||
}
|
||||
pushHeroQualityUpMsg(roleId, roleName, serverId, hero);
|
||||
return resResult(STATUS.SUCCESS, {curHero});
|
||||
@@ -273,16 +285,21 @@ export class HeroHandler {
|
||||
|
||||
let isWakeUp = oldColorStar == 0;
|
||||
let isUpStar = isWakeUp || oldColorStarStage + 1 == ABI_STAGE.END;
|
||||
hero.colorStar = isUpStar? oldColorStar + 1: oldColorStar;
|
||||
hero.colorStarStage = isUpStar? ABI_STAGE.START: oldColorStarStage + 1;
|
||||
|
||||
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.COLORSTAR, [hid, isUpStar?1:0, isWakeUp?1:0]);
|
||||
let update = {
|
||||
colorStar: isUpStar? oldColorStar + 1: oldColorStar,
|
||||
colorStarStage: isUpStar? ABI_STAGE.START: oldColorStarStage + 1
|
||||
}
|
||||
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.COLORSTAR, sid, roleId, hero, update);
|
||||
if(isUpStar) await calAllHeroCe(HERO_SYSTEM_TYPE.COLORSTAR, sid, roleId, {}, [hid, isUpStar?1:0]); // 升星可能影响到百家学院全局加成
|
||||
|
||||
const curHero = {
|
||||
hid,
|
||||
star : heros[0].star,
|
||||
starStage : heros[0].starStage,
|
||||
colorStar: heros[0].colorStar,
|
||||
colorStarStage: heros[0].colorStarStage
|
||||
star : hero.star,
|
||||
starStage : hero.starStage,
|
||||
colorStar: hero.colorStar,
|
||||
colorStarStage: hero.colorStarStage
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, {isUpStar, curHero});
|
||||
}
|
||||
@@ -293,26 +310,30 @@ export class HeroHandler {
|
||||
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 heroJob = gameData.job.get(hero.job);
|
||||
if (hero.jobStage >= 6)
|
||||
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
|
||||
|
||||
let dicJob = gameData.job.get(hero.job);
|
||||
if(!dicJob) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
|
||||
if (hero.jobStage >= ABI_STAGE.END)
|
||||
return resResult(STATUS.HERO_JOB_STAGE_REACH_MAX_STAGE);
|
||||
if (hero.job >= getMaxGradeByjobClass(heroJob.job_class))
|
||||
if (hero.job >= getMaxGradeByjobClass(dicJob.job_class))
|
||||
return resResult(STATUS.HERO_JOB_REACH_MAX_STAGE);
|
||||
|
||||
let consume = new Array<RewardInter>();
|
||||
if(heroJob.trainingConsume[hero.jobStage]) {
|
||||
consume.push(heroJob.trainingConsume[hero.jobStage]);
|
||||
if(dicJob.trainingConsume[hero.jobStage]) {
|
||||
consume.push(dicJob.trainingConsume[hero.jobStage]);
|
||||
}
|
||||
let result = await handleCost(roleId, sid, consume);
|
||||
if(!result) {
|
||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||
}
|
||||
hero.jobStage = hero.jobStage +1;
|
||||
|
||||
//重算战力并下发
|
||||
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.TRAIN);
|
||||
return resResult(STATUS.SUCCESS, { curHero: {hid : heros[0].hid, job : heros[0].job, jobStage: heros[0].jobStage}});
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.TRAIN, sid, roleId, hero, {
|
||||
jobStage: hero.jobStage + 1
|
||||
});
|
||||
return resResult(STATUS.SUCCESS, { curHero: {hid : hero.hid, job : hero.job, jobStage: hero.jobStage}});
|
||||
}
|
||||
|
||||
//进阶
|
||||
@@ -334,27 +355,30 @@ export class HeroHandler {
|
||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||
}
|
||||
let nextHeroJob = getJobByGradeAndClass(heroJob.job_class, heroJob.grade + 1);
|
||||
hero.job = nextHeroJob.jobid;
|
||||
hero.jobStage = 0;
|
||||
|
||||
//重算战力并下发
|
||||
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.STAGEUP, [curJob]);
|
||||
return resResult(STATUS.SUCCESS, { curHero: {hid : heros[0].hid, job : heros[0].job, jobStage : heros[0].jobStage}});
|
||||
let update = {
|
||||
job: nextHeroJob.jobid,
|
||||
jobStage: 0
|
||||
}
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.STAGEUP, sid, roleId, hero, update);
|
||||
return resResult(STATUS.SUCCESS, { curHero: {hid : hero.hid, job : hero.job, jobStage : hero.jobStage}});
|
||||
}
|
||||
|
||||
//激活羁绊
|
||||
async heroConectionActivate(msg: {shipId: number}, session: BackendSession) {
|
||||
async heroConectionActivate(msg: { shipId: number }, session: BackendSession) {
|
||||
let roleId: string = session.get('roleId');
|
||||
let sid: string = session.get('sid');
|
||||
let { shipId } = msg;
|
||||
let shipHidAndLevel = gameData.friendShipHidAandIds.get(shipId);
|
||||
if (!shipHidAndLevel)
|
||||
return resResult(STATUS.HERO_CONECTION_IS_NOT_EXIT);
|
||||
if (!shipHidAndLevel) return resResult(STATUS.HERO_CONECTION_IS_NOT_EXIT);
|
||||
let hero = await HeroModel.findByHidAndRole(shipHidAndLevel.actorId, roleId);
|
||||
if (!hero)
|
||||
return resResult(STATUS.HERO_NOT_FIND);
|
||||
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
|
||||
|
||||
let heroConnections: Connect[] = deepCopy(hero.connections);
|
||||
let flag = true;
|
||||
let level = 1;
|
||||
for (let conection of hero.connections) {
|
||||
for (let conection of heroConnections) {
|
||||
if (conection.shipId == shipId ) {
|
||||
if (conection.level >= shipHidAndLevel.level) {
|
||||
return resResult(STATUS.HERO_CONECTION_IS_MAX_LEVEL);
|
||||
@@ -366,7 +390,7 @@ export class HeroHandler {
|
||||
}
|
||||
}
|
||||
if (!!flag) {
|
||||
hero.connections.push({shipId, level});
|
||||
heroConnections.push({shipId, level});
|
||||
}
|
||||
let friendShip = getFriendShipById(shipId, level);
|
||||
if (hero.star < friendShip.level)
|
||||
@@ -386,8 +410,8 @@ export class HeroHandler {
|
||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||
}
|
||||
//重算战力并下发
|
||||
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.CONNECT, [shipId, level]);
|
||||
return resResult(STATUS.SUCCESS, { curHero: {hid : heros[0].hid, connections : heros[0].connections}});
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.CONNECT, sid, roleId, hero, { connections: heroConnections }, [shipId]);
|
||||
return resResult(STATUS.SUCCESS, { curHero: {hid : hero.hid, connections : hero.connections}});
|
||||
}
|
||||
|
||||
//赠送(包括一键赠送)
|
||||
@@ -445,8 +469,6 @@ export class HeroHandler {
|
||||
}
|
||||
|
||||
let newLv = getFavourLvByExp(newExp);
|
||||
hero.favour = newExp;
|
||||
hero.favourLv = newLv;
|
||||
|
||||
let result = await handleCost(roleId, sid, material);
|
||||
if(!result) {
|
||||
@@ -454,11 +476,13 @@ export class HeroHandler {
|
||||
}
|
||||
//重算战力并下发
|
||||
if (oldLv != hero.favourLv) {
|
||||
await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.FAVOUR, [oldLv]);
|
||||
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.FAVOUR, sid, roleId, hero, {
|
||||
favour: newExp, favourLv: newLv
|
||||
}, [oldLv]);
|
||||
} else {
|
||||
await HeroModel.updateHeroInfo(roleId, hero.hid, hero);
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { curHero: {hid : hero.hid, favour : hero.favour, favourLv : hero.favourLv}});
|
||||
return resResult(STATUS.SUCCESS, { curHero: { hid: hero.hid, favour: hero.favour, favourLv: hero.favourLv } });
|
||||
}
|
||||
|
||||
//穿带时装
|
||||
@@ -467,14 +491,15 @@ export class HeroHandler {
|
||||
let sid: string = session.get('sid');
|
||||
let { id } = msg;
|
||||
let skinInfo = gameData.fashion.get(id);
|
||||
if (!skinInfo)
|
||||
return resResult(STATUS.HERO_SKIN_NOT_FIND);
|
||||
if (!skinInfo) return resResult(STATUS.HERO_SKIN_NOT_FIND);
|
||||
let hero = await HeroModel.findByHidAndRole(skinInfo.actorId, roleId);
|
||||
if (!hero)
|
||||
return resResult(STATUS.HERO_NOT_FIND);
|
||||
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
|
||||
|
||||
let heroSkins = deepCopy(hero.skins);
|
||||
|
||||
let result = false;
|
||||
let lastSkinId: number;
|
||||
for (let skin of hero.skins) {
|
||||
for (let skin of heroSkins) {
|
||||
if (skin.id == id) {
|
||||
if (!!skin.enable) {
|
||||
return resResult(STATUS.HERO_SKIN_IS_EQUIPED);
|
||||
@@ -491,7 +516,7 @@ export class HeroHandler {
|
||||
if (!result) {
|
||||
return resResult(STATUS.HERO_SKIN_NOT_FIND);
|
||||
}
|
||||
await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.SKIN, [id, lastSkinId]);
|
||||
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.SKIN, sid, roleId, hero, { skins: heroSkins }, [id, lastSkinId]);
|
||||
return resResult(STATUS.SUCCESS, {curHero: {hid : hero.hid, skins : hero.skins} });
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user