|
- let configTypes = require('../config/types');
- let armorMaterials = require('../config/armorMaterials');
-
- module.exports = {
- generate: function (item, blueprint) {
- let type = blueprint.type;
-
- if (!type || !configTypes.types[item.slot][type]) {
- //Pick a material type first
- const types = configTypes.types[item.slot];
- const typeArray = Object.entries(types);
- const materials = Object.values(types)
- .map(t => {
- return t.material;
- })
- .filter((m, i) => i === typeArray.findIndex(t => t[1].material === m));
-
- const material = materials[~~(Math.random() * materials.length)];
-
- const possibleTypes = {};
-
- Object.entries(types)
- .forEach(t => {
- const [ typeName, typeConfig ] = t;
-
- if (typeConfig.material === material)
- possibleTypes[typeName] = typeConfig;
- });
-
- type = _.randomKey(possibleTypes);
- }
-
- let typeBlueprint = configTypes.types[item.slot][type] || {};
-
- if (!typeBlueprint)
- return;
-
- item.type = type;
- item.sprite = extend([], blueprint.sprite || typeBlueprint.sprite);
- if (typeBlueprint.spritesheet && !blueprint.spritesheet)
- item.spritesheet = typeBlueprint.spritesheet;
-
- if (typeBlueprint.spellName) {
- blueprint.spellName = typeBlueprint.spellName;
- blueprint.spellConfig = typeBlueprint.spellConfig;
- }
-
- if (typeBlueprint.range)
- item.range = typeBlueprint.range;
-
- if (typeBlueprint.material) {
- let material = armorMaterials[typeBlueprint.material];
- blueprint.attrRequire = material.attrRequire;
- }
-
- if (typeBlueprint.implicitStat && !blueprint.implicitStat)
- blueprint.implicitStat = typeBlueprint.implicitStat;
-
- if (typeBlueprint.attrRequire && !blueprint.attrRequire)
- blueprint.attrRequire = typeBlueprint.attrRequire;
- }
- };
|