refactor(i18n): use strings for content

This commit is contained in:
Matteo Pagliazzi 2014-03-10 15:26:05 +01:00
parent 626352e04b
commit d242ee3291
12 changed files with 72 additions and 52 deletions

View file

@ -104,7 +104,7 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User',
var food = $scope.selectedFood
if (food.key == 'Saddle') {
if (!$window.confirm(window.env.t('useSaddle', {pet: pet}))) return;
} else if (!$window.confirm(window.env.t('feedPet', {name: petDisplayName, article: food.article, text: food.text}))) {
} else if (!$window.confirm(window.env.t('feedPet', {name: petDisplayName, article: food.article, text: food.text()}))) {
return;
}
User.user.ops.feed({params:{pet: pet, food: food.key}});
@ -124,7 +124,7 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User',
var item = Content.quests[quest];
var completedPrevious = !item.previous || (User.user.achievements.quests && User.user.achievements.quests[item.previous]);
if (!completedPrevious)
return alert(window.env.t('mustComplete', {quest: $rootScope.Content.quests[item.previous].text}));
return alert(window.env.t('mustComplete', {quest: $rootScope.Content.quests[item.previous].text()}));
if (item.lvl && item.lvl > user.stats.lvl)
return alert(window.env.t('mustLevel', {level: item.lvl}));
$rootScope.selectedQuest = item;

View file

@ -204,11 +204,11 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$
$http.post('/api/v2/user/class/cast/'+spell.key+'?targetType='+type+'&targetId='+targetId)
.success(function(){
var msg = window.env.t('youCast', {spell: spell.text});
var msg = window.env.t('youCast', {spell: spell.text()});
switch (type) {
case 'task': msg = window.env.t('youCastTarget', {spell: spell.text, target: target.text});break;
case 'user': msg = window.env.t('youCastTarget', {spell: spell.text, target: target.profile.name});break;
case 'party': msg = window.env.t('youCastParty', {spell: spell.text});break;
case 'task': msg = window.env.t('youCastTarget', {spell: spell.text(), target: target.text});break;
case 'user': msg = window.env.t('youCastTarget', {spell: spell.text(), target: target.profile.name});break;
case 'party': msg = window.env.t('youCastParty', {spell: spell.text()});break;
}
Notification.text(msg);
});

View file

