Browse Source

装备随机方式变更-补提交

2.0
许孟阳 2 months ago
parent
commit
8e6ca72821
  1. 73
      src/tool/random.ts

73
src/tool/random.ts

@ -1,15 +1,18 @@
import { difficultys } from '@/config'; import { difficultys, Categorys, qualitys } from '@/config';
import { qualitys, createWeapon, createArmor, createNeck, createRing, createJewelry, createpants, createshoes, createbracers } from '@/config/equips'; import * as Equips from '@/config/equips';
const creators = new Array(); const types = ['weapon', 'arrmor', 'neck', 'ring', 'jewelry', 'bracers', 'pants', 'shoes'];
creators.push(createWeapon); const normal: Categorys[] = new Array();
creators.push(createArmor); const uniques: Categorys[] = new Array();
creators.push(createNeck); const colorfuls: Categorys[] = new Array();
creators.push(createRing); types.forEach((type) => {
creators.push(createJewelry); const nkey = type + 'Categorys';
creators.push(createpants); Array.prototype.push.apply(normal, Equips[nkey]);
creators.push(createshoes); const ukey = type + 'UniqueCategorys';
creators.push(createbracers); Array.prototype.push.apply(uniques, Equips[ukey]);
const ckey = type + 'ColorfulCategorys';
Array.prototype.push.apply(colorfuls, Equips[ckey]);
});
export const randonBootyEquip = (monster) => { export const randonBootyEquip = (monster) => {
const equips = new Array(); const equips = new Array();
@ -27,6 +30,26 @@ export const randonBootyEquip = (monster) => {
}; };
export const randomEquip = (rates, lv) => { export const randomEquip = (rates, lv) => {
const quality = randomQuality(rates);
if (quality) {
lv = randomLv(lv, quality);
const category = randomCategory(quality);
const creator = Equips['create' + category.type];
return creator(quality, lv, category);
} else {
return null;
}
};
const randomLv = (lv, quality) => {
if (quality == qualitys[4] || quality == qualitys[5]) {
lv += Math.floor(Math.random() * 6);
} else {
lv += Math.floor(Math.random() * 3);
}
lv = lv > 100 ? 100 : lv;
return lv;
};
const randomQuality = (rates) => {
const r = Math.random(); const r = Math.random();
let tmp = 0; let tmp = 0;
let quality = ''; let quality = '';
@ -37,17 +60,25 @@ export const randomEquip = (rates, lv) => {
break; break;
} }
} }
if (quality) { return quality;
if (quality == qualitys[4] || quality == qualitys[5]) { };
lv += Math.floor(Math.random() * 6); const randomCategory = (quality): Categorys => {
} else { let categorys = normal;
lv += Math.floor(Math.random() * 3); if (quality == qualitys[4]) {
categorys = uniques;
} else if (quality == qualitys[5]) {
categorys = colorfuls;
}
while (true) {
const category = categorys[Math.floor(Math.random() * categorys.length)];
if (category.reRoll > 0) {
console.log('重ROLL概率:' + category.reRoll);
} }
lv = lv > 100 ? 100 : lv; if (category.reRoll > 0 && Math.random() < category.reRoll) {
const creator = creators[Math.floor(Math.random() * creators.length)]; console.log('重ROLL');
return creator(quality, lv); continue;
} else { }
return null; return category;
} }
}; };

Loading…
Cancel
Save