Merge pull request #4956 from SabreCat/shiny-seed

Shiny seed
This commit is contained in:
Sabe Jones 2015-04-01 23:40:41 -05:00
commit eddade48a4
27 changed files with 129 additions and 42 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -6,6 +6,8 @@
"annoyingFriendsText": "Got snowballed <%= snowballs %> times by party members.",
"alarmingFriends": "Alarming Friends",
"alarmingFriendsText": "Got spooked <%= spookDust %> times by party members.",
"agriculturalFriends": "Agricultural Friends",
"agriculturalFriendsText": "Got transformed into a flower <%= seeds %> times by party members.",
"valentineCard": "Valentine's Day Card",
"valentineCardNotes": "Send a Valentine's Day card to a party member.",
"valentine0": "\"Roses are red<%= lineBreak %>My Dailies are blue<%= lineBreak %>I'm happy that I'm<%= lineBreak %>In a Party with you!\"",

View file

@ -53,8 +53,13 @@
"spellSpecialSaltNotes": "Someone has snowballed you. Ha ha, very funny. Now get this snow off me!",
"spellSpecialSpookDustText": "Spooky Sparkles",
"spellSpecialSpookDustNotes": "Turn your friends into a floating blanket with eyes!",
"spellSpecialSpookDustNotes": "Turn a friend into a floating blanket with eyes!",
"spellSpecialOpaquePotionText": "Opaque Potion",
"spellSpecialOpaquePotionNotes": "Cancel the effects of Spooky Sparkles."
"spellSpecialOpaquePotionNotes": "Cancel the effects of Spooky Sparkles.",
"spellSpecialShinySeedText": "Shiny Seed",
"spellSpecialShinySeedNotes": "Turn a friend into a joyous flower!",
"spellSpecialPetalFreePotionText": "Petal-Free Potion",
"spellSpecialPetalFreePotionNotes": "Cancel the effects of a Shiny Seed."
}

View file

@ -693,6 +693,8 @@ api.spells =
notes: t('spellSpecialSnowballAuraNotes')
cast: (user, target) ->
target.stats.buffs.snowball = true
target.stats.buffs.spookDust = false
target.stats.buffs.shinySeed = false
target.achievements.snowball ?= 0
target.achievements.snowball++
user.items.special.snowball--
@ -715,7 +717,9 @@ api.spells =
target: 'user'
notes: t('spellSpecialSpookDustNotes')
cast: (user, target) ->
target.stats.buffs.snowball = false
target.stats.buffs.spookDust = true
target.stats.buffs.shinySeed = false
target.achievements.spookDust ?= 0
target.achievements.spookDust++
user.items.special.spookDust--
@ -731,6 +735,31 @@ api.spells =
user.stats.buffs.spookDust = false
user.stats.gp -= 5
shinySeed:
text: t('spellSpecialShinySeedText')
mana: 0
value: 15
target: 'user'
notes: t('spellSpecialShinySeedNotes')
cast: (user, target) ->
target.stats.buffs.snowball = false
target.stats.buffs.spookDust = false
target.stats.buffs.shinySeed = true
target.achievements.shinySeed ?= 0
target.achievements.shinySeed++
user.items.special.shinySeed--
petalFreePotion:
text: t('spellSpecialPetalFreePotionText')
mana: 0
value: 5
immediateUse: true
target: 'self'
notes: t('spellSpecialPetalFreePotionNotes')
cast: (user, target) ->
user.stats.buffs.shinySeed = false
user.stats.gp -= 5
nye:
text: t('nyeCard')
mana: 0

View file

