装备:修复装备交换bug

This commit is contained in:
luying
2021-08-10 15:24:55 +08:00
parent e71d181e0e
commit 440b9689d8
3 changed files with 27 additions and 20 deletions
+17 -11
View File
@@ -85,16 +85,13 @@ export async function changeEquip(serverId: number, roleId: string, sid: string,
if (!!equipA) {//需要卸下的装备
if (!!heroB) {
let goodInfo = getGoodById(equipA.id);
if (goodInfo.lvLimited > heroB.lv) {
if (goodInfo.lvLimited > heroB.lv || !checkEquipCanPut(hid, equipA.id)) { // 不能穿,就只卸载
let res = await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id, funcs);//卸下装备并重算战力
return res;
}
if (checkEquipCanPut(hid, equipA.id)) {
let res = await takeOffEquipAndCalPlayerCe(roleId, sid, heroB, equipB, id, funcs);//卸下装备并重算战力
} else {
let res = await dressEquip(serverId, roleId, sid, heroB, equipA, funcs);//替换给武将,并计算战力
return res;
}
let res = await dressEquip(serverId, roleId, sid, heroB, equipA, funcs);//替换给武将,并计算战力
return res;
} else {
let res = await takeOffEquipAndCalPlayerCe(roleId, sid, null, equipA, id, funcs);//卸下装备并重算战力
return res;
@@ -113,7 +110,7 @@ export async function changeEquip(serverId: number, roleId: string, sid: string,
* @param id
*/
export async function takeOffEquipAndCalPlayerCe(roleId: string, sid: string, hero: HeroType, equip: EquipType, id: number, funcs: number[]) {
console.log(roleId, sid, hero, equip, id)
console.log('***takeOffEquipAndCalPlayerCe', roleId, sid, hero&&hero.hid, equip.seqId, id)
if (hero) {
let args = calEquipSeids(hero);
hero = await HeroModel.removeEquip(roleId, hero.hid, id, equip._id);
@@ -126,7 +123,7 @@ export async function takeOffEquipAndCalPlayerCe(roleId: string, sid: string, he
// 任务
await checkTask(roleId, sid, funcs, TASK_TYPE.EQUIP_SUM, -1, true, {});
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_QUALITY, equip, [-1]);
return { seqId: equip.seqId, hid: 0, id: equip.id, ePlaceId: equip.ePlaceId };
return [{ seqId: equip.seqId, hid: 0, id: equip.id, ePlaceId: equip.ePlaceId }];
}
/**
* 穿戴装备并重算战力
@@ -136,9 +133,12 @@ export async function takeOffEquipAndCalPlayerCe(roleId: string, sid: string, he
* @param equip
*/
export async function dressEquip(serverId: number, roleId: string, sid: string, hero: HeroType, equip: EquipType, funcs: number[]) {
let args = calEquipSeids(hero);
console.log('***dressEquip', roleId, sid, hero&&hero.hid, equip.seqId)
hero = await HeroModel.addEquip(roleId, hero.hid, equip.ePlaceId, equip._id);
let args = calEquipSeids(hero);
let index = hero.ePlace.findIndex(cur => cur.id == equip.ePlaceId);
let equipOffInfo = <EquipType>hero.ePlace[index].equip;
hero = await HeroModel.addEquip(roleId, hero.hid, equip.ePlaceId, equip._id, equipOffInfo?._id);
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, args);
// 任务
@@ -148,7 +148,13 @@ export async function dressEquip(serverId: number, roleId: string, sid: string,
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.EQUIP_QUALITY, 1, { quality: equip.quality })
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.EQUIP_SUM, 1)
return { seqId: equip.seqId, hid: hero.hid, id: equip.id, ePlaceId: equip.ePlaceId };
let res = [
{ seqId: equip.seqId, hid: hero.hid, id: equip.id, ePlaceId: equip.ePlaceId }
];
if(equipOffInfo) {
res.push({ seqId: equipOffInfo.seqId, hid: 0, id: equipOffInfo.id, ePlaceId: equipOffInfo.ePlaceId })
}
return res
}
export function checkEquipCanPut(hid: number, id: number) {