百家学宫,名将谱战力

This commit is contained in:
luying
2020-12-26 16:42:33 +08:00
parent a3c5f6b57f
commit ffb12668f7
13 changed files with 796 additions and 826 deletions
@@ -1,7 +1,7 @@
import {Application, BackendSession, ChannelService} from 'pinus';
import { handleCost, addItems } from '../../../services/rewardService';
import { calPlayerCeAndSave } from '../../../services/playerCeService';
import { resResult, returnHeroCeRatio } from '../../../pubUtils/util';
import { resResult, returnHeroCeRatio, getAllAttrStage } from '../../../pubUtils/util';
import { STATUS } from '../../../consts/statusCode';
import {HeroModel} 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';
@@ -9,7 +9,6 @@ import { RoleModel } from '../../../db/Role';
import { ItemModel } from '../../../db/Item';
import { gameData, getHeroExpByLv, getHeroStarByQuality, getHeroWakeByQuality, getHeroLvByExp, getMaxGradeByjobClass, getJobByGradeAndClass, getFriendShipById } from '../../../pubUtils/data';
import { RewardInter } from '../../../pubUtils/interface';
import { getAllAttrStage } from '../../../pubUtils/playerCe';
export default function(app: Application) {
return new HeroHandler(app);
@@ -136,7 +135,7 @@ export class HeroHandler {
hero.lv = playerLv > newLv?newLv: playerLv;
hero.exp = newExp;
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.STAR, getAllAttrStage());
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.LVUP, [hid]);
const curHero = {
hid, lv : heros[0].lv, exp : heros[0].exp
}
@@ -176,7 +175,7 @@ export class HeroHandler {
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, [isUpStar? ABI_STAGE.END: hero.starStage]);
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.STAR, [hid, isUpStar?1:0]);
const curHero = {
hid,
star : heros[0].star,
@@ -220,7 +219,7 @@ export class HeroHandler {
if(!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
hero.quality ++;
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.STAR, getAllAttrStage());
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.QUALITY, [hid]);
const curHero = {
hid,
quality : heros[0].quality
@@ -263,18 +262,12 @@ export class HeroHandler {
let costResult = await handleCost(roleId, sid, [{id: pieceId, count: fragmentNum}, ...consume]);
if(!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let isUpStar = oldColorStar == 0|| oldColorStarStage + 1 == ABI_STAGE.END;
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 args = new Array<number>();
if(oldColorStarStage + 1 == ABI_STAGE.END) {
args = getAllAttrStage();
} else {
args.push(isUpStar? ABI_STAGE.END: hero.colorStarStage)
}
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.STAR, args);
let heros = await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.COLORSTAR, [hid, isUpStar?1:0, isWakeUp?1:0]);
const curHero = {
hid,
star : heros[0].star,
@@ -12,6 +12,9 @@ import { SclResultInter, SclPosInter } from '../../../pubUtils/interface';
import { SchoolModel } from '../../../db/School';
import { TERAPH_RANDOM } from '../../../consts/consts';
import { checkMaterialEnough } from '../../../services/roleService'
import { calPlayerCeAndSave } from '../../../services/playerCeService';
import { HERO_SYSTEM_TYPE } from '../../../consts';
export default function(app: Application) {
return new RoleHandler(app);
}
@@ -154,6 +157,7 @@ export class RoleHandler {
await RoleModel.updateRoleInfo(roleId, { teraphs: role.teraphs });
return resResult(STATUS.SUCCESS, { roleId, teraphs: role.teraphs });
}
// 获得百家学宫
async getSchoolList(msg: {}, session: BackendSession) {
let roleId = session.get('roleId');
@@ -209,10 +213,16 @@ export class RoleHandler {
}
let isOpen = !!dicPosition.get(positionId.toString()); // 该位置是否解锁
let findHero = await SchoolModel.findByHid(roleId, hid);
if (!!findHero) {
return resResult(STATUS.ROLE_SCHOOL_HERO_USED);
if(hid > 0) {
let findHero = await SchoolModel.findByHid(roleId, hid);
if (!!findHero) {
return resResult(STATUS.ROLE_SCHOOL_HERO_USED);
}
let curHero = await HeroModel.findByHidAndRole(hid, roleId);
if (!curHero) return resResult(STATUS.HERO_NOT_FIND);
}
let curSchool = await SchoolModel.findBySclAndPos(roleId, schoolId, positionId);
let preHid = 0; // 原先在该位置上的武将
if (curSchool) {
@@ -220,14 +230,13 @@ export class RoleHandler {
preHid = curSchool.hid;
}
let curHero = await HeroModel.findByHidAndRole(hid, roleId);
if (!curHero) return resResult(STATUS.HERO_NOT_FIND);
if (!isOpen) {
return resResult(STATUS.ROLE_SCHOOL_POSITION_LOCKED);
}
await SchoolModel.updateBySclAndPos(roleId, schoolId, positionId, { hid, isOpen })
await calPlayerCeAndSave(sid, roleId, [], HERO_SYSTEM_TYPE.SCHOOL, [schoolId, hid, preHid]);
return resResult(STATUS.SUCCESS, {
schoolId, positionId, hid, preHid, isOpen
@@ -321,6 +330,7 @@ export class RoleHandler {
}
curHero = await HeroModel.updateHeroInfo(roleId, hid, update, 'hid scrollActive scrollStar scrollColorStar scrollQuality favour favourLv');
await calPlayerCeAndSave(sid, roleId, [], HERO_SYSTEM_TYPE.SCROLL, [hid, favourLv]);
return resResult(STATUS.SUCCESS, {
curHero
+9 -3
View File
@@ -5,7 +5,7 @@
import { pinus } from 'pinus';
import { STATUS } from '../consts/statusCode';
import { resResult } from '../pubUtils/util';
import { resResult, reduceCe } from '../pubUtils/util';
import { calPlayerCeAndSave as pubCalPlayerCeAndSave, reCalAllHeroCe } from '../pubUtils/playerCe';
import { HeroType } from '../db/Hero';
const _ = require('underscore');
@@ -16,13 +16,19 @@ export async function calPlayerCeAndSave(sid: string, roleId: string, heros: Arr
let {role, pushHeros} = await pubCalPlayerCeAndSave(roleId, heros, type, args);
//下发战力
let uids = [{ uid: roleId, sid }];
pinus.app.get('channelService').pushMessageByUids('onPlayerCeUpdate', resResult(STATUS.SUCCESS, { ce: role.ce, heros: pushHeros, topFiveCe: 0 }), uids);
let pushHerosReduced = pushHeros.map(cur => {
return { hid: cur.hid, ce: reduceCe(cur.ce), incHeroCe: reduceCe(cur.incHeroCe) }
});
pinus.app.get('channelService').pushMessageByUids('onPlayerCeUpdate', resResult(STATUS.SUCCESS, { ce: reduceCe(role.ce) , heros: pushHerosReduced, topFiveCe: 0 }), uids);
return heros;
}
export async function calAllHeroCe(sid: string, roleId: string, type:number, args:Array<number>) {
let {ce, pushHeros}= await reCalAllHeroCe(roleId,type, args);
let uids = [{ uid: roleId, sid }];
pinus.app.get('channelService').pushMessageByUids('onPlayerCeUpdate', resResult(STATUS.SUCCESS, { ce: ce, heros: pushHeros, topFiveCe: 0 }), uids);
let pushHerosReduced = pushHeros.map(cur => {
return { hid: cur.hid, ce: reduceCe(cur.ce), incHeroCe: reduceCe(cur.incHeroCe) }
});
pinus.app.get('channelService').pushMessageByUids('onPlayerCeUpdate', resResult(STATUS.SUCCESS, { ce: reduceCe(ce), heros: pushHerosReduced, topFiveCe: 0 }), uids);
return;
}