装备:活动任务
This commit is contained in:
@@ -152,11 +152,11 @@ export async function checkTaskWithEplaces(roleId: string, taskType: number, old
|
||||
pushMessage = await checkTask(roleId, taskType, 1, true, { oldCount, count });
|
||||
}
|
||||
else if (taskType == TASK_TYPE.EQUIP_COMPOSE_CNT) {
|
||||
pushMessage = await checkTask(roleId, taskType, newEplace.length - oldEplace.length, true, {});
|
||||
pushMessage = await checkTask(roleId, taskType, 1, true, { oldCount: oldEplace.length, count: newEplace.length });
|
||||
|
||||
} else {
|
||||
for(let eplaceId of eplaceIds) {
|
||||
let oldEquip = oldEplace.find(cur => cur.id == eplaceId)||new EPlace(eplaceId, 0);
|
||||
let newEquip = newEplace.find(cur => cur.id == eplaceId)||new EPlace(eplaceId, 0);
|
||||
let { oldEquip, newEquip } = getEquipById({ oldEplace, newEplace, eplaceId });
|
||||
let result = await checkTaskWithEplace(roleId, taskType, oldEquip, newEquip, params);
|
||||
pushMessage.push(...result);
|
||||
}
|
||||
@@ -176,10 +176,8 @@ export async function checkTaskWithEplace(roleId: string, taskType: number, oldE
|
||||
pushMessage = await checkTask(roleId, taskType, 1, true, { oldLv: oldEquip.lv, lv: newEquip.lv })
|
||||
}
|
||||
else if (taskType == TASK_TYPE.EQUIP_PUT_JEWEL) {
|
||||
let jewels: JewelType[] = params.jewels;
|
||||
let oldJewel = jewels.find(cur => cur && cur.seqId == oldEquip.jewel);
|
||||
let { oldJewel, newJewel } = getJewelByEquip(oldEquip, newEquip, { jewels: params.jewels });
|
||||
let oldLv = gameData.jewel.get(oldJewel?.id)?.lv || 0;
|
||||
let newJewel = jewels.find(cur => cur && cur.seqId == newEquip.jewel);
|
||||
let lv = gameData.jewel.get(newJewel?.id)?.lv || 0;
|
||||
pushMessage = await checkTask(roleId, taskType, 1, true, { oldLv, lv });
|
||||
}
|
||||
@@ -230,14 +228,13 @@ export async function checkTaskWithEplace(roleId: string, taskType: number, oldE
|
||||
pushMessage = await checkTask(roleId, taskType, 1, true, { oldStoneLvs, newStoneLvs });
|
||||
}
|
||||
else if (taskType == TASK_TYPE.EQUIP_JEWEL_RANDSE_CNT) {
|
||||
let jewels: JewelType[] = params.jewels;
|
||||
let oldJewel = jewels.find(cur => cur && cur.seqId == oldEquip.jewel);
|
||||
let { oldJewel, newJewel } = getJewelByEquip(oldEquip, newEquip, { jewels: params.jewels });
|
||||
|
||||
let oldRandSe = oldJewel.randSe||[];
|
||||
let oldUnlockSeCnt = oldRandSe.filter(se => {
|
||||
return isRandSeUnLock(oldJewel.id, se.id, oldEquip.stones);
|
||||
}).length;
|
||||
|
||||
let newJewel = jewels.find(cur => cur && cur.seqId == newEquip.jewel);
|
||||
let newRandSe = newJewel.randSe||[];
|
||||
let newUnlockSeCnt = newRandSe.filter(se => {
|
||||
return isRandSeUnLock(newJewel.id, se.id, newEquip.stones);
|
||||
@@ -250,6 +247,22 @@ export async function checkTaskWithEplace(roleId: string, taskType: number, oldE
|
||||
return pushMessage
|
||||
}
|
||||
|
||||
|
||||
|
||||
function getEquipById(paramObj: {oldEplace: EPlace[], newEplace: EPlace[], eplaceId: number}) {
|
||||
let { oldEplace, newEplace, eplaceId } = paramObj;
|
||||
let oldEquip = oldEplace.find(cur => cur.id == eplaceId)||new EPlace(eplaceId, 0);
|
||||
let newEquip = newEplace.find(cur => cur.id == eplaceId)||new EPlace(eplaceId, 0);
|
||||
return { oldEquip, newEquip }
|
||||
}
|
||||
|
||||
function getJewelByEquip(oldEquip: EPlace, newEquip: EPlace, paramObj: { jewels: JewelType[] }) {
|
||||
let jewels: JewelType[] = paramObj.jewels;
|
||||
let oldJewel = jewels.find(cur => cur && cur.seqId == oldEquip.jewel);
|
||||
let newJewel = jewels.find(cur => cur && cur.seqId == newEquip.jewel);
|
||||
return { oldJewel, newJewel }
|
||||
}
|
||||
|
||||
// export async function checkTaskWithEquip(roleId: string, taskType: number, equip: EquipType, args: number[] = []) {
|
||||
// let pushMessage = new Array<TaskListReturn>();
|
||||
// if (taskType == TASK_TYPE.EQUIP_QUALITY) {
|
||||
@@ -557,6 +570,9 @@ export async function checkTaskRec(roleId: string, type: number, group: string,
|
||||
count = -1;
|
||||
}
|
||||
break;
|
||||
case TASK_TYPE.EQUIP_COMPOSE_CNT:
|
||||
isMatch = param.oldCount < taskParam[1] && param.count >= taskParam[1];
|
||||
break;
|
||||
|
||||
}
|
||||
// console.log('****isMatch', isMatch, checkHistory, type, taskType, group, count)
|
||||
@@ -1316,6 +1332,204 @@ export function isComplete(_roleId: string, taskType: TASK_TYPE, taskParam: stri
|
||||
case TASK_TYPE.ROLE_SCROLL_ACTIVE:
|
||||
addCount = count;
|
||||
break;
|
||||
case TASK_TYPE.EQUIP_LV_TO:
|
||||
{
|
||||
for(let eplaceId of paramObj.eplaceIds) {
|
||||
let { oldEquip, newEquip } = getEquipById({ ...paramObj, eplaceId });
|
||||
if(oldEquip.lv < param[1] && newEquip.lv >= param[1]) {
|
||||
addCount += 1;
|
||||
} else if (oldEquip.lv >= param[1] && newEquip.lv < param[1]) {
|
||||
addCount -= 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_PUT_JEWEL:
|
||||
{
|
||||
let { oldEquip, newEquip } = paramObj;
|
||||
let { oldJewel, newJewel } = getJewelByEquip(oldEquip, newEquip, paramObj);
|
||||
let oldLv = gameData.jewel.get(oldJewel?.id)?.lv || 0;
|
||||
let lv = gameData.jewel.get(newJewel?.id)?.lv || 0;
|
||||
|
||||
if(lv >= param[1] && oldLv < param[1]) {
|
||||
addCount = count;
|
||||
} else if (lv < param[1] && oldLv >= param[1]) {
|
||||
addCount = -count;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_PUT_STONE:
|
||||
{
|
||||
let { oldEquip, newEquip } = paramObj;
|
||||
let oldStoneCnt = oldEquip.stones.filter(cur => cur.stone != 0).length;
|
||||
let newStoneCnt = newEquip.stones.filter(cur => cur.stone != 0).length;
|
||||
|
||||
if(oldStoneCnt < param[1] && newStoneCnt >= param[1]) {
|
||||
addCount = count;
|
||||
} else if (oldStoneCnt >= param[1] && newStoneCnt < param[1]) {
|
||||
addCount = -count;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_STAR_UP_TO:
|
||||
{
|
||||
let { oldEquip, newEquip } = paramObj;
|
||||
let oldStar = oldEquip?.star||0;
|
||||
let star = newEquip?.star||0
|
||||
if(oldStar < param[1] && star >= param[1]) addCount = count;
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_STAR_UP_CNT:
|
||||
addCount = count;
|
||||
break;
|
||||
case TASK_TYPE.EQUIP_SUIT_SEID_NUM:
|
||||
{
|
||||
let dicEquipSuit = getEquipSuitByHero(paramObj.hid);
|
||||
let oldSuitStars: number[] = [], newSuitStars: number[] = [];
|
||||
for(let equipId of dicEquipSuit.equips) {
|
||||
let oldEquip = paramObj.oldEplace.find(cur => cur.equipId == equipId);
|
||||
oldSuitStars.push(oldEquip? oldEquip.star: 0);
|
||||
let newEquip = paramObj.newEplace.find(cur => cur.equipId == equipId);
|
||||
newSuitStars.push(newEquip? newEquip.star: 0);
|
||||
}
|
||||
let oldStar = Math.min(...oldSuitStars);
|
||||
let newStar = Math.min(...newSuitStars);
|
||||
let oldCount = 0, count = 0;
|
||||
for(let { star } of dicEquipSuit.effect) {
|
||||
if(oldStar >= star) oldCount++;
|
||||
if(newStar >= star) count++;
|
||||
}
|
||||
if(oldCount < param[1] && count >= param[1]) {
|
||||
addCount = count;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_QUALITY_UP:
|
||||
{
|
||||
let r = `${paramObj.hid}_${paramObj.eplaceId}`;
|
||||
if (recordData) {
|
||||
record = recordData;
|
||||
if (recordData.indexOf(r) != -1) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
record = [];
|
||||
}
|
||||
|
||||
addCount = count;
|
||||
record.push(r)
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_QUALITY_UP_CNT:
|
||||
addCount = count;
|
||||
break;
|
||||
case TASK_TYPE.EQUIP_QUALITY_UP_TO:
|
||||
{
|
||||
let { oldEquip, newEquip } = paramObj;
|
||||
let oldQuality = oldEquip?.quality||0;
|
||||
let quality = newEquip?.quality||0;
|
||||
if(oldQuality < param[1] && quality >= param[1]) {
|
||||
addCount = count;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_COMPOSE:
|
||||
addCount = count;
|
||||
break;
|
||||
case TASK_TYPE.EQUIP_COMPOSE_CNT:
|
||||
{
|
||||
if(paramObj.oldEplace.length < param[1] && paramObj.newEplace.length >= param[1]) {
|
||||
addCount = count;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_LV_UP:
|
||||
addCount = count;
|
||||
break;
|
||||
case TASK_TYPE.EQUIP_PUT_JEWEL_CNT:
|
||||
{
|
||||
let { oldEquip, newEquip } = paramObj;
|
||||
if(oldEquip.jewel && !newEquip.jewel) {
|
||||
addCount = -count;
|
||||
} else if (!oldEquip.jewel && newEquip.jewel) {
|
||||
addCount = count;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_PUT_STONE_CNT:
|
||||
{
|
||||
let { oldEquip, newEquip } = paramObj;
|
||||
let oldStoneCnt = oldEquip.stones.filter(cur => cur.stone != 0).length;
|
||||
let newStoneCnt = newEquip.stones.filter(cur => cur.stone != 0).length;
|
||||
if(oldStoneCnt > 0 && newStoneCnt == 0) {
|
||||
addCount = -count;
|
||||
} else if (oldStoneCnt == 0 && newStoneCnt > 0) {
|
||||
addCount = count;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_STONE_CNT:
|
||||
{
|
||||
let { oldEquip, newEquip } = paramObj;
|
||||
let oldStoneCnt = oldEquip.stones.filter(cur => cur.stone != 0).length;
|
||||
let newStoneCnt = newEquip.stones.filter(cur => cur.stone != 0).length;
|
||||
addCount = newStoneCnt - oldStoneCnt;
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_STONE_CNT_LV:
|
||||
{
|
||||
let { oldEquip, newEquip } = paramObj;
|
||||
let oldStoneLvs = oldEquip.stones.map(cur => {
|
||||
let dicStone = gameData.stone.get(cur.stone);
|
||||
return dicStone?dicStone.lv: 0;
|
||||
});
|
||||
let newStoneLvs = newEquip.stones.map(cur => {
|
||||
let dicStone = gameData.stone.get(cur.stone);
|
||||
return dicStone?dicStone.lv: 0;
|
||||
});
|
||||
let oldCount = oldStoneLvs.filter(lv => lv >= param[2]).length;
|
||||
let newCount = newStoneLvs.filter(lv => lv >= param[2]).length;
|
||||
if(oldCount < param[1] && newCount >= param[1]) {
|
||||
addCount = count;
|
||||
} else if (oldCount >= param[1] && newCount < param[1]) {
|
||||
addCount = -count;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.EQUIP_JEWEL_RANDSE_CNT:
|
||||
{
|
||||
let { oldEquip, newEquip } = paramObj;
|
||||
let { oldJewel, newJewel } = getJewelByEquip(oldEquip, newEquip, { jewels: paramObj.jewels });
|
||||
|
||||
let oldRandSe = oldJewel.randSe||[];
|
||||
let oldUnlockSeCnt = oldRandSe.filter(se => {
|
||||
return isRandSeUnLock(oldJewel.id, se.id, oldEquip.stones);
|
||||
}).length;
|
||||
|
||||
let newRandSe = newJewel.randSe||[];
|
||||
let newUnlockSeCnt = newRandSe.filter(se => {
|
||||
return isRandSeUnLock(newJewel.id, se.id, newEquip.stones);
|
||||
}).length;
|
||||
|
||||
if(oldUnlockSeCnt < param[1] && newUnlockSeCnt >= param[1]) {
|
||||
addCount = count;
|
||||
} else if (oldUnlockSeCnt >= param[1] && newUnlockSeCnt < param[1]) {
|
||||
addCount = -count;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.STONE_COMPOSE:
|
||||
addCount = count;
|
||||
break;
|
||||
case TASK_TYPE.JEWEL_RESET:
|
||||
addCount = count;
|
||||
break;
|
||||
case TASK_TYPE.JEWEL_QUENCH:
|
||||
addCount = count;
|
||||
break;
|
||||
case TASK_TYPE.JEWEL_QUENCH_SUCCESS:
|
||||
addCount = count;
|
||||
break;
|
||||
default:
|
||||
addCount = 0;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user