feat(quests): lvl 15 ATOM quest drop

This commit is contained in:
Tyler Renelle 2014-08-12 16:18:08 -07:00
parent 431b1da73e
commit d3520e48e4
20 changed files with 3051 additions and 2392 deletions

File diff suppressed because one or more lines are too long

1616
dist/habitrpg-shared.js vendored

File diff suppressed because it is too large Load diff

160
dist/spritesmith0.css vendored
View file

@ -1,150 +1,150 @@
.achievement-alien {
background-image: url(spritesmith0.png);
background-position: -1385px -1126px;
background-position: -1385px -1217px;
width: 24px;
height: 26px;
}
.achievement-armor {
background-image: url(spritesmith0.png);
background-position: -1410px -910px;
background-position: -1410px -1001px;
width: 24px;
height: 26px;
}
.achievement-boot {
background-image: url(spritesmith0.png);
background-position: -1435px -1099px;
background-position: -1435px -1190px;
width: 24px;
height: 26px;
}
.achievement-bow {
background-image: url(spritesmith0.png);
background-position: -1410px -1099px;
background-position: -1410px -1190px;
width: 24px;
height: 26px;
}
.achievement-cactus {
background-image: url(spritesmith0.png);
background-position: -1385px -1099px;
background-position: -1385px -1190px;
width: 24px;
height: 26px;
}
.achievement-cake {
background-image: url(spritesmith0.png);
background-position: -1435px -1072px;
background-position: -1435px -1163px;
width: 24px;
height: 26px;
}
.achievement-cave {
background-image: url(spritesmith0.png);
background-position: -1410px -1072px;
background-position: -1410px -1163px;
width: 24px;
height: 26px;
}
.achievement-coffin {
background-image: url(spritesmith0.png);
background-position: -1385px -1072px;
background-position: -1385px -1163px;
width: 24px;
height: 26px;
}
.achievement-comment {
background-image: url(spritesmith0.png);
background-position: -1435px -1045px;
background-position: -1435px -1136px;
width: 24px;
height: 26px;
}
.achievement-dilatory {
background-image: url(spritesmith0.png);
background-position: -1410px -1045px;
background-position: -1410px -1136px;
width: 24px;
height: 26px;
}
.achievement-firefox {
background-image: url(spritesmith0.png);
background-position: -1385px -1045px;
background-position: -1385px -1136px;
width: 24px;
height: 26px;
}
.achievement-habitBirthday {
background-image: url(spritesmith0.png);
background-position: -1435px -1018px;
background-position: -1435px -1109px;
width: 24px;
height: 26px;
}
.achievement-heart {
background-image: url(spritesmith0.png);
background-position: -1410px -1018px;
background-position: -1410px -1109px;
width: 24px;
height: 26px;
}
.achievement-helm {
background-image: url(spritesmith0.png);
background-position: -1385px -910px;
background-position: -1385px -1001px;
width: 24px;
height: 26px;
}
.achievement-karaoke {
background-image: url(spritesmith0.png);
background-position: -1435px -991px;
background-position: -1435px -1082px;
width: 24px;
height: 26px;
}
.achievement-ninja {
background-image: url(spritesmith0.png);
background-position: -1410px -991px;
background-position: -1410px -1082px;
width: 24px;
height: 26px;
}
.achievement-perfect {
background-image: url(spritesmith0.png);
background-position: -1385px -991px;
background-position: -1385px -1082px;
width: 24px;
height: 26px;
}
.achievement-rat {
background-image: url(spritesmith0.png);
background-position: -1435px -964px;
background-position: -1435px -1055px;
width: 24px;
height: 26px;
}
.achievement-shield {
background-image: url(spritesmith0.png);
background-position: -1410px -964px;
background-position: -1410px -1055px;
width: 24px;
height: 26px;
}
.achievement-snowball {
background-image: url(spritesmith0.png);
background-position: -1385px -964px;
background-position: -1385px -1055px;
width: 24px;
height: 26px;
}
.achievement-sun {
background-image: url(spritesmith0.png);
background-position: -1435px -937px;
background-position: -1435px -1028px;
width: 24px;
height: 26px;
}
.achievement-sword {
background-image: url(spritesmith0.png);
background-position: -1410px -937px;
background-position: -1410px -1028px;
width: 24px;
height: 26px;
}
.achievement-thermometer {
background-image: url(spritesmith0.png);
background-position: -1385px -937px;
background-position: -1385px -1028px;
width: 24px;
height: 26px;
}
.achievement-tree {
background-image: url(spritesmith0.png);
background-position: -1435px -910px;
background-position: -1435px -1001px;
width: 24px;
height: 26px;
}
.achievement-valentine {
background-image: url(spritesmith0.png);
background-position: -1385px -1018px;
background-position: -1385px -1109px;
width: 24px;
height: 26px;
}
@ -2304,299 +2304,311 @@
}
.hair_bangs_3_yellow {
background-image: url(spritesmith0.png);
background-position: -728px -990px;
background-position: -1385px -910px;
width: 90px;
height: 90px;
}
.customize-option.hair_bangs_3_yellow {
background-image: url(spritesmith0.png);
background-position: -753px -1005px;
background-position: -1410px -925px;
width: 60px;
height: 60px;
}
.hair_base_1_TRUred {
background-image: url(spritesmith0.png);
background-position: 0px -535px;
background-position: -728px -990px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_TRUred {
background-image: url(spritesmith0.png);
background-position: -25px -550px;
background-position: -753px -1005px;
width: 60px;
height: 60px;
}
.hair_base_1_black {
background-image: url(spritesmith0.png);
background-position: -566px -364px;
background-position: 0px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_black {
background-image: url(spritesmith0.png);
background-position: -591px -379px;
background-position: -25px -550px;
width: 60px;
height: 60px;
}
.hair_base_1_blond {
background-image: url(spritesmith0.png);
background-position: -566px -273px;
background-position: -566px -364px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_blond {
background-image: url(spritesmith0.png);
background-position: -591px -288px;
background-position: -591px -379px;
width: 60px;
height: 60px;
}
.hair_base_1_blue {
background-image: url(spritesmith0.png);
background-position: -566px -182px;
background-position: -566px -273px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_blue {
background-image: url(spritesmith0.png);
background-position: -591px -197px;
background-position: -591px -288px;
width: 60px;
height: 60px;
}
.hair_base_1_brown {
background-image: url(spritesmith0.png);
background-position: -566px -91px;
background-position: -566px -182px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_brown {
background-image: url(spritesmith0.png);
background-position: -591px -106px;
background-position: -591px -197px;
width: 60px;
height: 60px;
}
.hair_base_1_candycane {
background-image: url(spritesmith0.png);
background-position: -566px 0px;
background-position: -566px -91px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_candycane {
background-image: url(spritesmith0.png);
background-position: -591px -15px;
background-position: -591px -106px;
width: 60px;
height: 60px;
}
.hair_base_1_frost {
background-image: url(spritesmith0.png);
background-position: -455px -444px;
background-position: -566px 0px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_frost {
background-image: url(spritesmith0.png);
background-position: -480px -459px;
background-position: -591px -15px;
width: 60px;
height: 60px;
}
.hair_base_1_green {
background-image: url(spritesmith0.png);
background-position: -364px -444px;
background-position: -455px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_green {
background-image: url(spritesmith0.png);
background-position: -389px -459px;
background-position: -480px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_holly {
background-image: url(spritesmith0.png);
background-position: -273px -444px;
background-position: -364px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_holly {
background-image: url(spritesmith0.png);
background-position: -298px -459px;
background-position: -389px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_pblue {
background-image: url(spritesmith0.png);
background-position: -182px -444px;
background-position: -273px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_pblue {
background-image: url(spritesmith0.png);
background-position: -207px -459px;
background-position: -298px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_pgreen {
background-image: url(spritesmith0.png);
background-position: -91px -444px;
background-position: -182px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_pgreen {
background-image: url(spritesmith0.png);
background-position: -116px -459px;
background-position: -207px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_porange {
background-image: url(spritesmith0.png);
background-position: 0px -444px;
background-position: -91px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_porange {
background-image: url(spritesmith0.png);
background-position: -25px -459px;
background-position: -116px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_ppink {
background-image: url(spritesmith0.png);
background-position: -414px -296px;
background-position: 0px -444px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_ppink {
background-image: url(spritesmith0.png);
background-position: -439px -311px;
background-position: -25px -459px;
width: 60px;
height: 60px;
}
.hair_base_1_ppurple {
background-image: url(spritesmith0.png);
background-position: -323px -296px;
background-position: -414px -296px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_ppurple {
background-image: url(spritesmith0.png);
background-position: -348px -311px;
background-position: -439px -311px;
width: 60px;
height: 60px;
}
.hair_base_1_purple {
background-image: url(spritesmith0.png);
background-position: -232px -296px;
background-position: -323px -296px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_purple {
background-image: url(spritesmith0.png);
background-position: -257px -311px;
background-position: -348px -311px;
width: 60px;
height: 60px;
}
.hair_base_1_pyellow {
background-image: url(spritesmith0.png);
background-position: -657px -182px;
background-position: -232px -296px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_pyellow {
background-image: url(spritesmith0.png);
background-position: -682px -197px;
background-position: -257px -311px;
width: 60px;
height: 60px;
}
.hair_base_1_rainbow {
background-image: url(spritesmith0.png);
background-position: -657px -91px;
background-position: -657px -182px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_rainbow {
background-image: url(spritesmith0.png);
background-position: -682px -106px;
background-position: -682px -197px;
width: 60px;
height: 60px;
}
.hair_base_1_red {
background-image: url(spritesmith0.png);
background-position: -657px 0px;
background-position: -657px -91px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_red {
background-image: url(spritesmith0.png);
background-position: -682px -15px;
background-position: -682px -106px;
width: 60px;
height: 60px;
}
.hair_base_1_white {
background-image: url(spritesmith0.png);
background-position: -546px -535px;
background-position: -657px 0px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_white {
background-image: url(spritesmith0.png);
background-position: -571px -550px;
background-position: -682px -15px;
width: 60px;
height: 60px;
}
.hair_base_1_winternight {
background-image: url(spritesmith0.png);
background-position: -455px -535px;
background-position: -546px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_winternight {
background-image: url(spritesmith0.png);
background-position: -480px -550px;
background-position: -571px -550px;
width: 60px;
height: 60px;
}
.hair_base_1_yellow {
background-image: url(spritesmith0.png);
background-position: -364px -535px;
background-position: -455px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_1_yellow {
background-image: url(spritesmith0.png);
background-position: -389px -550px;
background-position: -480px -550px;
width: 60px;
height: 60px;
}
.hair_base_2_TRUred {
background-image: url(spritesmith0.png);
background-position: -273px -535px;
background-position: -364px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_TRUred {
background-image: url(spritesmith0.png);
background-position: -298px -550px;
background-position: -389px -550px;
width: 60px;
height: 60px;
}
.hair_base_2_black {
background-image: url(spritesmith0.png);
background-position: -182px -535px;
background-position: -273px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_black {
background-image: url(spritesmith0.png);
background-position: -207px -550px;
background-position: -298px -550px;
width: 60px;
height: 60px;
}
.hair_base_2_blond {
background-image: url(spritesmith0.png);
background-position: -91px -535px;
background-position: -182px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_blond {
background-image: url(spritesmith0.png);
background-position: -207px -550px;
width: 60px;
height: 60px;
}
.hair_base_2_blue {
background-image: url(spritesmith0.png);
background-position: -91px -535px;
width: 90px;
height: 90px;
}
.customize-option.hair_base_2_blue {
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: 79 KiB

926
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: 65 KiB

After

Width:  |  Height:  |  Size: 66 KiB

1214
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: 79 KiB

492
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: 116 KiB

After

Width:  |  Height:  |  Size: 143 KiB

478
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: 163 KiB

470
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: 139 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

View file

@ -82,5 +82,21 @@
"questSeahorseNotes": "It's Derby Day, and Habiticans from all over the continent have traveled to Dilatory to race their pet seahorses! Suddenly, a great splashing and snarling breaks out at the racetrack, and you hear Seahorse Keeper @Kiwibot shouting above the roar of the waves. \"The gathering of seahorses has attracted a fierce Sea Stallion!\" she cries. \"He's smashing through the stables and destroying the ancient track! Can anyone calm him down?\"",
"questSeahorseCompletion": "The now-tame Sea Stallion swims docilely to your side. \"Oh, look!\" Kiwibot says. \"He wants us to take care of his children.\" She gives you three eggs. \"Raise them well,\" she says. \"You're welcome at the Dilatory Derby any day!\"",
"questSeahorseBoss": "Sea Stallion",
"questSeahorseDropSeahorseEgg": "Seahorse (Egg)"
"questSeahorseDropSeahorseEgg": "Seahorse (Egg)",
"questAtom1Text": "Attack of the Mundane Questline, Pt. 1: Dish Disaster!",
"questAtom1Notes": "You reach the shores of Washed-Up Lake for some well-earned relaxation... But the lake is polluted with unwashed dishes! How did this happen? Well, you simply cannot allow the lake to be in this state. There is only one thing you can do: clean the dishes and save your vacation spot! Better find some soap to clean up this mess. A lot of soap...",
"questAtom1CollectSoapBars": "Bars of Soap",
"questAtom1Drop": "The SnackLess Monster (Scroll)",
"questAtom2Text": "Attack of the Mundane Questline, Pt. 2: The SnackLess Monster",
"questAtom2Notes": "Phew, this place is looking a lot nicer with all these dishes cleaned. Maybe, you can finally have some fun now. Oh - there seems to be a pizza box floating in the lake. Well, what's one more thing to clean really? But alas, it is no mere pizza box! With a sudden rush the box lifts from the water to reveal itself to be the head of a monster. It cannot be! The fabled SnackLess Monster?! It is said it has existed hidden in the lake since prehistoric times: a creature spawned from the leftover food and trash of the ancient Habiticans. Yuck!",
"questAtom2Boss": "The SnackLess Monster",
"questAtom2Drop": "The Laundromancer Scroll (Scroll)",
"questAtom3Text": "Attack of the Mundane Questline, Pt. 3: The Laundromancer",
"questAtom3Notes": "With a deafening cry, and five delicious types of cheese bursting from its mouth, the SnackLess Monster falls to pieces. \"HOW DARE YOU!\" booms a voice from beneath the water's surface. A robed, blue figure emerges from the water, wielding a magic toilet brush. Filthy laundry begins to bubble up to the surface of the lake. \"I am the Laundromancer!\" he angrily announces. \"You have some nerve - washing my delightfully dirty dishes, destroying my pet, and entering my domain with such clean clothes. Prepare to feel the soggy wrath of my anti-laundry magic!\"",
"questAtom3Completion": "The wicked Laundromancer has been defeated! Clean laundry falls in piles all around you. Things are looking much better around here. As you begin to wade through the freshly pressed armor, a glint of metal catches your eye, and your gaze falls upon a gleaming helm. The original owner of this shining item may be unknown, but as you put it on, you feel the warming presence of a generous spirit. Too bad they didn't sew on a nametag.",
"questAtom3Boss": "The Laundromancer",
"questAtom3DropPotion": "Basic Hatching Potion"
}

View file

@ -973,6 +973,55 @@ api.quests =
gp: 25
exp: 125
atom1:
text: t('questAtom1Text')
notes: t('questAtom1Notes')
value: 4
lvl: 15
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
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
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
_.each api.quests, (v,key) ->
_.defaults v, {key,canBuy:true}
b = v.boss

View file

@ -1145,14 +1145,16 @@ api.wrap = (user, main=true) ->
if user.items.eggs["Wolf"] > 0 then user.items.eggs["Wolf"]++ else user.items.eggs["Wolf"] = 1
if !user.flags.classSelected and user.stats.lvl >= 10
user.flags.classSelected
if !user.flags.levelDrops?.vice1 and user.stats.lvl >= 30
user.items.quests.vice1 ?= 0
user.items.quests.vice1++
(user.flags.levelDrops ?= {}).vice1 = true
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)
# Level Drops
_.each {vice1:30, atom1:15}, (lvl,k)->
if !user.flags.levelDrops?[k] and user.stats.lvl >= lvl
user.items.quests[k] ?= 0
user.items.quests[k]++
(user.flags.levelDrops ?= {})[k] = true
user.markModified? 'flags.levelDrops'
user._tmp.drop = _.defaults content.quests[k],
type: 'Quest'
dialog: i18n.t('messageFoundQuest', {questText: content.quests[k].text(req.language)}, req.language)
if !user.flags.rebirthEnabled and (user.stats.lvl >= 50 or user.achievements.ultimateGear or user.achievements.beastMaster)
user.flags.rebirthEnabled = true
if user.stats.lvl >= 100 and !user.flags.freeRebirth