🐞 fix(稷下学宫): 点亮法阵更新最大hp

This commit is contained in:
luying
2023-09-06 21:03:33 +08:00
parent 6707c51234
commit 62d86dfd66
2 changed files with 24 additions and 3 deletions
@@ -2,6 +2,9 @@ import { Circle, RougelikeTechModel, RougelikeTechType } from '../../db/Rougelik
import { gameData } from '../../pubUtils/data';
import { HeroModel } from '../../db/Hero';
import { compareNumberArray } from '../../pubUtils/util';
import { ROUGE_EFFECT_TYPE, ROUGE_LIKE_STATUS } from '../../consts';
import { updateMaxHp } from './rougeService';
import { RougelikeRecordModel } from '../../db/RougelikeRecord';
/**
* 首页获得的科技树数据
@@ -42,10 +45,28 @@ async function calCircleCe(roleId: string, unlockedTech: number[], circles: Circ
export async function updateEffectId(techData: RougelikeTechType) {
let effectIds = getTechEffectIdsByData(techData);
if(!compareNumberArray(effectIds, techData.effectIds||[])) {
if (hasMaxHpUpdate(effectIds, techData.effectIds||[])) {
const dbRecord = await RougelikeRecordModel.findByRoleIdAndStatus(techData.roleId, ROUGE_LIKE_STATUS.SUCCESS)
if(dbRecord) await updateMaxHp(techData.roleId, dbRecord.gameCode, dbRecord.type, dbRecord.grade)
}
await RougelikeTechModel.updateEffectId(techData.roleId, effectIds);
}
}
function hasMaxHpUpdate(effectIds: number[], oldEffectIds: number[]) {
let newEffectIds: number[] = [];
for(let effectId of effectIds) {
if (oldEffectIds.includes(effectId)) newEffectIds.push(effectId);
}
for(let effectId of newEffectIds) {
let dicRougeEffect = gameData.rougeEffect.get(effectId);
if(dicRougeEffect && dicRougeEffect.effectType == ROUGE_EFFECT_TYPE.TECH_CHARA_MAIN_ATTR_UP) {
return true;
}
}
return false;
}
/**
* 处理后单个科技点的数据
* @param techData