名将擂台:修复任务相关

This commit is contained in:
luying
2022-07-18 18:03:27 +08:00
parent 96d01ab803
commit d72f6ef080
7 changed files with 145 additions and 1402 deletions

View File

@@ -18,6 +18,7 @@ import { ServerlistModel } from '../../../db/Serverlist';
import { saveLadderDefCeByData } from '../../../services/redisService';
import { pushLadderTopChangeMsg } from '../../../services/sysChatService';
import { checkTaskInLadderEnd, checkTaskInLadderStart, checkTaskInLadderSweep } from '../../../services/task/taskService';
import { BattleRecordModel } from '../../../db/BattleRecord';
export default function (app: Application) {
new HandlerService(app, {});
@@ -136,9 +137,10 @@ export class LadderHandler {
}
// 6. 布完阵开始挑战
async checkBattle(msg: { battleCode: string, heroes: { actorId: number, order: number }[] }, session: BackendSession) {
async checkBattle(msg: { battleCode: string, battleId: number, heroes: { actorId: number, order: number }[] }, session: BackendSession) {
let roleId = session.get('roleId');
let { battleCode, heroes } = msg;
let roleName = session.get('roleId');
let { battleId, battleCode, heroes } = msg;
let rec = await LadderMatchRecModel.findByBattleCode(battleCode);
if(!rec || rec.roleId1 != roleId) return resResult(STATUS.LADDER_REC_NOT_FOUND);
@@ -152,7 +154,15 @@ export class LadderHandler {
heroInfo.setByDefenseHero(hero);
return heroInfo;
});
let warInfo = gameData.war.get(battleId);
await BattleRecordModel.updateBattleRecordByCode(battleCode, {
$set: {
roleId, roleName, battleId,
status: 0,
warName: warInfo?.gk_name,
warType: warInfo?.warType,
}
});
rec = await LadderMatchRecModel.startBattle(battleCode, attackHeroes);
pinus.app.rpc.systimer.systimerRemote.setLadderCountDown.broadcast(rec.battleCode, rec.battleTime, LADDER_STATUS.BATTLE);
@@ -196,6 +206,7 @@ export class LadderHandler {
} else {
rec = await LadderMatchRecModel.battleEnd(battleCode, isSuccess);
}
await BattleRecordModel.updateBattleRecordByCode(battleCode, { $set: { status: isSuccess? 1: 2 } });
let historyRank = ladderData.historyRank;
ladderData = await LadderMatchModel.updateByRoleId(roleId, { historyRank: historyRank > atkLadderMatch.rank? atkLadderMatch.rank: historyRank, locked: 0 });

View File

@@ -423,7 +423,7 @@ export class HeroHandler {
if (heroes.length < dicFriendShip.hids.length) return resResult(STATUS.ROLE_HERO_NOT_EXISTS);
let hero = heroes.find(cur => cur.hid == hid);
if(!hero) return resResult(STATUS.ROLE_HERO_NOT_EXISTS);
let { connections } = hero;
let { connections = []} = hero;
let curConnect = connections.find(cur => cur.shipId == shipId);
let { level: oldLv = 0, exp: oldExp = 0 } = curConnect||{};

View File

@@ -1294,21 +1294,25 @@ export class CheckSingleTask {
}
case TASK_TYPE.CONNECT_ONE_HERO_MAX_LV: // 124. 单个武将其中最高等级的羁绊达X级
{
let { connections, oldConnections } = param;
let oldMaxLv = Math.max(...connections.map(cur => cur.level))||0;
let maxLv = Math.max(...oldConnections.map(cur => cur.level))||0;
if(dicTaskParam[0] <= oldMaxLv && dicTaskParam[0] > maxLv) {
result = { inc: 1 };
let { connections } = param;
let records = await getRecord();
let oldLv = records.length > 0? parseInt(records[0]): 0;
let maxLv = Math.max(...connections.map(cur => cur.level))||0;
console.log('##### TASK_TYPE.CONNECT_ONE_HERO_MAX_LV', oldLv, maxLv )
if(oldLv < maxLv) {
result = { set: maxLv, records: [`${maxLv}`] };
}
break;
}
case TASK_TYPE.CONNECT_ONE_HERO_SUM_LV: // 125. 单个武将3条羁绊总共提升X级
{
let { connections, oldConnections } = param;
let oldSumLv = connections.reduce((pre, cur) => pre + cur.level, 0);
let sumLv = oldConnections.reduce((pre, cur) => pre + cur.level, 0);
if(dicTaskParam[0] <= oldSumLv && dicTaskParam[0] > sumLv) {
result = { inc: 1 };
let { connections } = param;
let records = await getRecord();
let oldLv = records.length > 0? parseInt(records[0]): 0;
let sumLv = connections.reduce((pre, cur) => pre + cur.level, 0);
if(oldLv < sumLv) {
result = { set: sumLv, records: [`${sumLv}`] };
}
break;
}

View File

@@ -567,7 +567,7 @@ export const WAR_RELATE_TABLES = [
FILENAME.DIC_GK_PROBATION,
FILENAME.DIC_GK_ARMY_TRAIN,
FILENAME.DIC_GK_ARMY_BOSS,
// FILENAME.DIC_GK_LADDER,
FILENAME.DIC_GK_LADDER,
]
// 装备栏强化类型

View File

@@ -103,14 +103,14 @@ export default class LadderMatch extends BaseModel {
let atkLadderMatch: LadderMatchType, defLadderMatch: LadderMatchType, isChange = false;
if(defenseInfo.isRobot) {
atkLadderMatch = await LadderMatchModel.findOne({ roleId: attackInfo.roleId }).lean();
if(isSuccess && atkLadderMatch && atkLadderMatch.rank > defenseInfo.oldRank) {
if(isSuccess && atkLadderMatch && (atkLadderMatch.rank == 0 || atkLadderMatch.rank > defenseInfo.oldRank)) {
atkLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: attackInfo.roleId }, { $set: { rank: defenseInfo.oldRank, oldRank: atkLadderMatch.rank } }, { new: true }).lean();
isChange = true;
}
} else {
atkLadderMatch = await LadderMatchModel.findOne({ roleId: attackInfo.roleId }).lean();
defLadderMatch = await LadderMatchModel.findOne({ roleId: defenseInfo.roleId }).lean();
if(isSuccess && atkLadderMatch && defLadderMatch && atkLadderMatch.rank > defLadderMatch.rank) {
if(isSuccess && atkLadderMatch && defLadderMatch && (atkLadderMatch.rank == 0 || atkLadderMatch.rank > defLadderMatch.rank)) {
atkLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: attackInfo.roleId }, { $set: { rank: defLadderMatch.rank, oldRank: atkLadderMatch.rank } }, { new: true }).lean();
defLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: defenseInfo.roleId }, { $set: { rank: atkLadderMatch.rank, oldRank: defLadderMatch.rank } }, { new: true }).lean();
isChange = true;

View File

@@ -2247,11 +2247,11 @@
"subTab": 17,
"subTabName": "攻擂",
"taskType": 123,
"taskParam": "100&",
"taskParam": "100&1",
"achieveType": 61,
"achieveTaskName": "不屈不挠·壹",
"taskInfo": "名将擂台排名进入前100名",
"condition": 100,
"condition": 1,
"taskReward": "17054&100",
"point": 10
},
@@ -2263,11 +2263,11 @@
"subTab": 17,
"subTabName": "攻擂",
"taskType": 123,
"taskParam": "50&",
"taskParam": "50&1",
"achieveType": 61,
"achieveTaskName": "不屈不挠·贰",
"taskInfo": "名将擂台排名进入前50名",
"condition": 50,
"condition": 1,
"taskReward": "17054&100",
"point": 10
}

File diff suppressed because it is too large Load Diff