From faaf3388c5972f7fee649d20f43a34012a1d6827 Mon Sep 17 00:00:00 2001 From: luying Date: Tue, 17 Aug 2021 11:25:56 +0800 Subject: [PATCH] =?UTF-8?q?=E9=95=87=E5=BF=B5=E5=A1=94=EF=BC=9A=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/services/battleService.ts | 28 ++++++++++++++--------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/game-server/app/services/battleService.ts b/game-server/app/services/battleService.ts index 19fcb856c..ab1a76fbc 100644 --- a/game-server/app/services/battleService.ts +++ b/game-server/app/services/battleService.ts @@ -396,9 +396,9 @@ export async function refreshTasks(towerLv: number, batchCode: string, roleId: s for(let [ position, task ] of positions) { let taskId = randomTaskId(towerLv, task?task.taskId: 0, ridTaskIds); if(task) { // 更新 - await TowerTaskRecModel.updateTask(roleId, batchCode, position, taskId); + tasks.push(await TowerTaskRecModel.updateTask(roleId, batchCode, position, taskId)); } else { - await TowerTaskRecModel.createTask(roleId, roleName, batchCode, taskId, position); + tasks.push(await TowerTaskRecModel.createTask(roleId, roleName, batchCode, taskId, position)); } ridTaskIds.push(taskId); } @@ -406,21 +406,27 @@ export async function refreshTasks(towerLv: number, batchCode: string, roleId: s } function randomTaskId(towerLv: number, oldTaskId: number, rids: number[]) { - let randomList: DicTowerTask[] = []; let dicTask = gameData.towerTask; let oldQuality = dicTask.has(oldTaskId)? dicTask.get(oldTaskId).quality: 0; + let qualityRange = oldQuality + 1; + if(qualityRange >=5 ) qualityRange = 5; - for (let [_id, task] of dicTask) { - if(task.quality >= oldQuality + 1) { - let { suitFloor: { min, max } } = task; - let flag = max ? (towerLv >= min && towerLv <= max) : (towerLv >= min); - if (flag) { - randomList.push(task); + let randomList: DicTowerTask[] = []; + while(randomList.length <= 0) { // 如果这个品质范围里面没有,就降一品质再找 + for (let [_id, task] of dicTask) { + if(task.quality >= qualityRange && !rids.includes(task.taskId)) { + let { suitFloor: { min, max } } = task; + let flag = max ? (towerLv >= min && towerLv <= max) : (towerLv >= min); + if (flag) { + randomList.push(task); + } } } + if(randomList.length <= 0) qualityRange--; + if(qualityRange == 0) return 0; } - let list = randomList.filter(cur => !rids.includes(cur.taskId)); - let { dic } = getRandEelmWithWeight(list); + + let { dic } = getRandEelmWithWeight(randomList); return dic.taskId; }