diff --git a/shared/pubUtils/dictionary/DicQuenchQuality.ts b/shared/pubUtils/dictionary/DicQuenchQuality.ts index dc49a4703..f56b22327 100644 --- a/shared/pubUtils/dictionary/DicQuenchQuality.ts +++ b/shared/pubUtils/dictionary/DicQuenchQuality.ts @@ -20,8 +20,8 @@ export interface DicQuenchQuality { readonly critEffect: number; } -export const dicQuenchRangeByQualityAndGrade = new Map(); -export const dicQuenchRangeByQuality = new Map(); // quality => {} +export const dicQuenchRangeByQualityAndGrade = new Map(); +export const dicQuenchRangeByQuality = new Map(); // quality => {} export const dicQuenchByQuality = new Map>(); // quality => grade => dic export function loadQuenchQuality() { dicQuenchByQuality.clear(); @@ -31,18 +31,29 @@ export function loadQuenchQuality() { arr.forEach(o => { if(o.initialAvailable == 1) { - if(!dicQuenchRangeByQuality.has(o.quality)) { - dicQuenchRangeByQuality.set(o.quality, { min: o.singleRatioMin, max: o.singleRatioMax }); - } else { - if(o.singleRatioMin < dicQuenchRangeByQuality.get(o.quality).min) { - dicQuenchRangeByQuality.get(o.quality).min = o.singleRatioMin; - } - if(o.singleRatioMax > dicQuenchRangeByQuality.get(o.quality).max) { - dicQuenchRangeByQuality.get(o.quality).max = o.singleRatioMax; - } - } - dicQuenchRangeByQualityAndGrade.set(`${o.quality}_${o.grade}`, { min: o.singleRatioMin, max: o.singleRatioMax }); } + + + if(!dicQuenchRangeByQuality.has(o.quality)) { + dicQuenchRangeByQuality.set(o.quality, { min: o.singleRatioMin, max: o.singleRatioMax, randMin: o.singleRatioMin, randMax: o.singleRatioMax }); + } else { + if(o.singleRatioMin < dicQuenchRangeByQuality.get(o.quality).min) { + dicQuenchRangeByQuality.get(o.quality).min = o.singleRatioMin; + } + if(o.singleRatioMax > dicQuenchRangeByQuality.get(o.quality).max) { + dicQuenchRangeByQuality.get(o.quality).max = o.singleRatioMax; + } + if(o.singleRatioMin < dicQuenchRangeByQuality.get(o.quality).randMin && o.initialAvailable == 1) { + dicQuenchRangeByQuality.get(o.quality).randMin = o.singleRatioMin; + } + if(o.singleRatioMax > dicQuenchRangeByQuality.get(o.quality).randMax && o.initialAvailable == 1) { + dicQuenchRangeByQuality.get(o.quality).randMax = o.singleRatioMax; + } + + } + dicQuenchRangeByQualityAndGrade.set(`${o.quality}_${o.grade}`, { min: o.singleRatioMin, max: o.singleRatioMax, randMin: o.singleRatioMin, randMax: o.singleRatioMax }); + + if(!dicQuenchByQuality.has(o.quality)) { dicQuenchByQuality.set(o.quality, new Map()); } diff --git a/shared/pubUtils/itemUtils.ts b/shared/pubUtils/itemUtils.ts index 526b739b1..95d23faed 100644 --- a/shared/pubUtils/itemUtils.ts +++ b/shared/pubUtils/itemUtils.ts @@ -113,8 +113,8 @@ export async function getAddEquipInfo(roleId: string, roleName: string, weapon: let grade = 0; for(let [ attrId, attrValue ] of goodsAbility) { if(attrValue > 0) { - let { min, max } = getQuenchByQualityAndGrade(quality, grade); - let rand = getRandValueByMinMax(min, max, 0); + let { randMin, randMax } = getQuenchByQualityAndGrade(quality, grade); + let rand = getRandValueByMinMax(randMin, randMax, 0); console.log(quality, grade, rand) grade = getQuenchGradeByValue(quality, rand); randMain.push({