fix seasonal gear

This commit is contained in:
Phillip Thelen 2024-05-14 11:06:17 +02:00
parent ceb6b93dc1
commit da4606df5e
2 changed files with 32 additions and 64 deletions

View file

@ -2739,8 +2739,6 @@
"shieldSpecialSpring2024HealerText": "Shining Shield",
"shieldSpecialSpring2024HealerNotes": "Focus rays of the spring sun outward to warm and heal. Increases Constitution by <%= con %>. Limited Edition Spring 2024 Gear.",
"shieldSpecialSummer2024RogueText": "Nudibranch Trident",
"shieldSpecialSummer2024RogueNotes": "Turn others sharp stings against them! Increases Strength by <%= str %>. Limited Edition Summer 2024 Gear.",
"shieldSpecialSummer2024WarriorText": "Whale Shark Flipper",
"shieldSpecialSummer2024WarriorNotes": "To those who claim you cant reach your goals, just say: talk to the hand, er, flipper! Increases Constitution by <%= con %>. Limited Edition Summer 2024 Gear.",
"shieldSpecialSummer2024HealerText": "Sea Snail Shield",

View file

@ -1,8 +1,6 @@
import pickBy from 'lodash/pickBy';
import defaults from 'lodash/defaults';
import upperFirst from 'lodash/upperFirst';
import {
CLASSES,
EVENTS,
} from '../../../constants';
import { ownsItem } from '../../gear-helper';
@ -11,9 +9,35 @@ import * as contributorGear from './special-contributor';
import * as takeThisGear from './special-takeThis';
import * as wonderconGear from './special-wondercon';
import t from '../../../translation';
import { getClassName } from '../../../../libs/getClassName';
const gearEvents = pickBy(EVENTS, event => event.gear);
function isSeasonalEventKey (key) {
return key.includes('spring') || key.includes('summer') || key.includes('fall') || key.includes('winter');
}
function fillSpecialGear (gearItems, gearType, value, stats) {
Object.keys(gearItems).forEach(key => {
if (isSeasonalEventKey(key)) {
let klass = key.split(/(?=[A-Z])/)[1].toLowerCase();
if (klass === 'mage') {
klass = 'wizard';
}
const actualGearType = (typeof gearType === 'function') ? gearType(klass) : gearType;
const textKey = `${actualGearType}Special${upperFirst(key)}`;
const actualValue = (typeof value === 'function') ? value(klass) : value;
defaults(gearItems[key], {
specialClass: klass,
text: t(`${textKey}Text`),
notes: t(`${textKey}Notes`, stats),
value: actualValue,
}, stats);
if (klass === 'wizard') {
defaults(gearItems[key], {
twoHanded: true,
});
}
}
});
}
const armor = {
0: backerGear.armorSpecial0,
@ -742,20 +766,7 @@ const armorStats = {
wizard: { int: 9 },
};
Object.keys(gearEvents).forEach(event => {
CLASSES.forEach(klass => {
const classNameString = getClassName(klass);
const eventString = `${event}${upperFirst(classNameString)}`;
const textString = `armorSpecial${upperFirst(event)}${upperFirst(classNameString)}`;
defaults(armor[eventString], {
event: gearEvents[event],
specialClass: klass,
text: t(`${textString}Text`),
notes: t(`${textString}Notes`, armorStats[klass]),
value: 90,
}, armorStats[klass]);
});
});
fillSpecialGear(armor, 'armor', 90, armorStats);
const back = {
wondercon_red: wonderconGear.backSpecialWonderconRed, // eslint-disable-line camelcase
@ -1822,20 +1833,7 @@ const headStats = {
wizard: { per: 7 },
};
Object.keys(gearEvents).forEach(event => {
CLASSES.forEach(klass => {
const classNameString = getClassName(klass);
const eventString = `${event}${upperFirst(classNameString)}`;
const textString = `headSpecial${upperFirst(event)}${upperFirst(classNameString)}`;
defaults(head[eventString], {
event: gearEvents[event],
specialClass: klass,
text: t(`${textString}Text`),
notes: t(`${textString}Notes`, headStats[klass]),
value: 60,
}, headStats[klass]);
});
});
fillSpecialGear(head, 'head', 60, headStats);
const headAccessory = {
heroicCirclet: contributorGear.headAccessorySpecialHeroicCirclet,
@ -2566,21 +2564,7 @@ const shieldStats = {
warrior: { con: 7 },
};
Object.keys(gearEvents).forEach(event => {
CLASSES.forEach(klass => {
if (klass === 'wizard') return;
const eventString = `${event}${upperFirst(klass)}`;
const textString = klass === 'rogue' ? `weaponSpecial${upperFirst(event)}Rogue`
: `shieldSpecial${upperFirst(event)}${upperFirst(klass)}`;
defaults(shield[eventString], {
event: gearEvents[event],
specialClass: klass,
text: t(`${textString}Text`),
notes: t(`${textString}Notes`, shieldStats[klass]),
value: klass === 'rogue' ? 80 : 70,
}, shieldStats[klass]);
});
});
fillSpecialGear(shield, klass => (klass === 'rogue' ? 'weapon' : 'shield'), 80, shieldStats);
const weapon = {
0: backerGear.weaponSpecial0,
@ -3251,21 +3235,7 @@ const weaponCosts = {
wizard: 160,
};
Object.keys(gearEvents).forEach(event => {
CLASSES.forEach(klass => {
const classNameString = getClassName(klass);
const eventString = `${event}${upperFirst(classNameString)}`;
const textString = `weaponSpecial${upperFirst(event)}${upperFirst(classNameString)}`;
defaults(weapon[eventString], {
event: gearEvents[event],
specialClass: klass,
text: t(`${textString}Text`),
notes: t(`${textString}Notes`, weaponStats[klass]),
value: weaponCosts[klass],
twoHanded: klass === 'wizard',
}, weaponStats[klass]);
});
});
fillSpecialGear(weapon, 'weapon', klass => weaponCosts[klass], weaponStats);
export {
armor,