武将重生:添加消耗记录
This commit is contained in:
@@ -15,6 +15,7 @@ import { JewelModel } from "../../../db/Jewel";
|
||||
import { getJewelRandSe } from "../../../pubUtils/itemUtils";
|
||||
import { checkTaskInEquipQualityUp, checkTaskInEquipStarUp, checkTaskInPutJewel, checkTaskInPutStone } from '../../../services/equipService';
|
||||
import { pushEquipQualityMax, pushEquipStarMax } from "../../../services/sysChatService";
|
||||
import { addConsumeToHero } from "../../../services/roleService";
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -95,7 +96,11 @@ export class EquipHandler {
|
||||
|
||||
let { newEplace, updatedEplace } = updateEplace(oldEplace, ePlaceId, { lv: newLv });
|
||||
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_STRENGTH, sid, roleId, hero, { ePlace: newEplace }, [ePlaceId]);
|
||||
let update = {
|
||||
ePlace: newEplace,
|
||||
consumes: addConsumeToHero(hero.consumes, consumes)
|
||||
}
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_STRENGTH, sid, roleId, hero, update, [ePlaceId]);
|
||||
await checkTaskInEquipLvUp(serverId, roleId, sid, oldEplace, newEplace, [ePlaceId]);
|
||||
|
||||
const curHero = {
|
||||
@@ -142,7 +147,11 @@ export class EquipHandler {
|
||||
|
||||
let { newEplace, updatedEplace } = updateEplaces(ePlace, eplaceIds);
|
||||
|
||||
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_STRENGTH, sid, roleId, hero, { ePlace: newEplace }, [...eplaceIds.keys()]);
|
||||
let update = {
|
||||
ePlace: newEplace,
|
||||
consumes: addConsumeToHero(hero.consumes, consumes),
|
||||
}
|
||||
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_STRENGTH, sid, roleId, hero, update, [...eplaceIds.keys()]);
|
||||
await checkTaskInEquipLvUp(serverId, roleId, sid, ePlace, newEplace, [...eplaceIds.keys()]);
|
||||
|
||||
const curHero = {
|
||||
@@ -172,7 +181,7 @@ export class EquipHandler {
|
||||
let nextEquipQuality = getNextEquipQuality(curEquip.equipId, curEquip.quality, curEquip.qualityStage);
|
||||
if(!nextEquipQuality) return resResult(STATUS.EQUIP_QUALITY_MAX);
|
||||
|
||||
let update = {
|
||||
let equipUpdate = {
|
||||
quality: curEquip.quality,
|
||||
qualityStage: curEquip.qualityStage,
|
||||
}
|
||||
@@ -184,27 +193,32 @@ export class EquipHandler {
|
||||
while(nextEquipQuality && nextEquipQuality.quality == curEquip.quality) {
|
||||
let isEnough = await check.decrease(nextEquipQuality.consume);
|
||||
if(!isEnough) break; // 消耗不足
|
||||
update.qualityStage++;
|
||||
nextEquipQuality = getNextEquipQuality(curEquip.equipId, update.quality, update.qualityStage)
|
||||
equipUpdate.qualityStage++;
|
||||
nextEquipQuality = getNextEquipQuality(curEquip.equipId, equipUpdate.quality, equipUpdate.qualityStage)
|
||||
}
|
||||
} else { // 往下一阶,包括满点之后的升品
|
||||
let isEnough = await check.decrease(nextEquipQuality.consume);
|
||||
if(isEnough) {
|
||||
update.quality = nextEquipQuality.quality;
|
||||
update.qualityStage = nextEquipQuality.point;
|
||||
equipUpdate.quality = nextEquipQuality.quality;
|
||||
equipUpdate.qualityStage = nextEquipQuality.point;
|
||||
}
|
||||
}
|
||||
if(update.quality == curEquip.quality && update.qualityStage == curEquip.qualityStage) {
|
||||
if(equipUpdate.quality == curEquip.quality && equipUpdate.qualityStage == curEquip.qualityStage) {
|
||||
return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
}
|
||||
let consumes = check.getConsume();
|
||||
let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_QUALITYUP);
|
||||
if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
|
||||
let isUpQuality = update.quality != curEquip.quality;
|
||||
let isUpQuality = equipUpdate.quality != curEquip.quality;
|
||||
|
||||
let { newEplace, updatedEplace, newEquip } = updateEplace(oldEplace, ePlaceId, update);
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_QUALITY, sid, roleId, hero, { ePlace: newEplace }, [ePlaceId]);
|
||||
let { newEplace, updatedEplace, newEquip } = updateEplace(oldEplace, ePlaceId, equipUpdate);
|
||||
|
||||
let update = {
|
||||
ePlace: newEplace,
|
||||
consumes: addConsumeToHero(hero.consumes, consumes),
|
||||
}
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_QUALITY, sid, roleId, hero, update, [ePlaceId]);
|
||||
|
||||
await checkTaskInEquipQualityUp(serverId, roleId, sid, oldEplace, newEplace, ePlaceId, hid, isUpQuality);
|
||||
pushEquipQualityMax(roleId, roleName, serverId, hid, newEquip, isUpQuality);
|
||||
@@ -232,7 +246,7 @@ export class EquipHandler {
|
||||
let curEquip = oldEplace.find(cur => cur.id == ePlaceId);
|
||||
if(!curEquip) return resResult(STATUS.EQUIP_NOT_FIND);
|
||||
|
||||
let update = {
|
||||
let equipUpdate = {
|
||||
star: curEquip.star,
|
||||
starStage: curEquip.starStage,
|
||||
}
|
||||
@@ -254,8 +268,8 @@ export class EquipHandler {
|
||||
|
||||
let isEnough = await check.decrease(dicEquipStar.subConsume);
|
||||
if(isEnough) {
|
||||
update.star = nextEquipStar.star;
|
||||
update.starStage = 0;
|
||||
equipUpdate.star = nextEquipStar.star;
|
||||
equipUpdate.starStage = 0;
|
||||
}
|
||||
}
|
||||
} else { // 升小点,包括一键升到满小点和升一个小点
|
||||
@@ -263,19 +277,23 @@ export class EquipHandler {
|
||||
for(let stage = curEquip.starStage + 1; stage <= toStage; stage++) {
|
||||
let isEnough = await check.decrease(dicEquipStar.mainConsume);
|
||||
if(!isEnough) break; // 消耗不足
|
||||
update.starStage = stage;
|
||||
equipUpdate.starStage = stage;
|
||||
}
|
||||
}
|
||||
|
||||
if(update.star == curEquip.star && update.starStage == curEquip.starStage) {
|
||||
if(equipUpdate.star == curEquip.star && equipUpdate.starStage == curEquip.starStage) {
|
||||
return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
}
|
||||
let consumes = check.getConsume();
|
||||
let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_STARUP);
|
||||
if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
|
||||
let { newEplace, updatedEplace, newEquip } = updateEplace(oldEplace, ePlaceId, update);
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_STAR, sid, roleId, hero, { ePlace: newEplace }, [ePlaceId]);
|
||||
let { newEplace, updatedEplace, newEquip } = updateEplace(oldEplace, ePlaceId, equipUpdate);
|
||||
let update = {
|
||||
ePlace: newEplace,
|
||||
consumes: addConsumeToHero(hero.consumes, consumes)
|
||||
}
|
||||
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_STAR, sid, roleId, hero, update, [ePlaceId]);
|
||||
|
||||
await checkTaskInEquipStarUp(serverId, roleId, sid, oldEplace, newEplace, ePlaceId, hid, isUpStar);
|
||||
pushEquipStarMax(roleId, roleName, serverId, hid, newEquip, isUpStar);
|
||||
@@ -395,17 +413,26 @@ export class EquipHandler {
|
||||
return resResult(STATUS.STONE_CANNOT_SUIT);
|
||||
}
|
||||
|
||||
let consumeResult = await handleCost(roleId, sid, [{ id: gid, count: 1 }], ITEM_CHANGE_REASON.EQUIP_FILL_HOLE);
|
||||
if (!consumeResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
let updateConsumes = hero.consumes;
|
||||
if(gid > 0) {
|
||||
addConsumeToHero(updateConsumes, [{ id: gid, count: 1 }]);
|
||||
let consumeResult = await handleCost(roleId, sid, [{ id: gid, count: 1 }], ITEM_CHANGE_REASON.EQUIP_FILL_HOLE);
|
||||
if (!consumeResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
}
|
||||
|
||||
if(curStone.stone > 0) { // 返回石头
|
||||
addConsumeToHero(updateConsumes, [{ id: curStone.stone, count: -1 }]);
|
||||
await addItems(roleId, roleName, sid, [{ id: curStone.stone, count: 1 }], ITEM_CHANGE_REASON.EQUIP_FILL_HOLE);
|
||||
}
|
||||
|
||||
let newStone = updateStone(curEquip.stones, stonesId, gid);
|
||||
let { newEplace, updatedEplace } = updateEplace(oldEplace, ePlaceId, { stones: newStone });
|
||||
let jewel = await JewelModel.findbySeqId(curEquip.jewel);
|
||||
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_STONE, sid, roleId, hero, { ePlace: newEplace }, [ePlaceId], { jewel });
|
||||
let update = {
|
||||
ePlace: newEplace,
|
||||
consumes: updateConsumes,
|
||||
}
|
||||
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_STONE, sid, roleId, hero, update, [ePlaceId], { jewel });
|
||||
await checkTaskInPutStone(serverId, roleId, sid, oldEplace, newEplace, ePlaceId, jewel);
|
||||
|
||||
let curHero = {
|
||||
|
||||
Reference in New Issue
Block a user