调整寻宝战斗中同步的数据结构

This commit is contained in:
liangtongchuan
2020-11-30 18:12:23 +08:00
parent fdca4d3cad
commit 1d1e766415

View File

@@ -2,7 +2,7 @@
* @Author: 梁桐川
* @Date: 2020-11-30 15:05:48
* @Last Modified by: 梁桐川
* @Last Modified time: 2020-11-30 15:09:51
* @Last Modified time: 2020-11-30 18:08:49
*/
import { COM_BATTLE_ROBOT_CE_RATIO, COM_BATTLE_ROBOT_ID_NAME, COM_BATTLE_ASSIST_TIME, COM_BATTLE_ROBOT_ROUND_LMT, COM_BATTLE_ROBOT_HURT_RATIO, COM_BATTLE_ROBOT_HURT_CH_RATIO, COM_TEAM_STATUS } from './../../../consts/consts';
import { IT_TYPE, GOLD_COST_RATIO, CURRENCY_BY_TYPE, CURRENCY_TYPE } from '../../../consts/consts';
@@ -232,7 +232,7 @@ export class ComBattleHandler {
let teamStatus = this.teamMap.get(teamCode);
if (!teamStatus || teamStatus.status !== 0 || teamStatus.roleIds.length === 3) return resResult(STATUS.COM_BATTLE_MEMBER_LIMIT);
if (teamStatus.roleIds.indexOf(roleId) !== -1) return resResult(STATUS.COM_BATTLE_DUP_ENTER);
let { lv, headHid = 19, topFiveCe = 0, sHid = 19 } = await Role.findByRoleId(roleId);
let { lv = 1, headHid = 19, topFiveCe = 0, sHid = 19 } = await Role.findByRoleId(roleId);
let { quality } = getGoodById(teamStatus.blueprtId);
let { assistanceLevel, assistanceTime } = getComBtlSetByQuality(quality);
if (lv < COM_TEAM_ENABLE_LV) {
@@ -452,51 +452,33 @@ export class ComBattleHandler {
/**
* @description 战场中的状态同步,战斗结果判定
* @param {{teamCode: string, heroes: Array<{hid: number, hurtHp: number}>, bossHurts: Array<{dataId: number, hurtHp: number}>, killed: Array<number>, curRnd: number}} msg 队伍编号;武将伤害;boss 承伤;武将阵亡;当前回合
* @param {{teamCode: string, bossHurts: Array<{dataId: number, hurtHp: number}>, killed: Array<number>, curRnd: number}} msg 队伍编号boss 承伤;武将阵亡;当前回合
* @param {BackendSession} session
* @returns
* @memberof ComBattleHandler
*/
async action(msg: {teamCode: string, heroes: Array<{hid: number, hurtHp: number}>, bossHurts: Array<{dataId: number, hurtHp: number}>, killed: Array<number>, curRnd: number}, session: BackendSession) {
async action(msg: {teamCode: string, bossHurts: Array<{dataId: number, hurtHp: number}>, killed: Array<number>, curRnd: number}, session: BackendSession) {
let roleId = session.get('roleId');
let { teamCode, heroes, killed, bossHurts, curRnd } = msg;
let { teamCode, killed, bossHurts, curRnd } = msg;
let teamStatus = this.teamMap.get(teamCode);
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) return resResult(STATUS.COM_BATTLE_TEAM_INVALID);
if (teamStatus.status !== COM_TEAM_STATUS.FIGHTING) return resResult(STATUS.COM_BATTLE_NOT_START);
// 仅做武将伤害和 boss 承伤的校验,不处理溢出
let totalHurtHp = 0;
let totalBossHurt = 0;
if (heroes && heroes.length) {
heroes.forEach(hero => {
if (hero.hurtHp > 0) {
totalHurtHp += hero.hurtHp;
}
});
}
if (bossHurts && bossHurts.length) {
bossHurts.forEach(boss => {
if (boss.hurtHp > 0) {
totalBossHurt += boss.hurtHp;
}
});
}
if (totalHurtHp !== totalBossHurt) return resResult(STATUS.COM_BATTLE_HURT_NUM_ERR);
// 重置总血量,计算真实伤害
totalHurtHp = 0, totalBossHurt = 0;
let totalHurtHp = 0;
teamStatus.bossHpArr.forEach(boss => {
bossHurts.forEach(bh => {
if (boss.dataId === bh.dataId) {
if (boss.curHp >= bh.hurtHp) {
totalHurtHp += bh.hurtHp;
boss.curHp -= bh.hurtHp;
for (let bh of bossHurts) {
if (boss.dataId === bh.dataId && bh.hurtHp < 0) {
let deltaHp = Math.abs(bh.hurtHp);
if (boss.curHp >= deltaHp) {
totalHurtHp += deltaHp;
boss.curHp -= deltaHp;
} else {
totalHurtHp += boss.curHp;
totalHurtHp += deltaHp;
boss.curHp = 0;
}
}
})
}
});
// 更新玩家武将阵亡情况,计算玩家总伤害,计算机器人造成的伤害
teamStatus.roleStatus.forEach(roleSt => {