镇念塔:刷新任务
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) {
|
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,21 +406,27 @@ 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;
|
||||||
|
|
||||||
for (let [_id, task] of dicTask) {
|
let randomList: DicTowerTask[] = [];
|
||||||
if(task.quality >= oldQuality + 1) {
|
while(randomList.length <= 0) { // 如果这个品质范围里面没有,就降一品质再找
|
||||||
let { suitFloor: { min, max } } = task;
|
for (let [_id, task] of dicTask) {
|
||||||
let flag = max ? (towerLv >= min && towerLv <= max) : (towerLv >= min);
|
if(task.quality >= qualityRange && !rids.includes(task.taskId)) {
|
||||||
if (flag) {
|
let { suitFloor: { min, max } } = task;
|
||||||
randomList.push(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;
|
return dic.taskId;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user