import {each, defaults} from 'lodash'; import capitalize from 'lodash.capitalize'; import camelCase from 'lodash.camelcase'; import {translator as t} from '../helpers'; let petQuests = { gryphon: { boss: { hp: 300, str: 1.5, }, drop: { gp: 25, exp: 125, } }, hedgehog: { boss: { hp: 400, str: 1.25 }, drop: { gp: 30, exp: 125, } }, ghost_stag: { boss: { hp: 1200, str: 2.5 }, drop: { items: [ { type: 'eggs', key: 'Deer', text: t('questGhostStagDropDeerEgg') }, { type: 'eggs', key: 'Deer', text: t('questGhostStagDropDeerEgg') }, { type: 'eggs', key: 'Deer', text: t('questGhostStagDropDeerEgg') } ], gp: 80, exp: 800, } }, rat: { boss: { hp: 1200, str: 2.5 }, drop: { gp: 80, exp: 800, } }, octopus: { boss: { hp: 1200, str: 2.5 }, drop: { gp: 80, exp: 800, } }, dilatory_derby: { text: t('questSeahorseText'), notes: t('questSeahorseNotes'), completion: t('questSeahorseCompletion'), boss: { name: t('questSeahorseBoss'), hp: 300, str: 1.5 }, drop: { items: [ { type: 'eggs', key: 'Seahorse', text: t('questSeahorseDropSeahorseEgg') }, { type: 'eggs', key: 'Seahorse', text: t('questSeahorseDropSeahorseEgg') }, { type: 'eggs', key: 'Seahorse', text: t('questSeahorseDropSeahorseEgg') } ], gp: 25, exp: 125, unlock: t('questSeahorseUnlockText') } }, harpy: { boss: { hp: 600, str: 1.5 }, drop: { items: [ { type: 'eggs', key: 'Parrot', text: t('questHarpyDropParrotEgg') }, { type: 'eggs', key: 'Parrot', text: t('questHarpyDropParrotEgg') }, { type: 'eggs', key: 'Parrot', text: t('questHarpyDropParrotEgg') } ], gp: 43, exp: 350, } }, rooster: { boss: { hp: 300, str: 1.5 }, drop: { gp: 25, exp: 125, } }, spider: { boss: { hp: 400, str: 1.5 }, drop: { gp: 31, exp: 200, } }, owl: { boss: { hp: 500, str: 1.5 }, drop: { gp: 37, exp: 275, } }, penguin: { boss: { hp: 400, str: 1.5 }, drop: { gp: 31, exp: 200, } }, trex: { text: t('questTRexText'), notes: t('questTRexNotes'), completion: t('questTRexCompletion'), boss: { name: t('questTRexBoss'), hp: 800, str: 2 }, drop: { items: [ { type: 'eggs', key: 'TRex', text: t('questTRexDropTRexEgg') }, { type: 'eggs', key: 'TRex', text: t('questTRexDropTRexEgg') }, { type: 'eggs', key: 'TRex', text: t('questTRexDropTRexEgg') } ], gp: 55, exp: 500, unlock: t('questTRexUnlockText') } }, trex_undead: { text: t('questTRexUndeadText'), notes: t('questTRexUndeadNotes'), completion: t('questTRexUndeadCompletion'), boss: { name: t('questTRexUndeadBoss'), hp: 500, str: 2, rage: { title: t('questTRexUndeadRageTitle'), description: t('questTRexUndeadRageDescription'), value: 50, healing: .3, effect: t('questTRexUndeadRageEffect') } }, drop: { items: [ { type: 'eggs', key: 'TRex', text: t('questTRexDropTRexEgg') }, { type: 'eggs', key: 'TRex', text: t('questTRexDropTRexEgg') }, { type: 'eggs', key: 'TRex', text: t('questTRexDropTRexEgg') } ], gp: 55, exp: 500, unlock: t('questTRexUnlockText') } }, rock: { boss: { hp: 400, str: 1.5 }, drop: { gp: 31, exp: 200, } }, bunny: { boss: { hp: 300, str: 1.5 }, drop: { gp: 25, exp: 125, } }, slime: { boss: { hp: 400, str: 1.5 }, drop: { gp: 31, exp: 200, } }, sheep: { boss: { hp: 300, str: 1.5 }, drop: { gp: 25, exp: 125, } }, kraken: { boss: { hp: 800, str: 2 }, drop: { items: [ { type: 'eggs', key: 'Cuttlefish', text: t('questKrakenDropCuttlefishEgg') }, { type: 'eggs', key: 'Cuttlefish', text: t('questKrakenDropCuttlefishEgg') }, { type: 'eggs', key: 'Cuttlefish', text: t('questKrakenDropCuttlefishEgg') } ], gp: 55, exp: 500, } }, whale: { boss: { hp: 500, str: 1.5 }, drop: { gp: 37, exp: 275, } }, cheetah: { boss: { hp: 600, str: 1.5 }, drop: { gp: 43, exp: 350, } }, horse: { boss: { hp: 500, str: 1.5 }, drop: { gp: 37, exp: 275, } } }; each(petQuests, (quest, name) => { let camelName = camelCase(name); let capitalizedName = capitalize(camelName); let questDefaults = { completion: t(`quest${capitalizedName}Completion`), category: 'pet', }; let dropDefaults = { items: [ { type: 'eggs', key: capitalizedName, text: t(`quest${capitalizedName}Drop${capitalizedName}Egg`) }, { type: 'eggs', key: capitalizedName, text: t(`quest${capitalizedName}Drop${capitalizedName}Egg`) }, { type: 'eggs', key: capitalizedName, text: t(`quest${capitalizedName}Drop${capitalizedName}Egg`) }, ], unlock: t(`quest${capitalizedName}UnlockText`), }; defaults(quest, questDefaults); if (quest.drop) defaults(quest.drop, dropDefaults); }); export default petQuests;