mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-15 05:37:22 +01:00
misc fixes - sep 17 (#9045)
* not locking pre-owned gear - pin removed gear on revive * fix createAnimal (check for function) - hide pet-popover while dragging food * fix dragging popover text color * fix drop toasts * selectMembersModal: load members on item change
This commit is contained in:
@@ -171,6 +171,10 @@
|
||||
position: inherit;
|
||||
width: 180px;
|
||||
}
|
||||
|
||||
.popover-content {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -161,7 +161,7 @@ export default {
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
groupId () {
|
||||
item () {
|
||||
this.getMembers();
|
||||
},
|
||||
},
|
||||
|
||||
@@ -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'});
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user