winter event! npcs, snowball=>snowman, new hairs/beards. Fixes to beard/chin overlays. move Fortify Service => "Fortify Potion" Special. @sabrecat let me know what you think: http://gyazo.com/55cd424f104b8f3acb557b99d918cb4b). Sorry for mixing concerns in this commit, some rebase difficulties

This commit is contained in:
Tyler Renelle 2013-12-20 10:25:23 -07:00
parent f4fca98bd1
commit 676112c1b5
8 changed files with 73 additions and 35 deletions

View file

@ -302,7 +302,7 @@
"_commentitemsother" : "OTHER ITEMS",
"healthPotionName" : "Health Potion",
"healthPotionNotes" : "Recover 15 HP Instantly",
"rerollName" : "Fortify",
"rerollName" : "Fortify Potion",
"rerollNotes" : "Resets your task values back to yellow. Useful when everything's red and it's hard to stay alive.",
"rerollModelHeader" : "Reset Your Tasks",
"rerollModelText1" : "Highly discouraged because red tasks provide good incentive to improve",

View file

@ -84,7 +84,7 @@ menu.pets div
margin-top:1em
p
text-align:center
width:6em
//width:6em
margin-top:-.5em
.hatchingPotion-menu > div
display:inline-block

View file

@ -299,7 +299,8 @@ api.buyGemsPaypalIPN = function(req, res) {
api.cast = function(req, res) {
var user = res.locals.user;
var type = req.body.type, target = req.body.target;
var spell = shared.content.spells[user.stats.class][req.params.spell];
var klass = req.params.spell == 'snowball' ? 'special' : user.stats.class
var spell = shared.content.spells[klass][req.params.spell];
var done = function(){
var err = arguments[0];

View file

@ -62,9 +62,7 @@ var UserSchema = new Schema({
backer: {
tier: Number,
//admin: Boolean, // FIXME migrate to contributor.admin
npc: String,
//contributor: String, // FIXME migrate to contributor.text
tokensApplied: Boolean
},
@ -82,7 +80,7 @@ var UserSchema = new Schema({
ads: {type: Boolean, 'default': false},
skin: {type: Schema.Types.Mixed, 'default': {}}, // eg, {skeleton: true, pumpkin: true, eb052b: true}
hair: {type: Schema.Types.Mixed, 'default': {}},
shirt: {type: Schema.Types.Mixed, 'default': {}}
shirt: {type: Schema.Types.Mixed, 'default': {}},
},
flags: {
@ -128,6 +126,10 @@ var UserSchema = new Schema({
},
},
special:{
snowball: {type: Number, 'default': 0}
},
// -------------- Animals -------------------
// Complex bit here. The result looks like:
// pets: {
@ -245,7 +247,8 @@ var UserSchema = new Schema({
per: Number,
con: Number,
stealth: Number,
streaks: Boolean
streaks: Boolean,
snowball: Boolean
}
},
tags: [

View file

@ -47,6 +47,12 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
.badge.badge-info.stack-count {{points}}
//-p {{food}}
li.customize-menu(ng-if='user.items.special.snowball')
menu.pets-menu(label='Special')
div
button.customize-option(popover='{{Content.special.snowball.notes}}', popover-title='{{Content.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='castStart(Content.special.snowball)', class='inventory_special_snowball')
.badge.badge-info.stack-count {{user.items.special.snowball}}
.span6
h2 Market
.row-fluid
@ -94,17 +100,21 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
p
| {{food.value}}
span.Pet_Currency_Gem1x.inline-gems
menu.pets-menu(label='Saddle')
li.customize-menu
menu.pets-menu(label='Special')
div
button.customize-option(popover='{{Content.food.Saddle.notes}}', popover-title='{{Content.food.Saddle.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("food", Content.food.Saddle)', class='Pet_Food_{{Content.food.Saddle.name}}')
p
| {{Content.food.Saddle.value}}
span.Pet_Currency_Gem1x.inline-gems
li.customize-menu
menu.pets-menu(label='Services')
div
// Once grunt-spritesmith is merged, let's use https://github.com/browserquest/BrowserQuest/blob/master/client/img/1/item-firepotion.png
button.btn(popover='Return all tasks to neutral value (yellow color), and restore all lost Health.', popover-title=env.t('rerollName'), popover-trigger='mouseenter', popover-placement='left', ng-click='modals.reroll = true')
| Fortify 4
button.customize-option(popover='Return all tasks to neutral value (yellow color), and restore all lost Health.', popover-title=env.t('rerollName'), popover-trigger='mouseenter', popover-placement='left', ng-click='modals.reroll = true', class='inventory_special_fortify')
p
| 4
span.Pet_Currency_Gem1x.inline-gems
div
button.customize-option(popover='{{Content.spells.special.snowball.notes}}', popover-title='{{Content.spells.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("special", Content.spells.special.snowball)', class='inventory_special_snowball')
p
| {{Content.spells.special.snowball.value}}
span.Pet_Currency_Gem1x.inline-gems

View file

@ -36,13 +36,19 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template')
button(type='button', class='customize-option', style='width: 40px; height: 40px; background-color:#cfb853;', ng-click='set({"preferences.hair.color": "blond"})')
button(type='button', class='customize-option', style='width: 40px; height: 40px; background-color:#ec720f;', ng-click='set({"preferences.hair.color": "red" })')
button(type='button', class='customize-option', style='width: 40px; height: 40px; background-color:#2e2e2e;', ng-click='set({"preferences.hair.color": "black"})')
li.customize-menu
menu(label='Winter Colors')
button(type='button', ng-class='{locked: !user.purchased.hair.color.candycane}', class='customize-option hair_bangs_1_candycane', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.candycane")')
button(type='button', ng-class='{locked: !user.purchased.hair.color.frost}', class='customize-option hair_bangs_1_frost', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.frost")')
button(type='button', ng-class='{locked: !user.purchased.hair.color.winternight}', class='customize-option hair_bangs_1_winternight', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.winternight")')
button(type='button', ng-class='{locked: !user.purchased.hair.color.holly}', class='customize-option hair_bangs_1_holly', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.holly")')
button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.color.candycane && user.purchased.hair.color.frost && user.purchased.hair.color.winternight && user.purchased.hair.color.holly', ng-click='unlock("hair.color.candycane,hair.color.frost,hair.color.winternight,hair.color.holly")') Unlock Set - 5<span class="Pet_Currency_Gem1x inline-gems"/>
h5 Hair
// Bangs
li.customize-menu
menu(label='Bangs')
button(class='head_base_0 customize-option', type='button', ng-click='set({"preferences.hair.bangs":0})')
button(class='head_0 customize-option', type='button', ng-click='set({"preferences.hair.bangs":0})')
button(class='hair_bangs_1_{{user.preferences.hair.color}} customize-option', type='button', ng-click='set({"preferences.hair.bangs":1})')
button(class='hair_bangs_2_{{user.preferences.hair.color}} customize-option', type='button', ng-click='set({"preferences.hair.bangs":2})')
button(class='hair_bangs_3_{{user.preferences.hair.color}} customize-option', type='button', ng-click='set({"preferences.hair.bangs":3})')
@ -50,7 +56,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template')
// Base
li.customize-menu
menu(label='Base')
button(class='head_base_0 customize-option', type='button', ng-click='set({"preferences.hair.base":0})')
button(class='head_0 customize-option', type='button', ng-click='set({"preferences.hair.base":0})')
button(class='hair_base_1_{{user.preferences.hair.color}} customize-option', type='button', ng-click='set({"preferences.hair.base":1})')
button(class='hair_base_2_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.base.2}', ng-click='unlock("hair.base.2")')
button(class='hair_base_3_{{user.preferences.hair.color}} customize-option', type='button', ng-click='set({"preferences.hair.base":3})')
@ -67,7 +73,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template')
// Beard
li.customize-menu
menu(label='Beard')
button(class='head_base_0 customize-option', type='button', ng-click='set({"preferences.hair.beard":0})')
button(class='head_0 customize-option', type='button', ng-click='set({"preferences.hair.beard":0})')
button(class='hair_beard_1_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.beard.1}', ng-click='unlock("hair.beard.1")')
button(class='hair_beard_2_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.beard.2}', ng-click='unlock("hair.beard.2")')
button(class='hair_beard_3_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.beard.3}', ng-click='unlock("hair.beard.3")')
@ -75,7 +81,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template')
// Mustache
li.customize-menu
menu(label='Mustache')
button(class='head_base_0 customize-option', type='button', ng-click='set({"preferences.hair.mustache":0})')
button(class='head_0 customize-option', type='button', ng-click='set({"preferences.hair.mustache":0})')
button(class='hair_mustache_1_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.mustache.1}', ng-click='unlock("hair.mustache.1")')
button(class='hair_mustache_2_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.mustache.2}', ng-click='unlock("hair.mustache.2")')

View file

@ -8,29 +8,32 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember(
// Mount Body
span(ng-if='profile.items.currentMount', class='Mount_Body_{{profile.items.currentMount}}')
// Avatar
span(class='skin_{{profile.preferences.skin}}')
span(ng-if='profile.stats.buffs.snowball')
span.snowman
span(ng-if='!profile.stats.buffs.snowball')
// Avatar
span(class='skin_{{profile.preferences.skin}}')
span(class='{{profile.preferences.size}}_shirt_{{profile.preferences.shirt}}')
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}}_shirt_{{profile.preferences.shirt}}')
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='head_base_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='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_beard_{{profile.preferences.hair.beard}}_{{profile.preferences.hair.color}}')
span(class='hair_mustache_{{profile.preferences.hair.mustache}}_{{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='{{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')
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')
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

@ -60,6 +60,21 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
span(bo-class='{"shop_{{item.key}} shop-sprite item-img": true}')
p.task-text {{item.text}}
// Snowball (event spells?)
ul.items.rewards(ng-if='main && list.type=="reward" && user.items.special.snowball>0')
li.task.reward-item
.task-meta-controls
span.task-notes(popover-trigger='mouseenter', popover-placement='left', popover='{{Content.spells.special.snowball.notes}}', popover-title='{{Content.spells.special.snowball.text}}')
i.icon-comment
//left-hand size commands
.task-controls
a.money.btn-buy.item-btn(ng-click='castStart(Content.spells.special.snowball)')
span.reward-cost
strong {{user.items.special.snowball}}
// main content
span.shop_snowball.shop-sprite.item-img
p.task-text {{Content.spells.special.snowball.text}}
// Spells
ul.items(ng-if='main && list.type=="reward" && user.stats.class && !user.preferences.disableClasses')
li.task.reward-item(ng-repeat='(k,spell) in Content.spells[user.stats.class]', ng-show='user.stats.lvl >= spell.lvl')