镇念塔:刷新任务
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user