mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-08-03 08:21:07 +00:00
feat(spookDust): add the spookDust special spell, like snowballs. Note: this is handled specially so spookDust can be bought with GP, is a WIP
This commit is contained in:
parent
e759dbe951
commit
0841cafd1f
6 changed files with 59 additions and 36 deletions
|
|
@ -87,6 +87,12 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User',
|
|||
}
|
||||
|
||||
$scope.purchase = function(type, item){
|
||||
if (item.key=='spookDust') {
|
||||
// FIXME stupid method of special-handling spookDust, since it can be purchased with gold and the system only accomodates gem-purchasable holiday spells
|
||||
if (user.stats.gp < item.value) return alert(window.env.t('messageNotEnoughGold'));
|
||||
return User.set({'stats.gp':user.stats.gp-item.value, 'items.special.spookDust':(user.items.special.spookDust || 0)+1});
|
||||
}
|
||||
|
||||
var gems = User.user.balance * 4;
|
||||
|
||||
if(gems < item.value) return $rootScope.openModal('buyGems');
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ var UserSchema = new Schema({
|
|||
beastMasterCount: Number,
|
||||
veteran: Boolean,
|
||||
snowball: Number,
|
||||
spookDust: Number,
|
||||
streak: Number,
|
||||
challenges: Array,
|
||||
quests: Schema.Types.Mixed,
|
||||
|
|
@ -155,6 +156,7 @@ var UserSchema = new Schema({
|
|||
|
||||
special:{
|
||||
snowball: {type: Number, 'default': 0},
|
||||
spookDust: {type: Number, 'default': 0},
|
||||
valentine: Number,
|
||||
valentineReceived: Array // array of strings, by sender name
|
||||
},
|
||||
|
|
@ -296,7 +298,8 @@ var UserSchema = new Schema({
|
|||
con: {type: Number, 'default': 0},
|
||||
stealth: {type: Number, 'default': 0},
|
||||
streaks: {type: Boolean, 'default': false},
|
||||
snowball: {type: Boolean, 'default': false}
|
||||
snowBall: {type: Boolean, 'default': false},
|
||||
spookDust: {type: Boolean, 'default': false}
|
||||
},
|
||||
training: {
|
||||
int: {type: Number, 'default': 0},
|
||||
|
|
|
|||
|
|
@ -58,11 +58,14 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
|
|||
button.customize-option(popover='{{::Content.food[food].notes()}}', popover-title='{{::Content.food[food].text()}}', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseFood(food)', class='Pet_Food_{{::food}}')
|
||||
.badge.badge-info.stack-count {{points}}
|
||||
|
||||
li.customize-menu(ng-if='user.items.special.snowball')
|
||||
menu.pets-menu(label=env.t('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}}
|
||||
mixin specialItem(k)
|
||||
li.customize-menu(ng-if='user.items.special.#{k}')
|
||||
menu.pets-menu(label=env.t('special'))
|
||||
div
|
||||
button.customize-option(popover='{{::Content.special.#{k}.notes()}}', popover-title='{{::Content.special.#{k}.text()}}', popover-trigger='mouseenter', popover-placement='right', ng-click='castStart(Content.special.#{k})', class='inventory_special_#{k}')
|
||||
.badge.badge-info.stack-count {{user.items.special.#{k}}}
|
||||
+specialItem('snowball')
|
||||
+specialItem('spookDust')
|
||||
|
||||
li.customize-menu(ng-if='user.items.special.valentineReceived[0]')
|
||||
menu.pets-menu(label=env.t('valentineCard'))
|
||||
|
|
@ -142,11 +145,15 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
|
|||
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
|
||||
mixin buySpecialSpell(k,gp)
|
||||
div
|
||||
button.customize-option(popover='{{::Content.spells.special.#{k}.notes()}}', popover-title='{{::Content.spells.special.#{k}.text()}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("special", Content.spells.special.#{k})', class='inventory_special_#{k}')
|
||||
p
|
||||
| {{::Content.spells.special.#{k}.value}}
|
||||
span(class='#{gp ? "shop_gold" : "Pet_Currency_Gem1x inline-gems"}')
|
||||
//-+buySpecialSpell('snowball',false)
|
||||
+buySpecialSpell('spookDust',true)
|
||||
|
||||
div(ng-show='user.flags.rebirthEnabled')
|
||||
button.customize-option(popover=env.t('rebirthPop'), popover-title=env.t('rebirthName'), popover-trigger='mouseenter', popover-placement='left', ng-click='openModal("rebirth")', class='rebirth_orb')
|
||||
p(ng-show='user.stats.lvl < 100')
|
||||
|
|
|
|||
|
|
@ -13,7 +13,9 @@ mixin avatar(opts)
|
|||
|
||||
span(ng-if='profile.stats.buffs.snowball')
|
||||
span.snowman
|
||||
span(ng-if='!profile.stats.buffs.snowball')
|
||||
span(ng-if='profile.stats.buffs.spookDust')
|
||||
span.spookman
|
||||
span(ng-if='!profile.stats.buffs.snowball && !profile.stats.buffs.spookDust')
|
||||
// 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')
|
||||
|
|
|
|||
|
|
@ -143,6 +143,13 @@ div(ng-if='profile.achievements.snowball')
|
|||
=env.t('annoyingFriendsText', {snowballs: "{{profile.achievements.snowball}}"})
|
||||
hr
|
||||
|
||||
div(ng-if='profile.achievements.spookDust')
|
||||
.achievement.achievement-spookDust
|
||||
h5=env.t('alarmingFriends')
|
||||
small
|
||||
=env.t('alarmingFriendsText', {spookDust: "{{profile.achievements.spookDust}}"})
|
||||
hr
|
||||
|
||||
div(ng-if='::profile.achievements.habitBirthday')
|
||||
.achievement.achievement-habitBirthday
|
||||
h5=env.t('habitBirthday')
|
||||
|
|
|
|||
|
|
@ -50,32 +50,30 @@ 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)')
|
||||
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)')
|
||||
|
||||
li.task.reward-item(ng-if='user.items.special.snowball>0',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.snowball.notes()}}')
|
||||
.task-meta-controls
|
||||
span.task-notes
|
||||
span.glyphicon.glyphicon-comment
|
||||
//left-hand size commands
|
||||
.task-controls
|
||||
a.money.btn-buy.item-btn(ng-click='castStart(Content.spells.special.snowball)')
|
||||
span.reward-cost {{user.items.special.snowball}}
|
||||
span.shop_snowball(style='display:inline-block;vertical-align:top;')
|
||||
// main content
|
||||
p.task-text {{Content.spells.special.snowball.text()}}
|
||||
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()}}')
|
||||
.task-meta-controls
|
||||
span.task-notes
|
||||
span.glyphicon.glyphicon-comment
|
||||
//left-hand size commands
|
||||
.task-controls
|
||||
a.money.btn-buy.item-btn(ng-click='castStart(Content.spells.special.#{k})')
|
||||
if canceler
|
||||
span.reward-cost {{Content.spells.special.#{k}.value}}
|
||||
span.shop_gold
|
||||
else
|
||||
span.reward-cost {{user.items.special.#{k}}}
|
||||
span(class='shop_#{k}',style='display:inline-block;vertical-align:top;')
|
||||
// main content
|
||||
p.task-text {{Content.spells.special.#{k}.text()}}
|
||||
|
||||
li.task.reward-item(ng-if='user.stats.buffs.snowball',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.salt.notes()}}')
|
||||
.task-meta-controls
|
||||
span.task-notes
|
||||
span.glyphicon.glyphicon-comment
|
||||
//left-hand size commands
|
||||
.task-controls
|
||||
a.money.btn-buy.item-btn(ng-click='castStart(Content.spells.special.salt)')
|
||||
span.reward-cost {{Content.spells.special.salt.value}}
|
||||
span.shop_gold
|
||||
// main content
|
||||
span.shop_salt.shop-sprite.item-img
|
||||
p.task-text {{Content.spells.special.salt.text()}}
|
||||
+specialSpell('snowball')
|
||||
+specialSpell('spookDust')
|
||||
|
||||
+specialSpell('salt','snowball')
|
||||
+specialSpell('opaquePotion','spookDust')
|
||||
|
||||
// Spells
|
||||
ul.items(ng-if='main && list.type=="reward" && user.stats.class && !user.preferences.disableClasses')
|
||||
|
|
|
|||
Loading…
Reference in a new issue