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.
56 lines
2.4 KiB
56 lines
2.4 KiB
import { Categorys, Equip, EquipBase, Quality } from './bean'; |
|
import { entry_initor, EntryInitor, extra_entry_num, extra_quality, extra_quality_lv, qualitys } from './constant'; |
|
|
|
export const createBase = (quality, lv, category, coefficient, extraQuality) => { |
|
const entry = new Array(); |
|
category.entry.forEach((item) => { |
|
const initor: EntryInitor = entry_initor[item.type]; |
|
const qualityCoefficient = coefficient[quality]; |
|
entry.push(initor.init(lv, qualityCoefficient, item.valCoefficient, extraQuality)); |
|
}); |
|
return new EquipBase(category.name, category.icon, entry, category.skill); |
|
}; |
|
|
|
export const createExtraEntry = (quality, lv, extraEntrys, coefficient, extraQuality) => { |
|
const type = extraEntrys[Math.floor(Math.random() * extraEntrys.length)]; |
|
const initor: EntryInitor = entry_initor[type]; |
|
const qualityCoefficient = coefficient[quality]; |
|
return initor.init(lv, qualityCoefficient, 1, extraQuality); |
|
}; |
|
|
|
export const createSamples = (categorys: Categorys[], uniqueCategorys: Categorys[], colorfulCategorys: Categorys[], type, coefficient) => { |
|
const samples = { |
|
taigu: new Array(), |
|
yuangu: new Array(), |
|
colorful: new Array(), |
|
unique: new Array(), |
|
epic: new Array(), |
|
artifact: new Array(), |
|
}; |
|
colorfulCategorys.forEach((item) => { |
|
samples.taigu.push(createSample('colorful', item, type, coefficient, extra_quality[1])); |
|
}); |
|
colorfulCategorys.forEach((item) => { |
|
samples.yuangu.push(createSample('colorful', item, type, coefficient, extra_quality[0])); |
|
}); |
|
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, extraQuality): Equip => { |
|
const lv = extraQuality ? 100 + extra_quality_lv : 100; |
|
const qualityBean = new Quality(quality, coefficient[quality], extraQuality); |
|
const base = createBase(quality, lv, category, coefficient, extraQuality); |
|
const extraEntry = new Array(); |
|
const sample = new Equip(type, lv, qualityBean, base, extraEntry); |
|
sample.reRoll = category.reRoll; |
|
return sample; |
|
};
|
|
|