feat(seasonal): Shiny Seed
|
After Width: | Height: | Size: 3.3 KiB |
BIN
common/img/sprites/spritesmith/misc/inventory_special_flower.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.4 KiB |
BIN
common/img/sprites/spritesmith/promo/promo_item_notif.png
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
common/img/sprites/spritesmith/shop/shop_flower.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
|
|
@ -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 <%= flowers %> 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!\"",
|
||||
|
|
|
|||
|
|
@ -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.",
|
||||
|
||||
"spellSpecialFlowerText": "Shiny Seed",
|
||||
"spellSpecialFlowerNotes": "Turn a friend into a joyous flower!",
|
||||
"spellSpecialPetalFreePotionText": "Petal-Free Potion",
|
||||
"spellSpecialPetalFreePotionNotes": "Cancel the effects of a Shiny Seed."
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.flower = 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.flower = 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
|
||||
|
||||
flower:
|
||||
text: t('spellSpecialFlowerText')
|
||||
mana: 0
|
||||
value: 15
|
||||
target: 'user'
|
||||
notes: t('spellSpecialFlowerNotes')
|
||||
cast: (user, target) ->
|
||||
target.stats.buffs.snowball = false
|
||||
target.stats.buffs.spookDust = false
|
||||
target.stats.buffs.flower = true
|
||||
target.achievements.flower ?= 0
|
||||
target.achievements.flower++
|
||||
user.items.special.flower--
|
||||
|
||||
petalFreePotion:
|
||||
text: t('spellSpecialPetalFreePotionText')
|
||||
mana: 0
|
||||
value: 5
|
||||
immediateUse: true
|
||||
target: 'self'
|
||||
notes: t('spellSpecialPetalFreePotionNotes')
|
||||
cast: (user, target) ->
|
||||
user.stats.buffs.flower = false
|
||||
user.stats.gp -= 5
|
||||
|
||||
nye:
|
||||
text: t('nyeCard')
|
||||
mana: 0
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ var UserSchema = new Schema({
|
|||
veteran: Boolean,
|
||||
snowball: Number,
|
||||
spookDust: Number,
|
||||
flower: 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},
|
||||
flower: {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},
|
||||
flower: {type: Boolean, 'default': false}
|
||||
},
|
||||
training: {
|
||||
int: {type: Number, 'default': 0},
|
||||
|
|
|
|||
|
|
@ -53,13 +53,18 @@ script(type='text/ng-template', id='partials/options.inventory.seasonalshop.html
|
|||
p
|
||||
| {{::quest.value}}
|
||||
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.flower.notes()}}', popover-title='{{::Content.spells.special.flower.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='purchase("special", Content.spells.special.flower)', class='inventory_special_flower')
|
||||
p
|
||||
| {{::Content.spells.special.flower.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('flower')
|
||||
|
||||
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')
|
||||
|
|
|
|||
|
|
@ -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(ng-if='profile.stats.buffs.flower')
|
||||
span(class='avatar_flower_{{profile.stats.class}}')
|
||||
span(ng-if='!profile.stats.buffs.snowball && !profile.stats.buffs.spookDust && !profile.stats.buffs.flower')
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -1,19 +1,49 @@
|
|||
h5 4/1/2015 - HOSTILE FLOWER TAKEOVER OF JOY AND DOOM
|
||||
h5 4/2/2015 - LAST CHANCE FOR MARCH ITEM SET; 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
|
||||
.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
|
||||
p Phew! Was that whole incident with the flowers just a colorful bad dream? But wait... what are these Shiny Seeds in the Seasonal Shop?
|
||||
br
|
||||
p RESISTANCE IS SILLY.
|
||||
p.small.muted by Lemoness and Baconsaur
|
||||
.inventory_special_flower.pull-right
|
||||
p Whatever you do, don't drop one of these on a party member! Or yourself! That could be floral, I mean, <i>dangerous.</i>
|
||||
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_flower_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
|
||||
|
|
|
|||
|
|
@ -178,6 +178,13 @@ div(ng-if='profile.achievements.spookDust')
|
|||
=env.t('alarmingFriendsText', {spookDust: "{{profile.achievements.spookDust}}"})
|
||||
hr
|
||||
|
||||
div(ng-if='profile.achievements.flower')
|
||||
.achievement.achievement-flower
|
||||
h5=env.t('agriculturalFriends')
|
||||
small
|
||||
=env.t('agriculturalFriendsText', {flowers: "{{profile.achievements.flower}}"})
|
||||
hr
|
||||
|
||||
div(ng-if='::profile.achievements.habitBirthdays')
|
||||
.achievement.achievement-habitBirthday
|
||||
h5=env.t('habitBirthday')
|
||||
|
|
|
|||
|
|
@ -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.flower>0 || user.stats.buffs.flower)')
|
||||
|
||||
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('flower')
|
||||
+specialSpell('salt','snowball')
|
||||
+specialSpell('opaquePotion','spookDust')
|
||||
+specialSpell('petalFreePotion','flower')
|
||||
|
||||
// Actual List
|
||||
ul(class='{{list.type}}s main-list', ng-show='obj[list.type + "s"].length > 0', hrpg-sort-tasks)
|
||||
|
|
|
|||