fix bug 远征显示下一关等
This commit is contained in:
@@ -39,7 +39,7 @@ export class ExpeditionBattleHandler {
|
||||
expeditionRecord = await ExpeditionRecordModel.createRecord({
|
||||
roleId, roleName, heroes: [], myCe
|
||||
});
|
||||
await findOrCreateEnemies(roleId, myCe, expeditionRecord.expeditionCode, 1);
|
||||
await findOrCreateEnemies(roleId, myCe, expeditionRecord.expeditionCode, 1, 0);
|
||||
}
|
||||
|
||||
// 每一关的挑战状态
|
||||
@@ -63,7 +63,7 @@ export class ExpeditionBattleHandler {
|
||||
curLv,
|
||||
expeditionWarRecord,
|
||||
pointRewards,
|
||||
heroes,
|
||||
heroes: heroes.map(cur => {return {"dataId": cur.seqId, "hp": cur.hp, "ap": cur.ap}}),
|
||||
resetCnt
|
||||
});
|
||||
}
|
||||
@@ -90,7 +90,7 @@ export class ExpeditionBattleHandler {
|
||||
let { expeditionCode, heroes } = await ExpeditionRecordModel.createRecord({
|
||||
roleId, roleName, heroes: [], myCe
|
||||
});
|
||||
await findOrCreateEnemies(roleId, myCe, expeditionCode, 1);
|
||||
await findOrCreateEnemies(roleId, myCe, expeditionCode, 1, 0);
|
||||
await RoleModel.increaseExpeditionResetCnt(roleId, needRefresh, curTime);
|
||||
let expeditionWarRecord = await ExpeditionWarRecordModel.getRecordByCode(expeditionCode);
|
||||
let curLv = 0;
|
||||
@@ -119,13 +119,13 @@ export class ExpeditionBattleHandler {
|
||||
|
||||
let { myCe } = await ExpeditionRecordModel.getExpeditionRecordByCode(expeditionCode);
|
||||
|
||||
let curExpeditionWarRecord = await findOrCreateEnemies(roleId, myCe, expeditionCode, expeditionId);
|
||||
let curExpeditionWarRecord = await findOrCreateEnemies(roleId, myCe, expeditionCode, expeditionId, 0);
|
||||
if(!curExpeditionWarRecord) {
|
||||
return resResult(STATUS.EXPEDITION_MATCH_NO_PLAYER);
|
||||
}
|
||||
let { battleId, enemyFrom, enemies, battleStatus, ce: curCe } = curExpeditionWarRecord;
|
||||
let nextCe = 0; // 下一关战力
|
||||
let nextExpeditionWarRecord = await findOrCreateEnemies(roleId, myCe, expeditionCode, expeditionId + 1);
|
||||
let nextExpeditionWarRecord = await findOrCreateEnemies(roleId, myCe, expeditionCode, expeditionId + 1, -1);
|
||||
if(nextExpeditionWarRecord) nextCe = nextExpeditionWarRecord.ce;
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
@@ -186,7 +186,7 @@ export class ExpeditionBattleHandler {
|
||||
}
|
||||
}, true);
|
||||
|
||||
let result = await ExpeditionWarRecordModel.updateStatus(expeditionCode, expeditionId, 0, battleCode);
|
||||
let result = await ExpeditionWarRecordModel.updateBattleCode(expeditionCode, expeditionId, 0, battleCode);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
expeditionCode,
|
||||
@@ -259,6 +259,8 @@ export class ExpeditionBattleHandler {
|
||||
let reward = await warReward.saveReward(1);
|
||||
|
||||
let actordata = await roleLevelup(roleId, isSuccess?warInfo.kingExp:0);// 主公升级经验
|
||||
// 更新下一关状态
|
||||
await ExpeditionWarRecordModel.updateStatus(expeditionCode, expeditionId + 1, 0);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
expeditionCode, expeditionId,
|
||||
|
||||
@@ -158,6 +158,7 @@ export class TowerBattleHandler {
|
||||
let curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前显示中的任务
|
||||
|
||||
const needRefresh = shouldRefresh(towerTaskRefTime, curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||
|
||||
if(needRefresh) {
|
||||
const batchCode = genCode(8);
|
||||
await RoleModel.resetTowerCnt(roleId, curTime); // 重置派遣次数
|
||||
@@ -230,7 +231,7 @@ export class TowerBattleHandler {
|
||||
return resResult(STATUS.TOWER_TASK_CODE_NOT_FOUND);
|
||||
}
|
||||
if (usedHeroes.length > 0) { // 是否在其他任务重使用了武将
|
||||
let hasHero = await checkBattleHeroes(roleId, usedHeroes);
|
||||
let hasHero = await checkBattleHeroes(roleId, task.heroes);
|
||||
if(!hasHero) return resResult(STATUS.BATTLE_HERO_NOT_FOUND);
|
||||
let used = !!task.heroes.find(seqId => usedHeroes.indexOf(seqId) !== -1);
|
||||
if (used) {
|
||||
@@ -276,7 +277,7 @@ export class TowerBattleHandler {
|
||||
const rewardGoods = await handleFixedReward(roleId, roleName, reward, 1);
|
||||
goods = goods.concat(rewardGoods.goods);
|
||||
if(termsForAdd) {
|
||||
const result = checkTaskConditions(roleId, task.heroes, termsForAdd);
|
||||
const result = await checkTaskConditions(roleId, task.heroes, termsForAdd);
|
||||
const bonusGoods = await handleFixedReward(roleId, roleName, result?additionalReward:'', 1);
|
||||
goods = goods.concat(bonusGoods.goods);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,11 @@ export async function checkTowerWar(roleId: string, battleId: number, heroes: Ar
|
||||
return { status: -1, resResult: resResult(STATUS.TOWER_WRONG_BATTLE_ID) };
|
||||
}
|
||||
|
||||
let { heroes: recHeroes = [], warStatus = [] } = await TowerRecordModel.getRecordByLv(roleId, towerLv);
|
||||
const tower = await TowerRecordModel.getRecordByLv(roleId, towerLv);
|
||||
if(!tower) {
|
||||
return { status: -1, resResult: resResult(STATUS.TOWER_NOT_FOUND) };
|
||||
}
|
||||
let { heroes: recHeroes = [], warStatus = [] } = tower;
|
||||
for (let hid of heroes) {
|
||||
if (recHeroes.indexOf(hid) !== -1) {
|
||||
return { status: -1, resResult: resResult(STATUS.TOWER_DUPLICATE_HERO) };
|
||||
@@ -194,8 +198,8 @@ async function checkCond(roleId: string, heroes, type: number, param: number, cn
|
||||
switch (type) {
|
||||
case 1:
|
||||
for(let seqId of heroes) {
|
||||
const rec = await HeroModel.findBySeqIdAndRole(seqId, roleId);
|
||||
if (rec.star >= param) {
|
||||
const {star, fire} = await HeroModel.findBySeqIdAndRole(seqId, roleId);
|
||||
if (star + fire >= param) {
|
||||
heroCnt++;
|
||||
}
|
||||
}
|
||||
@@ -253,7 +257,7 @@ export async function createCurTasks(towerLv: number, batchCode: string, roleId:
|
||||
let dicTask = getGamedata('dic_zyz_search');
|
||||
for(let task of dicTask) {
|
||||
let {suitFloor} = task;
|
||||
let {min, max} = decodeStrSingle('suitLevel', suitFloor);
|
||||
let {min, max} = decodeStrSingle('suitLevelSingle', suitFloor);
|
||||
let flag = max?(towerLv >= min && towerLv <= max): (towerLv >= min);
|
||||
if(flag) {
|
||||
randomList.push(task);
|
||||
|
||||
@@ -8,8 +8,9 @@ import { decodeStr, resResult, setLocalHours, shouldRefresh } from '../pubUtils/
|
||||
import { WAR_JSON_ATTRIBUTE_TYPE, EXPEDITION_CONST } from '../consts/consts';
|
||||
import Actor from '../pubUtils/actor';
|
||||
import { ExpeditionWarRecordModel } from '../db/ExpeditionWarRecord';
|
||||
import { stat } from 'fs';
|
||||
|
||||
export async function findOrCreateEnemies(roleId: string, myCe: number, expeditionCode: string, expeditionId: number) {
|
||||
export async function findOrCreateEnemies(roleId: string, myCe: number, expeditionCode: string, expeditionId: number, battleStatus: number) {
|
||||
|
||||
let expeditionWarRecord = await ExpeditionWarRecordModel.getRecordByCodeAndId(expeditionCode, expeditionId);
|
||||
if(!expeditionWarRecord) { // 如果没有信息
|
||||
@@ -35,7 +36,7 @@ export async function findOrCreateEnemies(roleId: string, myCe: number, expediti
|
||||
// 保存
|
||||
let {warId} = curDicExpedition;
|
||||
expeditionWarRecord = await ExpeditionWarRecordModel.saveRecord(expeditionCode, expeditionId, {
|
||||
roleId, battleId: warId, ...enemyObj
|
||||
roleId, battleId: warId, ...enemyObj, battleStatus
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,8 +30,12 @@ export async function roleLevelup(roleId: string, kingExp: number) {
|
||||
|
||||
export async function checkBattleHeroes(roleId: string, heroes: Array<number>) {
|
||||
let flag = true;
|
||||
if(heroes.length <= 0) flag = false;
|
||||
|
||||
const findHeroes = await HeroModel.findBySeqIdRange(heroes, roleId);
|
||||
if(findHeroes.length != heroes.length) flag = false;
|
||||
for(let seqId of heroes) {
|
||||
let hero = await HeroModel.findBySeqIdAndRole(seqId||0, roleId);
|
||||
let hero = findHeroes.find(cur => cur.seqId == seqId);
|
||||
if(!hero) flag = false;
|
||||
}
|
||||
return flag;
|
||||
|
||||
@@ -45,9 +45,9 @@ export class WarReward {
|
||||
let last = str.substr(str.length-1, 1);
|
||||
if(last == '&') str = str.substr(0, str.length - 1);
|
||||
if(str.length) {
|
||||
this.fixReward += reward;
|
||||
} else {
|
||||
this.fixReward += '|' + reward;
|
||||
} else {
|
||||
this.fixReward += reward;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user