mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-13 04:37:36 +01:00
71 lines
1.4 KiB
JavaScript
71 lines
1.4 KiB
JavaScript
import each from 'lodash/each';
|
|
import defaults from 'lodash/defaults';
|
|
|
|
import {
|
|
CLASSES,
|
|
GEAR_TYPES,
|
|
} from '../constants';
|
|
import { ownsItem } from './gear-helper';
|
|
|
|
import weapon from './weapon';
|
|
import armor from './armor';
|
|
import head from './head';
|
|
import shield from './shield';
|
|
import back from './back';
|
|
import body from './body';
|
|
import headAccessory from './head-accessory';
|
|
import eyewear from './eyewear';
|
|
|
|
const gear = {
|
|
weapon,
|
|
armor,
|
|
head,
|
|
shield,
|
|
back,
|
|
body,
|
|
headAccessory,
|
|
eyewear,
|
|
};
|
|
|
|
/*
|
|
The gear is exported as a tree (defined above), and a flat list
|
|
(eg, {weapon_healer_1: .., shield_special_0: ...}) since
|
|
they are needed in different forms at different points in the app
|
|
*/
|
|
const flat = {};
|
|
|
|
each(GEAR_TYPES, type => {
|
|
const allGearTypes = CLASSES.concat(['base', 'special', 'mystery', 'armoire']);
|
|
|
|
each(allGearTypes, klass => {
|
|
each(gear[type][klass], (item, index) => {
|
|
const key = `${type}_${klass}_${index}`;
|
|
const set = `${klass}-${index}`;
|
|
|
|
defaults(item, {
|
|
type,
|
|
key,
|
|
set,
|
|
klass,
|
|
index,
|
|
str: 0,
|
|
int: 0,
|
|
per: 0,
|
|
con: 0,
|
|
canBuy: () => false,
|
|
});
|
|
|
|
if (item.mystery || key.indexOf('takeThis') !== -1) {
|
|
item.canOwn = ownsItem(key);
|
|
}
|
|
|
|
flat[key] = item;
|
|
});
|
|
});
|
|
});
|
|
|
|
export default {
|
|
tree: gear,
|
|
flat,
|
|
};
|