战力计算

This commit is contained in:
mamengke01
2020-12-11 21:03:14 +08:00
parent 4d649f46a8
commit b411c5efe0
18 changed files with 2741 additions and 1566 deletions
@@ -5,7 +5,7 @@ import { resResult, getItems, decodeStr } from '../../../pubUtils/util';
import { STATUS } from '../../../consts/statusCode';
import {HeroModel} from '../../../db/Hero';
import {CURRENCY_BY_TYPE, CURRENCY_TYPE, ITID, CONSUME_TYPE, HERO_GROW_MAX} from '../../../consts/consts';
import {getJobInfoById, getMaxGradeByjobClass, getHeroInfoById, getGoodById, getHeroExpByLv, getGamedata, getJobByGradeAndClass, getFriendShipById, getFriendShipLevels, getFashionsById} from '../../../pubUtils/gamedata';
import {getJobInfoById, getMaxGradeByjobClass, getHidAndLevelByShipId, getHeroInfoById, getGoodById, getHeroExpByLv, getGamedata, getJobByGradeAndClass, getFriendShipById, getFriendShipLevels, getFashionsById} from '../../../pubUtils/gamedata';
import { ABI_STAGE } from '../../../consts/abilityConst';
import { RoleModel } from '../../../db/Role';
@@ -280,7 +280,7 @@ export class HeroHandler {
let roleId: string = session.get('roleId');
let sid: string = session.get('sid');
let { hid } = msg;
let hero = await HeroModel.findByHidAndRole(hid, roleId);
let hero = await HeroModel.findByHidAndRole(hid, roleId, false);
if (!hero)
return resResult(STATUS.HERO_NOT_FIND);
let heroJob = getJobInfoById(hero.job);
@@ -307,7 +307,7 @@ export class HeroHandler {
let roleId: string = session.get('roleId');
let sid: string = session.get('sid');
let { hid } = msg;
let hero = await HeroModel.findByHidAndRole(hid, roleId);
let hero = await HeroModel.findByHidAndRole(hid, roleId, false);
if (!hero)
return resResult(STATUS.HERO_NOT_FIND);
let heroJob = getJobInfoById(hero.job);
@@ -329,26 +329,41 @@ export class HeroHandler {
}
//激活羁绊
async heroConectionActivate(msg: {hid:number, id:number}, session: BackendSession) {
async heroConectionActivate(msg: {shipId: number}, session: BackendSession) {
let roleId: string = session.get('roleId');
let sid: string = session.get('sid');
let { hid, id } = msg;
let friendShip = getFriendShipById(id);
if (!friendShip)
return resResult(STATUS.HERO_CONECTION_IS_EXIT);
if (friendShip.actorId != hid)
return resResult(STATUS.WRONG_PARMS);
let hero = await HeroModel.findByHidAndRole(hid, roleId);
let { shipId } = msg;
let shipHidAndLevel = getHidAndLevelByShipId(shipId);
if (!shipHidAndLevel)
return resResult(STATUS.HERO_CONECTION_IS_NOT_EXIT);
let hero = await HeroModel.findByHidAndRole(shipHidAndLevel.actorId, roleId, false);
if (!hero)
return resResult(STATUS.HERO_NOT_FIND);
if (!!_.findWhere(hero.conections, {id:id}))
return resResult(STATUS.HERO_CONECTION_IS_EXIT);
let flag = true;
let level = 1;
for (let conection of hero.conections) {
if (conection.shipId == shipId ) {
if (conection.level >= shipHidAndLevel.level) {
return resResult(STATUS.HERO_CONECTION_IS_MAX_LEVEL);
} else {
flag = false;
conection.level++;
level = conection.level;
}
}
}
if (!!flag) {
hero.conections.push({shipId,level});
}
let friendShip = getFriendShipById(shipId, level);
if (hero.star < friendShip.level)
return resResult(STATUS.NOT_REACH_UNLOCK_LEVEL);
let heroIds = friendShip.memberId.split('|');
for (let heroId of heroIds) {
let member = await HeroModel.findByHidAndRole(heroId, roleId);
if(!member)
let hids = friendShip.hids;
for (let hid of hids) {
if (hid == shipHidAndLevel.actorId)
continue;
let member = await HeroModel.findByHidAndRole(hid, roleId, false);
if (!member)
return resResult(STATUS.HERO_NOT_FIND);
if (member.star < friendShip.level)
return resResult(STATUS.NOT_REACH_UNLOCK_LEVEL);
@@ -357,9 +372,6 @@ export class HeroHandler {
if(!result) {
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
}
hero.conections.push({
id : id
});
//重算战力并下发
let heros = await calPlayerCeAndSave(sid, roleId, [hero]);
return resResult(STATUS.SUCCESS, { hid : heros[0].hid, conections : heros[0].conections});
@@ -370,7 +382,7 @@ export class HeroHandler {
let roleId: string = session.get('roleId');
let sid: string = session.get('sid');
let { hid, items } = msg;
let hero = await HeroModel.findByHidAndRole(hid, roleId);
let hero = await HeroModel.findByHidAndRole(hid, roleId, false);
if (!hero)
return resResult(STATUS.HERO_NOT_FIND);
let friendShipLevels = getFriendShipLevels();
@@ -412,7 +424,7 @@ export class HeroHandler {
let skinInfo = getFashionsById(id);
if (!skinInfo)
return resResult(STATUS.HERO_SKIN_NOT_FIND);
let hero = await HeroModel.findByHidAndRole(skinInfo.actorId, roleId);
let hero = await HeroModel.findByHidAndRole(skinInfo.actorId, roleId, false);
if (!hero)
return resResult(STATUS.HERO_NOT_FIND);
let result = false;