mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
WIP(event): Summer Splash cont'd
Splits Quests out to a new page. Refactors inventory Jade files and controllers to more manageable structures.
This commit is contained in:
@@ -14,6 +14,7 @@
|
|||||||
"sellPotionForGold": "Sell <%= itemType %> Potion for <%= gold %> Gold",
|
"sellPotionForGold": "Sell <%= itemType %> Potion for <%= gold %> Gold",
|
||||||
"buyGems": "Buy Gems",
|
"buyGems": "Buy Gems",
|
||||||
"justin": "Justin",
|
"justin": "Justin",
|
||||||
|
"ian": "Ian",
|
||||||
"USD": "USD",
|
"USD": "USD",
|
||||||
"newStuff": "New Stuff",
|
"newStuff": "New Stuff",
|
||||||
"cool": "Tell Me Later",
|
"cool": "Tell Me Later",
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
{
|
{
|
||||||
"quests": "Quests",
|
"quests": "Quests",
|
||||||
"quest": "quest",
|
"quest": "quest",
|
||||||
|
"yourQuests": "Your Quests",
|
||||||
|
"questsForSale": "Quests for Sale",
|
||||||
|
"petQuests": "Pet and Mount Quests",
|
||||||
|
"unlockableQuests": "Unlockable Quests",
|
||||||
|
"goldQuests": "Gold-Purchasable Quests",
|
||||||
"questDetails": "Quest Details",
|
"questDetails": "Quest Details",
|
||||||
"invitations": "Invitations",
|
"invitations": "Invitations",
|
||||||
"completed": "Completed!",
|
"completed": "Completed!",
|
||||||
@@ -37,11 +42,13 @@
|
|||||||
"noScrolls": "You don't have any quest scrolls.",
|
"noScrolls": "You don't have any quest scrolls.",
|
||||||
"scrollsText1": "Quests require parties. If you want to quest solo,",
|
"scrollsText1": "Quests require parties. If you want to quest solo,",
|
||||||
"scrollsText2": "create an empty party",
|
"scrollsText2": "create an empty party",
|
||||||
"scrollsPre": "You need to complete the previous quest to start this one!",
|
"scrollsPre": "You haven't unlocked this quest yet!",
|
||||||
"completedQuests": "Completed the following quests",
|
"completedQuests": "Completed the following quests",
|
||||||
"mustComplete": "You must first complete <%= quest %>.",
|
"mustComplete": "You must first complete <%= quest %>.",
|
||||||
"mustLevel": "You must be level <%= level %>.",
|
"mustLevel": "You must be level <%= level %>.",
|
||||||
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
|
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
|
||||||
|
"mustInviteFriend": "To earn this Quest, invite a friend to your Party. Invite someone now?",
|
||||||
|
"unlockByQuesting": "To earn this Quest, complete <%= title %>.",
|
||||||
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
|
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
|
||||||
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
|
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
|
||||||
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
|
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
|
||||||
|
|||||||
@@ -1094,6 +1094,7 @@ api.quests =
|
|||||||
completion: t("questDilatoryCompletion")
|
completion: t("questDilatoryCompletion")
|
||||||
value: 0
|
value: 0
|
||||||
canBuy: false
|
canBuy: false
|
||||||
|
category: 'world'
|
||||||
boss:
|
boss:
|
||||||
name: t("questDilatoryBoss")
|
name: t("questDilatoryBoss")
|
||||||
# We ran an average of progress{up,down} on users over 5 days: {up:805025,down:1324423}. /5*30 (we want the
|
# We ran an average of progress{up,down} on users over 5 days: {up:805025,down:1324423}. /5*30 (we want the
|
||||||
@@ -1136,6 +1137,7 @@ api.quests =
|
|||||||
completionChat: t("questStressbeastCompletionChat")
|
completionChat: t("questStressbeastCompletionChat")
|
||||||
value: 0
|
value: 0
|
||||||
canBuy: false
|
canBuy: false
|
||||||
|
category: 'world'
|
||||||
boss:
|
boss:
|
||||||
name: t("questStressbeastBoss")
|
name: t("questStressbeastBoss")
|
||||||
hp: 2750000
|
hp: 2750000
|
||||||
@@ -1179,7 +1181,7 @@ api.quests =
|
|||||||
notes: t('questEvilSantaNotes')
|
notes: t('questEvilSantaNotes')
|
||||||
completion: t('questEvilSantaCompletion')
|
completion: t('questEvilSantaCompletion')
|
||||||
value: 4 # Gem cost to buy, GP sell-back
|
value: 4 # Gem cost to buy, GP sell-back
|
||||||
#mechanic: enum['perfectDailies', ...]
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questEvilSantaBoss') # name of the boss himself (eg, Vice)
|
name: t('questEvilSantaBoss') # name of the boss himself (eg, Vice)
|
||||||
hp: 300
|
hp: 300
|
||||||
@@ -1198,6 +1200,7 @@ api.quests =
|
|||||||
completion: t('questEvilSanta2Completion')
|
completion: t('questEvilSanta2Completion')
|
||||||
value: 4
|
value: 4
|
||||||
previous: 'evilsanta'
|
previous: 'evilsanta'
|
||||||
|
category: 'pet'
|
||||||
collect:
|
collect:
|
||||||
tracks: text: t('questEvilSanta2CollectTracks'), count: 20
|
tracks: text: t('questEvilSanta2CollectTracks'), count: 20
|
||||||
branches: text: t('questEvilSanta2CollectBranches'), count: 10
|
branches: text: t('questEvilSanta2CollectBranches'), count: 10
|
||||||
@@ -1213,6 +1216,7 @@ api.quests =
|
|||||||
notes: t('questGryphonNotes')
|
notes: t('questGryphonNotes')
|
||||||
completion: t('questGryphonCompletion')
|
completion: t('questGryphonCompletion')
|
||||||
value: 4 # Gem cost to buy, GP sell-back
|
value: 4 # Gem cost to buy, GP sell-back
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questGryphonBoss') # name of the boss himself (eg, Vice)
|
name: t('questGryphonBoss') # name of the boss himself (eg, Vice)
|
||||||
hp: 300
|
hp: 300
|
||||||
@@ -1232,6 +1236,7 @@ api.quests =
|
|||||||
notes: t('questHedgehogNotes')
|
notes: t('questHedgehogNotes')
|
||||||
completion: t('questHedgehogCompletion')
|
completion: t('questHedgehogCompletion')
|
||||||
value: 4 # Gem cost to buy, GP sell-back
|
value: 4 # Gem cost to buy, GP sell-back
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questHedgehogBoss') # name of the boss himself (eg, Vice)
|
name: t('questHedgehogBoss') # name of the boss himself (eg, Vice)
|
||||||
hp: 400
|
hp: 400
|
||||||
@@ -1251,6 +1256,7 @@ api.quests =
|
|||||||
notes: t('questGhostStagNotes')
|
notes: t('questGhostStagNotes')
|
||||||
completion: t('questGhostStagCompletion')
|
completion: t('questGhostStagCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questGhostStagBoss')
|
name: t('questGhostStagBoss')
|
||||||
hp: 1200
|
hp: 1200
|
||||||
@@ -1270,6 +1276,7 @@ api.quests =
|
|||||||
notes: t('questVice1Notes')
|
notes: t('questVice1Notes')
|
||||||
value: 4
|
value: 4
|
||||||
lvl: 30
|
lvl: 30
|
||||||
|
category: 'unlockable'
|
||||||
boss:
|
boss:
|
||||||
name: t('questVice1Boss')
|
name: t('questVice1Boss')
|
||||||
hp: 750
|
hp: 750
|
||||||
@@ -1285,7 +1292,8 @@ api.quests =
|
|||||||
text: t('questVice2Text')
|
text: t('questVice2Text')
|
||||||
notes: t('questVice2Notes')
|
notes: t('questVice2Notes')
|
||||||
value: 4
|
value: 4
|
||||||
lvl: 35
|
lvl: 30
|
||||||
|
category: 'unlockable'
|
||||||
previous: 'vice1'
|
previous: 'vice1'
|
||||||
collect:
|
collect:
|
||||||
lightCrystal: text: t('questVice2CollectLightCrystal'), count: 45
|
lightCrystal: text: t('questVice2CollectLightCrystal'), count: 45
|
||||||
@@ -1302,7 +1310,8 @@ api.quests =
|
|||||||
completion: t('questVice3Completion')
|
completion: t('questVice3Completion')
|
||||||
previous: 'vice2'
|
previous: 'vice2'
|
||||||
value: 4
|
value: 4
|
||||||
lvl: 40
|
lvl: 30
|
||||||
|
category: 'unlockable'
|
||||||
boss:
|
boss:
|
||||||
name: t('questVice3Boss')
|
name: t('questVice3Boss')
|
||||||
hp: 1500
|
hp: 1500
|
||||||
@@ -1324,6 +1333,7 @@ api.quests =
|
|||||||
completion: t('questEggHuntCompletion')
|
completion: t('questEggHuntCompletion')
|
||||||
value: 1
|
value: 1
|
||||||
canBuy: false
|
canBuy: false
|
||||||
|
category: 'pet'
|
||||||
collect:
|
collect:
|
||||||
plainEgg: text: t('questEggHuntCollectPlainEgg'), count: 100
|
plainEgg: text: t('questEggHuntCollectPlainEgg'), count: 100
|
||||||
drop:
|
drop:
|
||||||
@@ -1347,6 +1357,7 @@ api.quests =
|
|||||||
notes: t('questRatNotes')
|
notes: t('questRatNotes')
|
||||||
completion: t('questRatCompletion')
|
completion: t('questRatCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questRatBoss')
|
name: t('questRatBoss')
|
||||||
hp: 1200
|
hp: 1200
|
||||||
@@ -1366,6 +1377,7 @@ api.quests =
|
|||||||
notes: t('questOctopusNotes')
|
notes: t('questOctopusNotes')
|
||||||
completion: t('questOctopusCompletion')
|
completion: t('questOctopusCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questOctopusBoss')
|
name: t('questOctopusBoss')
|
||||||
hp: 1200
|
hp: 1200
|
||||||
@@ -1385,6 +1397,7 @@ api.quests =
|
|||||||
notes: t('questSeahorseNotes')
|
notes: t('questSeahorseNotes')
|
||||||
completion: t('questSeahorseCompletion')
|
completion: t('questSeahorseCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questSeahorseBoss')
|
name: t('questSeahorseBoss')
|
||||||
hp: 300
|
hp: 300
|
||||||
@@ -1404,6 +1417,7 @@ api.quests =
|
|||||||
notes: t('questAtom1Notes')
|
notes: t('questAtom1Notes')
|
||||||
value: 4
|
value: 4
|
||||||
lvl: 15
|
lvl: 15
|
||||||
|
category: 'unlockable'
|
||||||
collect:
|
collect:
|
||||||
soapBars: text: t('questAtom1CollectSoapBars'), count: 20
|
soapBars: text: t('questAtom1CollectSoapBars'), count: 20
|
||||||
drop:
|
drop:
|
||||||
@@ -1418,6 +1432,7 @@ api.quests =
|
|||||||
previous: 'atom1'
|
previous: 'atom1'
|
||||||
value: 4
|
value: 4
|
||||||
lvl: 15
|
lvl: 15
|
||||||
|
category: 'unlockable'
|
||||||
boss:
|
boss:
|
||||||
name: t('questAtom2Boss')
|
name: t('questAtom2Boss')
|
||||||
hp: 300
|
hp: 300
|
||||||
@@ -1435,6 +1450,7 @@ api.quests =
|
|||||||
completion: t('questAtom3Completion')
|
completion: t('questAtom3Completion')
|
||||||
value: 4
|
value: 4
|
||||||
lvl: 15
|
lvl: 15
|
||||||
|
category: 'unlockable'
|
||||||
boss:
|
boss:
|
||||||
name: t('questAtom3Boss')
|
name: t('questAtom3Boss')
|
||||||
hp: 800
|
hp: 800
|
||||||
@@ -1453,6 +1469,7 @@ api.quests =
|
|||||||
notes: t('questHarpyNotes')
|
notes: t('questHarpyNotes')
|
||||||
completion: t('questHarpyCompletion')
|
completion: t('questHarpyCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questHarpyBoss')
|
name: t('questHarpyBoss')
|
||||||
hp: 600
|
hp: 600
|
||||||
@@ -1472,6 +1489,7 @@ api.quests =
|
|||||||
notes: t('questRoosterNotes')
|
notes: t('questRoosterNotes')
|
||||||
completion: t('questRoosterCompletion')
|
completion: t('questRoosterCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questRoosterBoss')
|
name: t('questRoosterBoss')
|
||||||
hp: 300
|
hp: 300
|
||||||
@@ -1491,6 +1509,7 @@ api.quests =
|
|||||||
notes: t('questSpiderNotes')
|
notes: t('questSpiderNotes')
|
||||||
completion: t('questSpiderCompletion')
|
completion: t('questSpiderCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questSpiderBoss')
|
name: t('questSpiderBoss')
|
||||||
hp: 400
|
hp: 400
|
||||||
@@ -1510,6 +1529,7 @@ api.quests =
|
|||||||
notes: t('questMoonstone1Notes')
|
notes: t('questMoonstone1Notes')
|
||||||
value: 4
|
value: 4
|
||||||
lvl: 60
|
lvl: 60
|
||||||
|
category: 'unlockable'
|
||||||
collect:
|
collect:
|
||||||
moonstone: text: t('questMoonstone1CollectMoonstone'), count: 500
|
moonstone: text: t('questMoonstone1CollectMoonstone'), count: 500
|
||||||
drop:
|
drop:
|
||||||
@@ -1522,8 +1542,9 @@ api.quests =
|
|||||||
text: t('questMoonstone2Text')
|
text: t('questMoonstone2Text')
|
||||||
notes: t('questMoonstone2Notes')
|
notes: t('questMoonstone2Notes')
|
||||||
value: 4
|
value: 4
|
||||||
lvl: 65
|
lvl: 60
|
||||||
previous: 'moonstone1'
|
previous: 'moonstone1'
|
||||||
|
category: 'unlockable'
|
||||||
boss:
|
boss:
|
||||||
name: t('questMoonstone2Boss')
|
name: t('questMoonstone2Boss')
|
||||||
hp: 1500
|
hp: 1500
|
||||||
@@ -1540,7 +1561,8 @@ api.quests =
|
|||||||
completion: t('questMoonstone3Completion')
|
completion: t('questMoonstone3Completion')
|
||||||
previous: 'moonstone2'
|
previous: 'moonstone2'
|
||||||
value: 4
|
value: 4
|
||||||
lvl: 70
|
lvl: 60
|
||||||
|
category: 'unlockable'
|
||||||
boss:
|
boss:
|
||||||
name: t('questMoonstone3Boss')
|
name: t('questMoonstone3Boss')
|
||||||
hp: 2000
|
hp: 2000
|
||||||
@@ -1565,6 +1587,7 @@ api.quests =
|
|||||||
notes: t('questGoldenknight1Notes')
|
notes: t('questGoldenknight1Notes')
|
||||||
value: 4
|
value: 4
|
||||||
lvl: 40
|
lvl: 40
|
||||||
|
category: 'unlockable'
|
||||||
collect:
|
collect:
|
||||||
testimony: text: t('questGoldenknight1CollectTestimony'), count: 300
|
testimony: text: t('questGoldenknight1CollectTestimony'), count: 300
|
||||||
drop:
|
drop:
|
||||||
@@ -1578,7 +1601,8 @@ api.quests =
|
|||||||
notes: t('questGoldenknight2Notes')
|
notes: t('questGoldenknight2Notes')
|
||||||
value: 4
|
value: 4
|
||||||
previous: 'goldenknight1'
|
previous: 'goldenknight1'
|
||||||
lvl: 45
|
lvl: 40
|
||||||
|
category: 'unlockable'
|
||||||
boss:
|
boss:
|
||||||
name: t('questGoldenknight2Boss')
|
name: t('questGoldenknight2Boss')
|
||||||
hp: 1000
|
hp: 1000
|
||||||
@@ -1595,7 +1619,8 @@ api.quests =
|
|||||||
completion: t('questGoldenknight3Completion')
|
completion: t('questGoldenknight3Completion')
|
||||||
previous: 'goldenknight2'
|
previous: 'goldenknight2'
|
||||||
value: 4
|
value: 4
|
||||||
lvl: 50
|
lvl: 40
|
||||||
|
category: 'unlockable'
|
||||||
boss:
|
boss:
|
||||||
name: t('questGoldenknight3Boss')
|
name: t('questGoldenknight3Boss')
|
||||||
hp: 1700
|
hp: 1700
|
||||||
@@ -1616,8 +1641,10 @@ api.quests =
|
|||||||
text: t('questBasilistText')
|
text: t('questBasilistText')
|
||||||
notes: t('questBasilistNotes')
|
notes: t('questBasilistNotes')
|
||||||
completion: t('questBasilistCompletion')
|
completion: t('questBasilistCompletion')
|
||||||
canBuy: false
|
category: 'unlockable'
|
||||||
value: 4
|
unlockCondition:
|
||||||
|
condition: 'party invite'
|
||||||
|
text: t('inviteFriends')
|
||||||
boss:
|
boss:
|
||||||
name: t('questBasilistBoss')
|
name: t('questBasilistBoss')
|
||||||
hp: 100
|
hp: 100
|
||||||
@@ -1631,6 +1658,7 @@ api.quests =
|
|||||||
notes: t('questOwlNotes')
|
notes: t('questOwlNotes')
|
||||||
completion: t('questOwlCompletion')
|
completion: t('questOwlCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questOwlBoss')
|
name: t('questOwlBoss')
|
||||||
hp: 500
|
hp: 500
|
||||||
@@ -1650,6 +1678,7 @@ api.quests =
|
|||||||
notes: t('questPenguinNotes')
|
notes: t('questPenguinNotes')
|
||||||
completion: t('questPenguinCompletion')
|
completion: t('questPenguinCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questPenguinBoss')
|
name: t('questPenguinBoss')
|
||||||
hp: 400
|
hp: 400
|
||||||
@@ -1669,6 +1698,7 @@ api.quests =
|
|||||||
notes: t('questTRexNotes')
|
notes: t('questTRexNotes')
|
||||||
completion: t('questTRexCompletion')
|
completion: t('questTRexCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questTRexBoss')
|
name: t('questTRexBoss')
|
||||||
hp: 800
|
hp: 800
|
||||||
@@ -1688,6 +1718,7 @@ api.quests =
|
|||||||
notes: t('questTRexUndeadNotes')
|
notes: t('questTRexUndeadNotes')
|
||||||
completion: t('questTRexUndeadCompletion')
|
completion: t('questTRexUndeadCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questTRexUndeadBoss')
|
name: t('questTRexUndeadBoss')
|
||||||
hp: 500
|
hp: 500
|
||||||
@@ -1713,6 +1744,7 @@ api.quests =
|
|||||||
notes: t('questRockNotes')
|
notes: t('questRockNotes')
|
||||||
completion: t('questRockCompletion')
|
completion: t('questRockCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questRockBoss')
|
name: t('questRockBoss')
|
||||||
hp: 400
|
hp: 400
|
||||||
@@ -1732,6 +1764,7 @@ api.quests =
|
|||||||
notes: t('questBunnyNotes')
|
notes: t('questBunnyNotes')
|
||||||
completion: t('questBunnyCompletion')
|
completion: t('questBunnyCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questBunnyBoss')
|
name: t('questBunnyBoss')
|
||||||
hp: 300
|
hp: 300
|
||||||
@@ -1751,6 +1784,7 @@ api.quests =
|
|||||||
notes: t('questSlimeNotes')
|
notes: t('questSlimeNotes')
|
||||||
completion: t('questSlimeCompletion')
|
completion: t('questSlimeCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questSlimeBoss')
|
name: t('questSlimeBoss')
|
||||||
hp: 400
|
hp: 400
|
||||||
@@ -1770,6 +1804,7 @@ api.quests =
|
|||||||
notes: t('questSheepNotes')
|
notes: t('questSheepNotes')
|
||||||
completion: t('questSheepCompletion')
|
completion: t('questSheepCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questSheepBoss')
|
name: t('questSheepBoss')
|
||||||
hp: 300
|
hp: 300
|
||||||
@@ -1789,6 +1824,7 @@ api.quests =
|
|||||||
notes: t('questKrakenNotes')
|
notes: t('questKrakenNotes')
|
||||||
completion: t('questKrakenCompletion')
|
completion: t('questKrakenCompletion')
|
||||||
value: 4
|
value: 4
|
||||||
|
category: 'pet'
|
||||||
boss:
|
boss:
|
||||||
name: t('questKrakenBoss')
|
name: t('questKrakenBoss')
|
||||||
hp: 800
|
hp: 800
|
||||||
@@ -1811,6 +1847,10 @@ _.each api.quests, (v,key) ->
|
|||||||
if b.rage
|
if b.rage
|
||||||
_.defaults b.rage, {title:t('bossRageTitle'),description:t('bossRageDescription')}
|
_.defaults b.rage, {title:t('bossRageTitle'),description:t('bossRageDescription')}
|
||||||
|
|
||||||
|
api.questsByLevel =
|
||||||
|
_.sortBy api.quests, (quest) ->
|
||||||
|
quest.lvl || 0
|
||||||
|
|
||||||
api.backgrounds =
|
api.backgrounds =
|
||||||
backgrounds062014:
|
backgrounds062014:
|
||||||
beach:
|
beach:
|
||||||
|
|||||||
@@ -574,6 +574,7 @@ describe 'User', ->
|
|||||||
expect(quest.value).to.be.greaterThan 0 if quest.canBuy
|
expect(quest.value).to.be.greaterThan 0 if quest.canBuy
|
||||||
expect(quest.drop.gp).to.not.be.lessThan 0
|
expect(quest.drop.gp).to.not.be.lessThan 0
|
||||||
expect(quest.drop.exp).to.not.be.lessThan 0
|
expect(quest.drop.exp).to.not.be.lessThan 0
|
||||||
|
expect(quest.category).to.match('pet|unlockable|gold|world')
|
||||||
if quest.drop.items
|
if quest.drop.items
|
||||||
expect(quest.drop.items).to.be.an(Array)
|
expect(quest.drop.items).to.be.an(Array)
|
||||||
if quest.boss
|
if quest.boss
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ menu.pets div
|
|||||||
padding:.3em
|
padding:.3em
|
||||||
width:6em
|
width:6em
|
||||||
margin-top:1em
|
margin-top:1em
|
||||||
|
text-align:center
|
||||||
p
|
p
|
||||||
text-align:center
|
|
||||||
//width:6em
|
//width:6em
|
||||||
margin-top:-.3em
|
margin-top:-.3em
|
||||||
.hatchingPotion-menu > div
|
.hatchingPotion-menu > div
|
||||||
|
|||||||
@@ -193,6 +193,10 @@ window.habitrpg = angular.module('habitrpg',
|
|||||||
url: '/drops',
|
url: '/drops',
|
||||||
templateUrl: "partials/options.inventory.drops.html"
|
templateUrl: "partials/options.inventory.drops.html"
|
||||||
})
|
})
|
||||||
|
.state('options.inventory.quests', {
|
||||||
|
url: '/quests',
|
||||||
|
templateUrl: "partials/options.inventory.quests.html"
|
||||||
|
})
|
||||||
.state('options.inventory.pets', {
|
.state('options.inventory.pets', {
|
||||||
url: '/pets',
|
url: '/pets',
|
||||||
templateUrl: "partials/options.inventory.pets.html"
|
templateUrl: "partials/options.inventory.pets.html"
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
habitrpg.controller("HeaderCtrl", ['$scope', 'Groups', 'User', '$location', '$rootScope', 'Analytics',
|
habitrpg.controller("HeaderCtrl", ['$scope', 'Groups', 'User',
|
||||||
function($scope, Groups, User, $location, $rootScope, Analytics) {
|
function($scope, Groups, User) {
|
||||||
|
|
||||||
$scope.Math = window.Math;
|
$scope.Math = window.Math;
|
||||||
$scope.user = User.user;
|
$scope.user = User.user;
|
||||||
|
|
||||||
|
$scope.inviteOrStartParty = Groups.inviteOrStartParty;
|
||||||
|
|
||||||
$scope.party = Groups.party(function(){
|
$scope.party = Groups.party(function(){
|
||||||
var triggerResort = function() {
|
var triggerResort = function() {
|
||||||
$scope.partyMinusSelf = resortParty();
|
$scope.partyMinusSelf = resortParty();
|
||||||
@@ -16,20 +18,6 @@ habitrpg.controller("HeaderCtrl", ['$scope', 'Groups', 'User', '$location', '$ro
|
|||||||
$scope.$watch('user.party.orderAscending', triggerResort);
|
$scope.$watch('user.party.orderAscending', triggerResort);
|
||||||
});
|
});
|
||||||
|
|
||||||
$scope.inviteOrStartParty = function(group) {
|
|
||||||
if (group.type === "party") {
|
|
||||||
$rootScope.openModal('invite-friends', {
|
|
||||||
controller:'InviteToGroupCtrl',
|
|
||||||
resolve: {
|
|
||||||
injectedGroup: function(){ return group; }
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
Analytics.track({'hitType':'event','eventCategory':'button','eventAction':'click','eventLabel':'Invite Friends'});
|
|
||||||
$location.path("/options/groups/party");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function resortParty() {
|
function resortParty() {
|
||||||
var result = _.sortBy(
|
var result = _.sortBy(
|
||||||
_.filter($scope.party.members, function(member){
|
_.filter($scope.party.members, function(member){
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
habitrpg.controller("InventoryCtrl",
|
habitrpg.controller("InventoryCtrl",
|
||||||
['$rootScope', '$scope', 'Shared', '$window', 'User', 'Content', 'Analytics',
|
['$rootScope', '$scope', 'Shared', '$window', 'User', 'Content', 'Analytics', 'Quests',
|
||||||
function($rootScope, $scope, Shared, $window, User, Content, Analytics) {
|
function($rootScope, $scope, Shared, $window, User, Content, Analytics, Quests) {
|
||||||
|
|
||||||
var user = User.user;
|
var user = User.user;
|
||||||
|
|
||||||
@@ -11,6 +11,13 @@ habitrpg.controller("InventoryCtrl",
|
|||||||
$scope.totalPets = _.size(Content.dropEggs) * _.size(Content.hatchingPotions);
|
$scope.totalPets = _.size(Content.dropEggs) * _.size(Content.hatchingPotions);
|
||||||
$scope.totalMounts = _.size(Content.dropEggs) * _.size(Content.hatchingPotions);
|
$scope.totalMounts = _.size(Content.dropEggs) * _.size(Content.hatchingPotions);
|
||||||
|
|
||||||
|
// Functions from Quests service
|
||||||
|
$scope.lockQuest = Quests.lockQuest;
|
||||||
|
$scope.buyQuest = Quests.buyQuest;
|
||||||
|
$scope.questPopover = Quests.questPopover;
|
||||||
|
$scope.showQuest = Quests.showQuest;
|
||||||
|
$scope.closeQuest = Quests.closeQuest;
|
||||||
|
|
||||||
// count egg, food, hatchingPotion stack totals
|
// count egg, food, hatchingPotion stack totals
|
||||||
var countStacks = function(items) { return _.reduce(items,function(m,v){return m+v;},0);}
|
var countStacks = function(items) { return _.reduce(items,function(m,v){return m+v;},0);}
|
||||||
|
|
||||||
@@ -139,46 +146,6 @@ habitrpg.controller("InventoryCtrl",
|
|||||||
User.user.ops.equip({params:{type: 'mount', key: egg + '-' + potion}});
|
User.user.ops.equip({params:{type: 'mount', key: egg + '-' + potion}});
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.questPopover = function(quest) {
|
|
||||||
// The popover gets parsed as markdown (hence the double \n for line breaks
|
|
||||||
var text = '';
|
|
||||||
if(quest.boss) {
|
|
||||||
text += '**' + window.env.t('bossHP') + ':** ' + quest.boss.hp + '\n\n';
|
|
||||||
text += '**' + window.env.t('bossStrength') + ':** ' + quest.boss.str + '\n\n';
|
|
||||||
} else if(quest.collect) {
|
|
||||||
var count = 0;
|
|
||||||
for (var key in quest.collect) {
|
|
||||||
text += '**' + window.env.t('collect') + ':** ' + quest.collect[key].count + ' ' + quest.collect[key].text() + '\n\n';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
text += '---\n\n';
|
|
||||||
text += '**' + window.env.t('rewards') + ':**\n\n';
|
|
||||||
if(quest.drop.items) {
|
|
||||||
for (var item in quest.drop.items) {
|
|
||||||
text += quest.drop.items[item].text() + '\n\n';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(quest.drop.exp)
|
|
||||||
text += quest.drop.exp + ' ' + window.env.t('experience') + '\n\n';
|
|
||||||
if(quest.drop.gp)
|
|
||||||
text += quest.drop.gp + ' ' + window.env.t('gold') + '\n\n';
|
|
||||||
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
$scope.showQuest = function(quest) {
|
|
||||||
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()}));
|
|
||||||
if (item.lvl && item.lvl > user.stats.lvl)
|
|
||||||
return alert(window.env.t('mustLevel', {level: item.lvl}));
|
|
||||||
$rootScope.selectedQuest = item;
|
|
||||||
$rootScope.openModal('showQuest', {controller:'InventoryCtrl'});
|
|
||||||
}
|
|
||||||
$scope.closeQuest = function(){
|
|
||||||
$rootScope.selectedQuest = undefined;
|
|
||||||
}
|
|
||||||
$scope.questInit = function(){
|
$scope.questInit = function(){
|
||||||
Analytics.track({'hitType':'event','eventCategory':'behavior','eventAction':'quest','owner':true,'response':'accept','questName':$scope.selectedQuest.key});
|
Analytics.track({'hitType':'event','eventCategory':'behavior','eventAction':'quest','owner':true,'response':'accept','questName':$scope.selectedQuest.key});
|
||||||
$rootScope.party.$questAccept({key:$scope.selectedQuest.key}, function(){
|
$rootScope.party.$questAccept({key:$scope.selectedQuest.key}, function(){
|
||||||
@@ -186,16 +153,6 @@ habitrpg.controller("InventoryCtrl",
|
|||||||
});
|
});
|
||||||
$scope.closeQuest();
|
$scope.closeQuest();
|
||||||
}
|
}
|
||||||
$scope.buyQuest = function(quest) {
|
|
||||||
var item = Content.quests[quest];
|
|
||||||
if (item.lvl && item.lvl > user.stats.lvl)
|
|
||||||
return alert(window.env.t('mustLvlQuest', {level: item.lvl}));
|
|
||||||
var completedPrevious = !item.previous || (User.user.achievements.quests && User.user.achievements.quests[item.previous]);
|
|
||||||
if (!completedPrevious)
|
|
||||||
return $scope.purchase("quests", item);
|
|
||||||
$rootScope.selectedQuest = item;
|
|
||||||
$rootScope.openModal('buyQuest', {controller:'InventoryCtrl'});
|
|
||||||
}
|
|
||||||
|
|
||||||
$scope.getSeasonalShopArray = function(set){
|
$scope.getSeasonalShopArray = function(set){
|
||||||
var flatGearArray = _.toArray(Content.gear.flat);
|
var flatGearArray = _.toArray(Content.gear.flat);
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
angular.module('habitrpg').factory('Groups',
|
angular.module('habitrpg').factory('Groups',
|
||||||
['ApiUrl', '$resource', '$q', '$http', 'User', 'Challenges',
|
['$rootScope','ApiUrl', '$resource', '$q', '$http', 'User', 'Challenges', 'Analytics', '$location',
|
||||||
function(ApiUrl, $resource, $q, $http, User, Challenges) {
|
function($rootScope, ApiUrl, $resource, $q, $http, User, Challenges, Analytics, $location) {
|
||||||
var Group = $resource(ApiUrl.get() + '/api/v2/groups/:gid',
|
var Group = $resource(ApiUrl.get() + '/api/v2/groups/:gid',
|
||||||
{gid:'@_id', messageId: '@_messageId'},
|
{gid:'@_id', messageId: '@_messageId'},
|
||||||
{
|
{
|
||||||
@@ -83,6 +83,20 @@ function(ApiUrl, $resource, $q, $http, User, Challenges) {
|
|||||||
.then(syncUser, logError);
|
.then(syncUser, logError);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
inviteOrStartParty: function(group) {
|
||||||
|
if (group.type === "party") {
|
||||||
|
$rootScope.openModal('invite-friends', {
|
||||||
|
controller:'InviteToGroupCtrl',
|
||||||
|
resolve: {
|
||||||
|
injectedGroup: function(){ return group; }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Analytics.track({'hitType':'event','eventCategory':'button','eventAction':'click','eventLabel':'Invite Friends'});
|
||||||
|
$location.path("/options/groups/party");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// Pass reference to party, myGuilds, publicGuilds, tavern; inside data in order to
|
// Pass reference to party, myGuilds, publicGuilds, tavern; inside data in order to
|
||||||
// be able to modify them directly (otherwise will be stick with cached version)
|
// be able to modify them directly (otherwise will be stick with cached version)
|
||||||
data: data,
|
data: data,
|
||||||
|
|||||||
95
website/public/js/services/questServices.js
Normal file
95
website/public/js/services/questServices.js
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
/**
|
||||||
|
* Created by Sabe on 7/7/2015.
|
||||||
|
*/
|
||||||
|
(function(){
|
||||||
|
angular
|
||||||
|
.module('habitrpg')
|
||||||
|
.factory('Quests', questsFactory);
|
||||||
|
|
||||||
|
questsFactory.$inject = [
|
||||||
|
'$rootScope',
|
||||||
|
'Content',
|
||||||
|
'Groups',
|
||||||
|
'User'
|
||||||
|
];
|
||||||
|
|
||||||
|
function questsFactory($rootScope,Content,Groups,User) {
|
||||||
|
|
||||||
|
var user = User.user;
|
||||||
|
|
||||||
|
function lockQuest(quest,ignoreLevel) {
|
||||||
|
if (!ignoreLevel){
|
||||||
|
if (quest.lvl && user.stats.lvl < quest.lvl) return true;
|
||||||
|
}
|
||||||
|
if (user.achievements.quests) return (quest.previous && !user.achievements.quests[quest.previous]);
|
||||||
|
return (quest.previous);
|
||||||
|
}
|
||||||
|
|
||||||
|
function buyQuest(quest) {
|
||||||
|
var item = Content.quests[quest];
|
||||||
|
|
||||||
|
if (item.unlockCondition && item.unlockCondition.condition === 'party invite') {
|
||||||
|
if (!confirm(window.env.t('mustInviteFriend'))) return;
|
||||||
|
return Groups.inviteOrStartParty(Groups.party());
|
||||||
|
}
|
||||||
|
if (item.previous && (!User.user.achievements.quests || (User.user.achievements.quests && !User.user.achievements.quests[item.previous]))){
|
||||||
|
return alert(window.env.t('unlockByQuesting', {title: Content.quests[item.previous].text()}));
|
||||||
|
}
|
||||||
|
if (item.lvl && item.lvl > user.stats.lvl) {
|
||||||
|
return alert(window.env.t('mustLvlQuest', {level: item.lvl}));
|
||||||
|
}
|
||||||
|
$rootScope.selectedQuest = item;
|
||||||
|
$rootScope.openModal('buyQuest', {controller:'InventoryCtrl'});
|
||||||
|
}
|
||||||
|
|
||||||
|
function questPopover(quest) {
|
||||||
|
// The popover gets parsed as markdown (hence the double \n for line breaks
|
||||||
|
var text = '';
|
||||||
|
if(quest.boss) {
|
||||||
|
text += '**' + window.env.t('bossHP') + ':** ' + quest.boss.hp + '\n\n';
|
||||||
|
text += '**' + window.env.t('bossStrength') + ':** ' + quest.boss.str + '\n\n';
|
||||||
|
} else if(quest.collect) {
|
||||||
|
var count = 0;
|
||||||
|
for (var key in quest.collect) {
|
||||||
|
text += '**' + window.env.t('collect') + ':** ' + quest.collect[key].count + ' ' + quest.collect[key].text() + '\n\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
text += '---\n\n';
|
||||||
|
text += '**' + window.env.t('rewards') + ':**\n\n';
|
||||||
|
if(quest.drop.items) {
|
||||||
|
for (var item in quest.drop.items) {
|
||||||
|
text += quest.drop.items[item].text() + '\n\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(quest.drop.exp)
|
||||||
|
text += quest.drop.exp + ' ' + window.env.t('experience') + '\n\n';
|
||||||
|
if(quest.drop.gp)
|
||||||
|
text += quest.drop.gp + ' ' + window.env.t('gold') + '\n\n';
|
||||||
|
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
function showQuest(quest) {
|
||||||
|
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()}));
|
||||||
|
if (item.lvl && item.lvl > user.stats.lvl)
|
||||||
|
return alert(window.env.t('mustLevel', {level: item.lvl}));
|
||||||
|
$rootScope.selectedQuest = item;
|
||||||
|
$rootScope.openModal('showQuest', {controller:'InventoryCtrl'});
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeQuest(){
|
||||||
|
$rootScope.selectedQuest = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
lockQuest: lockQuest,
|
||||||
|
buyQuest: buyQuest,
|
||||||
|
questPopover: questPopover,
|
||||||
|
showQuest: showQuest,
|
||||||
|
closeQuest: closeQuest
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}());
|
||||||
@@ -51,6 +51,7 @@
|
|||||||
"js/services/taskServices.js",
|
"js/services/taskServices.js",
|
||||||
"js/services/challengeServices.js",
|
"js/services/challengeServices.js",
|
||||||
"js/services/paymentServices.js",
|
"js/services/paymentServices.js",
|
||||||
|
"js/services/questServices.js",
|
||||||
|
|
||||||
"js/filters/money.js",
|
"js/filters/money.js",
|
||||||
"js/filters/roundLargeNumbers.js",
|
"js/filters/roundLargeNumbers.js",
|
||||||
|
|||||||
30
website/views/options/inventory/equipment.jade
Normal file
30
website/views/options/inventory/equipment.jade
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
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')
|
||||||
|
.well.use-costume-info
|
||||||
|
p=env.t('useCostumeInfo1')
|
||||||
|
p(ng-if='showUseCostumeInfo')!=env.t('useCostumeInfo2')
|
||||||
|
p: a(ng-click='showUseCostumeInfo = !showUseCostumeInfo') {{!showUseCostumeInfo ? env.t('showMoreMore') : env.t('showMoreLess')}}
|
||||||
|
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}')
|
||||||
@@ -1,11 +1,18 @@
|
|||||||
|
include ./equipment
|
||||||
include ./inventory
|
include ./inventory
|
||||||
|
include ./quests
|
||||||
|
include ./seasonal-shop
|
||||||
include ./stable
|
include ./stable
|
||||||
|
include ./time-travelers
|
||||||
|
|
||||||
script(type='text/ng-template', id='partials/options.inventory.html')
|
script(type='text/ng-template', id='partials/options.inventory.html')
|
||||||
ul.options-menu
|
ul.options-menu
|
||||||
li(ng-class="{ active: $state.includes('options.inventory.drops') }")
|
li(ng-class="{ active: $state.includes('options.inventory.drops') }")
|
||||||
a(ui-sref='options.inventory.drops')
|
a(ui-sref='options.inventory.drops')
|
||||||
=env.t('market')
|
=env.t('market')
|
||||||
|
li(ng-class="{ active: $state.includes('options.inventory.quests') }")
|
||||||
|
a(ui-sref='options.inventory.quests')
|
||||||
|
=env.t('quests')
|
||||||
li(ng-class="{ active: $state.includes('options.inventory.pets') }")
|
li(ng-class="{ active: $state.includes('options.inventory.pets') }")
|
||||||
a(ui-sref='options.inventory.pets')
|
a(ui-sref='options.inventory.pets')
|
||||||
=env.t('pets')
|
=env.t('pets')
|
||||||
|
|||||||
@@ -1,101 +1,3 @@
|
|||||||
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')
|
|
||||||
.well.use-costume-info
|
|
||||||
p=env.t('useCostumeInfo1')
|
|
||||||
p(ng-if='showUseCostumeInfo')!=env.t('useCostumeInfo2')
|
|
||||||
p: a(ng-click='showUseCostumeInfo = !showUseCostumeInfo') {{!showUseCostumeInfo ? env.t('showMoreMore') : env.t('showMoreLess')}}
|
|
||||||
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:"<a href='http://blog.habitrpg.com/who' target='_blank'>", linkEnd: "</a>"})
|
|
||||||
.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.seafoam.notes()}}', popover-title='{{::Content.spells.special.seafoam.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='purchase("special", Content.spells.special.seafoam)', class='shop_seafoam')
|
|
||||||
p
|
|
||||||
| {{::Content.spells.special.seafoam.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: "<a href='https://github.com/lefnire' target='_blank'>", linkStartVicky: "<a href='http://blog.habitrpg.com/who' target='_blank'>", linkEnd: "</a>"})
|
|
||||||
.popover-content
|
|
||||||
p!=env.t('timeTravelersPopoverNoSub', {linkStart: "<a href='https://habitrpg.com/#/options/settings/subscription' target='_blank'>", linkEnd: "</a>"})
|
|
||||||
.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: "<a href='http://habitrpg.wikia.com/wiki/Mystery_Item' target='_blank'>", linkEnd: "</a>"})
|
|
||||||
|
|
||||||
.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')
|
script(type='text/ng-template', id='partials/options.inventory.drops.html')
|
||||||
.container-fluid
|
.container-fluid
|
||||||
.row
|
.row
|
||||||
@@ -120,14 +22,6 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
|
|||||||
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)}')
|
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}}
|
.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') + ' <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(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
|
li.customize-menu
|
||||||
menu.pets-menu(label=env.t('food') + ' ({{foodCount}})')
|
menu.pets-menu(label=env.t('food') + ' ({{foodCount}})')
|
||||||
p.muted(ng-show='foodCount < 1')=env.t('noFood')
|
p.muted(ng-show='foodCount < 1')=env.t('noFood')
|
||||||
@@ -135,7 +29,6 @@ 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', popover-append-to-body='true', 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', popover-append-to-body='true', ng-click='chooseFood(food)', class='Pet_Food_{{::food}}')
|
||||||
.badge.badge-info.stack-count {{points}}
|
.badge.badge-info.stack-count {{points}}
|
||||||
|
|
||||||
|
|
||||||
li.customize-menu
|
li.customize-menu
|
||||||
menu.pets-menu(label=env.t('special'))
|
menu.pets-menu(label=env.t('special'))
|
||||||
mixin specialItem(k)
|
mixin specialItem(k)
|
||||||
@@ -221,15 +114,6 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
|
|||||||
| {{::food.value}}
|
| {{::food.value}}
|
||||||
span.Pet_Currency_Gem1x.inline-gems
|
span.Pet_Currency_Gem1x.inline-gems
|
||||||
|
|
||||||
li.customize-menu
|
|
||||||
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(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
|
li.customize-menu
|
||||||
menu.pets-menu(label=env.t('special'))
|
menu.pets-menu(label=env.t('special'))
|
||||||
div
|
div
|
||||||
|
|||||||
38
website/views/options/inventory/quests.jade
Normal file
38
website/views/options/inventory/quests.jade
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
// Created by Sabe on 7/6/2015.
|
||||||
|
script(type='text/ng-template', id='partials/options.inventory.quests.html')
|
||||||
|
.container-fluid
|
||||||
|
.row
|
||||||
|
.col-md-2
|
||||||
|
.npc_ian
|
||||||
|
.col-md-10
|
||||||
|
.popover.static-popover.fade.right.in
|
||||||
|
.arrow
|
||||||
|
h3.popover-title=env.t('ian')
|
||||||
|
.popover-content
|
||||||
|
p.muted!=env.t('scrollsText1') + ' <a href="/#/options/groups/party">' + env.t('scrollsText2') + '</a>.'
|
||||||
|
.row
|
||||||
|
- var questCategories = {'unlockable':'unlockableQuests','pet':'petQuests','gold':'goldQuests'}
|
||||||
|
.col-md-6
|
||||||
|
h3.equipment-title=env.t('yourQuests')
|
||||||
|
menu.inventory-list
|
||||||
|
li.customize-menu
|
||||||
|
p.muted(ng-show='questCount < 1')=env.t('noScrolls')
|
||||||
|
each caption,type in questCategories
|
||||||
|
menu.pets-menu(label=env.t(caption))
|
||||||
|
div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]', ng-if='Content.quests[quest_key].category === "#{type}"')
|
||||||
|
button.customize-option(data-popover-html="{{::lockQuest(quest) ? 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='lockQuest(quest) ? "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}}
|
||||||
|
.col-md-6.border-left
|
||||||
|
li.customize-menu
|
||||||
|
h3.equipment-title=env.t('questsForSale')
|
||||||
|
each caption,type in questCategories
|
||||||
|
menu.pets-menu(label=env.t(caption))
|
||||||
|
div(ng-repeat='quest in Content.questsByLevel', ng-if='quest.canBuy && quest.category === "#{type}"')
|
||||||
|
button.customize-option(data-popover-html="{{::lockQuest(quest,true) ? 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='lockQuest(quest) ? "inventory_quest_scroll_locked inventory_quest_scroll_{{::quest.key}}_locked locked" : "inventory_quest_scroll inventory_quest_scroll_{{::quest.key}}"')
|
||||||
|
p(ng-if='quest.unlockCondition')
|
||||||
|
| {{::quest.unlockCondition.text()}}
|
||||||
|
p(ng-if='quest.value && !lockQuest(quest)')
|
||||||
|
| {{::quest.value}}
|
||||||
|
span.Pet_Currency_Gem1x.inline-gems
|
||||||
|
p(ng-if='quest.lvl && lockQuest(quest)')=env.t('level')
|
||||||
|
| {{::quest.lvl}}
|
||||||
36
website/views/options/inventory/seasonal-shop.jade
Normal file
36
website/views/options/inventory/seasonal-shop.jade
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
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:"<a href='http://blog.habitrpg.com/who' target='_blank'>", linkEnd: "</a>"})
|
||||||
|
.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.seafoam.notes()}}', popover-title='{{::Content.spells.special.seafoam.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='purchase("special", Content.spells.special.seafoam)', class='shop_seafoam')
|
||||||
|
p
|
||||||
|
| {{::Content.spells.special.seafoam.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')
|
||||||
29
website/views/options/inventory/time-travelers.jade
Normal file
29
website/views/options/inventory/time-travelers.jade
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
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: "<a href='https://github.com/lefnire' target='_blank'>", linkStartVicky: "<a href='http://blog.habitrpg.com/who' target='_blank'>", linkEnd: "</a>"})
|
||||||
|
.popover-content
|
||||||
|
p!=env.t('timeTravelersPopoverNoSub', {linkStart: "<a href='https://habitrpg.com/#/options/settings/subscription' target='_blank'>", linkEnd: "</a>"})
|
||||||
|
.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: "<a href='http://habitrpg.wikia.com/wiki/Mystery_Item' target='_blank'>", linkEnd: "</a>"})
|
||||||
|
|
||||||
|
.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}}')
|
||||||
@@ -41,6 +41,8 @@ nav.toolbar(ng-controller='MenuCtrl', ng-class='{active: isToolbarHidden}')
|
|||||||
ul.toolbar-submenu
|
ul.toolbar-submenu
|
||||||
li
|
li
|
||||||
a(ui-sref='options.inventory.drops')=env.t('market')
|
a(ui-sref='options.inventory.drops')=env.t('market')
|
||||||
|
li
|
||||||
|
a(ui-sref='options.inventory.quests')=env.t('quests')
|
||||||
li
|
li
|
||||||
a(ui-sref='options.inventory.pets')=env.t('pets')
|
a(ui-sref='options.inventory.pets')=env.t('pets')
|
||||||
li
|
li
|
||||||
@@ -125,6 +127,8 @@ nav.toolbar(ng-controller='MenuCtrl', ng-class='{active: isToolbarHidden}')
|
|||||||
ul.toolbar-submenu(ng-click='expandMenu(null)')
|
ul.toolbar-submenu(ng-click='expandMenu(null)')
|
||||||
li
|
li
|
||||||
a(ui-sref='options.inventory.drops')=env.t('market')
|
a(ui-sref='options.inventory.drops')=env.t('market')
|
||||||
|
li
|
||||||
|
a(ui-sref='options.inventory.quests')=env.t('quests')
|
||||||
li
|
li
|
||||||
a(ui-sref='options.inventory.pets')=env.t('pets')
|
a(ui-sref='options.inventory.pets')=env.t('pets')
|
||||||
li
|
li
|
||||||
|
|||||||
Reference in New Issue
Block a user