装备:活动任务

This commit is contained in:
luying
2022-02-22 15:29:19 +08:00
parent 3f5371df79
commit 12b4b6668b
6 changed files with 342 additions and 60 deletions

View File

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