@ -336,7 +336,7 @@ api.cast = function(req, res, next) {
if (group) {
series.push(function(cb2){
var message = '`'+user.profile.name+' casts '+spell.text + (targetType=='user' ? ' on '+found.profile.name : ' for the party')+'.`';
var message = '`'+user.profile.name+' casts '+spell.text() + (targetType=='user' ? ' on '+found.profile.name : ' for the party')+'.`';
group.sendChat(message);
group.save(cb2);
})

View file

@ -305,14 +305,14 @@ var UserSchema = new Schema({
id: { type: String, 'default': shared.uuid },
name: String,
challenge: String
}], 'default': shared.content.userDefaults.tags},
}]},
challenges: [{type: 'String', ref:'Challenge'}],
habits: {type:[TaskSchemas.HabitSchema], 'default': shared.content.userDefaults.habits},
dailys: {type:[TaskSchemas.DailySchema], 'default': shared.content.userDefaults.dailys},
todos: {type:[TaskSchemas.TodoSchema], 'default': shared.content.userDefaults.todos},
rewards: {type:[TaskSchemas.RewardSchema], 'default': shared.content.userDefaults.rewards},
habits: {type:[TaskSchemas.HabitSchema]},
dailys: {type:[TaskSchemas.DailySchema]},
todos: {type:[TaskSchemas.TodoSchema]},
rewards: {type:[TaskSchemas.RewardSchema]},
extra: Schema.Types.Mixed
@ -348,6 +348,27 @@ UserSchema.post('init', function(doc){
UserSchema.pre('save', function(next) {
// Populate new users with default content
if (this.isNew){
//TODO for some reason this doesn't work here: `_.merge(this, shared.content.userDefaults);`
var self = this;
_.each('habits', 'dailys', 'todos', 'rewards', 'tags', function(taskType){
self.taskType = _.map(shared.content.userDefaults[taskType], function(task){
var newTask = task;
// Render task's text and notes in user's language
newTask.text = task.text();
newTask.notes = task.notes();
return newTask;
});
});
// tasks automatically get id=helpers.uuid() from TaskSchema id.default, but tags are Schema.Types.Mixed - so we need to manually invoke here
_.each(this.tags, function(tag){tag.id = shared.uuid();})
}
//this.markModified('tasks');
if (_.isNaN(this.preferences.dayStart) || this.preferences.dayStart < 0 || this.preferences.dayStart > 23) {
this.preferences.dayStart = 0;

View file

@ -32,15 +32,15 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
p.muted(ng-show='eggCount < 1')=env.t('noEggs')
div(ng-repeat='(egg,points) in ownedItems(user.items.eggs)')
//TODO move positioning this styling to css
button.customize-option(popover='{{Content.eggs[egg].notes}}', popover-title='{{Content.eggs[egg].text}} Egg', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseEgg(egg)', class='Pet_Egg_{{egg}}', ng-class='{selectableInventory: selectedPotion && !(user.items.pets[egg+"-"+selectedPotion.key]>0)}')
button.customize-option(popover='{{Content.eggs[egg].notes()}}', popover-title='{{Content.eggs[egg].text()}} Egg', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseEgg(egg)', class='Pet_Egg_{{egg}}', ng-class='{selectableInventory: selectedPotion && !(user.items.pets[egg+"-"+selectedPotion.key]>0)}')
.badge.badge-info.stack-count {{points}}
//-p {{Content.eggs[egg].text}}
//-p {{Content.eggs[egg].text()}}
li.customize-menu
menu.hatchingPotion-menu(label=(env.t('hatchingPotions') + ' ({{potCount}})'))
p.muted(ng-show='potCount < 1')=env.t('noHatchingPotions')
div(ng-repeat='(pot,points) in ownedItems(user.items.hatchingPotions)')
button.customize-option(popover='{{Content.hatchingPotions[pot].notes}}', popover-title='{{Content.hatchingPotions[pot].text}} Potion', popover-trigger='mouseenter', popover-placement='right', ng-click='choosePotion(pot)', class='Pet_HatchingPotion_{{pot}}', ng-class='{selectableInventory: selectedEgg && !(user.items.pets[selectedEgg.key+"-"+pot]>0)}')
button.customize-option(popover='{{Content.hatchingPotions[pot].notes()}}', popover-title='{{Content.hatchingPotions[pot].text()}} Potion', popover-trigger='mouseenter', popover-placement='right', ng-click='choosePotion(pot)', class='Pet_HatchingPotion_{{pot}}', ng-class='{selectableInventory: selectedEgg && !(user.items.pets[selectedEgg.key+"-"+pot]>0)}')
.badge.badge-info.stack-count {{points}}
li.customize-menu
@ -48,20 +48,20 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
p.muted(ng-show='questCount < 1')=env.t('noScrolls')
p.muted!=env.t('scrollsText1') + ' <a href="/#/options/groups/party">' + env.t('scrollsText2') + '</a>'
div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]')
button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes | htmlDecode}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}')
button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes() | htmlDecode}}", popover-title='{{quest.text()}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}')
.badge.badge-info.stack-count {{points}}
li.customize-menu
menu.pets-menu(label=env.t('food') + ' ({{foodCount}})')
p(ng-show='foodCount < 1')=env.t('noFood')
div(ng-repeat='(food,points) in ownedItems(user.items.food)')
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}}')
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')
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}}
li.customize-menu(ng-if='user.items.special.valentineReceived[0]')
@ -91,14 +91,14 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
.popover-content
p=env.t('welcomeMarket')
p
button.btn.btn-primary(ng-show='selectedEgg', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedEgg.text}}", gold: "{{selectedEgg.value}}"})
button.btn.btn-primary(ng-show='selectedPotion', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedPotion.text}}", gold: "{{selectedPotion.value}}"})
button.btn.btn-primary(ng-show='selectedFood', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedFood.text}}", gold: "{{selectedFood.value}}"})
button.btn.btn-primary(ng-show='selectedEgg', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedEgg.text()}}", gold: "{{selectedEgg.value}}"})
button.btn.btn-primary(ng-show='selectedPotion', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedPotion.text()}}", gold: "{{selectedPotion.value}}"})
button.btn.btn-primary(ng-show='selectedFood', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedFood.text()}}", gold: "{{selectedFood.value}}"})
menu.inventory-list(type='list')
li.customize-menu
menu.pets-menu(label=env.t('eggs'))
div(ng-repeat='egg in Content.eggs', ng-if='egg.canBuy')
button.customize-option(popover='{{egg.notes}}', popover-title='{{egg.text}} Egg', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("eggs", egg)', class='Pet_Egg_{{egg.key}}')
button.customize-option(popover='{{egg.notes()}}', popover-title='{{egg.text()}} Egg', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("eggs", egg)', class='Pet_Egg_{{egg.key}}')
p
| {{egg.value}}
span.Pet_Currency_Gem1x.inline-gems
@ -121,7 +121,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
li.customize-menu
menu.pets-menu(label=env.t('hatchingPotions'))
div(ng-repeat='pot in Content.hatchingPotions')
button.customize-option(popover='{{pot.notes}}', popover-title='{{pot.text}} Potion', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("hatchingPotions", pot)', class='Pet_HatchingPotion_{{pot.key}}')
button.customize-option(popover='{{pot.notes()}}', popover-title='{{pot.text()}} Potion', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("hatchingPotions", pot)', class='Pet_HatchingPotion_{{pot.key}}')
p
| {{pot.value}}
span.Pet_Currency_Gem1x.inline-gems
@ -129,7 +129,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
li.customize-menu
menu.pets-menu(label=env.t('food'))
div(ng-repeat='food in Content.food', ng-if='food.canBuy')
button.customize-option(popover='{{food.notes}}', popover-title='{{food.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("food", food)', class='Pet_Food_{{food.key}}')
button.customize-option(popover='{{food.notes()}}', popover-title='{{food.text()}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("food", food)', class='Pet_Food_{{food.key}}')
p
| {{food.value}}
span.Pet_Currency_Gem1x.inline-gems
@ -138,7 +138,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
menu.pets-menu(label=env.t('quests'))
p.muted!=env.t('scrollsText1') + ' <a href="/#/options/groups/party">' + env.t('scrollsText2') + '</a>'
div(ng-repeat='quest in Content.quests', ng-if='quest.canBuy')
button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes | htmlDecode}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}')
button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes() | htmlDecode}}", popover-title='{{quest.text()}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}')
p
| {{quest.value}}
span.Pet_Currency_Gem1x.inline-gems
@ -151,7 +151,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
| 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')
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