@ -44,6 +44,7 @@ var UserSchema = new Schema({
veteran: Boolean,
snowball: Number,
spookDust: Number,
shinySeed: Number,
streak: Number,
challenges: Array,
quests: Schema.Types.Mixed,
@ -191,6 +192,7 @@ var UserSchema = new Schema({
special:{
snowball: {type: Number, 'default': 0},
spookDust: {type: Number, 'default': 0},
shinySeed: {type: Number, 'default': 0},
valentine: Number,
valentineReceived: Array, // array of strings, by sender name
nye: Number,
@ -356,7 +358,8 @@ var UserSchema = new Schema({
stealth: {type: Number, 'default': 0},
streaks: {type: Boolean, 'default': false},
snowball: {type: Boolean, 'default': false},
spookDust: {type: Boolean, 'default': false}
spookDust: {type: Boolean, 'default': false},
shinySeed: {type: Boolean, 'default': false}
},
training: {
int: {type: Number, 'default': 0},

View file

@ -53,13 +53,18 @@ script(type='text/ng-template', id='partials/options.inventory.seasonalshop.html
p
| {{::quest.value}}&nbsp;
span.Pet_Currency_Gem1x.inline-gems
// menu.pets-menu(label=env.t('seasonalItems'))
menu.pets-menu(label=env.t('seasonalItems'))
div
button.customize-option(popover='{{::Content.spells.special.shinySeed.notes()}}', popover-title='{{::Content.spells.special.shinySeed.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='purchase("special", Content.spells.special.shinySeed)', class='inventory_special_shinySeed')
p
| {{::Content.spells.special.shinySeed.value}}
span(class='shop_gold')
// div
button.customize-option(popover='{{::Content.spells.special.snowball.notes()}}', popover-title='{{::Content.spells.special.snowball.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='purchase("special", Content.spells.special.snowball)', class='inventory_special_snowball')
p
| {{::Content.spells.special.snowball.value}}
span(class='shop_gold')
div
// div
button.customize-option(popover='{{::Content.spells.special.nye.notes()}}', popover-title='{{::Content.spells.special.nye.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='castStart(Content.spells.special.nye)', class='inventory_special_nye')
p
| {{Content.spells.special.nye.value}}
@ -143,6 +148,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
.badge.badge-info.stack-count {{user.items.special.#{k}}}
+specialItem('snowball')
+specialItem('spookDust')
+specialItem('shinySeed')
div(ng-if='user.items.special.valentineReceived[0]')
button.customize-option(popover="Valentine's Day Card from {{User.user.items.special.valentineReceived[0]}}", popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='openModal("valentine")', class='inventory_special_valentine')

View file

@ -17,60 +17,62 @@ mixin avatar(opts)
span.snowman
span(ng-if='profile.stats.buffs.spookDust')
span.spookman
span(ng-if='!profile.stats.buffs.snowball && !profile.stats.buffs.spookDust')
span(class='avatar_flower_{{profile.stats.class}}')
span(ng-if='profile.stats.buffs.shinySeed')
span(class='avatar_floral_{{profile.stats.class}}')
span(ng-if='!profile.stats.buffs.snowball && !profile.stats.buffs.spookDust && !profile.stats.buffs.shinySeed')
// Back Accessory
span(class='{{profile.items.gear.equipped.back}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.back}}', ng-if='profile.preferences.costume')
span(class='{{profile.items.gear.equipped.back}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.back}}', ng-if='profile.preferences.costume')
// Avatar
span(class='skin_{{profile.preferences.skin}}', ng-if='!profile.preferences.sleep')
span(class='skin_{{profile.preferences.skin}}_sleep', ng-if='profile.preferences.sleep')
span(class='skin_{{profile.preferences.skin}}', ng-if='!profile.preferences.sleep')
span(class='skin_{{profile.preferences.skin}}_sleep', ng-if='profile.preferences.sleep')
// Shirt
span(class='{{profile.preferences.size}}_shirt_{{profile.preferences.shirt}}')
span(class='{{profile.preferences.size}}_shirt_{{profile.preferences.shirt}}')
// Armor
span(class='{{profile.preferences.size}}_{{profile.items.gear.equipped.armor}}', ng-if='!profile.preferences.costume')
span(class='{{profile.preferences.size}}_{{profile.items.gear.costume.armor}}', ng-if='profile.preferences.costume')
span(class='{{profile.preferences.size}}_{{profile.items.gear.equipped.armor}}', ng-if='!profile.preferences.costume')
span(class='{{profile.preferences.size}}_{{profile.items.gear.costume.armor}}', ng-if='profile.preferences.costume')
//- Cape collar
span(class='{{profile.items.gear.equipped.back}}_collar', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.back}}_collar', ng-if='profile.preferences.costume')
span(class='{{profile.items.gear.equipped.back}}_collar', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.back}}_collar', ng-if='profile.preferences.costume')
// Body
span(class='{{profile.items.gear.equipped.body}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.body}}', ng-if='profile.preferences.costume')
span(class='{{profile.items.gear.equipped.body}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.body}}', ng-if='profile.preferences.costume')
// Hair
span(class='head_0')
span(class='hair_base_{{profile.preferences.hair.base}}_{{profile.preferences.hair.color}}')
span(class='hair_bangs_{{profile.preferences.hair.bangs}}_{{profile.preferences.hair.color}}')
span(class='hair_mustache_{{profile.preferences.hair.mustache}}_{{profile.preferences.hair.color}}')
span(class='hair_beard_{{profile.preferences.hair.beard}}_{{profile.preferences.hair.color}}')
span(class='head_0')
span(class='hair_base_{{profile.preferences.hair.base}}_{{profile.preferences.hair.color}}')
span(class='hair_bangs_{{profile.preferences.hair.bangs}}_{{profile.preferences.hair.color}}')
span(class='hair_mustache_{{profile.preferences.hair.mustache}}_{{profile.preferences.hair.color}}')
span(class='hair_beard_{{profile.preferences.hair.beard}}_{{profile.preferences.hair.color}}')
// Eyewear
span(class='{{profile.items.gear.equipped.eyewear}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.eyewear}}', ng-if='profile.preferences.costume')
span(class='{{profile.items.gear.equipped.eyewear}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.eyewear}}', ng-if='profile.preferences.costume')
// Helm
span(class='{{profile.items.gear.equipped.head}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.head}}', ng-if='profile.preferences.costume')
span(class='{{profile.items.gear.equipped.head}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.head}}', ng-if='profile.preferences.costume')
// Head Accessory
span(class='{{profile.items.gear.equipped.headAccessory}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.headAccessory}}', ng-if='profile.preferences.costume')
span(class='{{profile.items.gear.equipped.headAccessory}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.headAccessory}}', ng-if='profile.preferences.costume')
// Flower
span(class='hair_flower_{{profile.preferences.hair.flower}}')
// Shield
span(class='{{profile.items.gear.equipped.shield}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.shield}}', ng-if='profile.preferences.costume')
span(class='{{profile.items.gear.equipped.shield}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.shield}}', ng-if='profile.preferences.costume')
// Weapon
span(class='{{profile.items.gear.equipped.weapon}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.weapon}}', ng-if='profile.preferences.costume')
span(class='{{profile.items.gear.equipped.weapon}}', ng-if='!profile.preferences.costume')
span(class='{{profile.items.gear.costume.weapon}}', ng-if='profile.preferences.costume')
// Mount Head

View file

@ -1,19 +1,51 @@
h5 4/1/2015 - HOSTILE FLOWER TAKEOVER OF JOY AND DOOM
h5 4/2/2015 - MARCH AND APRIL ITEM SETS; SHINY SEEDS; MESSAGE CHALLENGE CREATORS; ITEM DROP ICONS
hr
tr
td
h5 Joy and Doom to All!
p THE SPRING FLING HAS FLUNG TOO FAR! Run while you can, Habiticans! The floral theme has come to life and is taking over Habitica with horrifying cheer, repeat, the flowers are taking over HMMMPH MMPH MMMHPPPH....
.avatar_flower_wizard
p CELEBRATE FLOWER POWER.
h5 Last Chance for March Item Set
p Reminder: this is the final day to <a href='https://habitrpg.com/#/options/settings/subscription' target='_blank'>subscribe</a> and receive the Aquamarine Item Set! If you want the Aquamarine Eyewear or the Aquamarine Armor, now's the time! Thanks so much for your support <3
tr
td
h5 April Mystery Box
.inventory_present.pull-right
p Cool! What could it be? All Habiticans who are subscribed during the month of April will receive the April Mystery Item Set! It will be revealed on the 25th, so keep your eyes peeled. Thanks for supporting the site <3
p.small.muted by Lemoness
tr
td
h5 Shiny Seeds
.inventory_special_shinySeed.pull-right
p Phew! It was tough, but we overthrew the flowers that had taken over the site. However, they've left behind some of their Shiny Seeds!
br
p RESISTANCE IS SILLY.
p.small.muted by Lemoness and Baconsaur
p Throw a Shiny Seed at your friends and they will turn into a cheerful flower until their next cron! You can buy the Seeds in the <a href='https://habitrpg.com/#/options/inventory/seasonalshop' target='_blank'>Seasonal Shop</a> for gold. Don't want to be a flower? Just buy some Petal-Free Potion from the <a href='https://habitrpg.com/#/tasks'>Rewards Store</a> to reverse it.
br
p Shiny Seeds will be available in the <a href='https://habitrpg.com/#/options/inventory/seasonalshop' target='_blank'>Seasonal Shop</a> until April 30th!
p.small.muted by Lemoness and SabreCat
tr
td
h5 Message Challenge Creators
p Now on the Challenges page, you can to click on the challenge creator's name to view their profile, message them, or to see how long ago they last logged in if you are curious about whether the challenge might still be active.
p.small.muted by TheHollidayInn
tr
td
.promo_item_notif.pull-right
h5 Icons in Notifications
p Now, when you find an item from scoring a task, an image of the item appears in the drop notification. Instant gratification when that egg or potion you've been hunting for finally appears!
p.small.muted by TheHollidayInn
hr
a(href='/static/old-news', target='_blank') Read older news
mixin oldNews
h5 4/1/2015 - HOSTILE FLOWER TAKEOVER OF JOY AND DOOM
tr
td
h5 Joy and Doom to All!
p THE SPRING FLING HAS FLUNG TOO FAR! Run while you can, Habiticans! The floral theme has come to life and is taking over Habitica with horrifying cheer, repeat, the flowers are taking over HMMMPH MMPH MMMHPPPH....
.avatar_floral_wizard
p CELEBRATE FLOWER POWER.
br
p RESISTANCE IS SILLY.
p.small.muted by Lemoness and Baconsaur
h5 3/29/2015 - PASTEL SKIN, SHIMMER HAIR COLORS, SURVEY BADGES AWARDED, AND PARTY SORT ORDER
tr
td

View file

@ -178,6 +178,13 @@ div(ng-if='profile.achievements.spookDust')
=env.t('alarmingFriendsText', {spookDust: "{{profile.achievements.spookDust}}"})
hr
div(ng-if='profile.achievements.shinySeed')
.achievement.achievement-shinySeed
h5=env.t('agriculturalFriends')
small
=env.t('agriculturalFriendsText', {seeds: "{{profile.achievements.shinySeed}}"})
hr
div(ng-if='::profile.achievements.habitBirthdays')
.achievement.achievement-habitBirthday
h5=env.t('habitBirthday')

View file

@ -97,7 +97,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
p.task-text {{item.text()}}
// Events
ul.items.rewards(ng-if='main && list.type=="reward" && (user.items.special.snowball>0 || user.stats.buffs.snowball || user.items.special.spookDust>0 || user.stats.buffs.spookDust)')
ul.items.rewards(ng-if='main && list.type=="reward" && (user.items.special.snowball>0 || user.stats.buffs.snowball || user.items.special.spookDust>0 || user.stats.buffs.spookDust || user.items.special.shinySeed>0 || user.stats.buffs.shinySeed)')
mixin specialSpell(k,canceler)
li.task.reward-item(ng-if='#{canceler ? "user.stats.buffs."+canceler : "user.items.special."+k+">0"}',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.#{k}.notes()}}')
@ -118,9 +118,10 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
+specialSpell('snowball')
+specialSpell('spookDust')
+specialSpell('shinySeed')
+specialSpell('salt','snowball')
+specialSpell('opaquePotion','spookDust')
+specialSpell('petalFreePotion','shinySeed')
// Actual List
ul(class='{{list.type}}s main-list', ng-show='obj[list.type + "s"].length > 0', hrpg-sort-tasks)