diff --git a/website/views/options/inventory/drops.jade b/website/views/options/inventory/drops.jade
new file mode 100644
index 0000000000..ddc2d4da16
--- /dev/null
+++ b/website/views/options/inventory/drops.jade
@@ -0,0 +1,185 @@
+.container-fluid
+ .row
+ .col-md-6
+ h2=env.t('inventory')
+ p.well=env.t('inventoryText')
+ menu.inventory-list(type='list')
+
+ li.customize-menu
+ menu.pets-menu(label=(env.t('eggs') + ' ({{eggCount}})'))
+ 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!=env.t("egg", {eggType: "{{::Content.eggs[egg].text()}}"}), popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', 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()}}
+
+ 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!=env.t("potion", {potionType: "{{::Content.hatchingPotions[pot].text()}}"}), popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', 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
+ menu.pets-menu(label=(env.t('quests') + ' ({{questCount}})'))
+ p.muted(ng-show='questCount < 1')=env.t('noScrolls')
+ p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + ''
+ div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]')
+ button.customize-option(data-popover-html="{{:: quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : questPopover(quest) | markdown}}", popover-title='{{::quest.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='showQuest(quest_key)', ng-class='(quest.previous && !user.achievements.quests[quest.previous]) ? "inventory_quest_scroll_locked inventory_quest_scroll_{{::quest.key}}_locked locked" : "inventory_quest_scroll inventory_quest_scroll_{{::quest.key}}"')
+ .badge.badge-info.stack-count {{points}}
+
+ li.customize-menu
+ menu.pets-menu(label=env.t('food') + ' ({{foodCount}})')
+ p.muted(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', popover-append-to-body='true', ng-click='chooseFood(food)', class='Pet_Food_{{::food}}')
+ .badge.badge-info.stack-count {{points}}
+
+
+ li.customize-menu
+ menu.pets-menu(label=env.t('special'))
+ mixin specialItem(k)
+ div(ng-if='user.items.special.#{k}')
+ button.customize-option(popover='{{::Content.special.#{k}.notes()}}', popover-title='{{::Content.special.#{k}.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='castStart(Content.special.#{k})', class='inventory_special_#{k}')
+ .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')
+ .badge.badge-info.stack-count {{user.items.special.valentineReceived.length}}
+
+ div(ng-if='user.purchased.plan.customerId || user.purchased.plan.mysteryItems.length')
+ button.customize-option(popover=env.t('subscriberItemText'), popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', class='inventory_present inventory_present_{{moment().format("MM")}}', ng-click="user.ops.openMysteryItem({})")
+ .badge.badge-info.stack-count {{user.purchased.plan.mysteryItems.length}}
+
+ div(ng-if='user.purchased.plan.consecutive.trinkets')
+ button.customize-option(popover=env.t('mysticHourglassPopover'), popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', class='inventory_special_trinket', ng-click="$state.go('options.inventory.timetravelers')")
+ .badge.badge-info.stack-count {{user.purchased.plan.consecutive.trinkets}}
+
+ div(ng-if='user.items.special.nyeReceived[0]')
+ button.customize-option(popover="New Year's Card from {{User.user.items.special.nyeReceived[0]}}", popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='openModal("nye")', class='inventory_special_nye')
+ .badge.badge-info.stack-count {{user.items.special.nyeReceived.length}}
+
+ .col-md-6.border-left
+ h2=env.t('market')
+ .row-fluid
+ table.npc_alex_container
+ tr
+ td
+ .pull-left(class="#{env.worldDmg.market ? 'npc_alex_broken' : 'npc_alex'}")
+ td
+ .popover.static-popover.fade.right.in
+ .arrow
+ h3.popover-title
+ a(target='_blank', href='http://www.kickstarter.com/profile/523661924')=env.t('alexander')
+ .popover-content
+ p=env.t('welcomeMarket')
+ p
+ button.btn.btn-primary(ng-show='selectedEgg', ng-click='sellInventory()')=env.t('sellEggForGold', {itemType: "{{selectedEgg.text()}}", gold: "{{selectedEgg.value}}"})
+ button.btn.btn-primary(ng-show='selectedPotion', ng-click='sellInventory()')=env.t('sellPotionForGold', {itemType: "{{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'))
+ p.muted!=env.t('dropsExplanation')
+
+ div(ng-repeat='egg in Content.eggs', ng-if='egg.canBuy')
+ button.customize-option(class='Pet_Egg_{{::egg.key}}',
+ popover='{{::egg.notes()}}', popover-append-to-body='true',
+ popover-title!=env.t("egg", {eggType: "{{::egg.text()}}"}),
+ popover-trigger='mouseenter', popover-placement='top',
+ ng-click='purchase("eggs", egg)', )
+ p {{::egg.value}}
+ span.Pet_Currency_Gem1x.inline-gems
+
+ //- buyable quest eggs. TODO: Get this from a collection so we don't have to maintain this ridiculous comma-delimited list
+ //- The hard part will be the trex stuff, since it is allowed to exist with two quests
+ each egg,quest in {gryphon:'Gryphon',hedgehog:'Hedgehog',ghost_stag:'Deer',rat:'Rat',octopus:'Octopus',dilatory_derby:'Seahorse',harpy:'Parrot',rooster:'Rooster',spider:'Spider',owl:'Owl',penguin:'Penguin',rock:'Rock',bunny:'Bunny',slime:'Slime',sheep:'Sheep',kraken:'Cuttlefish'}
+ div(ng-show='user.achievements.quests.#{quest} > 0')
+ button.customize-option(class='Pet_Egg_#{egg}',
+ popover='{{::Content.eggs.#{egg}.notes()}}', popover-append-to-body='true',
+ popover-title!=env.t("egg", {eggType: "{{::Content.eggs.#{egg}.text()}}"}),
+ popover-trigger='mouseenter', popover-placement='top',
+ ng-click='purchase("eggs", Content.eggs.#{egg})')
+ p {{::Content.eggs.#{egg}.value}}
+ span.Pet_Currency_Gem1x.inline-gems
+
+ div(ng-show='(user.achievements.quests.trex + user.achievements.quests.trex_undead) > 0')
+ button.customize-option(class='Pet_Egg_TRex',
+ popover='{{::Content.eggs.TRex.notes()}}', popover-append-to-body='true',
+ popover-title!=env.t("egg", {eggType: "{{Content.eggs.TRex.text()}}"}),
+ popover-trigger='mouseenter', popover-placement='top',
+ ng-click='purchase("eggs", Content.eggs.TRex)')
+ p {{::Content.eggs.TRex.value}}
+ span.Pet_Currency_Gem1x.inline-gems
+
+ li.customize-menu
+ menu.pets-menu(label=env.t('hatchingPotions'))
+ p.muted!=env.t('dropsExplanation')
+ div(ng-repeat='pot in Content.hatchingPotions')
+ button.customize-option(class='Pet_HatchingPotion_{{::pot.key}}',
+ popover='{{::pot.notes()}}', popover-append-to-body='true',
+ popover-title!=env.t("potion", {potionType: "{{::pot.text()}}"}),
+ popover-trigger='mouseenter', popover-placement='top',
+ ng-click='purchase("hatchingPotions", pot)')
+ p
+ | {{::pot.value}}
+ span.Pet_Currency_Gem1x.inline-gems
+
+ li.customize-menu
+ menu.pets-menu(label=env.t('food'))
+ p.muted!=env.t('dropsExplanation')
+ div(ng-repeat='food in Content.food', ng-if='food.canBuy')
+ button.customize-option(class='Pet_Food_{{::food.key}}',
+ popover='{{::food.notes()}}', popover-title='{{::food.text()}}',
+ popover-trigger='mouseenter', popover-placement='top',
+ popover-append-to-body='true',
+ ng-click='purchase("food", food)')
+ p
+ | {{::food.value}}
+ span.Pet_Currency_Gem1x.inline-gems
+
+ li.customize-menu
+ menu.pets-menu(label=env.t('quests'))
+ p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + ''
+ div(ng-repeat='quest in Content.quests', ng-if='quest.canBuy')
+ button.customize-option(data-popover-html="{{::quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : questPopover(quest) | markdown}}", popover-title='{{::quest.text()}}', popover-append-to-body="true", popover-trigger='mouseenter', ng-click='buyQuest(quest.key)', ng-class='(quest.previous && !user.achievements.quests[quest.previous]) ? "inventory_quest_scroll_locked inventory_quest_scroll_{{::quest.key}}_locked locked" : "inventory_quest_scroll inventory_quest_scroll_{{::quest.key}}"')
+ p
+ | {{::quest.value}}
+ span.Pet_Currency_Gem1x.inline-gems
+
+ li.customize-menu
+ menu.pets-menu(label=env.t('special'))
+ div
+ button.customize-option(popover=env.t('fortifyPop'), popover-title=env.t('fortifyName'), popover-trigger='mouseenter', popover-placement='top', popover-append-to-body='true', ng-click='openModal("reroll")', class='inventory_special_fortify')
+ p
+ | 4
+ span.Pet_Currency_Gem1x.inline-gems
+ div(ng-show='user.flags.rebirthEnabled')
+ button.customize-option(popover=env.t('rebirthPop'), popover-title=env.t('rebirthName'), popover-trigger='mouseenter', popover-placement='top', popover-append-to-body='true', ng-click='openModal("rebirth")', class='rebirth_orb')
+ p(ng-show='user.stats.lvl < 100')
+ | 8
+ span.Pet_Currency_Gem1x.inline-gems
+ div(ng-show='petCount >= 90 || mountCount >= 90')
+ button.customize-option(popover=env.t('petKeyPop'), popover-title=env.t('petKeyName'), popover-trigger='mouseenter', popover-placement='top', popover-append-to-body='true', ng-click='openModal("pet-key", {size:"lg"})', class='pet_key')
+ p(ng-show='petCount < 90 || mountCount < 90 || !user.achievements.triadBingo')
+ | 4
+ span.Pet_Currency_Gem1x.inline-gems
+ div(ng-if='user.purchased.plan.customerId', ng-class='::{transparent:(Shared.planGemLimits.convCap + User.user.purchased.plan.consecutive.gemCapExtra - User.user.purchased.plan.gemsBought) < 1}')
+ button.customize-option(popover=env.t('subGemPop'), popover-title=env.t('subGemName'),
+ popover-trigger='mouseenter', popover-placement='top',
+ popover-append-to-body='true',
+ ng-click='user.ops.purchase({params:{type:"gems",key:"gem"}})')
+ span.Pet_Currency_Gem.inline-gems
+ .badge.badge-success.stack-count {{Shared.planGemLimits.convCap + User.user.purchased.plan.consecutive.gemCapExtra - User.user.purchased.plan.gemsBought}}
+ p
+ | 20
+ span.shop_gold
+ // div
+ button.customize-option(popover='{{::Content.spells.special.valentine.notes()}}', popover-title='{{::Content.spells.special.valentine.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='castStart(Content.spells.special.valentine)', class='inventory_special_valentine')
+ p
+ | {{Content.spells.special.valentine.value}}
+ span(class='shop_gold')
diff --git a/website/views/options/inventory/equipment.jade b/website/views/options/inventory/equipment.jade
new file mode 100644
index 0000000000..364b2fae61
--- /dev/null
+++ b/website/views/options/inventory/equipment.jade
@@ -0,0 +1,46 @@
+.container-fluid
+ .row
+ .col-md-6.border-right
+ h3.equipment-title.hint(popover-trigger='mouseenter',
+ popover-placement='right', popover-append-to-body='true',
+ popover=env.t('battleGearText'))=env.t('battleGear')
+
+ div
+ button.btn.btn-default(type="button", ng-click='dequip("battleGear");') {{env.t("unequipBattleGear")}}
+
+ li.customize-menu.inventory-gear
+ menu.pets-menu(label='{{::label}}', ng-show='gear[klass]',
+ ng-repeat='(klass,label) in {warrior:env.t("warrior"), wizard:env.t("mage"), rogue:env.t("rogue"), healer:env.t("healer"), special:env.t("special"), mystery:env.t("mystery"), armoire:env.t("armoireText")}')
+ div(ng-repeat='item in gear[klass]')
+ button.customize-option(class='shop_{{::item.key}}',
+ ng-class='{selectableInventory: user.items.gear.equipped[item.type] == item.key}',
+ ng-click='equip(item.key)',
+ popover='{{::item.notes()}}', popover-title='{{::item.text()}}',
+ popover-trigger='mouseenter', popover-placement='right',
+ popover-append-to-body='true')
+
+ .col-md-6
+ h3.equipment-title.hint(popover-trigger='mouseenter',
+ popover-placement='right', popover-append-to-body='true',
+ popover=env.t('costumeText'))=env.t('costume')
+
+ .checkbox.equipment-title
+ label
+ input(type="checkbox", ng-model="user.preferences.costume",
+ ng-change='set({"preferences.costume":user.preferences.costume ? true : false})')
+ |
+ =env.t('useCostume')
+ div
+ button.btn.btn-default(type="button", ng-click='dequip("costume");') {{env.t("unequipCostume")}}
+ button.btn.btn-default(type="button", ng-click='dequip("petMountBackground");') {{env.t("unequipPetMountBackground")}}
+
+ li.customize-menu(ng-if='user.preferences.costume')
+ menu.pets-menu(label='{{::label}}', ng-show='gear[klass]',
+ ng-repeat='(klass,label) in {warrior:env.t("warrior"), wizard:env.t("mage"), rogue:env.t("rogue"), healer:env.t("healer"), special:env.t("special"), mystery:env.t("mystery"), armoire:env.t("armoireText")}')
+ div(ng-repeat='item in gear[klass]')
+ button.customize-option(class='shop_{{::item.key}}',
+ ng-class='{selectableInventory: user.items.gear.costume[item.type] == item.key}',
+ popover='{{::item.notes()}}',
+ popover-title='{{::item.text()}}', popover-trigger='mouseenter',
+ popover-placement='right', popover-append-to-body='true',
+ ng-click='equip(item.key)')
diff --git a/website/views/options/inventory/index.jade b/website/views/options/inventory/index.jade
index 63959b1708..6df18e1e4b 100644
--- a/website/views/options/inventory/index.jade
+++ b/website/views/options/inventory/index.jade
@@ -1,27 +1,20 @@
-include ./inventory
-include ./stable
-
script(type='text/ng-template', id='partials/options.inventory.html')
- ul.options-menu
- li(ng-class="{ active: $state.includes('options.inventory.drops') }")
- a(ui-sref='options.inventory.drops')
- =env.t('market')
- li(ng-class="{ active: $state.includes('options.inventory.pets') }")
- a(ui-sref='options.inventory.pets')
- =env.t('pets')
- li(ng-class="{ active: $state.includes('options.inventory.mounts') }")
- a(ui-sref='options.inventory.mounts')
- =env.t('mounts')
- li.equipment-tab(ng-class="{ active: $state.includes('options.inventory.equipment') }")
- a(ui-sref='options.inventory.equipment')
- =env.t('equipment')
- li(ng-class="{ active: $state.includes('options.inventory.timetravelers') }")
- a(ui-sref='options.inventory.timetravelers')
- =env.t('timeTravelers')
- li(ng-class="{ active: $state.includes('options.inventory.seasonalshop') }")
- a(ui-sref='options.inventory.seasonalshop')
- =env.t('seasonalShop')
+ include ./menu
- .tab-content
- .tab-pane.active
- div(ui-view)
+script(type='text/ng-template', id='partials/options.inventory.equipment.html')
+ include ./equipment
+
+script(type='text/ng-template', id='partials/options.inventory.seasonalshop.html')
+ include ./seasonalShop
+
+script(type='text/ng-template', id='partials/options.inventory.timetravelers.html')
+ include ./timeTravelers
+
+script(type='text/ng-template', id='partials/options.inventory.drops.html')
+ include ./drops
+
+script(type='text/ng-template', id='partials/options.inventory.pets.html')
+ include ./pets
+
+script(type='text/ng-template', id='partials/options.inventory.mounts.html')
+ include ./mounts
diff --git a/website/views/options/inventory/inventory.jade b/website/views/options/inventory/inventory.jade
deleted file mode 100644
index 22bb1e0001..0000000000
--- a/website/views/options/inventory/inventory.jade
+++ /dev/null
@@ -1,260 +0,0 @@
-script(type='text/ng-template', id='partials/options.inventory.equipment.html')
- .container-fluid
- .row
- .col-md-6.border-right
- h3.equipment-title.hint(popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', popover=env.t('battleGearText'))=env.t('battleGear')
- div
- button.btn.btn-default(type="button", ng-click='dequip("battleGear");') {{env.t("unequipBattleGear")}}
- li.customize-menu.inventory-gear
- menu.pets-menu(label='{{::label}}', ng-repeat='(klass,label) in {warrior:env.t("warrior"), wizard:env.t("mage"), rogue:env.t("rogue"), healer:env.t("healer"), special:env.t("special"), mystery:env.t("mystery"), armoire:env.t("armoireText")}', ng-show='gear[klass]')
- div(ng-repeat='item in gear[klass]')
- button.customize-option(popover='{{::item.notes()}}', popover-title='{{::item.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='user.ops.equip({params:{key:item.key}})', class='shop_{{::item.key}}', ng-class='{selectableInventory: user.items.gear.equipped[item.type] == item.key}')
- .col-md-6
- h3.equipment-title.hint(popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', popover=env.t('costumeText'))=env.t('costume')
- .checkbox.equipment-title
- label
- input(type="checkbox", ng-model="user.preferences.costume", ng-change='set({"preferences.costume":user.preferences.costume ? true : false})')
- |
- =env.t('useCostume')
- div
- button.btn.btn-default(type="button", ng-click='dequip("costume");') {{env.t("unequipCostume")}}
- button.btn.btn-default(type="button", ng-click='dequip("petMountBackground");') {{env.t("unequipPetMountBackground")}}
- li.customize-menu(ng-if='user.preferences.costume')
- menu.pets-menu(label='{{::label}}', ng-repeat='(klass,label) in {warrior:env.t("warrior"), wizard:env.t("mage"), rogue:env.t("rogue"), healer:env.t("healer"), special:env.t("special"), mystery:env.t("mystery"), armoire:env.t("armoireText")}', ng-show='gear[klass]')
- div(ng-repeat='item in gear[klass]')
- button.customize-option(popover='{{::item.notes()}}', popover-title='{{::item.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='user.ops.equip({params:{type:"costume", key:item.key}})', class='shop_{{::item.key}}', ng-class='{selectableInventory: user.items.gear.costume[item.type] == item.key}')
-
-script(type='text/ng-template', id='partials/options.inventory.seasonalshop.html')
- .container-fluid
- .stable.row
- .col-md-2
- .seasonalshop_summer2015
- .col-md-10
- .popover.static-popover.fade.right.in
- .arrow
- h3.popover-title!=env.t('seasonalShopTitle', {linkStart:"", linkEnd: ""})
- .popover-content
- p!=env.t('seasonalShopSummerText')
- .well(ng-if='User.user.achievements.rebirths > 0')=env.t('seasonalShopRebirth')
- li.customize-menu.inventory-gear
- menu.pets-menu(label='{{::label}}', ng-repeat='(set,label) in ::{summerWarrior:env.t("daringSwashbucklerSet"), summerMage:env.t("emeraldMermageSet"), summerHealer:env.t("reefSeahealerSet"), summerRogue:env.t("roguishPirateSet")}')
- div(ng-repeat='item in ::getSeasonalShopArray(set)' ng-class="{transparent: user.items.gear.owned[item.key] === true ||user.items.gear.owned[item.key] === false}")
- button.customize-option(popover='{{::item.notes()}}', popover-title='{{::item.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='purchase(item.type,item)', class='shop_{{::item.key}}')
- .text-left
- | {{((item.specialClass == "wizard") && (item.type == "weapon")) + 1}}
- span.Pet_Currency_Gem1x.inline-gems
- // menu.pets-menu(label=env.t('quests'))
- div(ng-repeat='quest in ::getSeasonalShopQuests()')
- button.customize-option(data-popover-html="{{::quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : questPopover(quest) | markdown}}", popover-append-to-body='true', popover-title='{{::quest.text()}}', popover-trigger='mouseenter', popover-placement='right', ng-click='buyQuest(quest.key)', ng-class='(quest.previous && !user.achievements.quests[quest.previous]) ? "inventory_quest_scroll_locked inventory_quest_scroll_{{::quest.key}}_locked locked" : "inventory_quest_scroll inventory_quest_scroll_{{::quest.key}}"')
- p
- | {{::quest.value}}
- span.Pet_Currency_Gem1x.inline-gems
- // 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
- 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}}
- span(class='shop_gold')
-
-script(type='text/ng-template', id='partials/options.inventory.timetravelers.html')
- .container-fluid
- .stable.row(ng-if='user.purchased.plan.consecutive.trinkets <= 0')
- .col-md-2
- .npc_timetravelers
- .col-md-10
- .popover.static-popover.fade.right.in
- .arrow
- h3.popover-title!=env.t('timeTravelersTitleNoSub', {linkStartTyler: "", linkStartVicky: "", linkEnd: ""})
- .popover-content
- p!=env.t('timeTravelersPopoverNoSub', {linkStart: "", linkEnd: ""})
- .row.stable(ng-if='user.purchased.plan.consecutive.trinkets > 0')
- .col-md-2
- .npc_timetravelers_active
- .col-md-10
- .popover.static-popover.fade.right.in
- .arrow
- h3.popover-title=env.t('timeTravelersTitle')
- .popover-content
- .pull-right
- span.inventory_special_trinket.inline-gems
- b x{{user.purchased.plan.consecutive.trinkets}}
- p!=env.t('timeTravelersPopover', {linkStart: "", linkEnd: ""})
-
- .col-md-12
- li.customize-menu.inventory-gear
- menu.pets-menu(label='{{::set.text}}', ng-repeat='set in Content.timeTravelerStore(user.items.gear.owned)')
- div(ng-repeat='item in set.items')
- button.customize-option(popover='{{::item.notes()}}', popover-title='{{::item.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='user.ops.buyMysterySet({params:{key:set.key}})', class='shop_{{::item.key}}')
-
-script(type='text/ng-template', id='partials/options.inventory.drops.html')
- .container-fluid
- .row
- .col-md-6
- h2=env.t('inventory')
- p.well=env.t('inventoryText')
- menu.inventory-list(type='list')
-
- li.customize-menu
- menu.pets-menu(label=(env.t('eggs') + ' ({{eggCount}})'))
- 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!=env.t("egg", {eggType: "{{::Content.eggs[egg].text()}}"}), popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', 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()}}
-
- 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!=env.t("potion", {potionType: "{{::Content.hatchingPotions[pot].text()}}"}), popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', 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
- menu.pets-menu(label=(env.t('quests') + ' ({{questCount}})'))
- p.muted(ng-show='questCount < 1')=env.t('noScrolls')
- p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + ''
- div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]')
- button.customize-option(data-popover-html="{{:: quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : questPopover(quest) | markdown}}", popover-title='{{::quest.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='showQuest(quest_key)', ng-class='(quest.previous && !user.achievements.quests[quest.previous]) ? "inventory_quest_scroll_locked inventory_quest_scroll_{{::quest.key}}_locked locked" : "inventory_quest_scroll inventory_quest_scroll_{{::quest.key}}"')
- .badge.badge-info.stack-count {{points}}
-
- li.customize-menu
- menu.pets-menu(label=env.t('food') + ' ({{foodCount}})')
- p.muted(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', popover-append-to-body='true', ng-click='chooseFood(food)', class='Pet_Food_{{::food}}')
- .badge.badge-info.stack-count {{points}}
-
-
- li.customize-menu
- menu.pets-menu(label=env.t('special'))
- mixin specialItem(k)
- div(ng-if='user.items.special.#{k}')
- button.customize-option(popover='{{::Content.special.#{k}.notes()}}', popover-title='{{::Content.special.#{k}.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='castStart(Content.special.#{k})', class='inventory_special_#{k}')
- .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')
- .badge.badge-info.stack-count {{user.items.special.valentineReceived.length}}
-
- div(ng-if='user.purchased.plan.customerId || user.purchased.plan.mysteryItems.length')
- button.customize-option(popover=env.t('subscriberItemText'), popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', class='inventory_present inventory_present_{{moment().format("MM")}}', ng-click="user.ops.openMysteryItem({})")
- .badge.badge-info.stack-count {{user.purchased.plan.mysteryItems.length}}
-
- div(ng-if='user.purchased.plan.consecutive.trinkets')
- button.customize-option(popover=env.t('mysticHourglassPopover'), popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', class='inventory_special_trinket', ng-click="$state.go('options.inventory.timetravelers')")
- .badge.badge-info.stack-count {{user.purchased.plan.consecutive.trinkets}}
-
- div(ng-if='user.items.special.nyeReceived[0]')
- button.customize-option(popover="New Year's Card from {{User.user.items.special.nyeReceived[0]}}", popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='openModal("nye")', class='inventory_special_nye')
- .badge.badge-info.stack-count {{user.items.special.nyeReceived.length}}
-
- .col-md-6.border-left
- h2=env.t('market')
- .row-fluid
- table.npc_alex_container
- tr
- td
- .pull-left(class="#{env.worldDmg.market ? 'npc_alex_broken' : 'npc_alex'}")
- td
- .popover.static-popover.fade.right.in
- .arrow
- h3.popover-title
- a(target='_blank', href='http://www.kickstarter.com/profile/523661924')=env.t('alexander')
- .popover-content
- p=env.t('welcomeMarket')
- p
- button.btn.btn-primary(ng-show='selectedEgg', ng-click='sellInventory()')=env.t('sellEggForGold', {itemType: "{{selectedEgg.text()}}", gold: "{{selectedEgg.value}}"})
- button.btn.btn-primary(ng-show='selectedPotion', ng-click='sellInventory()')=env.t('sellPotionForGold', {itemType: "{{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'))
- p.muted!=env.t('dropsExplanation')
- div(ng-repeat='egg in Content.eggs', ng-if='egg.canBuy')
- button.customize-option(popover='{{::egg.notes()}}', popover-title!=env.t("egg", {eggType: "{{::egg.text()}}"}), popover-trigger='mouseenter', popover-placement='top', popover-append-to-body='true', ng-click='purchase("eggs", egg)', class='Pet_Egg_{{::egg.key}}')
- p
- | {{::egg.value}}
- span.Pet_Currency_Gem1x.inline-gems
- //- buyable quest eggs. TODO: Get this from a collection so we don't have to maintain this ridiculous comma-delimited list
- each egg,quest in {gryphon:'Gryphon',hedgehog:'Hedgehog',ghost_stag:'Deer',rat:'Rat',octopus:'Octopus',dilatory_derby:'Seahorse',harpy:'Parrot',rooster:'Rooster',spider:'Spider',owl:'Owl',penguin:'Penguin',rock:'Rock',bunny:'Bunny',slime:'Slime',sheep:'Sheep',kraken:'Cuttlefish'}
- div(ng-show='user.achievements.quests.#{quest} > 0')
- button.customize-option(popover='{{::Content.eggs.#{egg}.notes()}}', popover-title!=env.t("egg", {eggType: "{{::Content.eggs.#{egg}.text()}}"}), popover-trigger='mouseenter', popover-placement='top', popover-append-to-body='true', ng-click='purchase("eggs", Content.eggs.#{egg})', class='Pet_Egg_#{egg}')
- p
- | {{::Content.eggs.#{egg}.value}}
- span.Pet_Currency_Gem1x.inline-gems
- div(ng-show='(user.achievements.quests.trex + user.achievements.quests.trex_undead) > 0')
- button.customize-option(popover='{{::Content.eggs.TRex.notes()}}', popover-title!=env.t("egg", {eggType: "{{Content.eggs.TRex.text()}}"}), popover-trigger='mouseenter', popover-placement='top', popover-append-to-body='true', ng-click='purchase("eggs", Content.eggs.TRex)', class='Pet_Egg_TRex')
- p
- | {{::Content.eggs.TRex.value}}
- span.Pet_Currency_Gem1x.inline-gems
-
- li.customize-menu
- menu.pets-menu(label=env.t('hatchingPotions'))
- p.muted!=env.t('dropsExplanation')
- div(ng-repeat='pot in Content.hatchingPotions')
- button.customize-option(popover='{{::pot.notes()}}', popover-title!=env.t("potion", {potionType: "{{::pot.text()}}"}), popover-trigger='mouseenter', popover-placement='top', popover-append-to-body='true', ng-click='purchase("hatchingPotions", pot)', class='Pet_HatchingPotion_{{::pot.key}}')
- p
- | {{::pot.value}}
- span.Pet_Currency_Gem1x.inline-gems
-
- li.customize-menu
- menu.pets-menu(label=env.t('food'))
- p.muted!=env.t('dropsExplanation')
- 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='top', popover-append-to-body='true', ng-click='purchase("food", food)', class='Pet_Food_{{::food.key}}')
- p
- | {{::food.value}}
- span.Pet_Currency_Gem1x.inline-gems
-
- li.customize-menu
- menu.pets-menu(label=env.t('quests'))
- p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + ''
- div(ng-repeat='quest in Content.quests', ng-if='quest.canBuy')
- button.customize-option(data-popover-html="{{::quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : questPopover(quest) | markdown}}", popover-title='{{::quest.text()}}', popover-append-to-body="true", popover-trigger='mouseenter', ng-click='buyQuest(quest.key)', ng-class='(quest.previous && !user.achievements.quests[quest.previous]) ? "inventory_quest_scroll_locked inventory_quest_scroll_{{::quest.key}}_locked locked" : "inventory_quest_scroll inventory_quest_scroll_{{::quest.key}}"')
- p
- | {{::quest.value}}
- span.Pet_Currency_Gem1x.inline-gems
-
- li.customize-menu
- menu.pets-menu(label=env.t('special'))
- div
- button.customize-option(popover=env.t('fortifyPop'), popover-title=env.t('fortifyName'), popover-trigger='mouseenter', popover-placement='top', popover-append-to-body='true', ng-click='openModal("reroll")', class='inventory_special_fortify')
- p
- | 4
- span.Pet_Currency_Gem1x.inline-gems
- div(ng-show='user.flags.rebirthEnabled')
- button.customize-option(popover=env.t('rebirthPop'), popover-title=env.t('rebirthName'), popover-trigger='mouseenter', popover-placement='top', popover-append-to-body='true', ng-click='openModal("rebirth")', class='rebirth_orb')
- p(ng-show='user.stats.lvl < 100')
- | 8
- span.Pet_Currency_Gem1x.inline-gems
- div(ng-show='petCount >= 90 || mountCount >= 90')
- button.customize-option(popover=env.t('petKeyPop'), popover-title=env.t('petKeyName'), popover-trigger='mouseenter', popover-placement='top', popover-append-to-body='true', ng-click='openModal("pet-key", {size:"lg"})', class='pet_key')
- p(ng-show='petCount < 90 || mountCount < 90 || !user.achievements.triadBingo')
- | 4
- span.Pet_Currency_Gem1x.inline-gems
- div(ng-if='user.purchased.plan.customerId', ng-class='::{transparent:(Shared.planGemLimits.convCap + User.user.purchased.plan.consecutive.gemCapExtra - User.user.purchased.plan.gemsBought) < 1}')
- button.customize-option(popover=env.t('subGemPop'), popover-title=env.t('subGemName'), popover-trigger='mouseenter', popover-placement='top', popover-append-to-body='true', ng-click='user.ops.purchase({params:{type:"gems",key:"gem"}})')
- span.Pet_Currency_Gem.inline-gems
- .badge.badge-success.stack-count {{Shared.planGemLimits.convCap + User.user.purchased.plan.consecutive.gemCapExtra - User.user.purchased.plan.gemsBought}}
- p
- | 20
- span.shop_gold
- // div
- button.customize-option(popover='{{::Content.spells.special.valentine.notes()}}', popover-title='{{::Content.spells.special.valentine.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='castStart(Content.spells.special.valentine)', class='inventory_special_valentine')
- p
- | {{Content.spells.special.valentine.value}}
- span(class='shop_gold')
diff --git a/website/views/options/inventory/menu.jade b/website/views/options/inventory/menu.jade
new file mode 100644
index 0000000000..8e44151d86
--- /dev/null
+++ b/website/views/options/inventory/menu.jade
@@ -0,0 +1,23 @@
+ul.options-menu
+ li(ng-class="{ active: $state.includes('options.inventory.drops') }")
+ a(ui-sref='options.inventory.drops')
+ =env.t('market')
+ li(ng-class="{ active: $state.includes('options.inventory.pets') }")
+ a(ui-sref='options.inventory.pets')
+ =env.t('pets')
+ li(ng-class="{ active: $state.includes('options.inventory.mounts') }")
+ a(ui-sref='options.inventory.mounts')
+ =env.t('mounts')
+ li.equipment-tab(ng-class="{ active: $state.includes('options.inventory.equipment') }")
+ a(ui-sref='options.inventory.equipment')
+ =env.t('equipment')
+ li(ng-class="{ active: $state.includes('options.inventory.timetravelers') }")
+ a(ui-sref='options.inventory.timetravelers')
+ =env.t('timeTravelers')
+ li(ng-class="{ active: $state.includes('options.inventory.seasonalshop') }")
+ a(ui-sref='options.inventory.seasonalshop')
+ =env.t('seasonalShop')
+
+.tab-content
+ .tab-pane.active
+ div(ui-view)
diff --git a/website/views/options/inventory/mounts.jade b/website/views/options/inventory/mounts.jade
new file mode 100644
index 0000000000..8b223d7d27
--- /dev/null
+++ b/website/views/options/inventory/mounts.jade
@@ -0,0 +1,39 @@
+mixin mountList(source)
+ menu.pets(type='list')
+ each egg in source
+ -if(!egg.noMount) {
+ li.customize-menu
+ menu
+ each potion in env.Content.hatchingPotions
+ - mount = egg.key+"-"+potion.key
+ div(popover-trigger='mouseenter', popover=env.t('mountName', {potion: potion.text(env.language.code), mount: egg.mountText(env.language.code)}), popover-placement='bottom')
+ 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 mount-not-owned", ng-hide='user.items.mounts["#{mount}"]')
+ .PixelPaw
+ -}
+
+.container-fluid
+ .stable.row
+ .col-md-2
+ div(class="#{env.worldDmg.stables ? 'npc_matt_broken' : 'npc_matt'}")
+ .col-md-10
+ .popover.static-popover.fade.right.in
+ .arrow
+ h3.popover-title
+ a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch')
+ .popover-content
+ p=env.t('mattShall', {name: "{{user.profile.name}}"})
+ h4= env.t('mountMasterProgress') + ': {{mountCount}} / {{totalMounts}} ' + env.t('mountsTamed')
+ .col-md-12
+ +mountList(env.Content.dropEggs)
+ .col-md-12
+ h4=env.t('questMounts')
+ +mountList(env.Content.questEggs)
+ .col-md-12
+ h4=env.t('rareMounts')
+ menu
+ div
+ each t,k in env.Content.specialMounts
+ - var animal = k.split('-')[0], color = k.split('-')[1]
+ button(ng-if='user.items.mounts["#{animal}-#{color}"]', class="pet-button Mount_Head_#{animal}-#{color}", ng-class='{active: user.items.currentMount == "#{animal}-#{color}"}', ng-click='chooseMount("#{animal}", "#{color}")', popover=env.t(t), popover-trigger='mouseenter', popover-placement='bottom')
diff --git a/website/views/options/inventory/pets.jade b/website/views/options/inventory/pets.jade
new file mode 100644
index 0000000000..54a3d52390
--- /dev/null
+++ b/website/views/options/inventory/pets.jade
@@ -0,0 +1,55 @@
+mixin petList(source)
+ menu.pets(type='list')
+ each egg in source
+ li.customize-menu
+ menu
+ each potion in env.Content.hatchingPotions
+ - pet = egg.key+"-"+potion.key
+ div(popover-trigger='mouseenter', popover=env.t('petName', {potion: potion.text(env.language.code), egg: egg.text(env.language.code)}), popover-placement='bottom')
+ button(class="pet-button Pet-#{pet}", ng-if='user.items.pets["#{pet}"]>0', ng-class='{active: user.items.currentPet == "#{pet}", selectableInventory: #{!egg.noMount} && selectedFood && !user.items.mounts["#{pet}"]}', ng-click='choosePet("#{egg.key}", "#{potion.key}")')
+ .progress(ng-show='!user.items.mounts["#{pet}"]')
+ .progress-bar.progress-bar-success(style='width:{{user.items.pets["#{pet}"]/.5}}%')
+ button(class="pet-button pet-not-owned", ng-if='!user.items.pets["#{pet}"]')
+ .PixelPaw
+ button(class="pet-evolved pet-button Pet-#{pet}", ng-if='user.items.pets["#{pet}"]<0')
+
+.container-fluid
+ .stable.row
+ .col-md-2
+ div(class="#{env.worldDmg.stables ? 'npc_matt_broken' : 'npc_matt'}")
+ .col-md-10
+ .popover.static-popover.fade.right.in
+ .arrow
+ h3.popover-title
+ a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch')
+ .popover-content
+ p=env.t('mattBochText1')
+ h4= env.t('beastMasterProgress') + ': {{petCount}} / {{totalPets}} ' + env.t('petsFound')
+
+ .col-md-12
+ +petList(env.Content.dropEggs)
+ .col-md-12
+ h4=env.t('questPets')
+ +petList(env.Content.questEggs)
+
+ .col-md-12
+ h4=env.t('rarePets')
+ menu
+ div
+ each t,k in env.Content.specialPets
+ - var egg = k.split('-')[0], pot = k.split('-')[1]
+ button(ng-if='user.items.pets["#{egg}-#{pot}"]', class="pet-button Pet-#{egg}-#{pot}", ng-class='{active: user.items.currentPet == "#{egg}-#{pot}"}', ng-click='choosePet("#{egg}", "#{pot}")', popover=env.t(t), popover-trigger='mouseenter', popover-placement='bottom')
+ a(target='_blank', href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG')
+ button(ng-if='!user.items.pets["Dragon-Hydra"]', class="pet-button pet-not-owned", popover-trigger='mouseenter', popover-placement='right', popover=env.t('rarePetPop1'), popover-title=env.t('rarePetPop2'))
+ .PixelPaw-Gold
+
+ .well.food-tray
+ p(ng-show='foodCount < 1')=env.t('noFood')
+ menu.inventory-list(type='list', ng-if='foodCount > 0')
+ 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='top', ng-click='chooseFood(food)', ng-class='{selectableInventory: selectedFood == Content.food[food]}', class='Pet_Food_{{::food}}')
+ .badge.badge-info.stack-count {{points}}
+ // Remove this once we have images in
+ p {{:: Content.food[food].text()}}
diff --git a/website/views/options/inventory/seasonalShop.jade b/website/views/options/inventory/seasonalShop.jade
new file mode 100644
index 0000000000..a0295ccf3c
--- /dev/null
+++ b/website/views/options/inventory/seasonalShop.jade
@@ -0,0 +1,40 @@
+.container-fluid
+ .stable.row
+ .col-md-2
+ .seasonalshop_summer2015
+ .col-md-10
+ .popover.static-popover.fade.right.in
+ .arrow
+ h3.popover-title!=env.t('seasonalShopTitle', {linkStart:"", linkEnd: ""})
+ .popover-content
+ p!=env.t('seasonalShopSummerText')
+ .well(ng-if='User.user.achievements.rebirths > 0')=env.t('seasonalShopRebirth')
+ li.customize-menu.inventory-gear
+ menu.pets-menu(label='{{::label}}', ng-repeat='(set,label) in ::{summerWarrior:env.t("daringSwashbucklerSet"), summerMage:env.t("emeraldMermageSet"), summerHealer:env.t("reefSeahealerSet"), summerRogue:env.t("roguishPirateSet")}')
+ div(ng-repeat='item in ::getSeasonalShopArray(set)' ng-class="{transparent: user.items.gear.owned[item.key] === true ||user.items.gear.owned[item.key] === false}")
+ button.customize-option(popover='{{::item.notes()}}', popover-title='{{::item.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='purchase(item.type,item)', class='shop_{{::item.key}}')
+ .text-left
+ | {{((item.specialClass == "wizard") && (item.type == "weapon")) + 1}}
+ span.Pet_Currency_Gem1x.inline-gems
+ // menu.pets-menu(label=env.t('quests'))
+ div(ng-repeat='quest in ::getSeasonalShopQuests()')
+ button.customize-option(data-popover-html="{{::quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : questPopover(quest) | markdown}}", popover-append-to-body='true', popover-title='{{::quest.text()}}', popover-trigger='mouseenter', popover-placement='right', ng-click='buyQuest(quest.key)', ng-class='(quest.previous && !user.achievements.quests[quest.previous]) ? "inventory_quest_scroll_locked inventory_quest_scroll_{{::quest.key}}_locked locked" : "inventory_quest_scroll inventory_quest_scroll_{{::quest.key}}"')
+ p
+ | {{::quest.value}}
+ span.Pet_Currency_Gem1x.inline-gems
+ // 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
+ 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}}
+ span(class='shop_gold')
diff --git a/website/views/options/inventory/stable.jade b/website/views/options/inventory/stable.jade
deleted file mode 100644
index 925cecd897..0000000000
--- a/website/views/options/inventory/stable.jade
+++ /dev/null
@@ -1,98 +0,0 @@
-mixin petList(source)
- menu.pets(type='list')
- each egg in source
- li.customize-menu
- menu
- each potion in env.Content.hatchingPotions
- - pet = egg.key+"-"+potion.key
- div(popover-trigger='mouseenter', popover=env.t('petName', {potion: potion.text(env.language.code), egg: egg.text(env.language.code)}), popover-placement='bottom')
- button(class="pet-button Pet-#{pet}", ng-if='user.items.pets["#{pet}"]>0', ng-class='{active: user.items.currentPet == "#{pet}", selectableInventory: #{!egg.noMount} && selectedFood && !user.items.mounts["#{pet}"]}', ng-click='choosePet("#{egg.key}", "#{potion.key}")')
- .progress(ng-show='!user.items.mounts["#{pet}"]')
- .progress-bar.progress-bar-success(style='width:{{user.items.pets["#{pet}"]/.5}}%')
- button(class="pet-button pet-not-owned", ng-if='!user.items.pets["#{pet}"]')
- .PixelPaw
- button(class="pet-evolved pet-button Pet-#{pet}", ng-if='user.items.pets["#{pet}"]<0')
-
-mixin mountList(source)
- menu.pets(type='list')
- each egg in source
- -if(!egg.noMount) {
- li.customize-menu
- menu
- each potion in env.Content.hatchingPotions
- - mount = egg.key+"-"+potion.key
- div(popover-trigger='mouseenter', popover=env.t('mountName', {potion: potion.text(env.language.code), mount: egg.mountText(env.language.code)}), popover-placement='bottom')
- 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 mount-not-owned", ng-hide='user.items.mounts["#{mount}"]')
- .PixelPaw
- -}
-
-
-script(type='text/ng-template', id='partials/options.inventory.mounts.html')
- .container-fluid
- .stable.row
- .col-md-2
- div(class="#{env.worldDmg.stables ? 'npc_matt_broken' : 'npc_matt'}")
- .col-md-10
- .popover.static-popover.fade.right.in
- .arrow
- h3.popover-title
- a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch')
- .popover-content
- p=env.t('mattShall', {name: "{{user.profile.name}}"})
- h4= env.t('mountMasterProgress') + ': {{mountCount}} / {{totalMounts}} ' + env.t('mountsTamed')
- .col-md-12
- +mountList(env.Content.dropEggs)
- .col-md-12
- h4=env.t('questMounts')
- +mountList(env.Content.questEggs)
- .col-md-12
- h4=env.t('rareMounts')
- menu
- div
- each t,k in env.Content.specialMounts
- - var animal = k.split('-')[0], color = k.split('-')[1]
- button(ng-if='user.items.mounts["#{animal}-#{color}"]', class="pet-button Mount_Head_#{animal}-#{color}", ng-class='{active: user.items.currentMount == "#{animal}-#{color}"}', ng-click='chooseMount("#{animal}", "#{color}")', popover=env.t(t), popover-trigger='mouseenter', popover-placement='bottom')
-
-script(type='text/ng-template', id='partials/options.inventory.pets.html')
- .container-fluid
- .stable.row
- .col-md-2
- div(class="#{env.worldDmg.stables ? 'npc_matt_broken' : 'npc_matt'}")
- .col-md-10
- .popover.static-popover.fade.right.in
- .arrow
- h3.popover-title
- a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch')
- .popover-content
- p=env.t('mattBochText1')
- h4= env.t('beastMasterProgress') + ': {{petCount}} / {{totalPets}} ' + env.t('petsFound')
-
- .col-md-12
- +petList(env.Content.dropEggs)
- .col-md-12
- h4=env.t('questPets')
- +petList(env.Content.questEggs)
-
- .col-md-12
- h4=env.t('rarePets')
- menu
- div
- each t,k in env.Content.specialPets
- - var egg = k.split('-')[0], pot = k.split('-')[1]
- button(ng-if='user.items.pets["#{egg}-#{pot}"]', class="pet-button Pet-#{egg}-#{pot}", ng-class='{active: user.items.currentPet == "#{egg}-#{pot}"}', ng-click='choosePet("#{egg}", "#{pot}")', popover=env.t(t), popover-trigger='mouseenter', popover-placement='bottom')
- a(target='_blank', href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG')
- button(ng-if='!user.items.pets["Dragon-Hydra"]', class="pet-button pet-not-owned", popover-trigger='mouseenter', popover-placement='right', popover=env.t('rarePetPop1'), popover-title=env.t('rarePetPop2'))
- .PixelPaw-Gold
-
- .well.food-tray
- p(ng-show='foodCount < 1')=env.t('noFood')
- menu.inventory-list(type='list', ng-if='foodCount > 0')
- 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='top', ng-click='chooseFood(food)', ng-class='{selectableInventory: selectedFood == Content.food[food]}', class='Pet_Food_{{::food}}')
- .badge.badge-info.stack-count {{points}}
- // Remove this once we have images in
- p {{:: Content.food[food].text()}}
diff --git a/website/views/options/inventory/timeTravelers.jade b/website/views/options/inventory/timeTravelers.jade
new file mode 100644
index 0000000000..3829d4d449
--- /dev/null
+++ b/website/views/options/inventory/timeTravelers.jade
@@ -0,0 +1,28 @@
+.container-fluid
+ .stable.row(ng-if='user.purchased.plan.consecutive.trinkets <= 0')
+ .col-md-2
+ .npc_timetravelers
+ .col-md-10
+ .popover.static-popover.fade.right.in
+ .arrow
+ h3.popover-title!=env.t('timeTravelersTitleNoSub', {linkStartTyler: "", linkStartVicky: "", linkEnd: ""})
+ .popover-content
+ p!=env.t('timeTravelersPopoverNoSub', {linkStart: "", linkEnd: ""})
+ .row.stable(ng-if='user.purchased.plan.consecutive.trinkets > 0')
+ .col-md-2
+ .npc_timetravelers_active
+ .col-md-10
+ .popover.static-popover.fade.right.in
+ .arrow
+ h3.popover-title=env.t('timeTravelersTitle')
+ .popover-content
+ .pull-right
+ span.inventory_special_trinket.inline-gems
+ b x{{user.purchased.plan.consecutive.trinkets}}
+ p!=env.t('timeTravelersPopover', {linkStart: "", linkEnd: ""})
+
+ .col-md-12
+ li.customize-menu.inventory-gear
+ menu.pets-menu(label='{{::set.text}}', ng-repeat='set in Content.timeTravelerStore(user.items.gear.owned)')
+ div(ng-repeat='item in set.items')
+ button.customize-option(popover='{{::item.notes()}}', popover-title='{{::item.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='user.ops.buyMysterySet({params:{key:set.key}})', class='shop_{{::item.key}}')