@ -15,7 +15,7 @@ script(type='text/ng-template', id='partials/options.inventory.mounts.html')
menu.pets(type='list')
li.customize-menu(ng-repeat='egg in Content.eggs')
menu
div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.mountText}}', popover-placement='bottom', ng-init='mount = egg.key+"-"+potion.key')
div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text()}} {{egg.mountText()}}', popover-placement='bottom', ng-init='mount = egg.key+"-"+potion.key')
button(class="pet-button Mount_Head_{{mount}}", ng-show='user.items.mounts[mount]', ng-class='{active: user.items.currentMount == mount}', ng-click='chooseMount(egg.key, potion.key)')
//div(class='Mount_Head_{{mount}}')
button(class="pet-button pet-not-owned", ng-hide='user.items.mounts[mount]')
@ -33,7 +33,7 @@ mixin petList(source)
menu.pets(type='list')
li.customize-menu(ng-repeat='egg in #{source}')
menu
div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key')
div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text()}} {{egg.text()}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key')
button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)')
.progress(ng-show='!user.items.mounts[pet] && egg.key!="Egg"')
.progress-bar.progress-bar-success(style="width:{{user.items.pets[pet]/.5}}%")
@ -85,7 +85,7 @@ script(type='text/ng-template', id='partials/options.inventory.pets.html')
li.customize-menu
menu.pets-menu(label=env.t('food'))
div(ng-repeat='(food,points) in ownedItems(user.items.food)')
button.customize-option(popover-append-to-body='true', popover='{{Content.food[food].notes}}', popover-title='{{Content.food[food].text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='chooseFood(food)', class='Pet_Food_{{food}}')
button.customize-option(popover-append-to-body='true', popover='{{Content.food[food].notes()}}', popover-title='{{Content.food[food].text()}}', popover-trigger='mouseenter', popover-placement='left', ng-click='chooseFood(food)', class='Pet_Food_{{food}}')
.badge.badge-info.stack-count {{points}}
// Remove this once we have images in
p {{Content.food[food].text}}
p {{Content.food[food].text()}}

View file

@ -12,8 +12,8 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild
// ------ Bosses -------
.panel.panel-default(bindonce='group', ng-if='group.type==="party" && group.quest.key')
.panel-heading
h3.panel-title(ng-if='group.quest.active==false')=env.t('questInvitation') + ' {{Content.quests[group.quest.key].text}}'
h3.panel-title(ng-if='group.quest.active==true') {{Content.quests[group.quest.key].text}}
h3.panel-title(ng-if='group.quest.active==false')=env.t('questInvitation') + ' {{Content.quests[group.quest.key].text()}}'
h3.panel-title(ng-if='group.quest.active==true') {{Content.quests[group.quest.key].text()}}
.panel-body.modal-fixed-height
div(ng-if='group.quest.active==false')
table.table.table-striped
@ -50,11 +50,11 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild
tr(ng-repeat='(k,v) in group.quest.progress.collect', class='quest_collected_{{v >= Content.quests[group.quest.key].collect[k].count}}')
td
div.pull-left(class='quest_{{group.quest.key}}_{{k}}')
| {{Content.quests[group.quest.key].collect[k].text}}
| {{Content.quests[group.quest.key].collect[k].text()}}
td
{{v}} / {{Content.quests[group.quest.key].collect[k].count}}
div(ng-bind-html='Content.quests[group.quest.key].notes')
div(ng-bind-html='Content.quests[group.quest.key].notes()')
hr
h5=env.t('participants')
table.table.table-striped

View file

@ -1,4 +1,3 @@
//Why is shown? Because of script here at line 24!!!!!!!!!
script(id='modals/buyGems.html', type='text/ng-template')
.modal-body
.buy-gems

View file

@ -5,7 +5,7 @@ script(type='text/ng-template', id='modals/dropsEnabled.html')
p
figure
.item-drop-icon(class='Pet_Egg_Wolf')
span!=env.t('firstDrop', {eggText: "{{Content.eggs.Wolf.text}}", eggNotes: "{{Content.eggs.Wolf.notes}}"})
span!=env.t('firstDrop', {eggText: "{{Content.eggs.Wolf.text()}}", eggNotes: "{{Content.eggs.Wolf.notes()}}"})
br
p
figure

View file

@ -3,7 +3,7 @@ script(id='partials/options.social.party.quest-rewards.html', type='text/ng-temp
h5 {{header}}
table.table.table-striped
tr(ng-repeat='drop in quest.drop.items')
td {{drop.text}}
td {{drop.text()}}
tr
td {{quest.drop.exp}}
=env.t('experience')
@ -13,20 +13,20 @@ script(id='partials/options.social.party.quest-rewards.html', type='text/ng-temp
script(type='text/ng-template', id='modals/questCompleted.html')
.modal-header
h4 "{{Content.quests[user.party.quest.completed].text}}"
h4 "{{Content.quests[user.party.quest.completed].text()}}"
=env.t('completed')
.modal-body
p {{Content.quests[user.party.quest.completed].completion}}
p {{Content.quests[user.party.quest.completed].completion()}}
quest-rewards(key='{{user.party.quest.completed}}', header=env.t('youReceived'))
.modal-footer
button.btn.btn-primary(ng-click='set({"party.quest.completed":""}); $close()')=env.t('accept')
script(type='text/ng-template', id='modals/showQuest.html')
.modal-header
h4 {{selectedQuest.text}}
h4 {{selectedQuest.text()}}
.modal-body
.pull-right(class='quest_{{selectedQuest.key}}')
div(ng-bind-html='selectedQuest.notes')
div(ng-bind-html='selectedQuest.notes()')
quest-rewards(key='{{selectedQuest.key}}')
hr
.npc_ian.pull-left
@ -38,10 +38,10 @@ script(type='text/ng-template', id='modals/showQuest.html')
script(type='text/ng-template', id='modals/buyQuest.html')
.modal-header
h4 {{selectedQuest.text}}
h4 {{selectedQuest.text()}}
.modal-body
.pull-right(class='quest_{{selectedQuest.key}}')
div(ng-bind-html='selectedQuest.notes')
div(ng-bind-html='selectedQuest.notes()')
quest-rewards(key='{{selectedQuest.key}}')
.modal-footer
button.btn.btn-default(ng-click='closeQuest(); $close()')=env.t('neverMind')
@ -50,9 +50,9 @@ script(type='text/ng-template', id='modals/buyQuest.html')
script(type='text/ng-template', id='modals/questInvitation.html')
.modal-header
h4=env.t('questInvitation')
|&nbsp;{{Content.quests[party.quest.key].text}}
|&nbsp;{{Content.quests[party.quest.key].text()}}
.modal-body
div(ng-bind-html='Content.quests[party.quest.key].notes')
div(ng-bind-html='Content.quests[party.quest.key].notes()')
quest-rewards(key='{{party.quest.key}}')
.modal-footer
button.btn.btn-default(ng-click='questHold = true; $close()')=env.t('askLater')

View file

@ -22,7 +22,7 @@ table.table.table-striped(ng-show='user.flags.itemsEnabled')
// FIXME this isn't refreshing properly. On first party modal, correct. Second party modal click gives the previous gear. It's always one behind.
tr(ng-repeat='(k,v) in profile.items.gear.equipped', ng-init='piece=Content.gear.flat[v]', ng-show='piece')
td
strong {{piece.text}}:&nbsp;
strong {{piece.text()}}:&nbsp;
span(ng-repeat='stat in ["str","con","per","int"]', ng-show='piece[stat]') {{piece[stat]}} {{stat.toUpperCase()}}&nbsp;
h4=env.t('attributes')

View file

@ -52,7 +52,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
// Events
ul.items.rewards(ng-if='main && list.type=="reward" && (user.items.special.snowball>0 || user.stats.buffs.snowball)')
li.task.reward-item(ng-if='user.items.special.snowball>0',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.snowball.notes}}')
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
@ -62,9 +62,9 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
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}}
p.task-text {{Content.spells.special.snowball.text()}}
li.task.reward-item(ng-if='user.stats.buffs.snowball',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.salt.notes}}')
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
@ -75,11 +75,11 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
span.shop_gold
// main content
span.shop_salt.shop-sprite.item-img
p.task-text {{Content.spells.special.salt.text}}
p.task-text {{Content.spells.special.salt.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-if='user.stats.lvl >= spell.lvl',popover-trigger='mouseenter', popover-placement='top', popover='{{spell.notes}}')
li.task.reward-item(ng-repeat='(k,spell) in Content.spells[user.stats.class]', ng-if='user.stats.lvl >= spell.lvl',popover-trigger='mouseenter', popover-placement='top', popover='{{spell.notes()}}')
.task-meta-controls
span.task-notes
span.glyphicon.glyphicon-comment
@ -91,7 +91,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
=env.t('mp')
// main content
span(ng-class='{"shop_{{spell.key}} shop-sprite item-img": true}')
p.task-text {{spell.text}}
p.task-text {{spell.text()}}
br