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