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

Loading…
Cancel
Save