You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.3 KiB
66 lines
2.3 KiB
2 weeks ago
|
import { Categorys, Equip, EquipBase, Quality } from './bean';
|
||
|
import { entry_initor, qualitys } from './constant';
|
||
|
|
||
|
export const getCategory = (quality, categorys: Categorys[], uniqueCategorys: Categorys[], colorfulCategorys: Categorys[]) => {
|
||
|
switch (quality) {
|
||
|
case qualitys[4]:
|
||
|
categorys = uniqueCategorys;
|
||
|
break;
|
||
|
case qualitys[5]:
|
||
|
categorys = colorfulCategorys;
|
||
|
break;
|
||
|
}
|
||
|
while (true) {
|
||
|
const category = categorys[Math.floor(Math.random() * categorys.length)];
|
||
|
if (category.reRoll > 0 && Math.random() < category.reRoll) {
|
||
|
continue;
|
||
|
}
|
||
|
return category;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
export const createBase = (quality, lv, category, coefficient) => {
|
||
|
const entry = new Array();
|
||
|
category.entry.forEach((item) => {
|
||
|
const initor = entry_initor[item.type];
|
||
|
const qualityCoefficient = coefficient[quality];
|
||
|
entry.push(initor(lv, qualityCoefficient, item.valCoefficient));
|
||
|
});
|
||
|
return new EquipBase(category.name, category.icon, entry, category.skill);
|
||
|
};
|
||
|
|
||
|
export const createExtraEntry = (quality, lv, extraEntrys, coefficient) => {
|
||
|
const type = extraEntrys[Math.floor(Math.random() * extraEntrys.length)];
|
||
|
const initor = entry_initor[type];
|
||
|
const qualityCoefficient = coefficient[quality];
|
||
|
const entry = initor(lv, qualityCoefficient);
|
||
|
return entry;
|
||
|
};
|
||
|
|
||
|
export const createSamples = (categorys: Categorys[], uniqueCategorys: Categorys[], colorfulCategorys: Categorys[], type, coefficient) => {
|
||
|
const samples = {
|
||
|
colorful: new Array(),
|
||
|
unique: new Array(),
|
||
|
epic: new Array(),
|
||
|
artifact: new Array(),
|
||
|
};
|
||
|
colorfulCategorys.forEach((item) => {
|
||
|
samples.colorful.push(createSample('colorful', item, type, coefficient));
|
||
|
});
|
||
|
uniqueCategorys.forEach((item) => {
|
||
|
samples.unique.push(createSample('unique', item, type, coefficient));
|
||
|
});
|
||
|
categorys.forEach((item) => {
|
||
|
samples.epic.push(createSample('epic', item, type, coefficient));
|
||
|
samples.artifact.push(createSample('artifact', item, type, coefficient));
|
||
|
});
|
||
|
return samples;
|
||
|
};
|
||
|
const createSample = (quality, category, type, coefficient): Equip => {
|
||
|
const lv = 100;
|
||
|
const qualityBean = new Quality(quality, coefficient[quality]);
|
||
|
const base = createBase(quality, lv, category, coefficient);
|
||
|
const extraEntry = new Array();
|
||
|
return new Equip(type, lv, qualityBean, base, extraEntry);
|
||
|
};
|