diff --git a/game-server/app/services/equipService.ts b/game-server/app/services/equipService.ts index 10b437b46..2810d0b69 100644 --- a/game-server/app/services/equipService.ts +++ b/game-server/app/services/equipService.ts @@ -6,7 +6,7 @@ import { DicRandomEffectPool } from '../pubUtils/dictionary/DicRandomEffectPool' import { getJewelRandSe } from './role/rewardService'; export function getRandSeResult(id: number, randSe: RandSe[], originSe: RandSe[] = [], originId?: number) { - let { lv } = gameData.jewel.get(id); + let { randomEffect, effectCount, lv } = gameData.jewel.get(id); let chosen = randSe.filter(cur => cur.locked).map(cur => cur.seid); // 上一轮随机出来的 @@ -29,8 +29,32 @@ export function getRandSeResult(id: number, randSe: RandSe[], originSe: RandSe[] startId++; } - for (let i = startId; i < randSe.length; i++) { - newRandSe.push(randSe[i]); + if(originId) { // 天晶继承的原天晶 + for (let i = startId; i < randSe.length; i++) { + newRandSe.push(randSe[i]); + } + } else { // 洗练 + let randomResult: number[] = getRandEelm(randomEffect.filter(cur => !chosen.includes(cur)), effectCount); // 随机出的结果 + if(randomResult.length < effectCount) { // 去上轮之后不够,把上轮加入 + let chosenRandom = getRandEelm(chosen, effectCount - randomResult.length); + randomResult.push(...chosenRandom); + } + if(randomResult.length < effectCount) { // 还是不够 + let allRandom = getRandEelm(randomEffect, effectCount - randomResult.length); + randomResult.push(...allRandom); + } + + for (let i = startId; i < effectCount; i++) { + if(randSe[i]) { + if(randSe[i] && randSe[i].locked) { + newRandSe.push(randSe[i]); + } else { + newRandSe.push(getJewelRandSe(randSe[i].id, randomResult[i])); + } + } else { + newRandSe.push(getJewelRandSe(i + 1, randomResult[i])); + } + } } return newRandSe