feat(镇念塔): 副将加入锁定武将 5fb3cd768

This commit is contained in:
luying
2023-09-05 19:56:51 +08:00
parent 0e11635c5e
commit 77d31d1d9b
5 changed files with 20 additions and 8 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -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 });
}
}
}

View File

@@ -16,6 +16,8 @@ class DamageRecord {
heal: number;
@prop({ required: true })
underDamage: number;
@prop({ required: false })
subHid?: number;
}
class RougeCharaRecord {

View File

@@ -40,6 +40,7 @@ export interface pvpEndParamInter {
damage: number;
heal: number;
underDamage: number;
subHid?: number;
}
export interface RougeDamageInter {