diff --git a/Server/src/main/content/global/handlers/item/withnpc/CatOnArdougneCivilian.kt b/Server/src/main/content/global/handlers/item/withnpc/CatOnArdougneCivilian.kt index eee377bf4..7046b50a2 100644 --- a/Server/src/main/content/global/handlers/item/withnpc/CatOnArdougneCivilian.kt +++ b/Server/src/main/content/global/handlers/item/withnpc/CatOnArdougneCivilian.kt @@ -47,7 +47,7 @@ class CatOnArdougneCivilian: InteractionListener { override fun defineListeners() { onUseWith(IntType.NPC,cats,*civilians){ player, used, _ -> sendItemDialogue(player,Items.DEATH_RUNE_560,"You hand over the cat.
You are given 100 Death Runes.") - player.familiarManager.removeDetails(used.id) + player.familiarManager.removeDetails(used.idHash) removeItem(player,used,Container.INVENTORY) addItem(player,Items.DEATH_RUNE_560,100) return@onUseWith true diff --git a/Server/src/main/content/global/skill/summoning/familiar/FamiliarManager.java b/Server/src/main/content/global/skill/summoning/familiar/FamiliarManager.java index 38b0f6d47..741ccef6d 100644 --- a/Server/src/main/content/global/skill/summoning/familiar/FamiliarManager.java +++ b/Server/src/main/content/global/skill/summoning/familiar/FamiliarManager.java @@ -418,14 +418,10 @@ public final class FamiliarManager { /** * Removes the details for this pet. - * @param itemId The item id of the pet. + * @param itemIdHash The item id hash of the pet. */ - public void removeDetails(int itemId) { - Pets pets = Pets.forId(itemId); - if (pets == null) { - return; - } - petDetails.remove(pets.getBabyItemId()); + public void removeDetails(int itemIdHash) { + petDetails.remove(itemIdHash); } /** diff --git a/Server/src/main/content/region/misthalin/varrock/dialogue/GertrudeDialogue.java b/Server/src/main/content/region/misthalin/varrock/dialogue/GertrudeDialogue.java index 17f915609..ca854e748 100644 --- a/Server/src/main/content/region/misthalin/varrock/dialogue/GertrudeDialogue.java +++ b/Server/src/main/content/region/misthalin/varrock/dialogue/GertrudeDialogue.java @@ -1,5 +1,8 @@ package content.region.misthalin.varrock.dialogue; +import content.global.skill.summoning.pet.Pet; +import content.global.skill.summoning.pet.PetDetails; +import core.game.container.Container; import core.game.dialogue.DialoguePlugin; import core.game.dialogue.FacialExpression; import core.game.node.entity.npc.NPC; @@ -9,6 +12,8 @@ import core.game.node.item.Item; import core.plugin.Initializable; import core.tools.RandomFunction; +import java.util.Map; + /** * Represents the gertrude dialogue plugin. * @author 'Vexia @@ -326,20 +331,18 @@ public final class GertrudeDialogue extends DialoguePlugin { case 503: boolean has = false; int[] kittens = new int[] { 1555, 1556, 1557, 1558, 1559, 1560, 7583 }; - for (int i : kittens) { - // if (player.getFamiliarManager().hasFamiliar()) {TODO:Pet - // if - // (player.getFamiliarManager().getFamiliar().getDetails() - // instanceof PetDetails) { - // final PetDetails details = ((PetDetails) - // player.getFamiliarManager().getFamiliar().getDetails()); - // if (details.getPet().getBabyItemId() == i) { - // has = true; - // break; - // } - // } - // } - if (player.getInventory().contains(i, 1) || player.getBank().contains(i, 1)) { + if (player.getFamiliarManager().hasFamiliar()) { + Pet pet = (Pet) player.getFamiliarManager().getFamiliar(); + for (int i : kittens) { + if (pet.getItemId() == i) { + has = true; + break; + } + } + } + Container[] searchSpace = {player.getInventory(), player.getBankPrimary(), player.getBankSecondary()}; + for (Container container : searchSpace) { + if (container.containsAtLeastOneItem(kittens)) { has = true; break; } diff --git a/Server/src/main/core/game/node/Node.java b/Server/src/main/core/game/node/Node.java index fd20d6cda..571c9336f 100644 --- a/Server/src/main/core/game/node/Node.java +++ b/Server/src/main/core/game/node/Node.java @@ -112,6 +112,14 @@ public abstract class Node { return this instanceof NPC ? ((NPC) this).getId() : this instanceof Scenery ? ((Scenery) this).getId() : this instanceof Item ? ((Item) this).getId() : -1; } + /** + * Gets the node id hash (only relevant if the node is an item). + * @return the id hash. + */ + public int getIdHash() { + return this instanceof Item ? ((Item) this).getIdHash() : -1; + } + /** * Gets the center location. * @return The center location.