✨ feat(镇念塔): 副将加入锁定武将 5fb3cd768
This commit is contained in:
@@ -212,7 +212,7 @@ export class NormalBattleHandler {
|
||||
// 记录事件状态
|
||||
await setBattleStatus(session, roleId, battleId, isSuccess, battleCode);
|
||||
} else if (warInfo.warType == WAR_TYPE.TOWER) {
|
||||
let towerEndResult = await towerBattleEnd(sid, roleId, serverId, battleCode, battleId, isSuccess, heroes);
|
||||
let towerEndResult = await towerBattleEnd(sid, roleId, serverId, battleCode, battleId, isSuccess, dbHeroes, dbSeqIds, damageRecords);
|
||||
if (towerEndResult) {
|
||||
if (towerEndResult.status == -1) {
|
||||
return towerEndResult.resResult;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { HeroType } from './../db/Hero';
|
||||
import { HeroModel, HeroType } from './../db/Hero';
|
||||
import { HangUpRecordModel } from './../db/HangUpRecord';
|
||||
import { HANG_UP_CONSTS, REDIS_KEY, TASK_TYPE, TOWER_FORBIDDEN_CHARA_TYPE, TOWER_TASK_STATUS, MAIL_TYPE, MSG_SOURCE, POP_UP_SHOP_CONDITION_TYPE } from './../consts';
|
||||
import { BattleRecordModel } from './../db/BattleRecord';
|
||||
@@ -11,7 +11,7 @@ import { TaskHero, TowerTaskRecModel, TowerTaskRecType } from '../db/TowerTaskRe
|
||||
import { Rank } from './rankService';
|
||||
import { checkTask } from './task/taskService';
|
||||
import { getRandExpedition, gameData } from '../pubUtils/data';
|
||||
import { ItemInter, RewardInter } from '../pubUtils/interface';
|
||||
import { ItemInter, RewardInter, pvpEndParamInter } from '../pubUtils/interface';
|
||||
import { getTimeFunM } from '../pubUtils/timeUtil';
|
||||
import { ComRoleStatusHero } from '../db/ComBattleTeam';
|
||||
import { sendMailByContent } from './mailService';
|
||||
@@ -245,7 +245,7 @@ export function checkForbiddenChar(hid: number, job: number, fobiddenCharactor:
|
||||
return flag;
|
||||
}
|
||||
|
||||
export async function towerBattleEnd(sid: string, roleId: string, serverId: number, battleCode: string, battleId: number, succeed: boolean, heroes: Array<number>) {
|
||||
export async function towerBattleEnd(sid: string, roleId: string, serverId: number, battleCode: string, battleId: number, succeed: boolean, dbHeroes: number[], dbSeqIds: number[], damageRecords: pvpEndParamInter[]) {
|
||||
if (succeed) {
|
||||
let battleRec = await BattleRecordModel.getBattleRecordByCode(battleCode);
|
||||
if (battleRec.battleId != battleId) {
|
||||
@@ -255,7 +255,7 @@ export async function towerBattleEnd(sid: string, roleId: string, serverId: numb
|
||||
let { towerLv, roleName } = await RoleModel.findByRoleId(roleId);
|
||||
let { warStatus, heroes: recHeroes } = await TowerRecordModel.getRecordByLv(roleId, towerLv);
|
||||
// console.log('*******', towerLv, heroes.join(), recHeroes.join())
|
||||
for (let hid of heroes) {
|
||||
for (let hid of dbSeqIds) {
|
||||
if (recHeroes.indexOf(hid) !== -1) {
|
||||
return { status: -1, resResult: resResult(STATUS.TOWER_DUPLICATE_HERO) };
|
||||
}
|
||||
@@ -272,7 +272,15 @@ export async function towerBattleEnd(sid: string, roleId: string, serverId: numb
|
||||
});
|
||||
inc = wars.length == dicTower.warArray.length? 1: 0;
|
||||
}
|
||||
let newRec = await TowerRecordModel.updateRecord(roleId, towerLv, battleCode, battleId, heroes, inc);
|
||||
|
||||
let subHids: number[] = [];
|
||||
for (let hid of dbHeroes) {
|
||||
let damageRecord = damageRecords.find(cur => cur.hid == hid);
|
||||
if (damageRecord && damageRecord.subHid > 0) subHids.push(damageRecord.subHid);
|
||||
}
|
||||
|
||||
const dbDamageSub = await HeroModel.findByHidsAndRole(roleId, subHids);
|
||||
let newRec = await TowerRecordModel.updateRecord(roleId, towerLv, battleCode, battleId, [...dbSeqIds, ...dbDamageSub.map(cur => cur.seqId)], inc);
|
||||
let towerReward: RewardInter[] = [];
|
||||
if (inc === 1) {
|
||||
let role = await RoleModel.towerLvUp(roleId);
|
||||
|
||||
@@ -269,9 +269,10 @@ export function getBattleRecordParam(damageRecord: pvpEndParamInter[], round: nu
|
||||
let record = { 'record.heroes': [], 'record.damageRecord': [], 'record.round': 0 };
|
||||
if(heroes && isArray(heroes)) record['record.heroes'] = heroes;
|
||||
if(damageRecord && isArray(damageRecord)) {
|
||||
for(let { hid, damage, heal, underDamage } of damageRecord) {
|
||||
for(let { hid, damage, heal, underDamage, subHid } of damageRecord) {
|
||||
if (subHid && (!isNumber(subHid))) continue;
|
||||
if(isNumber(hid) && isNumber(damage) && isNumber(heal) && isNumber(underDamage)) {
|
||||
record['record.damageRecord'].push({ hid, damage, heal, underDamage });
|
||||
record['record.damageRecord'].push({ hid, damage, heal, underDamage, subHid });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@ class DamageRecord {
|
||||
heal: number;
|
||||
@prop({ required: true })
|
||||
underDamage: number;
|
||||
@prop({ required: false })
|
||||
subHid?: number;
|
||||
}
|
||||
|
||||
class RougeCharaRecord {
|
||||
|
||||
@@ -40,6 +40,7 @@ export interface pvpEndParamInter {
|
||||
damage: number;
|
||||
heal: number;
|
||||
underDamage: number;
|
||||
subHid?: number;
|
||||
}
|
||||
|
||||
export interface RougeDamageInter {
|
||||
|
||||
Reference in New Issue
Block a user