diff --git a/website/client/components/inventory/items/index.vue b/website/client/components/inventory/items/index.vue index 3a9a08fde7..fbb25ae045 100644 --- a/website/client/components/inventory/items/index.vue +++ b/website/client/components/inventory/items/index.vue @@ -171,6 +171,10 @@ position: inherit; width: 180px; } + + .popover-content { + color: white; + } } diff --git a/website/client/components/inventory/stable/index.vue b/website/client/components/inventory/stable/index.vue index ced68b826a..c09e2842e7 100644 --- a/website/client/components/inventory/stable/index.vue +++ b/website/client/components/inventory/stable/index.vue @@ -99,7 +99,7 @@ :popoverPosition="'top'", :progress="context.item.progress", :emptyItem="!context.item.isOwned()", - :showPopover="true", + :showPopover="currentDraggingFood == null", :highlightBorder="highlightPet == context.item.key", @click="petClicked(context.item)" ) @@ -453,6 +453,10 @@ position: inherit; width: 100px; } + + .popover-content { + color: white; + } } .hatchablePopover { @@ -909,11 +913,13 @@ }, petClicked (pet) { - if (this.currentDraggingFood !== null && pet.isAllowedToFeed()) { - // food process - this.feedAction(pet.key, this.currentDraggingFood.key); - this.currentDraggingFood = null; - this.foodClickMode = false; + if (this.currentDraggingFood !== null) { + if (pet.isAllowedToFeed()) { + // food process + this.feedAction(pet.key, this.currentDraggingFood.key); + this.currentDraggingFood = null; + this.foodClickMode = false; + } } else { if (pet.isOwned()) { this.selectPet(pet); diff --git a/website/client/components/inventory/stable/petItem.vue b/website/client/components/inventory/stable/petItem.vue index 4a290a5e2f..6adbee6cde 100644 --- a/website/client/components/inventory/stable/petItem.vue +++ b/website/client/components/inventory/stable/petItem.vue @@ -11,9 +11,8 @@ div span.item-label(v-if="label") {{ label }} b-popover( - v-if="showPopover", :target="itemId", - triggers="hover", + :triggers="showPopover ? 'hover' : ''", :placement="popoverPosition", ) slot(name="popoverContent", :item="item") diff --git a/website/client/components/selectMembersModal.vue b/website/client/components/selectMembersModal.vue index 412f6ec1b3..3bda2e7936 100644 --- a/website/client/components/selectMembersModal.vue +++ b/website/client/components/selectMembersModal.vue @@ -161,7 +161,7 @@ export default { }, }, watch: { - groupId () { + item () { this.getMembers(); }, }, diff --git a/website/client/components/tasks/task.vue b/website/client/components/tasks/task.vue index 09b82530b3..dd709521d2 100644 --- a/website/client/components/tasks/task.vue +++ b/website/client/components/tasks/task.vue @@ -459,7 +459,8 @@ export default { } if (drop) { - let text; + let dropText; + let dropNotes; let type; this.$root.$emit('playSound', 'Item_Drop'); @@ -483,14 +484,17 @@ export default { } if (drop.type === 'HatchingPotion') { - text = Content.hatchingPotions[drop.key].text(); - this.drop(this.$t('messageDropPotion', {dropText: text}), drop); + dropText = Content.hatchingPotions[drop.key].text(); + dropNotes = Content.hatchingPotions[drop.key].notes(); + this.drop(this.$t('messageDropPotion', {dropText, dropNotes}), drop); } else if (drop.type === 'Egg') { - text = Content.eggs[drop.key].text(); - this.drop(this.$t('messageDropEgg', {dropText: text}), drop); + dropText = Content.eggs[drop.key].text(); + dropNotes = Content.eggs[drop.key].notes(); + this.drop(this.$t('messageDropEgg', {dropText, dropNotes}), drop); } else if (drop.type === 'Food') { - text = Content.food[drop.key].text(); - this.drop(this.$t('messageDropFood', {dropArticle: drop.article, dropText: text}), drop); + dropText = Content.food[drop.key].text(); + dropNotes = Content.food[drop.key].notes(); + this.drop(this.$t('messageDropFood', {dropArticle: drop.article, dropText, dropNotes}), drop); } else if (drop.type === 'Quest') { // TODO $rootScope.selectedQuest = Content.quests[drop.key]; // $rootScope.openModal('questDrop', {controller:'PartyCtrl', size:'sm'}); diff --git a/website/client/libs/createAnimal.js b/website/client/libs/createAnimal.js index f677cc1499..ae8c2cfe5f 100644 --- a/website/client/libs/createAnimal.js +++ b/website/client/libs/createAnimal.js @@ -1,3 +1,13 @@ + +function getText (textOrFunction) { + if (textOrFunction instanceof Function) { + return textOrFunction(); + } else { + return textOrFunction; + } +} + + export default function createAnimal (egg, potion, type, content, userItems) { let animalKey = `${egg.key}-${potion.key}`; @@ -5,9 +15,9 @@ export default function createAnimal (egg, potion, type, content, userItems) { key: animalKey, class: type === 'pet' ? `Pet Pet-${animalKey}` : `Mount_Icon_${animalKey}`, eggKey: egg.key, - eggName: egg.text, + eggName: getText(egg.text), potionKey: potion.key, - potionName: potion.text, + potionName: getText(potion.text), name: content[`${type}Info`][animalKey].text(), isOwned () { return userItems[`${type}s`][animalKey] > 0; diff --git a/website/common/script/libs/shops.js b/website/common/script/libs/shops.js index ec4b73ebb2..59084a38f2 100644 --- a/website/common/script/libs/shops.js +++ b/website/common/script/libs/shops.js @@ -102,6 +102,13 @@ shops.checkMarketGearLocked = function checkMarketGearLocked (user, items) { if (gear.canOwn) { gear.locked = !gear.canOwn(user); } + + + let itemOwned = user.items.gear.owned[gear.key]; + + if (itemOwned === false) { + gear.locked = false; + } } }; diff --git a/website/common/script/ops/pinnedGearUtils.js b/website/common/script/ops/pinnedGearUtils.js index df8f8a4f4d..f25d317aac 100644 --- a/website/common/script/ops/pinnedGearUtils.js +++ b/website/common/script/ops/pinnedGearUtils.js @@ -10,6 +10,19 @@ const officialPinnedItems = content.officialPinnedItems; import updateStore from '../libs/updateStore'; +function addPinnedGear (user, type, path) { + const foundIndex = user.pinnedItems.findIndex(pinnedItem => { + return pinnedItem.path === path; + }); + + if (foundIndex === -1) { + user.pinnedItems.push({ + type, + path, + }); + } +} + function addPinnedGearByClass (user) { if (user.flags.classSelected) { let newPinnedItems = updateStore(user); @@ -17,16 +30,7 @@ function addPinnedGearByClass (user) { for (let item of newPinnedItems) { let itemInfo = getItemInfo(user, 'marketGear', item); - const foundIndex = user.pinnedItems.findIndex(pinnedItem => { - return pinnedItem.path === itemInfo.path; - }); - - if (foundIndex === -1) { - user.pinnedItems.push({ - type: 'marketGear', - path: itemInfo.path, - }); - } + addPinnedGear(user, itemInfo.pinType, itemInfo.path); } } } @@ -124,6 +128,7 @@ function togglePinnedItem (user, {item, type, path}, req = {}) { module.exports = { addPinnedGearByClass, + addPinnedGear, removePinnedGearByClass, removePinnedGearAddPossibleNewOnes, togglePinnedItem, diff --git a/website/common/script/ops/revive.js b/website/common/script/ops/revive.js index a2192acb52..b8ddb0b637 100644 --- a/website/common/script/ops/revive.js +++ b/website/common/script/ops/revive.js @@ -9,7 +9,8 @@ import { import randomVal from '../libs/randomVal'; import predictableRandom from '../fns/predictableRandom'; -import { removePinnedGearByClass, addPinnedGearByClass } from './pinnedGearUtils'; +import { removePinnedGearByClass, addPinnedGearByClass, addPinnedGear } from './pinnedGearUtils'; +import getItemInfo from '../libs/getItemInfo'; module.exports = function revive (user, req = {}, analytics) { if (user.stats.hp > 0) { @@ -89,6 +90,9 @@ module.exports = function revive (user, req = {}, analytics) { addPinnedGearByClass(user); + let itemInfo = getItemInfo(user, 'marketGear', item); + addPinnedGear(user, itemInfo.pinType, itemInfo.path); + if (user.items.gear.equipped[item.type] === lostItem) { user.items.gear.equipped[item.type] = `${item.type}_base_0`; }