feat(quests): Parrot quest

This commit is contained in:
Tyler Renelle 2014-08-18 18:52:28 -06:00
parent 8ec929c040
commit 475e4c0e4e
49 changed files with 3745 additions and 3484 deletions

File diff suppressed because one or more lines are too long

View file

@ -11902,6 +11902,11 @@ api.questEggs = {
text: t('questEggSeahorseText'),
adjective: t('questEggSeahorseAdjective'),
canBuy: false
},
Parrot: {
text: t('questEggParrotText'),
adjective: t('questEggParrotAdjective'),
canBuy: false
}
};
@ -12659,6 +12664,36 @@ api.quests = {
gp: 25,
exp: 125
}
},
harpy: {
text: t('questHarpyText'),
notes: t('questHarpyNotes'),
completion: t('questHarpyCompletion'),
value: 4,
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
}
}
};
@ -14559,7 +14594,7 @@ api.wrap = function(user, main) {
})()]++;
},
updateStats: function(stats, req) {
var tnl, _base, _base1, _ref;
var tnl;
if (stats.hp <= 0) {
return user.stats.hp = 0;
}
@ -14604,22 +14639,28 @@ api.wrap = function(user, main) {
if (!user.flags.classSelected && user.stats.lvl >= 10) {
user.flags.classSelected;
}
if (!((_ref = user.flags.levelDrops) != null ? _ref.vice1 : void 0) && user.stats.lvl >= 30) {
if ((_base = user.items.quests).vice1 == null) {
_base.vice1 = 0;
_.each({
vice1: 30,
atom1: 15
}, function(lvl, k) {
var _base, _base1, _ref;
if (!((_ref = user.flags.levelDrops) != null ? _ref[k] : void 0) && user.stats.lvl >= lvl) {
if ((_base = user.items.quests)[k] == null) {
_base[k] = 0;
}
user.items.quests[k]++;
((_base1 = user.flags).levelDrops != null ? _base1.levelDrops : _base1.levelDrops = {})[k] = true;
if (typeof user.markModified === "function") {
user.markModified('flags.levelDrops');
}
return user._tmp.drop = _.defaults(content.quests[k], {
type: 'Quest',
dialog: i18n.t('messageFoundQuest', {
questText: content.quests[k].text(req.language)
}, req.language)
});
}
user.items.quests.vice1++;
((_base1 = user.flags).levelDrops != null ? _base1.levelDrops : _base1.levelDrops = {}).vice1 = true;
if (typeof user.markModified === "function") {
user.markModified('flags.levelDrops');
}
user._tmp.drop = _.defaults(content.quests.vice1, {
type: 'Quest',
dialog: i18n.t('messageFoundQuest', {
questText: content.quests.vice1.text(req.language)
}, req.language)
});
}
});
if (!user.flags.rebirthEnabled && (user.stats.lvl >= 50 || user.achievements.ultimateGear || user.achievements.beastMaster)) {
user.flags.rebirthEnabled = true;
}
@ -14875,5 +14916,5 @@ api.wrap = function(user, main) {
};
}).call(this,require("/vagrant/node_modules/habitrpg-shared/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"))
},{"./content.coffee":5,"./i18n.coffee":6,"/vagrant/node_modules/habitrpg-shared/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":2,"lodash":3,"moment":4}]},{},[1])
}).call(this,require("/Users/lefnire/Dropbox/Sites/habitrpg/modules/habitrpg-shared/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"))
},{"./content.coffee":5,"./i18n.coffee":6,"/Users/lefnire/Dropbox/Sites/habitrpg/modules/habitrpg-shared/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":2,"lodash":3,"moment":4}]},{},[1])

216
dist/spritesmith0.css vendored
View file

