镇念塔:刷新任务

This commit is contained in:
luying
2021-08-17 11:25:56 +08:00
parent 83b667e709
commit faaf3388c5

View File

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