百家学宫,名将谱战力
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user