mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-15 13:47:33 +01:00
* feat(content): Armoire and BGs 2016-07 * fix(backgrounds): resize Dilatory Castle Also fixes a long-overlooked issue where the Egg Hunt quest remained available long after its event ended.
2869 lines
62 KiB
JavaScript
2869 lines
62 KiB
JavaScript
import _ from 'lodash';
|
|
import moment from 'moment';
|
|
import t from './translation';
|
|
|
|
import {
|
|
CLASSES,
|
|
EVENTS,
|
|
GEAR_TYPES,
|
|
ITEM_LIST,
|
|
USER_CAN_OWN_QUEST_CATEGORIES,
|
|
} from './constants';
|
|
|
|
let api = module.exports;
|
|
|
|
import mysterySets from './mystery-sets';
|
|
|
|
import gear from './gear';
|
|
|
|
import appearances from './appearance';
|
|
import backgrounds from './appearance/backgrounds.js'
|
|
import spells from './spells';
|
|
import faq from './faq';
|
|
|
|
api.mystery = mysterySets;
|
|
|
|
api.itemList = ITEM_LIST;
|
|
|
|
api.gear = gear;
|
|
api.spells = spells;
|
|
|
|
/*
|
|
Time Traveler Store, mystery sets need their items mapped in
|
|
*/
|
|
|
|
_.each(api.mystery, function(v, k) {
|
|
return v.items = _.where(api.gear.flat, {
|
|
mystery: k
|
|
});
|
|
});
|
|
|
|
api.timeTravelerStore = function(owned) {
|
|
var ownedKeys;
|
|
ownedKeys = _.keys((typeof owned.toObject === "function" ? owned.toObject() : void 0) || owned);
|
|
return _.reduce(api.mystery, function(m, v, k) {
|
|
if (k === 'wondercon' || ~ownedKeys.indexOf(v.items[0].key)) {
|
|
return m;
|
|
}
|
|
m[k] = v;
|
|
return m;
|
|
}, {});
|
|
};
|
|
|
|
|
|
/*
|
|
---------------------------------------------------------------
|
|
Unique Rewards: Potion and Armoire
|
|
---------------------------------------------------------------
|
|
*/
|
|
|
|
api.potion = {
|
|
type: 'potion',
|
|
text: t('potionText'),
|
|
notes: t('potionNotes'),
|
|
value: 25,
|
|
key: 'potion'
|
|
};
|
|
|
|
api.armoire = {
|
|
type: 'armoire',
|
|
text: t('armoireText'),
|
|
notes: (function(user, count) {
|
|
if (user.flags.armoireEmpty) {
|
|
return t('armoireNotesEmpty')();
|
|
}
|
|
return t('armoireNotesFull')() + count;
|
|
}),
|
|
value: 100,
|
|
key: 'armoire',
|
|
canOwn: (function(u) {
|
|
return _.contains(u.achievements.ultimateGearSets, true);
|
|
})
|
|
};
|
|
|
|
|
|
/*
|
|
---------------------------------------------------------------
|
|
Classes
|
|
---------------------------------------------------------------
|
|
*/
|
|
|
|
api.classes = CLASSES;
|
|
|
|
|
|
/*
|
|
---------------------------------------------------------------
|
|
Gear Types
|
|
---------------------------------------------------------------
|
|
*/
|
|
|
|
api.gearTypes = GEAR_TYPES;
|
|
|
|
api.cardTypes = {
|
|
greeting: {
|
|
key: 'greeting',
|
|
messageOptions: 4,
|
|
yearRound: true
|
|
},
|
|
nye: {
|
|
key: 'nye',
|
|
messageOptions: 5
|
|
},
|
|
thankyou: {
|
|
key: 'thankyou',
|
|
messageOptions: 4,
|
|
yearRound: true
|
|
},
|
|
valentine: {
|
|
key: 'valentine',
|
|
messageOptions: 4
|
|
},
|
|
birthday: {
|
|
key: 'birthday',
|
|
messageOptions: 1,
|
|
yearRound: true,
|
|
},
|
|
};
|
|
|
|
api.special = api.spells.special;
|
|
|
|
/*
|
|
---------------------------------------------------------------
|
|
Drops
|
|
---------------------------------------------------------------
|
|
*/
|
|
|
|
api.dropEggs = {
|
|
Wolf: {
|
|
text: t('dropEggWolfText'),
|
|
adjective: t('dropEggWolfAdjective')
|
|
},
|
|
TigerCub: {
|
|
text: t('dropEggTigerCubText'),
|
|
mountText: t('dropEggTigerCubMountText'),
|
|
adjective: t('dropEggTigerCubAdjective')
|
|
},
|
|
PandaCub: {
|
|
text: t('dropEggPandaCubText'),
|
|
mountText: t('dropEggPandaCubMountText'),
|
|
adjective: t('dropEggPandaCubAdjective')
|
|
},
|
|
LionCub: {
|
|
text: t('dropEggLionCubText'),
|
|
mountText: t('dropEggLionCubMountText'),
|
|
adjective: t('dropEggLionCubAdjective')
|
|
},
|
|
Fox: {
|
|
text: t('dropEggFoxText'),
|
|
adjective: t('dropEggFoxAdjective')
|
|
},
|
|
FlyingPig: {
|
|
text: t('dropEggFlyingPigText'),
|
|
adjective: t('dropEggFlyingPigAdjective')
|
|
},
|
|
Dragon: {
|
|
text: t('dropEggDragonText'),
|
|
adjective: t('dropEggDragonAdjective')
|
|
},
|
|
Cactus: {
|
|
text: t('dropEggCactusText'),
|
|
adjective: t('dropEggCactusAdjective')
|
|
},
|
|
BearCub: {
|
|
text: t('dropEggBearCubText'),
|
|
mountText: t('dropEggBearCubMountText'),
|
|
adjective: t('dropEggBearCubAdjective')
|
|
}
|
|
};
|
|
|
|
_.each(api.dropEggs, function(egg, key) {
|
|
return _.defaults(egg, {
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
value: 3,
|
|
key: key,
|
|
notes: t('eggNotes', {
|
|
eggText: egg.text,
|
|
eggAdjective: egg.adjective
|
|
}),
|
|
mountText: egg.text
|
|
});
|
|
});
|
|
|
|
api.questEggs = {
|
|
Gryphon: {
|
|
text: t('questEggGryphonText'),
|
|
adjective: t('questEggGryphonAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.gryphon != null) > 0;
|
|
})
|
|
},
|
|
Hedgehog: {
|
|
text: t('questEggHedgehogText'),
|
|
adjective: t('questEggHedgehogAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.hedgehog != null) > 0;
|
|
})
|
|
},
|
|
Deer: {
|
|
text: t('questEggDeerText'),
|
|
adjective: t('questEggDeerAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.ghost_stag != null) > 0;
|
|
})
|
|
},
|
|
Egg: {
|
|
text: t('questEggEggText'),
|
|
adjective: t('questEggEggAdjective'),
|
|
mountText: t('questEggEggMountText')
|
|
},
|
|
Rat: {
|
|
text: t('questEggRatText'),
|
|
adjective: t('questEggRatAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.rat != null) > 0;
|
|
})
|
|
},
|
|
Octopus: {
|
|
text: t('questEggOctopusText'),
|
|
adjective: t('questEggOctopusAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.octopus != null) > 0;
|
|
})
|
|
},
|
|
Seahorse: {
|
|
text: t('questEggSeahorseText'),
|
|
adjective: t('questEggSeahorseAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.dilatory_derby != null) > 0;
|
|
})
|
|
},
|
|
Parrot: {
|
|
text: t('questEggParrotText'),
|
|
adjective: t('questEggParrotAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.harpy != null) > 0;
|
|
})
|
|
},
|
|
Rooster: {
|
|
text: t('questEggRoosterText'),
|
|
adjective: t('questEggRoosterAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.rooster != null) > 0;
|
|
})
|
|
},
|
|
Spider: {
|
|
text: t('questEggSpiderText'),
|
|
adjective: t('questEggSpiderAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.spider != null) > 0;
|
|
})
|
|
},
|
|
Owl: {
|
|
text: t('questEggOwlText'),
|
|
adjective: t('questEggOwlAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.owl != null) > 0;
|
|
})
|
|
},
|
|
Penguin: {
|
|
text: t('questEggPenguinText'),
|
|
adjective: t('questEggPenguinAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.penguin != null) > 0;
|
|
})
|
|
},
|
|
TRex: {
|
|
text: t('questEggTRexText'),
|
|
adjective: t('questEggTRexAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && ((u.achievements.quests.trex != null) > 0 || (u.achievements.quests.trex_undead != null) > 0);
|
|
})
|
|
},
|
|
Rock: {
|
|
text: t('questEggRockText'),
|
|
adjective: t('questEggRockAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.rock != null) > 0;
|
|
})
|
|
},
|
|
Bunny: {
|
|
text: t('questEggBunnyText'),
|
|
adjective: t('questEggBunnyAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.bunny != null) > 0;
|
|
})
|
|
},
|
|
Slime: {
|
|
text: t('questEggSlimeText'),
|
|
adjective: t('questEggSlimeAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.slime != null) > 0;
|
|
})
|
|
},
|
|
Sheep: {
|
|
text: t('questEggSheepText'),
|
|
adjective: t('questEggSheepAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.sheep != null) > 0;
|
|
})
|
|
},
|
|
Cuttlefish: {
|
|
text: t('questEggCuttlefishText'),
|
|
adjective: t('questEggCuttlefishAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.kraken != null) > 0;
|
|
})
|
|
},
|
|
Whale: {
|
|
text: t('questEggWhaleText'),
|
|
adjective: t('questEggWhaleAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.whale != null) > 0;
|
|
})
|
|
},
|
|
Cheetah: {
|
|
text: t('questEggCheetahText'),
|
|
adjective: t('questEggCheetahAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.cheetah != null) > 0;
|
|
})
|
|
},
|
|
Horse: {
|
|
text: t('questEggHorseText'),
|
|
adjective: t('questEggHorseAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.horse != null) > 0;
|
|
})
|
|
},
|
|
Frog: {
|
|
text: t('questEggFrogText'),
|
|
adjective: t('questEggFrogAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.frog != null) > 0;
|
|
})
|
|
},
|
|
Snake: {
|
|
text: t('questEggSnakeText'),
|
|
adjective: t('questEggSnakeAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.snake != null) > 0;
|
|
})
|
|
},
|
|
Unicorn: {
|
|
text: t('questEggUnicornText'),
|
|
mountText: t('questEggUnicornMountText'),
|
|
adjective: t('questEggUnicornAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.unicorn != null) > 0;
|
|
})
|
|
},
|
|
Sabretooth: {
|
|
text: t('questEggSabretoothText'),
|
|
adjective: t('questEggSabretoothAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.sabretooth != null) > 0;
|
|
})
|
|
},
|
|
Monkey: {
|
|
text: t('questEggMonkeyText'),
|
|
adjective: t('questEggMonkeyAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.monkey != null) > 0;
|
|
})
|
|
},
|
|
Snail: {
|
|
text: t('questEggSnailText'),
|
|
adjective: t('questEggSnailAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.snail != null) > 0;
|
|
}),
|
|
},
|
|
Falcon: {
|
|
text: t('questEggFalconText'),
|
|
adjective: t('questEggFalconAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.falcon != null) > 0;
|
|
}),
|
|
},
|
|
Treeling: {
|
|
text: t('questEggTreelingText'),
|
|
adjective: t('questEggTreelingAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.treeling != null) > 0;
|
|
}),
|
|
},
|
|
Axolotl: {
|
|
text: t('questEggAxolotlText'),
|
|
adjective: t('questEggAxolotlAdjective'),
|
|
canBuy: (function(u) {
|
|
return u.achievements.quests && (u.achievements.quests.axolotl != null) > 0;
|
|
}),
|
|
},
|
|
};
|
|
|
|
_.each(api.questEggs, function(egg, key) {
|
|
return _.defaults(egg, {
|
|
canBuy: (function() {
|
|
return false;
|
|
}),
|
|
value: 3,
|
|
key: key,
|
|
notes: t('eggNotes', {
|
|
eggText: egg.text,
|
|
eggAdjective: egg.adjective
|
|
}),
|
|
mountText: egg.text
|
|
});
|
|
});
|
|
|
|
api.eggs = _.assign(_.cloneDeep(api.dropEggs), api.questEggs);
|
|
|
|
api.specialPets = {
|
|
'Wolf-Veteran': 'veteranWolf',
|
|
'Wolf-Cerberus': 'cerberusPup',
|
|
'Dragon-Hydra': 'hydra',
|
|
'Turkey-Base': 'turkey',
|
|
'BearCub-Polar': 'polarBearPup',
|
|
'MantisShrimp-Base': 'mantisShrimp',
|
|
'JackOLantern-Base': 'jackolantern',
|
|
'Mammoth-Base': 'mammoth',
|
|
'Tiger-Veteran': 'veteranTiger',
|
|
'Phoenix-Base': 'phoenix',
|
|
'Turkey-Gilded': 'gildedTurkey',
|
|
'MagicalBee-Base': 'magicalBee',
|
|
'Lion-Veteran': 'veteranLion',
|
|
};
|
|
|
|
api.specialMounts = {
|
|
'BearCub-Polar': 'polarBear',
|
|
'LionCub-Ethereal': 'etherealLion',
|
|
'MantisShrimp-Base': 'mantisShrimp',
|
|
'Turkey-Base': 'turkey',
|
|
'Mammoth-Base': 'mammoth',
|
|
'Orca-Base': 'orca',
|
|
'Gryphon-RoyalPurple': 'royalPurpleGryphon',
|
|
'Phoenix-Base': 'phoenix',
|
|
'JackOLantern-Base': 'jackolantern',
|
|
'MagicalBee-Base': 'magicalBee',
|
|
};
|
|
|
|
api.timeTravelStable = {
|
|
pets: {
|
|
'Mammoth-Base': t('mammoth'),
|
|
'MantisShrimp-Base': t('mantisShrimp'),
|
|
'Phoenix-Base': t('phoenix'),
|
|
},
|
|
mounts: {
|
|
'Mammoth-Base': t('mammoth'),
|
|
'MantisShrimp-Base': t('mantisShrimp'),
|
|
'Phoenix-Base': t('phoenix'),
|
|
}
|
|
};
|
|
|
|
api.dropHatchingPotions = {
|
|
Base: {
|
|
value: 2,
|
|
text: t('hatchingPotionBase')
|
|
},
|
|
White: {
|
|
value: 2,
|
|
text: t('hatchingPotionWhite')
|
|
},
|
|
Desert: {
|
|
value: 2,
|
|
text: t('hatchingPotionDesert')
|
|
},
|
|
Red: {
|
|
value: 3,
|
|
text: t('hatchingPotionRed')
|
|
},
|
|
Shade: {
|
|
value: 3,
|
|
text: t('hatchingPotionShade')
|
|
},
|
|
Skeleton: {
|
|
value: 3,
|
|
text: t('hatchingPotionSkeleton')
|
|
},
|
|
Zombie: {
|
|
value: 4,
|
|
text: t('hatchingPotionZombie')
|
|
},
|
|
CottonCandyPink: {
|
|
value: 4,
|
|
text: t('hatchingPotionCottonCandyPink')
|
|
},
|
|
CottonCandyBlue: {
|
|
value: 4,
|
|
text: t('hatchingPotionCottonCandyBlue')
|
|
},
|
|
Golden: {
|
|
value: 5,
|
|
text: t('hatchingPotionGolden')
|
|
}
|
|
};
|
|
|
|
api.premiumHatchingPotions = {
|
|
Spooky: {
|
|
value: 2,
|
|
text: t('hatchingPotionSpooky'),
|
|
limited: true,
|
|
canBuy: (function() {
|
|
return false;
|
|
})
|
|
},
|
|
Peppermint: {
|
|
value: 2,
|
|
text: t('hatchingPotionPeppermint'),
|
|
limited: true,
|
|
canBuy: (function() {
|
|
return false;
|
|
})
|
|
},
|
|
Floral: {
|
|
value: 2,
|
|
text: t('hatchingPotionFloral'),
|
|
limited: true,
|
|
canBuy: (function() {
|
|
return false;
|
|
}),
|
|
},
|
|
};
|
|
|
|
_.each(api.dropHatchingPotions, function(pot, key) {
|
|
return _.defaults(pot, {
|
|
key: key,
|
|
value: 2,
|
|
notes: t('hatchingPotionNotes', {
|
|
potText: pot.text
|
|
}),
|
|
premium: false,
|
|
limited: false,
|
|
canBuy: (function() {
|
|
return true;
|
|
})
|
|
});
|
|
});
|
|
|
|
_.each(api.premiumHatchingPotions, function(pot, key) {
|
|
return _.defaults(pot, {
|
|
key: key,
|
|
value: 2,
|
|
notes: t('hatchingPotionNotes', {
|
|
potText: pot.text
|
|
}),
|
|
addlNotes: t('premiumPotionAddlNotes'),
|
|
premium: true,
|
|
limited: false,
|
|
canBuy: (function() {
|
|
return true;
|
|
})
|
|
});
|
|
});
|
|
|
|
api.hatchingPotions = {};
|
|
|
|
_.merge(api.hatchingPotions, api.dropHatchingPotions);
|
|
|
|
_.merge(api.hatchingPotions, api.premiumHatchingPotions);
|
|
|
|
api.pets = _.transform(api.dropEggs, function(m, egg) {
|
|
return _.defaults(m, _.transform(api.hatchingPotions, function(m2, pot) {
|
|
if (!pot.premium) {
|
|
return m2[egg.key + "-" + pot.key] = true;
|
|
}
|
|
}));
|
|
});
|
|
|
|
api.premiumPets = _.transform(api.dropEggs, function(m, egg) {
|
|
return _.defaults(m, _.transform(api.hatchingPotions, function(m2, pot) {
|
|
if (pot.premium) {
|
|
return m2[egg.key + "-" + pot.key] = true;
|
|
}
|
|
}));
|
|
});
|
|
|
|
api.questPets = _.transform(api.questEggs, function(m, egg) {
|
|
return _.defaults(m, _.transform(api.hatchingPotions, function(m2, pot) {
|
|
if (!pot.premium) {
|
|
return m2[egg.key + "-" + pot.key] = true;
|
|
}
|
|
}));
|
|
});
|
|
|
|
api.mounts = _.transform(api.dropEggs, function(m, egg) {
|
|
return _.defaults(m, _.transform(api.hatchingPotions, function(m2, pot) {
|
|
if (!pot.premium) {
|
|
return m2[egg.key + "-" + pot.key] = true;
|
|
}
|
|
}));
|
|
});
|
|
|
|
api.questMounts = _.transform(api.questEggs, function(m, egg) {
|
|
return _.defaults(m, _.transform(api.hatchingPotions, function(m2, pot) {
|
|
if (!pot.premium) {
|
|
return m2[egg.key + "-" + pot.key] = true;
|
|
}
|
|
}));
|
|
});
|
|
|
|
api.premiumMounts = _.transform(api.dropEggs, function(m, egg) {
|
|
return _.defaults(m, _.transform(api.hatchingPotions, function(m2, pot) {
|
|
if (pot.premium) {
|
|
return m2[egg.key + "-" + pot.key] = true;
|
|
}
|
|
}));
|
|
});
|
|
|
|
api.food = {
|
|
Meat: {
|
|
text: t('foodMeat'),
|
|
target: 'Base',
|
|
article: '',
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
canDrop: true,
|
|
},
|
|
Milk: {
|
|
text: t('foodMilk'),
|
|
target: 'White',
|
|
article: '',
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
canDrop: true,
|
|
},
|
|
Potatoe: {
|
|
text: t('foodPotatoe'),
|
|
target: 'Desert',
|
|
article: 'a ',
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
canDrop: true,
|
|
},
|
|
Strawberry: {
|
|
text: t('foodStrawberry'),
|
|
target: 'Red',
|
|
article: 'a ',
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
canDrop: true,
|
|
},
|
|
Chocolate: {
|
|
text: t('foodChocolate'),
|
|
target: 'Shade',
|
|
article: '',
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
canDrop: true,
|
|
},
|
|
Fish: {
|
|
text: t('foodFish'),
|
|
target: 'Skeleton',
|
|
article: 'a ',
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
canDrop: true,
|
|
},
|
|
RottenMeat: {
|
|
text: t('foodRottenMeat'),
|
|
target: 'Zombie',
|
|
article: '',
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
canDrop: true,
|
|
},
|
|
CottonCandyPink: {
|
|
text: t('foodCottonCandyPink'),
|
|
target: 'CottonCandyPink',
|
|
article: '',
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
canDrop: true,
|
|
},
|
|
CottonCandyBlue: {
|
|
text: t('foodCottonCandyBlue'),
|
|
target: 'CottonCandyBlue',
|
|
article: '',
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
canDrop: true,
|
|
},
|
|
Honey: {
|
|
text: t('foodHoney'),
|
|
target: 'Golden',
|
|
article: '',
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
canDrop: true,
|
|
},
|
|
Saddle: {
|
|
canBuy: (function() {
|
|
return true;
|
|
}),
|
|
text: t('foodSaddleText'),
|
|
value: 5,
|
|
notes: t('foodSaddleNotes')
|
|
},
|
|
Cake_Skeleton: {
|
|
text: t('foodCakeSkeleton'),
|
|
target: 'Skeleton',
|
|
article: ''
|
|
},
|
|
Cake_Base: {
|
|
text: t('foodCakeBase'),
|
|
target: 'Base',
|
|
article: ''
|
|
},
|
|
Cake_CottonCandyBlue: {
|
|
text: t('foodCakeCottonCandyBlue'),
|
|
target: 'CottonCandyBlue',
|
|
article: ''
|
|
},
|
|
Cake_CottonCandyPink: {
|
|
text: t('foodCakeCottonCandyPink'),
|
|
target: 'CottonCandyPink',
|
|
article: ''
|
|
},
|
|
Cake_Shade: {
|
|
text: t('foodCakeShade'),
|
|
target: 'Shade',
|
|
article: ''
|
|
},
|
|
Cake_White: {
|
|
text: t('foodCakeWhite'),
|
|
target: 'White',
|
|
article: ''
|
|
},
|
|
Cake_Golden: {
|
|
text: t('foodCakeGolden'),
|
|
target: 'Golden',
|
|
article: ''
|
|
},
|
|
Cake_Zombie: {
|
|
text: t('foodCakeZombie'),
|
|
target: 'Zombie',
|
|
article: ''
|
|
},
|
|
Cake_Desert: {
|
|
text: t('foodCakeDesert'),
|
|
target: 'Desert',
|
|
article: ''
|
|
},
|
|
Cake_Red: {
|
|
text: t('foodCakeRed'),
|
|
target: 'Red',
|
|
article: ''
|
|
},
|
|
Candy_Skeleton: {
|
|
text: t('foodCandySkeleton'),
|
|
target: 'Skeleton',
|
|
article: ''
|
|
},
|
|
Candy_Base: {
|
|
text: t('foodCandyBase'),
|
|
target: 'Base',
|
|
article: ''
|
|
},
|
|
Candy_CottonCandyBlue: {
|
|
text: t('foodCandyCottonCandyBlue'),
|
|
target: 'CottonCandyBlue',
|
|
article: ''
|
|
},
|
|
Candy_CottonCandyPink: {
|
|
text: t('foodCandyCottonCandyPink'),
|
|
target: 'CottonCandyPink',
|
|
article: ''
|
|
},
|
|
Candy_Shade: {
|
|
text: t('foodCandyShade'),
|
|
target: 'Shade',
|
|
article: ''
|
|
},
|
|
Candy_White: {
|
|
text: t('foodCandyWhite'),
|
|
target: 'White',
|
|
article: ''
|
|
},
|
|
Candy_Golden: {
|
|
text: t('foodCandyGolden'),
|
|
target: 'Golden',
|
|
article: ''
|
|
},
|
|
Candy_Zombie: {
|
|
text: t('foodCandyZombie'),
|
|
target: 'Zombie',
|
|
article: ''
|
|
},
|
|
Candy_Desert: {
|
|
text: t('foodCandyDesert'),
|
|
target: 'Desert',
|
|
article: ''
|
|
},
|
|
Candy_Red: {
|
|
text: t('foodCandyRed'),
|
|
target: 'Red',
|
|
article: ''
|
|
}
|
|
};
|
|
|
|
_.each(api.food, function(food, key) {
|
|
return _.defaults(food, {
|
|
value: 1,
|
|
key: key,
|
|
notes: t('foodNotes'),
|
|
canBuy: (function() {
|
|
return false;
|
|
}),
|
|
canDrop: false
|
|
});
|
|
});
|
|
|
|
api.userCanOwnQuestCategories = USER_CAN_OWN_QUEST_CATEGORIES;
|
|
|
|
api.quests = {
|
|
dilatory: {
|
|
text: t("questDilatoryText"),
|
|
notes: t("questDilatoryNotes"),
|
|
completion: t("questDilatoryCompletion"),
|
|
value: 0,
|
|
canBuy: (function() {
|
|
return 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: (function() {
|
|
return 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
|
|
}
|
|
},
|
|
burnout: {
|
|
text: t('questBurnoutText'),
|
|
notes: t('questBurnoutNotes'),
|
|
completion: t('questBurnoutCompletion'),
|
|
completionChat: t('questBurnoutCompletionChat'),
|
|
value: 0,
|
|
canBuy: (function() {
|
|
return false;
|
|
}),
|
|
category: 'world',
|
|
boss: {
|
|
name: t('questBurnoutBoss'),
|
|
hp: 11000000,
|
|
str: 2.5,
|
|
def: 1,
|
|
rage: {
|
|
title: t('questBurnoutBossRageTitle'),
|
|
description: t('questBurnoutBossRageDescription'),
|
|
value: 1000000,
|
|
quests: t('questBurnoutBossRageQuests'),
|
|
seasonalShop: t('questBurnoutBossRageSeasonalShop'),
|
|
tavern: t('questBurnoutBossRageTavern')
|
|
}
|
|
},
|
|
drop: {
|
|
items: [
|
|
{
|
|
type: 'pets',
|
|
key: 'Phoenix-Base',
|
|
text: t('questBurnoutDropPhoenixPet')
|
|
}, {
|
|
type: 'mounts',
|
|
key: 'Phoenix-Base',
|
|
text: t('questBurnoutDropPhoenixMount')
|
|
}, {
|
|
type: 'food',
|
|
key: 'Candy_Base',
|
|
text: t('foodCandyBase')
|
|
}, {
|
|
type: 'food',
|
|
key: 'Candy_White',
|
|
text: t('foodCandyWhite')
|
|
}, {
|
|
type: 'food',
|
|
key: 'Candy_Desert',
|
|
text: t('foodCandyDesert')
|
|
}, {
|
|
type: 'food',
|
|
key: 'Candy_Red',
|
|
text: t('foodCandyRed')
|
|
}, {
|
|
type: 'food',
|
|
key: 'Candy_Shade',
|
|
text: t('foodCandyShade')
|
|
}, {
|
|
type: 'food',
|
|
key: 'Candy_Skeleton',
|
|
text: t('foodCandySkeleton')
|
|
}, {
|
|
type: 'food',
|
|
key: 'Candy_Zombie',
|
|
text: t('foodCandyZombie')
|
|
}, {
|
|
type: 'food',
|
|
key: 'Candy_CottonCandyPink',
|
|
text: t('foodCandyCottonCandyPink')
|
|
}, {
|
|
type: 'food',
|
|
key: 'Candy_CottonCandyBlue',
|
|
text: t('foodCandyCottonCandyBlue')
|
|
}, {
|
|
type: 'food',
|
|
key: 'Candy_Golden',
|
|
text: t('foodCandyGolden')
|
|
}
|
|
],
|
|
gp: 0,
|
|
exp: 0
|
|
}
|
|
},
|
|
evilsanta: {
|
|
canBuy: (function() {
|
|
return 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: (function() {
|
|
return false;
|
|
}),
|
|
text: t('questEvilSanta2Text'),
|
|
notes: t('questEvilSanta2Notes'),
|
|
completion: t('questEvilSanta2Completion'),
|
|
value: 4,
|
|
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: (function() {
|
|
return 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')
|
|
}
|
|
},
|
|
frog: {
|
|
text: t('questFrogText'),
|
|
notes: t('questFrogNotes'),
|
|
completion: t('questFrogCompletion'),
|
|
value: 4,
|
|
category: 'pet',
|
|
boss: {
|
|
name: t('questFrogBoss'),
|
|
hp: 300,
|
|
str: 1.5
|
|
},
|
|
drop: {
|
|
items: [
|
|
{
|
|
type: 'eggs',
|
|
key: 'Frog',
|
|
text: t('questFrogDropFrogEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Frog',
|
|
text: t('questFrogDropFrogEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Frog',
|
|
text: t('questFrogDropFrogEgg')
|
|
}
|
|
],
|
|
gp: 25,
|
|
exp: 125,
|
|
unlock: t('questFrogUnlockText')
|
|
}
|
|
},
|
|
snake: {
|
|
text: t('questSnakeText'),
|
|
notes: t('questSnakeNotes'),
|
|
completion: t('questSnakeCompletion'),
|
|
value: 4,
|
|
category: 'pet',
|
|
boss: {
|
|
name: t('questSnakeBoss'),
|
|
hp: 1100,
|
|
str: 2.5
|
|
},
|
|
drop: {
|
|
items: [
|
|
{
|
|
type: 'eggs',
|
|
key: 'Snake',
|
|
text: t('questSnakeDropSnakeEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Snake',
|
|
text: t('questSnakeDropSnakeEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Snake',
|
|
text: t('questSnakeDropSnakeEgg')
|
|
}
|
|
],
|
|
gp: 73,
|
|
exp: 725,
|
|
unlock: t('questSnakeUnlockText')
|
|
}
|
|
},
|
|
unicorn: {
|
|
text: t('questUnicornText'),
|
|
notes: t('questUnicornNotes'),
|
|
completion: t('questUnicornCompletion'),
|
|
value: 4,
|
|
category: 'pet',
|
|
boss: {
|
|
name: t('questUnicornBoss'),
|
|
hp: 600,
|
|
str: 1.5
|
|
},
|
|
drop: {
|
|
items: [
|
|
{
|
|
type: 'eggs',
|
|
key: 'Unicorn',
|
|
text: t('questUnicornDropUnicornEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Unicorn',
|
|
text: t('questUnicornDropUnicornEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Unicorn',
|
|
text: t('questUnicornDropUnicornEgg')
|
|
}
|
|
],
|
|
gp: 43,
|
|
exp: 350,
|
|
unlock: t('questUnicornUnlockText')
|
|
}
|
|
},
|
|
sabretooth: {
|
|
text: t('questSabretoothText'),
|
|
notes: t('questSabretoothNotes'),
|
|
completion: t('questSabretoothCompletion'),
|
|
value: 4,
|
|
category: 'pet',
|
|
boss: {
|
|
name: t('questSabretoothBoss'),
|
|
hp: 1000,
|
|
str: 2
|
|
},
|
|
drop: {
|
|
items: [
|
|
{
|
|
type: 'eggs',
|
|
key: 'Sabretooth',
|
|
text: t('questSabretoothDropSabretoothEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Sabretooth',
|
|
text: t('questSabretoothDropSabretoothEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Sabretooth',
|
|
text: t('questSabretoothDropSabretoothEgg')
|
|
}
|
|
],
|
|
gp: 67,
|
|
exp: 650,
|
|
unlock: t('questSabretoothUnlockText')
|
|
}
|
|
},
|
|
monkey: {
|
|
text: t('questMonkeyText'),
|
|
notes: t('questMonkeyNotes'),
|
|
completion: t('questMonkeyCompletion'),
|
|
value: 4,
|
|
category: 'pet',
|
|
boss: {
|
|
name: t('questMonkeyBoss'),
|
|
hp: 400,
|
|
str: 1.5
|
|
},
|
|
drop: {
|
|
items: [
|
|
{
|
|
type: 'eggs',
|
|
key: 'Monkey',
|
|
text: t('questMonkeyDropMonkeyEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Monkey',
|
|
text: t('questMonkeyDropMonkeyEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Monkey',
|
|
text: t('questMonkeyDropMonkeyEgg')
|
|
}
|
|
],
|
|
gp: 31,
|
|
exp: 200,
|
|
unlock: t('questMonkeyUnlockText')
|
|
}
|
|
},
|
|
snail: {
|
|
text: t('questSnailText'),
|
|
notes: t('questSnailNotes'),
|
|
completion: t('questSnailCompletion'),
|
|
value: 4,
|
|
category: 'pet',
|
|
boss: {
|
|
name: t('questSnailBoss'),
|
|
hp: 500,
|
|
str: 1.5
|
|
},
|
|
drop: {
|
|
items: [
|
|
{
|
|
type: 'eggs',
|
|
key: 'Snail',
|
|
text: t('questSnailDropSnailEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Snail',
|
|
text: t('questSnailDropSnailEgg')
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Snail',
|
|
text: t('questSnailDropSnailEgg')
|
|
}
|
|
],
|
|
gp: 37,
|
|
exp: 275,
|
|
unlock: t('questSnailUnlockText')
|
|
}
|
|
},
|
|
bewilder: {
|
|
text: t("questBewilderText"),
|
|
notes: t("questBewilderNotes"),
|
|
completion: t("questBewilderCompletion"),
|
|
completionChat: t('questBewilderCompletionChat'),
|
|
value: 0,
|
|
canBuy: (function() {
|
|
return false;
|
|
}),
|
|
category: 'world',
|
|
boss: {
|
|
name: t("questBewilderText"),
|
|
hp: 20000000,
|
|
str: 1,
|
|
def: 1,
|
|
rage: {
|
|
title: t("questBewilderBossRageTitle"),
|
|
description: t("questBewilderBossRageDescription"),
|
|
value: 800000,
|
|
bailey: t('questBewilderBossRageBailey'),
|
|
stables: t('questBewilderBossRageStables'),
|
|
market: t('questBewilderBossRageMarket')
|
|
}
|
|
},
|
|
drop: {
|
|
items: [
|
|
{
|
|
type: 'pets',
|
|
key: 'MagicalBee-Base',
|
|
text: t('questBewilderDropBumblebeePet')
|
|
}, {
|
|
type: 'mounts',
|
|
key: 'MagicalBee-Base',
|
|
text: t('questBewilderDropBumblebeeMount')
|
|
}, {
|
|
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,
|
|
},
|
|
},
|
|
falcon: {
|
|
text: t('questFalconText'),
|
|
notes: t('questFalconNotes'),
|
|
completion: t('questFalconCompletion'),
|
|
value: 4,
|
|
category: 'pet',
|
|
boss: {
|
|
name: t('questFalconBoss'),
|
|
hp: 700,
|
|
str: 2,
|
|
},
|
|
drop: {
|
|
items: [
|
|
{
|
|
type: 'eggs',
|
|
key: 'Falcon',
|
|
text: t('questFalconDropFalconEgg'),
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Falcon',
|
|
text: t('questFalconDropFalconEgg'),
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Falcon',
|
|
text: t('questFalconDropFalconEgg'),
|
|
}
|
|
],
|
|
gp: 49,
|
|
exp: 425,
|
|
unlock: t('questFalconUnlockText'),
|
|
},
|
|
},
|
|
treeling: {
|
|
text: t('questTreelingText'),
|
|
notes: t('questTreelingNotes'),
|
|
completion: t('questTreelingCompletion'),
|
|
value: 4,
|
|
category: 'pet',
|
|
boss: {
|
|
name: t('questTreelingBoss'),
|
|
hp: 600,
|
|
str: 1.5,
|
|
},
|
|
drop: {
|
|
items: [
|
|
{
|
|
type: 'eggs',
|
|
key: 'Treeling',
|
|
text: t('questTreelingDropTreelingEgg'),
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Treeling',
|
|
text: t('questTreelingDropTreelingEgg'),
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Treeling',
|
|
text: t('questTreelingDropTreelingEgg'),
|
|
}
|
|
],
|
|
gp: 43,
|
|
exp: 350,
|
|
unlock: t('questTreelingUnlockText'),
|
|
},
|
|
},
|
|
axolotl: {
|
|
text: t('questAxolotlText'),
|
|
notes: t('questAxolotlNotes'),
|
|
completion: t('questAxolotlCompletion'),
|
|
value: 4,
|
|
category: 'pet',
|
|
boss: {
|
|
name: t('questAxolotlBoss'),
|
|
hp: 500,
|
|
str: 1.5,
|
|
rage: {
|
|
title: t('questAxolotlRageTitle'),
|
|
description: t('questAxolotlRageDescription'),
|
|
value: 50,
|
|
healing: .3,
|
|
effect: t('questAxolotlRageEffect'),
|
|
},
|
|
},
|
|
drop: {
|
|
items: [
|
|
{
|
|
type: 'eggs',
|
|
key: 'Axolotl',
|
|
text: t('questAxolotlDropAxolotlEgg'),
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Axolotl',
|
|
text: t('questAxolotlDropAxolotlEgg'),
|
|
}, {
|
|
type: 'eggs',
|
|
key: 'Axolotl',
|
|
text: t('questAxolotlDropAxolotlEgg'),
|
|
}
|
|
],
|
|
gp: 37,
|
|
exp: 275,
|
|
unlock: t('questAxolotlUnlockText'),
|
|
},
|
|
},
|
|
};
|
|
|
|
_.each(api.quests, function(v, key) {
|
|
var b;
|
|
_.defaults(v, {
|
|
key: key,
|
|
canBuy: (function() {
|
|
return true;
|
|
})
|
|
});
|
|
b = v.boss;
|
|
if (b) {
|
|
_.defaults(b, {
|
|
str: 1,
|
|
def: 1
|
|
});
|
|
if (b.rage) {
|
|
return _.defaults(b.rage, {
|
|
title: t('bossRageTitle'),
|
|
description: t('bossRageDescription')
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
api.questsByLevel = _.sortBy(api.quests, function(quest) {
|
|
return quest.lvl || 0;
|
|
});
|
|
|
|
api.appearances = appearances;
|
|
|
|
api.backgrounds = backgrounds;
|
|
|
|
api.subscriptionBlocks = {
|
|
basic_earned: {
|
|
months: 1,
|
|
price: 5
|
|
},
|
|
basic_3mo: {
|
|
months: 3,
|
|
price: 15
|
|
},
|
|
basic_6mo: {
|
|
months: 6,
|
|
price: 30
|
|
},
|
|
google_6mo: {
|
|
months: 6,
|
|
price: 24,
|
|
discount: true,
|
|
original: 30
|
|
},
|
|
basic_12mo: {
|
|
months: 12,
|
|
price: 48
|
|
}
|
|
};
|
|
|
|
_.each(api.subscriptionBlocks, function(b, k) {
|
|
return b.key = k;
|
|
});
|
|
|
|
api.userDefaults = {
|
|
habits: [
|
|
{
|
|
type: 'habit',
|
|
text: t('defaultHabit1Text'),
|
|
value: 0,
|
|
up: true,
|
|
down: false,
|
|
attribute: 'per'
|
|
}, {
|
|
type: 'habit',
|
|
text: t('defaultHabit2Text'),
|
|
value: 0,
|
|
up: false,
|
|
down: true,
|
|
attribute: 'str'
|
|
}, {
|
|
type: 'habit',
|
|
text: t('defaultHabit3Text'),
|
|
value: 0,
|
|
up: true,
|
|
down: true,
|
|
attribute: 'str'
|
|
}
|
|
],
|
|
dailys: [],
|
|
todos: [
|
|
{
|
|
type: 'todo',
|
|
text: t('defaultTodo1Text'),
|
|
notes: t('defaultTodoNotes'),
|
|
completed: false,
|
|
attribute: 'int'
|
|
}
|
|
],
|
|
rewards: [
|
|
{
|
|
type: 'reward',
|
|
text: t('defaultReward1Text'),
|
|
value: 10
|
|
}
|
|
],
|
|
tags: [
|
|
{
|
|
name: t('defaultTag1')
|
|
}, {
|
|
name: t('defaultTag2')
|
|
}, {
|
|
name: t('defaultTag3')
|
|
}
|
|
]
|
|
};
|
|
|
|
api.faq = faq;
|