镇念塔:刷新任务

This commit is contained in:
luying
2021-08-17 14:41:15 +08:00
parent 83b667e709
commit faaf3388c5
+12 -6
View File
@@ -396,9 +396,9 @@ export async function refreshTasks(towerLv: number, batchCode: string, roleId: s
for(let [ position, task ] of positions) { for(let [ position, task ] of positions) {
let taskId = randomTaskId(towerLv, task?task.taskId: 0, ridTaskIds); let taskId = randomTaskId(towerLv, task?task.taskId: 0, ridTaskIds);
if(task) { // 更新 if(task) { // 更新
await TowerTaskRecModel.updateTask(roleId, batchCode, position, taskId); tasks.push(await TowerTaskRecModel.updateTask(roleId, batchCode, position, taskId));
} else { } else {
await TowerTaskRecModel.createTask(roleId, roleName, batchCode, taskId, position); tasks.push(await TowerTaskRecModel.createTask(roleId, roleName, batchCode, taskId, position));
} }
ridTaskIds.push(taskId); ridTaskIds.push(taskId);
} }
@@ -406,12 +406,15 @@ export async function refreshTasks(towerLv: number, batchCode: string, roleId: s
} }
function randomTaskId(towerLv: number, oldTaskId: number, rids: number[]) { function randomTaskId(towerLv: number, oldTaskId: number, rids: number[]) {
let randomList: DicTowerTask[] = [];
let dicTask = gameData.towerTask; let dicTask = gameData.towerTask;
let oldQuality = dicTask.has(oldTaskId)? dicTask.get(oldTaskId).quality: 0; let oldQuality = dicTask.has(oldTaskId)? dicTask.get(oldTaskId).quality: 0;
let qualityRange = oldQuality + 1;
if(qualityRange >=5 ) qualityRange = 5;
let randomList: DicTowerTask[] = [];
while(randomList.length <= 0) { // 如果这个品质范围里面没有,就降一品质再找
for (let [_id, task] of dicTask) { for (let [_id, task] of dicTask) {
if(task.quality >= oldQuality + 1) { if(task.quality >= qualityRange && !rids.includes(task.taskId)) {
let { suitFloor: { min, max } } = task; let { suitFloor: { min, max } } = task;
let flag = max ? (towerLv >= min && towerLv <= max) : (towerLv >= min); let flag = max ? (towerLv >= min && towerLv <= max) : (towerLv >= min);
if (flag) { if (flag) {
@@ -419,8 +422,11 @@ function randomTaskId(towerLv: number, oldTaskId: number, rids: number[]) {
} }
} }
} }
let list = randomList.filter(cur => !rids.includes(cur.taskId)); if(randomList.length <= 0) qualityRange--;
let { dic } = getRandEelmWithWeight(list); if(qualityRange == 0) return 0;
}
let { dic } = getRandEelmWithWeight(randomList);
return dic.taskId; return dic.taskId;
} }