@ -1,150 +1,150 @@
.achievement-alien {
background-image: url(spritesmith0.png);
background-position: -1385px -1217px;
background-position: -1021px -910px;
width: 24px;
height: 26px;
}
.achievement-armor {
background-image: url(spritesmith0.png);
background-position: -1410px -1001px;
background-position: -1410px -1274px;
width: 24px;
height: 26px;
}
.achievement-boot {
background-image: url(spritesmith0.png);
background-position: -1435px -1190px;
background-position: -1162px -1028px;
width: 24px;
height: 26px;
}
.achievement-bow {
background-image: url(spritesmith0.png);
background-position: -1410px -1190px;
background-position: -1137px -1028px;
width: 24px;
height: 26px;
}
.achievement-cactus {
background-image: url(spritesmith0.png);
background-position: -1385px -1190px;
background-position: -1112px -1028px;
width: 24px;
height: 26px;
}
.achievement-cake {
background-image: url(spritesmith0.png);
background-position: -1435px -1163px;
background-position: -1162px -1001px;
width: 24px;
height: 26px;
}
.achievement-cave {
background-image: url(spritesmith0.png);
background-position: -1410px -1163px;
background-position: -1137px -1001px;
width: 24px;
height: 26px;
}
.achievement-coffin {
background-image: url(spritesmith0.png);
background-position: -1385px -1163px;
background-position: -1112px -1001px;
width: 24px;
height: 26px;
}
.achievement-comment {
background-image: url(spritesmith0.png);
background-position: -1435px -1136px;
background-position: -1253px -1119px;
width: 24px;
height: 26px;
}
.achievement-dilatory {
background-image: url(spritesmith0.png);
background-position: -1410px -1136px;
background-position: -1228px -1119px;
width: 24px;
height: 26px;
}
.achievement-firefox {
background-image: url(spritesmith0.png);
background-position: -1385px -1136px;
background-position: -1203px -1119px;
width: 24px;
height: 26px;
}
.achievement-habitBirthday {
background-image: url(spritesmith0.png);
background-position: -1435px -1109px;
background-position: -1253px -1092px;
width: 24px;
height: 26px;
}
.achievement-heart {
background-image: url(spritesmith0.png);
background-position: -1410px -1109px;
background-position: -1228px -1092px;
width: 24px;
height: 26px;
}
.achievement-helm {
background-image: url(spritesmith0.png);
background-position: -1385px -1001px;
background-position: -1385px -1274px;
width: 24px;
height: 26px;
}
.achievement-karaoke {
background-image: url(spritesmith0.png);
background-position: -1435px -1082px;
background-position: -1344px -1210px;
width: 24px;
height: 26px;
}
.achievement-ninja {
background-image: url(spritesmith0.png);
background-position: -1410px -1082px;
background-position: -1319px -1210px;
width: 24px;
height: 26px;
}
.achievement-perfect {
background-image: url(spritesmith0.png);
background-position: -1385px -1082px;
background-position: -1294px -1210px;
width: 24px;
height: 26px;
}
.achievement-rat {
background-image: url(spritesmith0.png);
background-position: -1435px -1055px;
background-position: -1344px -1183px;
width: 24px;
height: 26px;
}
.achievement-shield {
background-image: url(spritesmith0.png);
background-position: -1410px -1055px;
background-position: -1319px -1183px;
width: 24px;
height: 26px;
}
.achievement-snowball {
background-image: url(spritesmith0.png);
background-position: -1385px -1055px;
background-position: -1294px -1183px;
width: 24px;
height: 26px;
}
.achievement-sun {
background-image: url(spritesmith0.png);
background-position: -1435px -1028px;
background-position: -1435px -1301px;
width: 24px;
height: 26px;
}
.achievement-sword {
background-image: url(spritesmith0.png);
background-position: -1410px -1028px;
background-position: -1410px -1301px;
width: 24px;
height: 26px;
}
.achievement-thermometer {
background-image: url(spritesmith0.png);
background-position: -1385px -1028px;
background-position: -1385px -1301px;
width: 24px;
height: 26px;
}
.achievement-tree {
background-image: url(spritesmith0.png);
background-position: -1435px -1001px;
background-position: -1435px -1274px;
width: 24px;
height: 26px;
}
.achievement-valentine {
background-image: url(spritesmith0.png);
background-position: -1385px -1109px;
background-position: -1203px -1092px;
width: 24px;
height: 26px;
}
@ -1200,13 +1200,13 @@
}
.hair_mustache_1_white {
background-image: url(spritesmith0.png);
background-position: -141px -296px;
background-position: -728px -990px;
width: 90px;
height: 90px;
}
.customize-option.hair_mustache_1_white {
background-image: url(spritesmith0.png);
background-position: -166px -311px;
background-position: -753px -1005px;
width: 60px;
height: 60px;
}
@ -1236,13 +1236,13 @@
}
.hair_mustache_2_TRUred {
background-image: url(spritesmith0.png);
background-position: -1001px -990px;
background-position: -141px -296px;
width: 90px;
height: 90px;
}
.customize-option.hair_mustache_2_TRUred {
background-image: url(spritesmith0.png);
background-position: -1026px -1005px;
background-position: -166px -311px;
width: 60px;
height: 60px;
}
@ -2316,299 +2316,359 @@
}
.hair_base_1_TRUred {
background-image: url(spritesmith0.png);
background-position: -728px -990px;
background-position: -1385px -1001px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_TRUred {
background-image: url(spritesmith0.png);
background-position: -753px -1005px;
background-position: -1410px -1016px;
width: 60px;
height: 60px;
}
.hair_base_1_black {
background-image: url(spritesmith0.png);
background-position: 0px -535px;
background-position: -1385px -1092px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_black {
background-image: url(spritesmith0.png);
background-position: -25px -550px;
background-position: -1410px -1107px;
width: 60px;
height: 60px;
}
.hair_base_1_blond {
background-image: url(spritesmith0.png);
background-position: -566px -364px;
background-position: -1385px -1183px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_blond {
background-image: url(spritesmith0.png);
background-position: -591px -379px;
background-position: -1410px -1198px;
width: 60px;
height: 60px;
}
.hair_base_1_blue {
background-image: url(spritesmith0.png);
background-position: -566px -273px;
background-position: 0px -1354px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_blue {
background-image: url(spritesmith0.png);
background-position: -591px -288px;
background-position: -25px -1369px;
width: 60px;
height: 60px;
}
.hair_base_1_brown {
background-image: url(spritesmith0.png);
background-position: -566px -182px;
background-position: -91px -1354px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_brown {
background-image: url(spritesmith0.png);
background-position: -591px -197px;
background-position: -116px -1369px;
width: 60px;
height: 60px;
}
.hair_base_1_candycane {
background-image: url(spritesmith0.png);
background-position: -566px -91px;
background-position: -1001px -990px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_candycane {
background-image: url(spritesmith0.png);
background-position: -591px -106px;
background-position: -1026px -1005px;
width: 60px;
height: 60px;
}
.hair_base_1_frost {
background-image: url(spritesmith0.png);
background-position: -566px 0px;
background-position: 0px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_frost {
background-image: url(spritesmith0.png);
background-position: -591px -15px;
background-position: -25px -550px;
width: 60px;
height: 60px;
}
.hair_base_1_green {
background-image: url(spritesmith0.png);
background-position: -455px -444px;
background-position: -566px -364px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_green {
background-image: url(spritesmith0.png);
background-position: -480px -459px;
background-position: -591px -379px;
width: 60px;
height: 60px;
}
.hair_base_1_holly {
background-image: url(spritesmith0.png);
background-position: -364px -444px;
background-position: -566px -273px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_holly {
background-image: url(spritesmith0.png);
background-position: -389px -459px;
background-position: -591px -288px;
width: 60px;
height: 60px;
}
.hair_base_1_pblue {
background-image: url(spritesmith0.png);
background-position: -273px -444px;
background-position: -566px -182px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_pblue {
background-image: url(spritesmith0.png);
background-position: -298px -459px;
background-position: -591px -197px;
width: 60px;
height: 60px;
}
.hair_base_1_pgreen {
background-image: url(spritesmith0.png);
background-position: -182px -444px;
background-position: -566px -91px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_pgreen {
background-image: url(spritesmith0.png);
background-position: -207px -459px;
background-position: -591px -106px;
width: 60px;
height: 60px;
}
.hair_base_1_porange {
background-image: url(spritesmith0.png);
background-position: -91px -444px;
background-position: -566px 0px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_porange {
background-image: url(spritesmith0.png);
background-position: -116px -459px;
background-position: -591px -15px;
width: 60px;
height: 60px;
}
.hair_base_1_ppink {
background-image: url(spritesmith0.png);
background-position: 0px -444px;
background-position: -455px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_ppink {
background-image: url(spritesmith0.png);
background-position: -25px -459px;
background-position: -480px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_ppurple {
background-image: url(spritesmith0.png);
background-position: -414px -296px;
background-position: -364px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_ppurple {
background-image: url(spritesmith0.png);
background-position: -439px -311px;
background-position: -389px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_purple {
background-image: url(spritesmith0.png);
background-position: -323px -296px;
background-position: -273px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_purple {
background-image: url(spritesmith0.png);
background-position: -348px -311px;
background-position: -298px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_pyellow {
background-image: url(spritesmith0.png);
background-position: -232px -296px;
background-position: -182px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_pyellow {
background-image: url(spritesmith0.png);
background-position: -257px -311px;
background-position: -207px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_rainbow {
background-image: url(spritesmith0.png);
background-position: -657px -182px;
background-position: -91px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_rainbow {
background-image: url(spritesmith0.png);
background-position: -682px -197px;
background-position: -116px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_red {
background-image: url(spritesmith0.png);
background-position: -657px -91px;
background-position: 0px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_red {
background-image: url(spritesmith0.png);
background-position: -682px -106px;
background-position: -25px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_white {
background-image: url(spritesmith0.png);
background-position: -657px 0px;
background-position: -414px -296px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_white {
background-image: url(spritesmith0.png);
background-position: -682px -15px;
background-position: -439px -311px;
width: 60px;
height: 60px;
}
.hair_base_1_winternight {
background-image: url(spritesmith0.png);
background-position: -546px -535px;
background-position: -323px -296px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_winternight {
background-image: url(spritesmith0.png);
background-position: -571px -550px;
background-position: -348px -311px;
width: 60px;
height: 60px;
}
.hair_base_1_yellow {
background-image: url(spritesmith0.png);
background-position: -455px -535px;
background-position: -232px -296px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_yellow {
background-image: url(spritesmith0.png);
background-position: -480px -550px;
background-position: -257px -311px;
width: 60px;
height: 60px;
}
.hair_base_2_TRUred {
background-image: url(spritesmith0.png);
background-position: -364px -535px;
background-position: -657px -182px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_TRUred {
background-image: url(spritesmith0.png);
background-position: -389px -550px;
background-position: -682px -197px;
width: 60px;
height: 60px;
}
.hair_base_2_black {
background-image: url(spritesmith0.png);
background-position: -273px -535px;
background-position: -657px -91px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_black {
background-image: url(spritesmith0.png);
background-position: -298px -550px;
background-position: -682px -106px;
width: 60px;
height: 60px;
}
.hair_base_2_blond {
background-image: url(spritesmith0.png);
background-position: -182px -535px;
background-position: -657px 0px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_blond {
background-image: url(spritesmith0.png);
background-position: -207px -550px;
background-position: -682px -15px;
width: 60px;
height: 60px;
}
.hair_base_2_blue {
background-image: url(spritesmith0.png);
background-position: -91px -535px;
background-position: -546px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_blue {
background-image: url(spritesmith0.png);
background-position: -571px -550px;
width: 60px;
height: 60px;
}
.hair_base_2_brown {
background-image: url(spritesmith0.png);
background-position: -455px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_brown {
background-image: url(spritesmith0.png);
background-position: -480px -550px;
width: 60px;
height: 60px;
}
.hair_base_2_candycane {
background-image: url(spritesmith0.png);
background-position: -364px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_candycane {
background-image: url(spritesmith0.png);
background-position: -389px -550px;
width: 60px;
height: 60px;
}
.hair_base_2_frost {
background-image: url(spritesmith0.png);
background-position: -273px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_frost {
background-image: url(spritesmith0.png);
background-position: -298px -550px;
width: 60px;
height: 60px;
}
.hair_base_2_green {
background-image: url(spritesmith0.png);
background-position: -182px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_green {
background-image: url(spritesmith0.png);
background-position: -207px -550px;
width: 60px;
height: 60px;
}
.hair_base_2_holly {
background-image: url(spritesmith0.png);
background-position: -91px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_holly {
background-image: url(spritesmith0.png);
background-position: -116px -550px;
width: 60px;

BIN
dist/spritesmith0.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 81 KiB

3294
dist/spritesmith1.css vendored

File diff suppressed because it is too large Load diff

BIN
dist/spritesmith1.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 71 KiB

610
dist/spritesmith2.css vendored

File diff suppressed because it is too large Load diff

BIN
dist/spritesmith2.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 82 KiB

656
dist/spritesmith3.css vendored

File diff suppressed because it is too large Load diff

BIN
dist/spritesmith3.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 160 KiB

1692
dist/spritesmith4.css vendored

File diff suppressed because it is too large Load diff

BIN
dist/spritesmith4.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 169 KiB

652
dist/spritesmith5.css vendored

File diff suppressed because it is too large Load diff

BIN
dist/spritesmith5.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View file

@ -54,6 +54,9 @@
"questEggSeahorseText": "Seahorse",
"questEggSeahorseAdjective": "prize",
"questEggParrotText": "Parrot",
"questEggParrotAdjective": "vibrant",
"eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into a <%= eggAdjective() %> <%= eggText() %>.",
"hatchingPotionBase": "Base",

View file

@ -42,6 +42,12 @@
"questOctopusBoss": "Octothulu",
"questOctopusDropOctopusEgg": "Octopus (Egg)",
"questHarpyText": "Help! Harpy!",
"questHarpyNotes": "The brave adventurer @UncommonCriminal has disappeared into the forest, following the trail of a winged monster that was sighted several days ago. You are about to begin a search when a wounded parrot lands on your arm, an ugly scar marring its beautiful plumage. Attached to its leg is a scrawled note explaining that while defending the parrots, @UncommonCriminal was captured by a vicious Harpy, and desperately needs your help to escape. Will you follow the bird, defeat the Harpy, and save @UncommonCriminal?",
"questHarpyCompletion": "A final blow to the Harpy brings it down, feathers flying in all directions. After a quick climb to its nest you find @UncommonCriminal, surrounded by parrot eggs. As a team, you quickly place the eggs back in the nearby nests. The scarred parrot who found you caws loudly, dropping several eggs in your arms. \"The Harpy attack has left some eggs in need of protection,\" explains @UncommonCriminal. \"It seems you have been made an honorary parrot.\"",
"questHarpyBoss": "Harpy",
"questHarpyDropParrotEgg": "Parrot (Egg)",
"questVice1Text": "Free Yourself of the Dragon's Influence",
"questVice1Notes": "<p>They say there lies a terrible evil in the caverns of Mt. Habitica. A monster whose presence twists the wills of the strong heroes of the land, turning them towards bad habits and laziness! The beast is a grand dragon of immense power and comprised of the shadows themselves: Vice, the treacherous Shadow Wyrm. Brave Habiteers, stand up and defeat this foul beast once and for all, but only if you believe you can stand against its immense power. </p><h3>Vice Part 1: </h3><p>How can you expect to fight the beast if it already has control over you? Don't fall victim to laziness and vice! Work hard to fight against the dragon's dark influence and dispel his hold on you! </p>",
"questVice1Boss": "Vice's Shade",

View file

@ -627,7 +627,8 @@ api.questEggs =
Egg: text: t('questEggEggText'), adjective: t('questEggEggAdjective'), canBuy: false
Rat: text: t('questEggRatText'), adjective: t('questEggRatAdjective'), canBuy: false
Octopus: text: t('questEggOctopusText'), adjective: t('questEggOctopusAdjective'), canBuy: false
Seahorse: text: t('questEggSeahorseText'), adjective: t('questEggSeahorseAdjective'), canBuy: false
Seahorse: text: t('questEggSeahorseText'), adjective: t('questEggSeahorseAdjective'), canBuy: false
Parrot: text: t('questEggParrotText'), adjective: t('questEggParrotAdjective'), canBuy: false
_.each api.questEggs, (egg,key) ->
_.defaults egg,
@ -1022,6 +1023,24 @@ api.quests =
gp: 25
exp: 125
harpy:
text: t('questHarpyText')
notes: t('questHarpyNotes')
completion: t('questHarpyCompletion')
value: 4
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
_.each api.quests, (v,key) ->
_.defaults v, {key,canBuy:true}
b = v.boss