|
|
@ -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; |
|
|
|
} |
|
|
|
} |
|
|
|
lv = lv > 100 ? 100 : lv; |
|
|
|
while (true) { |
|
|
|
const creator = creators[Math.floor(Math.random() * creators.length)]; |
|
|
|
const category = categorys[Math.floor(Math.random() * categorys.length)]; |
|
|
|
return creator(quality, lv); |
|
|
|
if (category.reRoll > 0) { |
|
|
|
} else { |
|
|
|
console.log('重ROLL概率:' + category.reRoll); |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
if (category.reRoll > 0 && Math.random() < category.reRoll) { |
|
|
|
|
|
|
|
console.log('重ROLL'); |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return category; |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|