From bd6d8c159583587116540838ee5fb34648493384 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Sat, 19 Sep 2015 21:49:17 -0500 Subject: [PATCH] Move quests to separate module --- common/script/content/index.coffee | 886 +----------- common/script/src/content/quests/index.js | 1483 +++++++++++++++++++++ 2 files changed, 1484 insertions(+), 885 deletions(-) create mode 100644 common/script/src/content/quests/index.js diff --git a/common/script/content/index.coffee b/common/script/content/index.coffee index db9664815a..c4861a1fcb 100644 --- a/common/script/content/index.coffee +++ b/common/script/content/index.coffee @@ -708,891 +708,7 @@ api.userCanOwnQuestCategories = [ 'pet' ] -api.quests = - - dilatory: - text: t("questDilatoryText") - notes: t("questDilatoryNotes") - completion: t("questDilatoryCompletion") - value: 0 - canBuy: false - category: 'world' - boss: - name: t("questDilatoryBoss") - # We ran an average of progress{up,down} on users over 5 days: {up:805025,down:1324423}. /5*30 (we want the - # event to last 30 days) = {hp:5mil,8mil}. Because Dilatory should cast Rage 3x during that time, 8mil/3=2.6mil (round up to 4) - hp: 5000000 - str: 1 - def: 1 - rage: - title: t("questDilatoryBossRageTitle") - description: t("questDilatoryBossRageDescription") - value: 4000000 - - # special, they won't always look like this - tavern:t('questDilatoryBossRageTavern') - stables:t('questDilatoryBossRageStables') - market:t('questDilatoryBossRageMarket') - drop: - items: [ - {type: 'pets', key: 'MantisShrimp-Base', text: t('questDilatoryDropMantisShrimpPet')} - {type: 'mounts', key: 'MantisShrimp-Base', text: t('questDilatoryDropMantisShrimpMount')} - - {type: 'food', key: 'Meat', text: t('foodMeat')} - {type: 'food', key: 'Milk', text: t('foodMilk')} - {type: 'food', key: 'Potatoe', text: t('foodPotatoe')} - {type: 'food', key: 'Strawberry', text: t('foodStrawberry')} - {type: 'food', key: 'Chocolate', text: t('foodChocolate')} - {type: 'food', key: 'Fish', text: t('foodFish')} - {type: 'food', key: 'RottenMeat', text: t('foodRottenMeat')} - {type: 'food', key: 'CottonCandyPink', text: t('foodCottonCandyPink')} - {type: 'food', key: 'CottonCandyBlue', text: t('foodCottonCandyBlue')} - {type: 'food', key: 'Honey', text: t('foodHoney')} - ] - gp: 0 - exp: 0 - - stressbeast: - text: t("questStressbeastText") - notes: t("questStressbeastNotes") - completion: t("questStressbeastCompletion") - completionChat: t("questStressbeastCompletionChat") - value: 0 - canBuy: false - category: 'world' - boss: - name: t("questStressbeastBoss") - hp: 2750000 - str: 1 - def: 1 - rage: - title: t("questStressbeastBossRageTitle") - description: t("questStressbeastBossRageDescription") - value: 1450000 - healing: .3 - stables:t('questStressbeastBossRageStables') - bailey:t('questStressbeastBossRageBailey') - guide:t('questStressbeastBossRageGuide') - desperation: - threshold: 500000 - str: 3.5 - def: 2 - text:t('questStressbeastDesperation') - drop: - items: [ - {type: 'pets', key: 'Mammoth-Base', text: t('questStressbeastDropMammothPet')} - {type: 'mounts', key: 'Mammoth-Base', text: t('questStressbeastDropMammothMount')} - - {type: 'food', key: 'Meat', text: t('foodMeat')} - {type: 'food', key: 'Milk', text: t('foodMilk')} - {type: 'food', key: 'Potatoe', text: t('foodPotatoe')} - {type: 'food', key: 'Strawberry', text: t('foodStrawberry')} - {type: 'food', key: 'Chocolate', text: t('foodChocolate')} - {type: 'food', key: 'Fish', text: t('foodFish')} - {type: 'food', key: 'RottenMeat', text: t('foodRottenMeat')} - {type: 'food', key: 'CottonCandyPink', text: t('foodCottonCandyPink')} - {type: 'food', key: 'CottonCandyBlue', text: t('foodCottonCandyBlue')} - {type: 'food', key: 'Honey', text: t('foodHoney')} - ] - gp: 0 - exp: 0 - - evilsanta: - canBuy:false - text: t('questEvilSantaText') # title of the quest (eg, Deep into Vice's Layer) - notes: t('questEvilSantaNotes') - completion: t('questEvilSantaCompletion') - value: 4 # Gem cost to buy, GP sell-back - category: 'pet' - boss: - name: t('questEvilSantaBoss') # name of the boss himself (eg, Vice) - hp: 300 - str: 1 # Multiplier of users' missed dailies - drop: - items: [ - {type: 'mounts', key: 'BearCub-Polar', text: t('questEvilSantaDropBearCubPolarMount')} - ] - gp: 20 - exp: 100 # Exp bonus from defeating the boss - - evilsanta2: - canBuy:false - text: t('questEvilSanta2Text') - notes: t('questEvilSanta2Notes') - completion: t('questEvilSanta2Completion') - value: 4 - previous: 'evilsanta' - category: 'pet' - collect: - tracks: text: t('questEvilSanta2CollectTracks'), count: 20 - branches: text: t('questEvilSanta2CollectBranches'), count: 10 - drop: - items: [ - {type: 'pets', key: 'BearCub-Polar', text: t('questEvilSanta2DropBearCubPolarPet')} - ] - gp: 20 - exp: 100 - - gryphon: - text: t('questGryphonText') - notes: t('questGryphonNotes') - completion: t('questGryphonCompletion') - value: 4 # Gem cost to buy, GP sell-back - category: 'pet' - boss: - name: t('questGryphonBoss') # name of the boss himself (eg, Vice) - hp: 300 - str: 1.5 # Multiplier of users' missed dailies - drop: - items: [ - {type: 'eggs', key: 'Gryphon', text: t('questGryphonDropGryphonEgg')} - {type: 'eggs', key: 'Gryphon', text: t('questGryphonDropGryphonEgg')} - {type: 'eggs', key: 'Gryphon', text: t('questGryphonDropGryphonEgg')} - ] - gp: 25 - exp: 125 - unlock: t('questGryphonUnlockText') - - hedgehog: - text: t('questHedgehogText') - notes: t('questHedgehogNotes') - completion: t('questHedgehogCompletion') - value: 4 # Gem cost to buy, GP sell-back - category: 'pet' - boss: - name: t('questHedgehogBoss') # name of the boss himself (eg, Vice) - hp: 400 - str: 1.25 # Multiplier of users' missed dailies - drop: - items: [ - {type: 'eggs', key: 'Hedgehog', text: t('questHedgehogDropHedgehogEgg')} - {type: 'eggs', key: 'Hedgehog', text: t('questHedgehogDropHedgehogEgg')} - {type: 'eggs', key: 'Hedgehog', text: t('questHedgehogDropHedgehogEgg')} - ] - gp: 30 - exp: 125 - unlock: t('questHedgehogUnlockText') - - ghost_stag: - text: t('questGhostStagText') - notes: t('questGhostStagNotes') - completion: t('questGhostStagCompletion') - value: 4 - category: 'pet' - boss: - name: t('questGhostStagBoss') - 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 - unlock: t('questGhostStagUnlockText') - - vice1: - text: t('questVice1Text') - notes: t('questVice1Notes') - value: 4 - lvl: 30 - category: 'unlockable' - boss: - name: t('questVice1Boss') - hp: 750 - str: 1.5 - drop: - items: [ - {type: 'quests', key: "vice2", text: t('questVice1DropVice2Quest')} - ] - gp: 20 - exp: 100 - - vice2: - text: t('questVice2Text') - notes: t('questVice2Notes') - value: 4 - lvl: 30 - category: 'unlockable' - previous: 'vice1' - collect: - lightCrystal: text: t('questVice2CollectLightCrystal'), count: 45 - drop: - items: [ - {type: 'quests', key: 'vice3', text: t('questVice2DropVice3Quest')} - ] - gp: 20 - exp: 75 - - vice3: - text: t('questVice3Text') - notes: t('questVice3Notes') - completion: t('questVice3Completion') - previous: 'vice2' - value: 4 - lvl: 30 - category: 'unlockable' - boss: - name: t('questVice3Boss') - hp: 1500 - str: 3 - drop: - items: [ - {type: 'gear', key: "weapon_special_2", text: t('questVice3DropWeaponSpecial2')} - {type: 'eggs', key: 'Dragon', text: t('questVice3DropDragonEgg')} - {type: 'eggs', key: 'Dragon', text: t('questVice3DropDragonEgg')} - {type: 'hatchingPotions', key: 'Shade', text: t('questVice3DropShadeHatchingPotion')} - {type: 'hatchingPotions', key: 'Shade', text: t('questVice3DropShadeHatchingPotion')} - ] - gp: 100 - exp: 1000 - - egg: - text: t('questEggHuntText') - notes: t('questEggHuntNotes') - completion: t('questEggHuntCompletion') - value: 1 - canBuy: false - category: 'pet' - collect: - plainEgg: text: t('questEggHuntCollectPlainEgg'), count: 100 - drop: - items: [ - {type: 'eggs', key: 'Egg', text: t('questEggHuntDropPlainEgg')} - {type: 'eggs', key: 'Egg', text: t('questEggHuntDropPlainEgg')} - {type: 'eggs', key: 'Egg', text: t('questEggHuntDropPlainEgg')} - {type: 'eggs', key: 'Egg', text: t('questEggHuntDropPlainEgg')} - {type: 'eggs', key: 'Egg', text: t('questEggHuntDropPlainEgg')} - {type: 'eggs', key: 'Egg', text: t('questEggHuntDropPlainEgg')} - {type: 'eggs', key: 'Egg', text: t('questEggHuntDropPlainEgg')} - {type: 'eggs', key: 'Egg', text: t('questEggHuntDropPlainEgg')} - {type: 'eggs', key: 'Egg', text: t('questEggHuntDropPlainEgg')} - {type: 'eggs', key: 'Egg', text: t('questEggHuntDropPlainEgg')} - ] - gp: 0 - exp: 0 - - rat: - text: t('questRatText') - notes: t('questRatNotes') - completion: t('questRatCompletion') - value: 4 - category: 'pet' - boss: - name: t('questRatBoss') - hp: 1200 - str: 2.5 - drop: - items: [ - {type: 'eggs', key: 'Rat', text: t('questRatDropRatEgg')} - {type: 'eggs', key: 'Rat', text: t('questRatDropRatEgg')} - {type: 'eggs', key: 'Rat', text: t('questRatDropRatEgg')} - ] - gp: 80 - exp: 800 - unlock: t('questRatUnlockText') - - octopus: - text: t('questOctopusText') - notes: t('questOctopusNotes') - completion: t('questOctopusCompletion') - value: 4 - category: 'pet' - boss: - name: t('questOctopusBoss') - hp: 1200 - str: 2.5 - drop: - items: [ - {type: 'eggs', key: 'Octopus', text: t('questOctopusDropOctopusEgg')} - {type: 'eggs', key: 'Octopus', text: t('questOctopusDropOctopusEgg')} - {type: 'eggs', key: 'Octopus', text: t('questOctopusDropOctopusEgg')} - ] - gp: 80 - exp: 800 - unlock: t('questOctopusUnlockText') - - dilatory_derby: - text: t('questSeahorseText') - notes: t('questSeahorseNotes') - completion: t('questSeahorseCompletion') - value: 4 - category: 'pet' - 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') - - atom1: - text: t('questAtom1Text') - notes: t('questAtom1Notes') - value: 4 - lvl: 15 - category: 'unlockable' - collect: - soapBars: text: t('questAtom1CollectSoapBars'), count: 20 - drop: - items: [ - {type: 'quests', key: "atom2", text: t('questAtom1Drop')} - ] - gp: 7 - exp: 50 - atom2: - text: t('questAtom2Text') - notes: t('questAtom2Notes') - previous: 'atom1' - value: 4 - lvl: 15 - category: 'unlockable' - boss: - name: t('questAtom2Boss') - hp: 300 - str: 1 - drop: - items: [ - {type: 'quests', key: "atom3", text: t('questAtom2Drop')} - ] - gp: 20 - exp: 100 - atom3: - text: t('questAtom3Text') - notes: t('questAtom3Notes') - previous: 'atom2' - completion: t('questAtom3Completion') - value: 4 - lvl: 15 - category: 'unlockable' - boss: - name: t('questAtom3Boss') - hp: 800 - str: 1.5 - drop: - items: [ - {type: 'gear', key: "head_special_2", text: t('headSpecial2Text')} - {type: 'hatchingPotions', key: "Base", text: t('questAtom3DropPotion')} - {type: 'hatchingPotions', key: "Base", text: t('questAtom3DropPotion')} - ] - gp: 25 - exp: 125 - - harpy: - text: t('questHarpyText') - notes: t('questHarpyNotes') - completion: t('questHarpyCompletion') - value: 4 - category: 'pet' - boss: - name: t('questHarpyBoss') - 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 - unlock: t('questHarpyUnlockText') - - rooster: - text: t('questRoosterText') - notes: t('questRoosterNotes') - completion: t('questRoosterCompletion') - value: 4 - category: 'pet' - boss: - name: t('questRoosterBoss') - hp: 300 - str: 1.5 - drop: - items: [ - {type: 'eggs', key: 'Rooster', text: t('questRoosterDropRoosterEgg')} - {type: 'eggs', key: 'Rooster', text: t('questRoosterDropRoosterEgg')} - {type: 'eggs', key: 'Rooster', text: t('questRoosterDropRoosterEgg')} - ] - gp: 25 - exp: 125 - unlock: t('questRoosterUnlockText') - - spider: - text: t('questSpiderText') - notes: t('questSpiderNotes') - completion: t('questSpiderCompletion') - value: 4 - category: 'pet' - boss: - name: t('questSpiderBoss') - hp: 400 - str: 1.5 - drop: - items: [ - {type: 'eggs', key: 'Spider', text: t('questSpiderDropSpiderEgg')} - {type: 'eggs', key: 'Spider', text: t('questSpiderDropSpiderEgg')} - {type: 'eggs', key: 'Spider', text: t('questSpiderDropSpiderEgg')} - ] - gp: 31 - exp: 200 - unlock: t('questSpiderUnlockText') - - moonstone1: - text: t('questMoonstone1Text') - notes: t('questMoonstone1Notes') - value: 4 - lvl: 60 - category: 'unlockable' - collect: - moonstone: text: t('questMoonstone1CollectMoonstone'), count: 500 - drop: - items: [ - {type: 'quests', key: "moonstone2", text: t('questMoonstone1DropMoonstone2Quest')} - ] - gp: 50 - exp: 100 - moonstone2: - text: t('questMoonstone2Text') - notes: t('questMoonstone2Notes') - value: 4 - lvl: 60 - previous: 'moonstone1' - category: 'unlockable' - boss: - name: t('questMoonstone2Boss') - hp: 1500 - str: 3 - drop: - items: [ - {type: 'quests', key: 'moonstone3', text: t('questMoonstone2DropMoonstone3Quest')} - ] - gp: 500 - exp: 1000 - moonstone3: - text: t('questMoonstone3Text') - notes: t('questMoonstone3Notes') - completion: t('questMoonstone3Completion') - previous: 'moonstone2' - value: 4 - lvl: 60 - category: 'unlockable' - boss: - name: t('questMoonstone3Boss') - hp: 2000 - str: 3.5 - drop: - items: [ - {type: 'gear', key: "armor_special_2", text: t('armorSpecial2Text')} - {type: 'food', key: 'RottenMeat', text: t('questMoonstone3DropRottenMeat')} - {type: 'food', key: 'RottenMeat', text: t('questMoonstone3DropRottenMeat')} - {type: 'food', key: 'RottenMeat', text: t('questMoonstone3DropRottenMeat')} - {type: 'food', key: 'RottenMeat', text: t('questMoonstone3DropRottenMeat')} - {type: 'food', key: 'RottenMeat', text: t('questMoonstone3DropRottenMeat')} - {type: 'hatchingPotions', key: 'Zombie', text: t('questMoonstone3DropZombiePotion')} - {type: 'hatchingPotions', key: 'Zombie', text: t('questMoonstone3DropZombiePotion')} - {type: 'hatchingPotions', key: 'Zombie', text: t('questMoonstone3DropZombiePotion')} - ] - gp: 900 - exp: 1500 - - goldenknight1: - text: t('questGoldenknight1Text') - notes: t('questGoldenknight1Notes') - value: 4 - lvl: 40 - category: 'unlockable' - collect: - testimony: text: t('questGoldenknight1CollectTestimony'), count: 300 - drop: - items: [ - {type: 'quests', key: "goldenknight2", text: t('questGoldenknight1DropGoldenknight2Quest')} - ] - gp: 15 - exp: 120 - goldenknight2: - text: t('questGoldenknight2Text') - notes: t('questGoldenknight2Notes') - value: 4 - previous: 'goldenknight1' - lvl: 40 - category: 'unlockable' - boss: - name: t('questGoldenknight2Boss') - hp: 1000 - str: 3 - drop: - items: [ - {type: 'quests', key: 'goldenknight3', text: t('questGoldenknight2DropGoldenknight3Quest')} - ] - gp: 75 - exp: 750 - goldenknight3: - text: t('questGoldenknight3Text') - notes: t('questGoldenknight3Notes') - completion: t('questGoldenknight3Completion') - previous: 'goldenknight2' - value: 4 - lvl: 40 - category: 'unlockable' - boss: - name: t('questGoldenknight3Boss') - hp: 1700 - str: 3.5 - drop: - items: [ - {type: 'food', key: 'Honey', text: t('questGoldenknight3DropHoney')} - {type: 'food', key: 'Honey', text: t('questGoldenknight3DropHoney')} - {type: 'food', key: 'Honey', text: t('questGoldenknight3DropHoney')} - {type: 'hatchingPotions', key: 'Golden', text: t('questGoldenknight3DropGoldenPotion')} - {type: 'hatchingPotions', key: 'Golden', text: t('questGoldenknight3DropGoldenPotion')} - {type: 'gear', key: 'shield_special_goldenknight', text: t('questGoldenknight3DropWeapon')} - ] - gp: 900 - exp: 1500 - - basilist: - text: t('questBasilistText') - notes: t('questBasilistNotes') - completion: t('questBasilistCompletion') - value: 4 - category: 'unlockable' - unlockCondition: - condition: 'party invite' - text: t('inviteFriends') - boss: - name: t('questBasilistBoss') - hp: 100 - str: 0.5 - drop: - gp: 8 - exp: 42 - - owl: - text: t('questOwlText') - notes: t('questOwlNotes') - completion: t('questOwlCompletion') - value: 4 - category: 'pet' - boss: - name: t('questOwlBoss') - hp: 500 - str: 1.5 - drop: - items: [ - {type: 'eggs', key: 'Owl', text: t('questOwlDropOwlEgg')} - {type: 'eggs', key: 'Owl', text: t('questOwlDropOwlEgg')} - {type: 'eggs', key: 'Owl', text: t('questOwlDropOwlEgg')} - ] - gp: 37 - exp: 275 - unlock: t('questOwlUnlockText') - - penguin: - text: t('questPenguinText') - notes: t('questPenguinNotes') - completion: t('questPenguinCompletion') - value: 4 - category: 'pet' - boss: - name: t('questPenguinBoss') - hp: 400 - str: 1.5 - drop: - items: [ - {type: 'eggs', key: 'Penguin', text: t('questPenguinDropPenguinEgg')} - {type: 'eggs', key: 'Penguin', text: t('questPenguinDropPenguinEgg')} - {type: 'eggs', key: 'Penguin', text: t('questPenguinDropPenguinEgg')} - ] - gp: 31 - exp: 200 - unlock: t('questPenguinUnlockText') - - trex: - text: t('questTRexText') - notes: t('questTRexNotes') - completion: t('questTRexCompletion') - value: 4 - category: 'pet' - 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') - value: 4 - category: 'pet' - 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: - text: t('questRockText') - notes: t('questRockNotes') - completion: t('questRockCompletion') - value: 4 - category: 'pet' - boss: - name: t('questRockBoss') - hp: 400 - str: 1.5 - drop: - items: [ - {type: 'eggs', key: 'Rock', text: t('questRockDropRockEgg')} - {type: 'eggs', key: 'Rock', text: t('questRockDropRockEgg')} - {type: 'eggs', key: 'Rock', text: t('questRockDropRockEgg')} - ] - gp: 31 - exp: 200 - unlock: t('questRockUnlockText') - - bunny: - text: t('questBunnyText') - notes: t('questBunnyNotes') - completion: t('questBunnyCompletion') - value: 4 - category: 'pet' - boss: - name: t('questBunnyBoss') - hp: 300 - str: 1.5 - drop: - items: [ - {type: 'eggs', key: 'Bunny', text: t('questBunnyDropBunnyEgg')} - {type: 'eggs', key: 'Bunny', text: t('questBunnyDropBunnyEgg')} - {type: 'eggs', key: 'Bunny', text: t('questBunnyDropBunnyEgg')} - ] - gp: 25 - exp: 125 - unlock: t('questBunnyUnlockText') - - slime: - text: t('questSlimeText') - notes: t('questSlimeNotes') - completion: t('questSlimeCompletion') - value: 4 - category: 'pet' - boss: - name: t('questSlimeBoss') - hp: 400 - str: 1.5 - drop: - items: [ - {type: 'eggs', key: 'Slime', text: t('questSlimeDropSlimeEgg')} - {type: 'eggs', key: 'Slime', text: t('questSlimeDropSlimeEgg')} - {type: 'eggs', key: 'Slime', text: t('questSlimeDropSlimeEgg')} - ] - gp: 31 - exp: 200 - unlock: t('questSlimeUnlockText') - - sheep: - text: t('questSheepText') - notes: t('questSheepNotes') - completion: t('questSheepCompletion') - value: 4 - category: 'pet' - boss: - name: t('questSheepBoss') - hp: 300 - str: 1.5 - drop: - items: [ - {type: 'eggs', key: 'Sheep', text: t('questSheepDropSheepEgg')} - {type: 'eggs', key: 'Sheep', text: t('questSheepDropSheepEgg')} - {type: 'eggs', key: 'Sheep', text: t('questSheepDropSheepEgg')} - ] - gp: 25 - exp: 125 - unlock: t('questSheepUnlockText') - - kraken: - text: t('questKrakenText') - notes: t('questKrakenNotes') - completion: t('questKrakenCompletion') - value: 4 - category: 'pet' - boss: - name: t('questKrakenBoss') - 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 - unlock: t('questKrakenUnlockText') - - whale: - text: t('questWhaleText') - notes: t('questWhaleNotes') - completion: t('questWhaleCompletion') - value: 4 - category: 'pet' - boss: - name: t('questWhaleBoss') - hp: 500 - str: 1.5 - drop: - items: [ - {type: 'eggs', key: 'Whale', text: t('questWhaleDropWhaleEgg')} - {type: 'eggs', key: 'Whale', text: t('questWhaleDropWhaleEgg')} - {type: 'eggs', key: 'Whale', text: t('questWhaleDropWhaleEgg')} - ] - gp: 37 - exp: 275 - unlock: t('questWhaleUnlockText') - - dilatoryDistress1: - text: t('questDilatoryDistress1Text') - notes: t('questDilatoryDistress1Notes') - completion: t('questDilatoryDistress1Completion') - value: 4 - goldValue: 200 - category: 'gold' - collect: - fireCoral: text: t('questDilatoryDistress1CollectFireCoral'), count: 25 - blueFins: text: t('questDilatoryDistress1CollectBlueFins'), count: 25 - drop: - items: [ - {type: 'gear', key: "armor_special_finnedOceanicArmor", text: t('questDilatoryDistress1DropArmor')} - ] - gp: 0 - exp: 75 - dilatoryDistress2: - text: t('questDilatoryDistress2Text') - notes: t('questDilatoryDistress2Notes') - completion: t('questDilatoryDistress2Completion') - previous: 'dilatoryDistress1' - value: 4 - goldValue: 300 - category: 'gold' - boss: - name: t('questDilatoryDistress2Boss') - hp: 500 - rage: - title: t("questDilatoryDistress2RageTitle") - description: t("questDilatoryDistress2RageDescription") - value: 50 - healing: .3 - effect:t('questDilatoryDistress2RageEffect') - drop: - items: [ - {type: 'hatchingPotions', key: 'Skeleton', text: t('questDilatoryDistress2DropSkeletonPotion')} - {type: 'hatchingPotions', key: 'CottonCandyBlue', text: t('questDilatoryDistress2DropCottonCandyBluePotion')} - {type: 'gear', key: "head_special_fireCoralCirclet", text: t('questDilatoryDistress2DropHeadgear')} - ] - gp: 0 - exp: 500 - dilatoryDistress3: - text: t('questDilatoryDistress3Text') - notes: t('questDilatoryDistress3Notes') - completion: t('questDilatoryDistress3Completion') - previous: 'dilatoryDistress2' - value: 4 - goldValue: 400 - category: 'gold' - boss: - name: t('questDilatoryDistress3Boss') - hp: 1000 - str: 2 - drop: - items: [ - {type: 'food', key: 'Fish', text: t('questDilatoryDistress3DropFish')} - {type: 'food', key: 'Fish', text: t('questDilatoryDistress3DropFish')} - {type: 'food', key: 'Fish', text: t('questDilatoryDistress3DropFish')} - {type: 'gear', key: "weapon_special_tridentOfCrashingTides", text: t('questDilatoryDistress3DropWeapon')} - {type: 'gear', key: "shield_special_moonpearlShield", text: t('questDilatoryDistress3DropShield')} - ] - gp: 0 - exp: 650 - - cheetah: - text: t('questCheetahText') - notes: t('questCheetahNotes') - completion: t('questCheetahCompletion') - value: 4 - category: 'pet' - boss: - name: t('questCheetahBoss') - hp: 600 - str: 1.5 - drop: - items: [ - {type: 'eggs', key: 'Cheetah', text: t('questCheetahDropCheetahEgg')} - {type: 'eggs', key: 'Cheetah', text: t('questCheetahDropCheetahEgg')} - {type: 'eggs', key: 'Cheetah', text: t('questCheetahDropCheetahEgg')} - ] - gp: 43 - exp: 350 - unlock: t('questCheetahUnlockText') - - horse: - text: t('questHorseText') - notes: t('questHorseNotes') - completion: t('questHorseCompletion') - value: 4 - category: 'pet' - boss: - name: t('questHorseBoss') - hp: 500 - str: 1.5 - drop: - items: [ - {type: 'eggs', key: 'Horse', text: t('questHorseDropHorseEgg')} - {type: 'eggs', key: 'Horse', text: t('questHorseDropHorseEgg')} - {type: 'eggs', key: 'Horse', text: t('questHorseDropHorseEgg')} - ] - gp: 37 - exp: 275 - unlock: t('questHorseUnlockText') - -_.each api.quests, (v,key) -> - _.defaults v, {key,canBuy:true} - b = v.boss - if b - _.defaults b, {str:1,def:1} - if b.rage - _.defaults b.rage, {title:t('bossRageTitle'),description:t('bossRageDescription')} +api.quests = require('../../dist/scripts/content/quests/index') api.questsByLevel = _.sortBy api.quests, (quest) -> diff --git a/common/script/src/content/quests/index.js b/common/script/src/content/quests/index.js new file mode 100644 index 0000000000..ea83e6d786 --- /dev/null +++ b/common/script/src/content/quests/index.js @@ -0,0 +1,1483 @@ +import {each, defaults} from 'lodash'; +import t from '../helpers/translator'; + +const QUEST_BOSS_DEFAULTS = { str: 1, def: 1 }; +const QUEST_BOSS_RAGE_DEFAULTS = { + title: t('bossRageTitle'), + description: t('bossRageDescription'), +}; + +let quests = { + dilatory: { + text: t('questDilatoryText'), + notes: t('questDilatoryNotes'), + completion: t('questDilatoryCompletion'), + value: 0, + canBuy: false, + category: 'world', + boss: { + name: t('questDilatoryBoss'), + hp: 5000000, + str: 1, + def: 1, + rage: { + title: t('questDilatoryBossRageTitle'), + description: t('questDilatoryBossRageDescription'), + value: 4000000, + tavern: t('questDilatoryBossRageTavern'), + stables: t('questDilatoryBossRageStables'), + market: t('questDilatoryBossRageMarket') + } + }, + drop: { + items: [ + { + type: 'pets', + key: 'MantisShrimp-Base', + text: t('questDilatoryDropMantisShrimpPet') + }, { + type: 'mounts', + key: 'MantisShrimp-Base', + text: t('questDilatoryDropMantisShrimpMount') + }, { + type: 'food', + key: 'Meat', + text: t('foodMeat') + }, { + type: 'food', + key: 'Milk', + text: t('foodMilk') + }, { + type: 'food', + key: 'Potatoe', + text: t('foodPotatoe') + }, { + type: 'food', + key: 'Strawberry', + text: t('foodStrawberry') + }, { + type: 'food', + key: 'Chocolate', + text: t('foodChocolate') + }, { + type: 'food', + key: 'Fish', + text: t('foodFish') + }, { + type: 'food', + key: 'RottenMeat', + text: t('foodRottenMeat') + }, { + type: 'food', + key: 'CottonCandyPink', + text: t('foodCottonCandyPink') + }, { + type: 'food', + key: 'CottonCandyBlue', + text: t('foodCottonCandyBlue') + }, { + type: 'food', + key: 'Honey', + text: t('foodHoney') + } + ], + gp: 0, + exp: 0 + } + }, + stressbeast: { + text: t('questStressbeastText'), + notes: t('questStressbeastNotes'), + completion: t('questStressbeastCompletion'), + completionChat: t('questStressbeastCompletionChat'), + value: 0, + canBuy: false, + category: 'world', + boss: { + name: t('questStressbeastBoss'), + hp: 2750000, + str: 1, + def: 1, + rage: { + title: t('questStressbeastBossRageTitle'), + description: t('questStressbeastBossRageDescription'), + value: 1450000, + healing: .3, + stables: t('questStressbeastBossRageStables'), + bailey: t('questStressbeastBossRageBailey'), + guide: t('questStressbeastBossRageGuide') + }, + desperation: { + threshold: 500000, + str: 3.5, + def: 2, + text: t('questStressbeastDesperation') + } + }, + drop: { + items: [ + { + type: 'pets', + key: 'Mammoth-Base', + text: t('questStressbeastDropMammothPet') + }, { + type: 'mounts', + key: 'Mammoth-Base', + text: t('questStressbeastDropMammothMount') + }, { + type: 'food', + key: 'Meat', + text: t('foodMeat') + }, { + type: 'food', + key: 'Milk', + text: t('foodMilk') + }, { + type: 'food', + key: 'Potatoe', + text: t('foodPotatoe') + }, { + type: 'food', + key: 'Strawberry', + text: t('foodStrawberry') + }, { + type: 'food', + key: 'Chocolate', + text: t('foodChocolate') + }, { + type: 'food', + key: 'Fish', + text: t('foodFish') + }, { + type: 'food', + key: 'RottenMeat', + text: t('foodRottenMeat') + }, { + type: 'food', + key: 'CottonCandyPink', + text: t('foodCottonCandyPink') + }, { + type: 'food', + key: 'CottonCandyBlue', + text: t('foodCottonCandyBlue') + }, { + type: 'food', + key: 'Honey', + text: t('foodHoney') + } + ], + gp: 0, + exp: 0 + } + }, + evilsanta: { + canBuy: false, + text: t('questEvilSantaText'), + notes: t('questEvilSantaNotes'), + completion: t('questEvilSantaCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questEvilSantaBoss'), + hp: 300, + str: 1 + }, + drop: { + items: [ + { + type: 'mounts', + key: 'BearCub-Polar', + text: t('questEvilSantaDropBearCubPolarMount') + } + ], + gp: 20, + exp: 100 + } + }, + evilsanta2: { + canBuy: false, + text: t('questEvilSanta2Text'), + notes: t('questEvilSanta2Notes'), + completion: t('questEvilSanta2Completion'), + value: 4, + previous: 'evilsanta', + category: 'pet', + collect: { + tracks: { + text: t('questEvilSanta2CollectTracks'), + count: 20 + }, + branches: { + text: t('questEvilSanta2CollectBranches'), + count: 10 + } + }, + drop: { + items: [ + { + type: 'pets', + key: 'BearCub-Polar', + text: t('questEvilSanta2DropBearCubPolarPet') + } + ], + gp: 20, + exp: 100 + } + }, + gryphon: { + text: t('questGryphonText'), + notes: t('questGryphonNotes'), + completion: t('questGryphonCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questGryphonBoss'), + hp: 300, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Gryphon', + text: t('questGryphonDropGryphonEgg') + }, { + type: 'eggs', + key: 'Gryphon', + text: t('questGryphonDropGryphonEgg') + }, { + type: 'eggs', + key: 'Gryphon', + text: t('questGryphonDropGryphonEgg') + } + ], + gp: 25, + exp: 125, + unlock: t('questGryphonUnlockText') + } + }, + hedgehog: { + text: t('questHedgehogText'), + notes: t('questHedgehogNotes'), + completion: t('questHedgehogCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questHedgehogBoss'), + hp: 400, + str: 1.25 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Hedgehog', + text: t('questHedgehogDropHedgehogEgg') + }, { + type: 'eggs', + key: 'Hedgehog', + text: t('questHedgehogDropHedgehogEgg') + }, { + type: 'eggs', + key: 'Hedgehog', + text: t('questHedgehogDropHedgehogEgg') + } + ], + gp: 30, + exp: 125, + unlock: t('questHedgehogUnlockText') + } + }, + ghost_stag: { + text: t('questGhostStagText'), + notes: t('questGhostStagNotes'), + completion: t('questGhostStagCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questGhostStagBoss'), + 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, + unlock: t('questGhostStagUnlockText') + } + }, + vice1: { + text: t('questVice1Text'), + notes: t('questVice1Notes'), + value: 4, + lvl: 30, + category: 'unlockable', + boss: { + name: t('questVice1Boss'), + hp: 750, + str: 1.5 + }, + drop: { + items: [ + { + type: 'quests', + key: 'vice2', + text: t('questVice1DropVice2Quest') + } + ], + gp: 20, + exp: 100 + } + }, + vice2: { + text: t('questVice2Text'), + notes: t('questVice2Notes'), + value: 4, + lvl: 30, + category: 'unlockable', + previous: 'vice1', + collect: { + lightCrystal: { + text: t('questVice2CollectLightCrystal'), + count: 45 + } + }, + drop: { + items: [ + { + type: 'quests', + key: 'vice3', + text: t('questVice2DropVice3Quest') + } + ], + gp: 20, + exp: 75 + } + }, + vice3: { + text: t('questVice3Text'), + notes: t('questVice3Notes'), + completion: t('questVice3Completion'), + previous: 'vice2', + value: 4, + lvl: 30, + category: 'unlockable', + boss: { + name: t('questVice3Boss'), + hp: 1500, + str: 3 + }, + drop: { + items: [ + { + type: 'gear', + key: 'weapon_special_2', + text: t('questVice3DropWeaponSpecial2') + }, { + type: 'eggs', + key: 'Dragon', + text: t('questVice3DropDragonEgg') + }, { + type: 'eggs', + key: 'Dragon', + text: t('questVice3DropDragonEgg') + }, { + type: 'hatchingPotions', + key: 'Shade', + text: t('questVice3DropShadeHatchingPotion') + }, { + type: 'hatchingPotions', + key: 'Shade', + text: t('questVice3DropShadeHatchingPotion') + } + ], + gp: 100, + exp: 1000 + } + }, + egg: { + text: t('questEggHuntText'), + notes: t('questEggHuntNotes'), + completion: t('questEggHuntCompletion'), + value: 1, + canBuy: false, + category: 'pet', + collect: { + plainEgg: { + text: t('questEggHuntCollectPlainEgg'), + count: 100 + } + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Egg', + text: t('questEggHuntDropPlainEgg') + }, { + type: 'eggs', + key: 'Egg', + text: t('questEggHuntDropPlainEgg') + }, { + type: 'eggs', + key: 'Egg', + text: t('questEggHuntDropPlainEgg') + }, { + type: 'eggs', + key: 'Egg', + text: t('questEggHuntDropPlainEgg') + }, { + type: 'eggs', + key: 'Egg', + text: t('questEggHuntDropPlainEgg') + }, { + type: 'eggs', + key: 'Egg', + text: t('questEggHuntDropPlainEgg') + }, { + type: 'eggs', + key: 'Egg', + text: t('questEggHuntDropPlainEgg') + }, { + type: 'eggs', + key: 'Egg', + text: t('questEggHuntDropPlainEgg') + }, { + type: 'eggs', + key: 'Egg', + text: t('questEggHuntDropPlainEgg') + }, { + type: 'eggs', + key: 'Egg', + text: t('questEggHuntDropPlainEgg') + } + ], + gp: 0, + exp: 0 + } + }, + rat: { + text: t('questRatText'), + notes: t('questRatNotes'), + completion: t('questRatCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questRatBoss'), + hp: 1200, + str: 2.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Rat', + text: t('questRatDropRatEgg') + }, { + type: 'eggs', + key: 'Rat', + text: t('questRatDropRatEgg') + }, { + type: 'eggs', + key: 'Rat', + text: t('questRatDropRatEgg') + } + ], + gp: 80, + exp: 800, + unlock: t('questRatUnlockText') + } + }, + octopus: { + text: t('questOctopusText'), + notes: t('questOctopusNotes'), + completion: t('questOctopusCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questOctopusBoss'), + hp: 1200, + str: 2.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Octopus', + text: t('questOctopusDropOctopusEgg') + }, { + type: 'eggs', + key: 'Octopus', + text: t('questOctopusDropOctopusEgg') + }, { + type: 'eggs', + key: 'Octopus', + text: t('questOctopusDropOctopusEgg') + } + ], + gp: 80, + exp: 800, + unlock: t('questOctopusUnlockText') + } + }, + dilatory_derby: { + text: t('questSeahorseText'), + notes: t('questSeahorseNotes'), + completion: t('questSeahorseCompletion'), + value: 4, + category: 'pet', + 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') + } + }, + atom1: { + text: t('questAtom1Text'), + notes: t('questAtom1Notes'), + value: 4, + lvl: 15, + category: 'unlockable', + collect: { + soapBars: { + text: t('questAtom1CollectSoapBars'), + count: 20 + } + }, + drop: { + items: [ + { + type: 'quests', + key: 'atom2', + text: t('questAtom1Drop') + } + ], + gp: 7, + exp: 50 + } + }, + atom2: { + text: t('questAtom2Text'), + notes: t('questAtom2Notes'), + previous: 'atom1', + value: 4, + lvl: 15, + category: 'unlockable', + boss: { + name: t('questAtom2Boss'), + hp: 300, + str: 1 + }, + drop: { + items: [ + { + type: 'quests', + key: 'atom3', + text: t('questAtom2Drop') + } + ], + gp: 20, + exp: 100 + } + }, + atom3: { + text: t('questAtom3Text'), + notes: t('questAtom3Notes'), + previous: 'atom2', + completion: t('questAtom3Completion'), + value: 4, + lvl: 15, + category: 'unlockable', + boss: { + name: t('questAtom3Boss'), + hp: 800, + str: 1.5 + }, + drop: { + items: [ + { + type: 'gear', + key: 'head_special_2', + text: t('headSpecial2Text') + }, { + type: 'hatchingPotions', + key: 'Base', + text: t('questAtom3DropPotion') + }, { + type: 'hatchingPotions', + key: 'Base', + text: t('questAtom3DropPotion') + } + ], + gp: 25, + exp: 125 + } + }, + harpy: { + text: t('questHarpyText'), + notes: t('questHarpyNotes'), + completion: t('questHarpyCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questHarpyBoss'), + 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, + unlock: t('questHarpyUnlockText') + } + }, + rooster: { + text: t('questRoosterText'), + notes: t('questRoosterNotes'), + completion: t('questRoosterCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questRoosterBoss'), + hp: 300, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Rooster', + text: t('questRoosterDropRoosterEgg') + }, { + type: 'eggs', + key: 'Rooster', + text: t('questRoosterDropRoosterEgg') + }, { + type: 'eggs', + key: 'Rooster', + text: t('questRoosterDropRoosterEgg') + } + ], + gp: 25, + exp: 125, + unlock: t('questRoosterUnlockText') + } + }, + spider: { + text: t('questSpiderText'), + notes: t('questSpiderNotes'), + completion: t('questSpiderCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questSpiderBoss'), + hp: 400, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Spider', + text: t('questSpiderDropSpiderEgg') + }, { + type: 'eggs', + key: 'Spider', + text: t('questSpiderDropSpiderEgg') + }, { + type: 'eggs', + key: 'Spider', + text: t('questSpiderDropSpiderEgg') + } + ], + gp: 31, + exp: 200, + unlock: t('questSpiderUnlockText') + } + }, + moonstone1: { + text: t('questMoonstone1Text'), + notes: t('questMoonstone1Notes'), + value: 4, + lvl: 60, + category: 'unlockable', + collect: { + moonstone: { + text: t('questMoonstone1CollectMoonstone'), + count: 500 + } + }, + drop: { + items: [ + { + type: 'quests', + key: 'moonstone2', + text: t('questMoonstone1DropMoonstone2Quest') + } + ], + gp: 50, + exp: 100 + } + }, + moonstone2: { + text: t('questMoonstone2Text'), + notes: t('questMoonstone2Notes'), + value: 4, + lvl: 60, + previous: 'moonstone1', + category: 'unlockable', + boss: { + name: t('questMoonstone2Boss'), + hp: 1500, + str: 3 + }, + drop: { + items: [ + { + type: 'quests', + key: 'moonstone3', + text: t('questMoonstone2DropMoonstone3Quest') + } + ], + gp: 500, + exp: 1000 + } + }, + moonstone3: { + text: t('questMoonstone3Text'), + notes: t('questMoonstone3Notes'), + completion: t('questMoonstone3Completion'), + previous: 'moonstone2', + value: 4, + lvl: 60, + category: 'unlockable', + boss: { + name: t('questMoonstone3Boss'), + hp: 2000, + str: 3.5 + }, + drop: { + items: [ + { + type: 'gear', + key: 'armor_special_2', + text: t('armorSpecial2Text') + }, { + type: 'food', + key: 'RottenMeat', + text: t('questMoonstone3DropRottenMeat') + }, { + type: 'food', + key: 'RottenMeat', + text: t('questMoonstone3DropRottenMeat') + }, { + type: 'food', + key: 'RottenMeat', + text: t('questMoonstone3DropRottenMeat') + }, { + type: 'food', + key: 'RottenMeat', + text: t('questMoonstone3DropRottenMeat') + }, { + type: 'food', + key: 'RottenMeat', + text: t('questMoonstone3DropRottenMeat') + }, { + type: 'hatchingPotions', + key: 'Zombie', + text: t('questMoonstone3DropZombiePotion') + }, { + type: 'hatchingPotions', + key: 'Zombie', + text: t('questMoonstone3DropZombiePotion') + }, { + type: 'hatchingPotions', + key: 'Zombie', + text: t('questMoonstone3DropZombiePotion') + } + ], + gp: 900, + exp: 1500 + } + }, + goldenknight1: { + text: t('questGoldenknight1Text'), + notes: t('questGoldenknight1Notes'), + value: 4, + lvl: 40, + category: 'unlockable', + collect: { + testimony: { + text: t('questGoldenknight1CollectTestimony'), + count: 300 + } + }, + drop: { + items: [ + { + type: 'quests', + key: 'goldenknight2', + text: t('questGoldenknight1DropGoldenknight2Quest') + } + ], + gp: 15, + exp: 120 + } + }, + goldenknight2: { + text: t('questGoldenknight2Text'), + notes: t('questGoldenknight2Notes'), + value: 4, + previous: 'goldenknight1', + lvl: 40, + category: 'unlockable', + boss: { + name: t('questGoldenknight2Boss'), + hp: 1000, + str: 3 + }, + drop: { + items: [ + { + type: 'quests', + key: 'goldenknight3', + text: t('questGoldenknight2DropGoldenknight3Quest') + } + ], + gp: 75, + exp: 750 + } + }, + goldenknight3: { + text: t('questGoldenknight3Text'), + notes: t('questGoldenknight3Notes'), + completion: t('questGoldenknight3Completion'), + previous: 'goldenknight2', + value: 4, + lvl: 40, + category: 'unlockable', + boss: { + name: t('questGoldenknight3Boss'), + hp: 1700, + str: 3.5 + }, + drop: { + items: [ + { + type: 'food', + key: 'Honey', + text: t('questGoldenknight3DropHoney') + }, { + type: 'food', + key: 'Honey', + text: t('questGoldenknight3DropHoney') + }, { + type: 'food', + key: 'Honey', + text: t('questGoldenknight3DropHoney') + }, { + type: 'hatchingPotions', + key: 'Golden', + text: t('questGoldenknight3DropGoldenPotion') + }, { + type: 'hatchingPotions', + key: 'Golden', + text: t('questGoldenknight3DropGoldenPotion') + }, { + type: 'gear', + key: 'shield_special_goldenknight', + text: t('questGoldenknight3DropWeapon') + } + ], + gp: 900, + exp: 1500 + } + }, + basilist: { + text: t('questBasilistText'), + notes: t('questBasilistNotes'), + completion: t('questBasilistCompletion'), + value: 4, + category: 'unlockable', + unlockCondition: { + condition: 'party invite', + text: t('inviteFriends') + }, + boss: { + name: t('questBasilistBoss'), + hp: 100, + str: 0.5 + }, + drop: { + gp: 8, + exp: 42 + } + }, + owl: { + text: t('questOwlText'), + notes: t('questOwlNotes'), + completion: t('questOwlCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questOwlBoss'), + hp: 500, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Owl', + text: t('questOwlDropOwlEgg') + }, { + type: 'eggs', + key: 'Owl', + text: t('questOwlDropOwlEgg') + }, { + type: 'eggs', + key: 'Owl', + text: t('questOwlDropOwlEgg') + } + ], + gp: 37, + exp: 275, + unlock: t('questOwlUnlockText') + } + }, + penguin: { + text: t('questPenguinText'), + notes: t('questPenguinNotes'), + completion: t('questPenguinCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questPenguinBoss'), + hp: 400, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Penguin', + text: t('questPenguinDropPenguinEgg') + }, { + type: 'eggs', + key: 'Penguin', + text: t('questPenguinDropPenguinEgg') + }, { + type: 'eggs', + key: 'Penguin', + text: t('questPenguinDropPenguinEgg') + } + ], + gp: 31, + exp: 200, + unlock: t('questPenguinUnlockText') + } + }, + trex: { + text: t('questTRexText'), + notes: t('questTRexNotes'), + completion: t('questTRexCompletion'), + value: 4, + category: 'pet', + 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'), + value: 4, + category: 'pet', + 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: { + text: t('questRockText'), + notes: t('questRockNotes'), + completion: t('questRockCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questRockBoss'), + hp: 400, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Rock', + text: t('questRockDropRockEgg') + }, { + type: 'eggs', + key: 'Rock', + text: t('questRockDropRockEgg') + }, { + type: 'eggs', + key: 'Rock', + text: t('questRockDropRockEgg') + } + ], + gp: 31, + exp: 200, + unlock: t('questRockUnlockText') + } + }, + bunny: { + text: t('questBunnyText'), + notes: t('questBunnyNotes'), + completion: t('questBunnyCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questBunnyBoss'), + hp: 300, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Bunny', + text: t('questBunnyDropBunnyEgg') + }, { + type: 'eggs', + key: 'Bunny', + text: t('questBunnyDropBunnyEgg') + }, { + type: 'eggs', + key: 'Bunny', + text: t('questBunnyDropBunnyEgg') + } + ], + gp: 25, + exp: 125, + unlock: t('questBunnyUnlockText') + } + }, + slime: { + text: t('questSlimeText'), + notes: t('questSlimeNotes'), + completion: t('questSlimeCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questSlimeBoss'), + hp: 400, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Slime', + text: t('questSlimeDropSlimeEgg') + }, { + type: 'eggs', + key: 'Slime', + text: t('questSlimeDropSlimeEgg') + }, { + type: 'eggs', + key: 'Slime', + text: t('questSlimeDropSlimeEgg') + } + ], + gp: 31, + exp: 200, + unlock: t('questSlimeUnlockText') + } + }, + sheep: { + text: t('questSheepText'), + notes: t('questSheepNotes'), + completion: t('questSheepCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questSheepBoss'), + hp: 300, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Sheep', + text: t('questSheepDropSheepEgg') + }, { + type: 'eggs', + key: 'Sheep', + text: t('questSheepDropSheepEgg') + }, { + type: 'eggs', + key: 'Sheep', + text: t('questSheepDropSheepEgg') + } + ], + gp: 25, + exp: 125, + unlock: t('questSheepUnlockText') + } + }, + kraken: { + text: t('questKrakenText'), + notes: t('questKrakenNotes'), + completion: t('questKrakenCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questKrakenBoss'), + 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, + unlock: t('questKrakenUnlockText') + } + }, + whale: { + text: t('questWhaleText'), + notes: t('questWhaleNotes'), + completion: t('questWhaleCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questWhaleBoss'), + hp: 500, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Whale', + text: t('questWhaleDropWhaleEgg') + }, { + type: 'eggs', + key: 'Whale', + text: t('questWhaleDropWhaleEgg') + }, { + type: 'eggs', + key: 'Whale', + text: t('questWhaleDropWhaleEgg') + } + ], + gp: 37, + exp: 275, + unlock: t('questWhaleUnlockText') + } + }, + dilatoryDistress1: { + text: t('questDilatoryDistress1Text'), + notes: t('questDilatoryDistress1Notes'), + completion: t('questDilatoryDistress1Completion'), + value: 4, + goldValue: 200, + category: 'gold', + collect: { + fireCoral: { + text: t('questDilatoryDistress1CollectFireCoral'), + count: 25 + }, + blueFins: { + text: t('questDilatoryDistress1CollectBlueFins'), + count: 25 + } + }, + drop: { + items: [ + { + type: 'gear', + key: 'armor_special_finnedOceanicArmor', + text: t('questDilatoryDistress1DropArmor') + } + ], + gp: 0, + exp: 75 + } + }, + dilatoryDistress2: { + text: t('questDilatoryDistress2Text'), + notes: t('questDilatoryDistress2Notes'), + completion: t('questDilatoryDistress2Completion'), + previous: 'dilatoryDistress1', + value: 4, + goldValue: 300, + category: 'gold', + boss: { + name: t('questDilatoryDistress2Boss'), + hp: 500, + rage: { + title: t('questDilatoryDistress2RageTitle'), + description: t('questDilatoryDistress2RageDescription'), + value: 50, + healing: .3, + effect: t('questDilatoryDistress2RageEffect') + } + }, + drop: { + items: [ + { + type: 'hatchingPotions', + key: 'Skeleton', + text: t('questDilatoryDistress2DropSkeletonPotion') + }, { + type: 'hatchingPotions', + key: 'CottonCandyBlue', + text: t('questDilatoryDistress2DropCottonCandyBluePotion') + }, { + type: 'gear', + key: 'head_special_fireCoralCirclet', + text: t('questDilatoryDistress2DropHeadgear') + } + ], + gp: 0, + exp: 500 + } + }, + dilatoryDistress3: { + text: t('questDilatoryDistress3Text'), + notes: t('questDilatoryDistress3Notes'), + completion: t('questDilatoryDistress3Completion'), + previous: 'dilatoryDistress2', + value: 4, + goldValue: 400, + category: 'gold', + boss: { + name: t('questDilatoryDistress3Boss'), + hp: 1000, + str: 2 + }, + drop: { + items: [ + { + type: 'food', + key: 'Fish', + text: t('questDilatoryDistress3DropFish') + }, { + type: 'food', + key: 'Fish', + text: t('questDilatoryDistress3DropFish') + }, { + type: 'food', + key: 'Fish', + text: t('questDilatoryDistress3DropFish') + }, { + type: 'gear', + key: 'weapon_special_tridentOfCrashingTides', + text: t('questDilatoryDistress3DropWeapon') + }, { + type: 'gear', + key: 'shield_special_moonpearlShield', + text: t('questDilatoryDistress3DropShield') + } + ], + gp: 0, + exp: 650 + } + }, + cheetah: { + text: t('questCheetahText'), + notes: t('questCheetahNotes'), + completion: t('questCheetahCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questCheetahBoss'), + hp: 600, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Cheetah', + text: t('questCheetahDropCheetahEgg') + }, { + type: 'eggs', + key: 'Cheetah', + text: t('questCheetahDropCheetahEgg') + }, { + type: 'eggs', + key: 'Cheetah', + text: t('questCheetahDropCheetahEgg') + } + ], + gp: 43, + exp: 350, + unlock: t('questCheetahUnlockText') + } + }, + horse: { + text: t('questHorseText'), + notes: t('questHorseNotes'), + completion: t('questHorseCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questHorseBoss'), + hp: 500, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Horse', + text: t('questHorseDropHorseEgg') + }, { + type: 'eggs', + key: 'Horse', + text: t('questHorseDropHorseEgg') + }, { + type: 'eggs', + key: 'Horse', + text: t('questHorseDropHorseEgg') + } + ], + gp: 37, + exp: 275, + unlock: t('questHorseUnlockText') + } + } +}; + +each(quests, function(quest, key) { + defaults(quest, { + key: key, + canBuy: true + }); + + let boss = quest.boss; + + if (boss) { + defaults(boss, QUEST_BOSS_DEFAULTS); + + if (boss.rage) { + defaults(boss.rage, QUEST_BOSS_RAGE_DEFAULTS); + } + } +}); + +export default quests;