mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
Split quests into separate files
This commit is contained in:
128
common/script/src/content/quests/gold-purchasable.js
Normal file
128
common/script/src/content/quests/gold-purchasable.js
Normal file
@@ -0,0 +1,128 @@
|
||||
import {each, defaults, assign} from 'lodash';
|
||||
import capitalize from 'lodash.capitalize';
|
||||
import camelCase from 'lodash.camelCase';
|
||||
import t from '../helpers/translator';
|
||||
|
||||
let dilatoryDistressSeries = {
|
||||
dilatoryDistress1: {
|
||||
goldValue: 200,
|
||||
collect: {
|
||||
fireCoral: {
|
||||
text: t('questDilatoryDistress1CollectFireCoral'),
|
||||
count: 25
|
||||
},
|
||||
blueFins: {
|
||||
text: t('questDilatoryDistress1CollectBlueFins'),
|
||||
count: 25
|
||||
}
|
||||
},
|
||||
drop: {
|
||||
items: [
|
||||
{
|
||||
type: 'gear',
|
||||
key: 'armor_special_finnedOceanicArmor',
|
||||
text: t('questDilatoryDistress1DropArmor')
|
||||
}
|
||||
],
|
||||
exp: 75
|
||||
}
|
||||
},
|
||||
dilatoryDistress2: {
|
||||
previous: 'dilatoryDistress1',
|
||||
goldValue: 300,
|
||||
boss: {
|
||||
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')
|
||||
}
|
||||
],
|
||||
exp: 500
|
||||
}
|
||||
},
|
||||
dilatoryDistress3: {
|
||||
previous: 'dilatoryDistress2',
|
||||
goldValue: 400,
|
||||
boss: {
|
||||
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')
|
||||
}
|
||||
],
|
||||
exp: 650
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
let goldPurchasableQuests = { };
|
||||
|
||||
assign(goldPurchasableQuests, dilatoryDistressSeries);
|
||||
|
||||
each(goldPurchasableQuests, (quest, name) => {
|
||||
let camelName = camelCase(name);
|
||||
let capitalizedName = capitalize(camelName);
|
||||
|
||||
let questDefaults = {
|
||||
text: t(`quest${capitalizedName}Text`),
|
||||
notes: t(`quest${capitalizedName}Notes`),
|
||||
completion: t(`quest${capitalizedName}Completion`),
|
||||
category: 'gold',
|
||||
value: 4,
|
||||
};
|
||||
|
||||
let bossDefaults = {
|
||||
name: t(`quest${capitalizedName}Boss`),
|
||||
};
|
||||
|
||||
let dropDefaults = {
|
||||
gold: 0
|
||||
};
|
||||
|
||||
defaults(quest, questDefaults);
|
||||
|
||||
if (quest.boss) defaults(quest.boss, bossDefaults);
|
||||
if (quest.drop) defaults(quest.drop, dropDefaults);
|
||||
});
|
||||
|
||||
export default goldPurchasableQuests;
|
||||
124
common/script/src/content/quests/holiday.js
Normal file
124
common/script/src/content/quests/holiday.js
Normal file
@@ -0,0 +1,124 @@
|
||||
import {each, defaults} from 'lodash';
|
||||
import capitalize from 'lodash.capitalize';
|
||||
import t from '../helpers/translator';
|
||||
|
||||
let holidayQuests = {
|
||||
evilsanta: {
|
||||
boss: {
|
||||
name: t('questEvilSantaBoss'),
|
||||
hp: 300,
|
||||
str: 1
|
||||
},
|
||||
drop: {
|
||||
items: [
|
||||
{
|
||||
type: 'mounts',
|
||||
key: 'BearCub-Polar',
|
||||
text: t('questEvilSantaDropBearCubPolarMount')
|
||||
}
|
||||
],
|
||||
gp: 20,
|
||||
exp: 100
|
||||
}
|
||||
},
|
||||
evilsanta2: {
|
||||
previous: 'evilsanta',
|
||||
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
|
||||
}
|
||||
},
|
||||
egg: {
|
||||
text: t('questEggHuntText'),
|
||||
notes: t('questEggHuntNotes'),
|
||||
completion: t('questEggHuntCompletion'),
|
||||
value: 1,
|
||||
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
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
each(holidayQuests, (quest, name) => {
|
||||
let capitalizedName = capitalize(name);
|
||||
let questDefaults = {
|
||||
text: t(`quest${capitalizedName}Text`),
|
||||
notes: t(`quest${capitalizedName}Notes`),
|
||||
completion: t(`quest${capitalizedName}Completion`),
|
||||
canBuy: false,
|
||||
value: 4,
|
||||
category: 'pet',
|
||||
};
|
||||
|
||||
defaults(quest, questDefaults);
|
||||
});
|
||||
|
||||
|
||||
export default holidayQuests;
|
||||
File diff suppressed because it is too large
Load Diff
373
common/script/src/content/quests/pet.js
Normal file
373
common/script/src/content/quests/pet.js
Normal file
@@ -0,0 +1,373 @@
|
||||
import {each, defaults} from 'lodash';
|
||||
import capitalize from 'lodash.capitalize';
|
||||
import camelCase from 'lodash.camelCase';
|
||||
import t from '../helpers/translator';
|
||||
|
||||
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 = {
|
||||
text: t(`quest${capitalizedName}Text`),
|
||||
notes: t(`quest${capitalizedName}Notes`),
|
||||
completion: t(`quest${capitalizedName}Completion`),
|
||||
category: 'pet',
|
||||
value: 4,
|
||||
};
|
||||
|
||||
let bossDefaults = {
|
||||
name: t(`quest${capitalizedName}Boss`),
|
||||
};
|
||||
|
||||
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.boss) defaults(quest.boss, bossDefaults);
|
||||
if (quest.drop) defaults(quest.drop, dropDefaults);
|
||||
});
|
||||
|
||||
|
||||
export default petQuests;
|
||||
375
common/script/src/content/quests/unlockable.js
Normal file
375
common/script/src/content/quests/unlockable.js
Normal file
@@ -0,0 +1,375 @@
|
||||
import {each, defaults, assign} from 'lodash';
|
||||
import capitalize from 'lodash.capitalize';
|
||||
import camelCase from 'lodash.camelCase';
|
||||
import t from '../helpers/translator';
|
||||
|
||||
let inviteFriends = {
|
||||
basilist: {
|
||||
unlockCondition: {
|
||||
condition: 'party invite',
|
||||
text: t('inviteFriends')
|
||||
},
|
||||
boss: {
|
||||
hp: 100,
|
||||
str: 0.5
|
||||
},
|
||||
drop: {
|
||||
gp: 8,
|
||||
exp: 42
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
let viceSeries = {
|
||||
vice1: {
|
||||
lvl: 30,
|
||||
boss: {
|
||||
hp: 750,
|
||||
str: 1.5
|
||||
},
|
||||
drop: {
|
||||
items: [
|
||||
{
|
||||
type: 'quests',
|
||||
key: 'vice2',
|
||||
text: t('questVice1DropVice2Quest')
|
||||
}
|
||||
],
|
||||
gp: 20,
|
||||
exp: 100
|
||||
}
|
||||
},
|
||||
vice2: {
|
||||
lvl: 30,
|
||||
previous: 'vice1',
|
||||
collect: {
|
||||
lightCrystal: {
|
||||
text: t('questVice2CollectLightCrystal'),
|
||||
count: 45
|
||||
}
|
||||
},
|
||||
drop: {
|
||||
items: [
|
||||
{
|
||||
type: 'quests',
|
||||
key: 'vice3',
|
||||
text: t('questVice2DropVice3Quest')
|
||||
}
|
||||
],
|
||||
gp: 20,
|
||||
exp: 75
|
||||
}
|
||||
},
|
||||
vice3: {
|
||||
completion: t('questVice3Completion'),
|
||||
previous: 'vice2',
|
||||
lvl: 30,
|
||||
boss: {
|
||||
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
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
let atomSeries = {
|
||||
atom1: {
|
||||
lvl: 15,
|
||||
collect: {
|
||||
soapBars: {
|
||||
text: t('questAtom1CollectSoapBars'),
|
||||
count: 20
|
||||
}
|
||||
},
|
||||
drop: {
|
||||
items: [
|
||||
{
|
||||
type: 'quests',
|
||||
key: 'atom2',
|
||||
text: t('questAtom1Drop')
|
||||
}
|
||||
],
|
||||
gp: 7,
|
||||
exp: 50
|
||||
}
|
||||
},
|
||||
atom2: {
|
||||
previous: 'atom1',
|
||||
lvl: 15,
|
||||
boss: {
|
||||
hp: 300,
|
||||
str: 1
|
||||
},
|
||||
drop: {
|
||||
items: [
|
||||
{
|
||||
type: 'quests',
|
||||
key: 'atom3',
|
||||
text: t('questAtom2Drop')
|
||||
}
|
||||
],
|
||||
gp: 20,
|
||||
exp: 100
|
||||
}
|
||||
},
|
||||
atom3: {
|
||||
previous: 'atom2',
|
||||
completion: t('questAtom3Completion'),
|
||||
lvl: 15,
|
||||
boss: {
|
||||
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
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
let moonstoneSeries = {
|
||||
moonstone1: {
|
||||
lvl: 60,
|
||||
collect: {
|
||||
moonstone: {
|
||||
text: t('questMoonstone1CollectMoonstone'),
|
||||
count: 500
|
||||
}
|
||||
},
|
||||
drop: {
|
||||
items: [
|
||||
{
|
||||
type: 'quests',
|
||||
key: 'moonstone2',
|
||||
text: t('questMoonstone1DropMoonstone2Quest')
|
||||
}
|
||||
],
|
||||
gp: 50,
|
||||
exp: 100
|
||||
}
|
||||
},
|
||||
moonstone2: {
|
||||
lvl: 60,
|
||||
previous: 'moonstone1',
|
||||
boss: {
|
||||
hp: 1500,
|
||||
str: 3
|
||||
},
|
||||
drop: {
|
||||
items: [
|
||||
{
|
||||
type: 'quests',
|
||||
key: 'moonstone3',
|
||||
text: t('questMoonstone2DropMoonstone3Quest')
|
||||
}
|
||||
],
|
||||
gp: 500,
|
||||
exp: 1000
|
||||
}
|
||||
},
|
||||
moonstone3: {
|
||||
completion: t('questMoonstone3Completion'),
|
||||
previous: 'moonstone2',
|
||||
lvl: 60,
|
||||
boss: {
|
||||
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
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
let goldenKnightSeries = {
|
||||
goldenknight1: {
|
||||
lvl: 40,
|
||||
collect: {
|
||||
testimony: {
|
||||
text: t('questGoldenknight1CollectTestimony'),
|
||||
count: 300
|
||||
}
|
||||
},
|
||||
drop: {
|
||||
items: [
|
||||
{
|
||||
type: 'quests',
|
||||
key: 'goldenknight2',
|
||||
text: t('questGoldenknight1DropGoldenknight2Quest')
|
||||
}
|
||||
],
|
||||
gp: 15,
|
||||
exp: 120
|
||||
}
|
||||
},
|
||||
goldenknight2: {
|
||||
previous: 'goldenknight1',
|
||||
lvl: 40,
|
||||
boss: {
|
||||
hp: 1000,
|
||||
str: 3
|
||||
},
|
||||
drop: {
|
||||
items: [
|
||||
{
|
||||
type: 'quests',
|
||||
key: 'goldenknight3',
|
||||
text: t('questGoldenknight2DropGoldenknight3Quest')
|
||||
}
|
||||
],
|
||||
gp: 75,
|
||||
exp: 750
|
||||
}
|
||||
},
|
||||
goldenknight3: {
|
||||
completion: t('questGoldenknight3Completion'),
|
||||
previous: 'goldenknight2',
|
||||
lvl: 40,
|
||||
boss: {
|
||||
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
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
let unlockableQuests = { };
|
||||
|
||||
assign(unlockableQuests, inviteFriends);
|
||||
assign(unlockableQuests, atomSeries);
|
||||
assign(unlockableQuests, viceSeries);
|
||||
assign(unlockableQuests, moonstoneSeries);
|
||||
assign(unlockableQuests, goldenKnightSeries);
|
||||
|
||||
each(unlockableQuests, (quest, name) => {
|
||||
let camelName = camelCase(name);
|
||||
let capitalizedName = capitalize(camelName);
|
||||
|
||||
let questDefaults = {
|
||||
text: t(`quest${capitalizedName}Text`),
|
||||
notes: t(`quest${capitalizedName}Notes`),
|
||||
category: 'unlockable',
|
||||
value: 4,
|
||||
};
|
||||
|
||||
let bossDefaults = {
|
||||
name: t(`quest${capitalizedName}Boss`),
|
||||
};
|
||||
|
||||
defaults(quest, questDefaults);
|
||||
|
||||
if (quest.boss) defaults(quest.boss, bossDefaults);
|
||||
});
|
||||
|
||||
export default unlockableQuests;
|
||||
172
common/script/src/content/quests/world.js
Normal file
172
common/script/src/content/quests/world.js
Normal file
@@ -0,0 +1,172 @@
|
||||
import {each, defaults} from 'lodash';
|
||||
import capitalize from 'lodash.capitalize';
|
||||
import t from '../helpers/translator';
|
||||
|
||||
let worldQuests = {
|
||||
dilatory: {
|
||||
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: {
|
||||
completionChat: t('questStressbeastCompletionChat'),
|
||||
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
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
each(worldQuests, (quest, name) => {
|
||||
let capitalizedName = capitalize(name);
|
||||
let questDefaults = {
|
||||
text: t(`quest${capitalizedName}Text`),
|
||||
notes: t(`quest${capitalizedName}Notes`),
|
||||
completion: t(`quest${capitalizedName}Completion`),
|
||||
value: 0,
|
||||
canBuy: false,
|
||||
category: 'world',
|
||||
};
|
||||
|
||||
defaults(quest, questDefaults);
|
||||
});
|
||||
|
||||
export default worldQuests;
|
||||
Reference in New Issue
Block a user