任务:修复任务无法达成bug

This commit is contained in:
luying
2021-04-25 17:18:16 +08:00
parent b5b1919a56
commit 7bb445693d
21 changed files with 79 additions and 52 deletions

View File

@@ -75,7 +75,7 @@ export class GachaHandler {
let userGacha = await UserGachaModel.findByRole(roleId, gachaId, activityId);
let { floor, freeCount, hope, point, pickHero, refFreeTime } = await refreshGacha(dicGacha, userGacha);
if((gachaId == GACHA_ID.ASSIGN|| gachaId == GACHA_ID.TIMELIMIT) && pickHero) return resResult(STATUS.GACHA_NOT_ASSIGN);
if((gachaId == GACHA_ID.ASSIGN|| gachaId == GACHA_ID.TIMELIMIT) && !pickHero) return resResult(STATUS.GACHA_NOT_ASSIGN);
let userHeroes = await HeroModel.findByRole(roleId);
@@ -104,7 +104,7 @@ export class GachaHandler {
}
let costNum = count;
if(dicGacha.free.count > 0) {
if(count == 1 && dicGacha.free.count > 0) { // 单抽的时候免费
if(count > dicGacha.free.count - freeCount) {
costNum = count - dicGacha.free.count + freeCount;
freeCount = dicGacha.free.count;
@@ -120,7 +120,7 @@ export class GachaHandler {
if(!costResult) return resResult(STATUS.GACHA_COST_NOT_ENOUGH);
}
// 给东西
let { heroes } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
let { heroes } = await createHeroes(roleId, roleName, sid, serverId, funcs, heroInfo);
await addItems(roleId, roleName, sid, items);
// 更新数据
point = Math.floor(count/RECRUIT.RECRUIT_BONUS);
@@ -157,7 +157,7 @@ export class GachaHandler {
for(let { hid } of hope) {
let dicHero = gameData.hero.get(hid);
if(!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
if(dicHero.quality != HERO_QUALITY_TYPE.GOLD) {
if(hid != 0 && dicHero.quality != HERO_QUALITY_TYPE.GOLD) {
return resResult(STATUS.GACHA_HOPE_NOT_GOLD);
}
}
@@ -181,6 +181,7 @@ export class GachaHandler {
const roleName: string = session.get('roleName');
const sid: string = session.get('sid');
const serverId: number = session.get('serverId');
const funcs: number[] = session.get('funcs');
let userGacha = await UserGachaModel.findByRole(roleId, gachaId, 0);
let { point, turntable } = userGacha;
@@ -210,7 +211,7 @@ export class GachaHandler {
for(let i = 0; i < count; i++) {
heroInfo.push({ hid: hero[0] })
}
let { heroes, goods } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
let { heroes, goods } = await createHeroes(roleId, roleName, sid, serverId, funcs, heroInfo);
let resultList: GachaResult[] = [];
for(let h of heroes) {
let result = new GachaResult(contentId);

View File

@@ -48,6 +48,7 @@ export class SevenDaysHandler {
const serverId = session.get('serverId');
const sid = session.get('sid');
const roleName = session.get('roleName');
const funcs: number[] = session.get('funcs');
let playerData = await getPlayerGrowthData(activityId, serverId, roleId)
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
@@ -82,7 +83,7 @@ export class SevenDaysHandler {
let dicHero = gameData.hero.get(hid);
if (!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
// createHero
let hero = await createHero(roleId, roleName, sid, serverId, { hid });
let hero = await createHero(roleId, roleName, sid, serverId, funcs, { hid });
addHeros.push(hero);
}
}
@@ -102,6 +103,7 @@ export class SevenDaysHandler {
const serverId = session.get('serverId');
const sid = session.get('sid');
const roleName = session.get('roleName');
const funcs = session.get('funcs');
let playerData = await getPlayerGrowthData(activityId, serverId, roleId)
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
@@ -137,7 +139,7 @@ export class SevenDaysHandler {
let dicHero = gameData.hero.get(hid);
if (!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
// createHero
let { heroes } = await createHero(roleId, roleName, sid, serverId, { hid });
let { heroes } = await createHero(roleId, roleName, sid, serverId, funcs, { hid });
for(let hero of heroes) {
addHeros.push(hero);
}

View File

@@ -125,6 +125,7 @@ export class HeroHandler {
let roleName: string = session.get('roleName');
let sid: string = session.get('sid');
let serverId: number = session.get('serverId');
let funcs: number[] = session.get('funcs');
let {hid} = msg;
@@ -139,7 +140,7 @@ export class HeroHandler {
let costResult = await handleCost(roleId, sid, [{id: pieceId, count: pieceCount}]);
if(!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
// createHero
let { heroes } = await createHero(roleId, roleName, sid, serverId, { hid });
let { heroes } = await createHero(roleId, roleName, sid, serverId, funcs, { hid });
pushComposeOrangeHero(roleId, roleName, serverId, heroes[0]);
return resResult(STATUS.SUCCESS, {curHero: heroes[0]});
@@ -207,7 +208,7 @@ export class HeroHandler {
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.LVUP, sid, roleId, hero, update);
// 任务
await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_LV, hero);
await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_LV, hero, [oldLv]);
const curHero = {
hid, lv : hero.lv, exp : hero.exp
@@ -426,6 +427,7 @@ export class HeroHandler {
//进阶
async heroJobStageUp(msg: {hid:number}, session: BackendSession) {
console.log(JSON.stringify([...gameData.jobClassMaxGrades]))
let roleId: string = session.get('roleId');
let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
@@ -444,6 +446,7 @@ export class HeroHandler {
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
}
let nextHeroJob = getJobByGradeAndClass(heroJob.job_class, heroJob.grade + 1);
if(!nextHeroJob) return resResult(STATUS.DIC_DATA_NOT_FOUND);
//重算战力并下发
let update = {

View File

@@ -260,7 +260,7 @@ export async function handleComBtlProgress(teamStatus, robotHurtTimer: Map<strin
channel.pushMessage('onTeamComplete', resResult(STATUS.SUCCESS, {teamCode, result}));
// 任务
await checkTaskInComBattleEnd(roleIds, capId, quality);
await checkTaskInComBattleEnd(roleIds.filter(roleId => {}), capId, quality);
teamMap.delete(teamCode);
}

View File

@@ -59,7 +59,7 @@ export async function changeEquip(roleId: string, sid: string, equipA: EquipType
if (!!hid) //需要卸下或者替换的武将
heroB = await HeroModel.findByHidAndRoleWithEquip(hid, roleId);//需要替换的武将
if (!!equipA) {//需要卸下的装备
if (!!equipA) {//需要卸下的装备
if (!!heroB) {
let goodInfo = getGoodById(equipA.id);
if (goodInfo.lvLimited > heroB.lv) {
@@ -76,8 +76,10 @@ export async function changeEquip(roleId: string, sid: string, equipA: EquipType
let res = await dressEquip(roleId, sid, heroB, equipA, funcs);//替换给武将,并计算战力
return res;
} else {
let res = await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id, funcs);//卸下装备并重算战力
return res;
if(equipB) {
let res = await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id, funcs);//卸下装备并重算战力
return res;
}
}
} else if (!!heroB) {//从穿戴装备的武将上卸下装备
await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id, funcs);//卸下装备并重算战力
@@ -99,8 +101,8 @@ export async function takeOffEquipAndCalPlayerCe(roleId: string, sid: string, he
// 任务
await checkTask(roleId, sid, funcs, TASK_TYPE.EQUIP_SUM, 1, true, {});
await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.EQUIP_BY_HERO, hero, [1]);
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_QUALITY, equip, [1]);
await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.EQUIP_BY_HERO, hero, [-1]);
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_QUALITY, equip, [-1]);
return { seqId: equip.seqId, hid: 0};
}
@@ -119,8 +121,8 @@ export async function dressEquip(roleId: string, sid: string, hero:HeroType, equ
// 任务
await checkTask(roleId, sid, funcs, TASK_TYPE.EQUIP_SUM, -1, true, {});
await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.EQUIP_BY_HERO, hero, [-1]);
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_QUALITY, equip, [-1]);
await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.EQUIP_BY_HERO, hero, [1]);
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_QUALITY, equip, [1]);
return { seqId: equip.seqId, hid: hero.hid };
}

View File

@@ -31,7 +31,8 @@ export async function increaseFrdCnt(role1: RoleType, role2: RoleType, originalF
return getResStr(STATUS.FRIEND_THEY_CNT_MAX);
}
originalFriendCnt = incMyFrdCnt.friendCnt;
role1 = incMyFrdCnt; role2 = incHisFrdCnt;
role1.friendCnt = incMyFrdCnt.friendCnt;
role2.friendCnt = incHisFrdCnt.friendCnt;
return '';
}

View File

@@ -38,6 +38,7 @@ export async function switchOnFunc(roleId: string, type: number, param: number,
*/
export async function chackFunOpenWhenLogin(role: any, session: BackendSession|FrontendSession) {
await switchOnFunc(role.roleId, FUNC_OPT_TYPE.LEVEL_UP, role.lv, session);
await checkResetTrain(role.roleId, role.serverId);
await getUserGuildWithRefActive(role.roleId, '', true)
}

View File

@@ -209,8 +209,10 @@ function getPoolByHope(hope: Hope[], qualtiy: number) {
let hopeMap = new Map<number, Hope>();
let hasGetHope: number[] = [];
for(let h of hope) {
hopeMap.set(h.id, h);
if(h.hasGet) hasGetHope.push(h.id);
if(h.hid > 0) {
hopeMap.set(h.id, h);
if(h.hasGet) hasGetHope.push(h.id);
}
}
let list = gameData.gachaHope.map(cur => {

View File

@@ -312,7 +312,7 @@ export async function pushFigureUpdate(roleId: string, sid: string, figureInfo:
* @param serverId
* @param heroInfo
*/
export async function createHeroes(roleId: string, roleName: string, sid: string, serverId: number, heroInfo: CreateHeroParam[]) {
export async function createHeroes(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[], heroInfo: CreateHeroParam[]) {
let hids = heroInfo.map(cur => cur.hid);
let userHeroesMap = await HeroModel.findMapByHidRange(hids, roleId);
@@ -332,7 +332,7 @@ export async function createHeroes(roleId: string, roleName: string, sid: string
let resultHeroes: HeroType[] = [], resultItems: ItemInter[] = [];
if(newHeroInfo.length > 0) {
let { heroes, role, figureInfo, calHeroResults, calAllHeroResults, taskPushMessage } = await pubCreateHeroes(roleId, roleName, serverId, newHeroInfo);
let { heroes, role, figureInfo, calHeroResults, calAllHeroResults, taskPushMessage } = await pubCreateHeroes(roleId, roleName, serverId, newHeroInfo, funcs);
let r = new Rank(REDIS_KEY.HERO_NUM_RANK, { serverId });
await r.setRankWithRoleInfo(roleId, role.heroNum, role.heroNumUpdatedAt, role);
@@ -357,7 +357,7 @@ export async function createHeroes(roleId: string, roleName: string, sid: string
return { heroes: resultHeroes, goods: resultItems }
}
export async function createHero(roleId: string, roleName: string, sid: string, serverId: number, heroInfo: CreateHeroParam) {
let result = await createHeroes(roleId, roleName, sid, serverId, [heroInfo]);
export async function createHero(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[], heroInfo: CreateHeroParam) {
let result = await createHeroes(roleId, roleName, sid, serverId, funcs, [heroInfo]);
return result;
}

View File

@@ -92,6 +92,7 @@ export async function checkTaskInBattleEnd(roleId: string, sid: string, funcs: n
}
export async function checkTaskInComBattleEnd(roleIds: string[], capId: string, quality: number) {
console.log('********', roleIds, capId, quality)
for (let roleId of roleIds) {
if (roleId == capId && roleIds.length > 1) { // 招募队友
await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE_CREATE_TEAM, 1, true, {});

View File

@@ -1 +1 @@
{"env":"development"}
{"env":"dev"}