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 4cd7dc5e8..f6a4b8f90 100644 --- a/Server/src/main/content/global/skill/summoning/familiar/FamiliarManager.java +++ b/Server/src/main/content/global/skill/summoning/familiar/FamiliarManager.java @@ -283,9 +283,11 @@ public final class FamiliarManager { details = new PetDetails(pets.getGrowthRate() == 0.0 ? 100.0 : 0.0); for (individual = 0; taken.contains(individual) && individual < 0xFFFF; individual++) {} details.setIndividual(individual); - item.setCharge(individual); - itemIdHash = item.getIdHash(); //updates the hashed item to include the new "charge" value - petDetails.put(itemIdHash, details); + // Make a copy of the item to extract what the item's idHash will be when including the individual ID as a "charge" value. + // The copy is necessary since the player's inventory still contains the default-charged item, which we will be removing only later. + Item newItem = item.copy(); + newItem.setCharge(individual); + petDetails.put(newItem.getIdHash(), details); } int npcId = pets.getNpcId(itemId); if (npcId > 0) { diff --git a/Server/src/main/content/global/skill/summoning/pet/KittenInteractDialogue.java b/Server/src/main/content/global/skill/summoning/pet/KittenInteractDialogue.java index 0f24a2844..ebeb5b477 100644 --- a/Server/src/main/content/global/skill/summoning/pet/KittenInteractDialogue.java +++ b/Server/src/main/content/global/skill/summoning/pet/KittenInteractDialogue.java @@ -49,7 +49,7 @@ public final class KittenInteractDialogue extends DialoguePlugin { @Override public boolean open(Object... args) { - interpreter.sendOptions("Interact with Kitten", "Stroke", "Chase-Vermin", "Shoo-away."); + interpreter.sendOptions("Interact with Kitten", "Stroke", "Chase vermin", "Shoo away"); stage = 0; return true; } @@ -113,11 +113,14 @@ public final class KittenInteractDialogue extends DialoguePlugin { case 560: switch (buttonId) { case 1:// yes - player.sendChat("Shoo cat!"); - player.getFamiliarManager().getFamiliar().sendChat("Miaow!"); - // player.getFamiliarManager().getFamiliar().dismiss();//TODO: - // Pet - player.getPacketDispatch().sendMessage("The cat has run away."); + if (player.getFamiliarManager().hasFamiliar()) { //in case the cat had already run away from hunger by the time the player clicked 'yes' + player.sendChat("Shoo cat!"); + Pet currentPet = (Pet) player.getFamiliarManager().getFamiliar(); + player.getFamiliarManager().getFamiliar().sendChat("Miaow!"); + player.getFamiliarManager().removeDetails(currentPet.getItemIdHash()); + player.getFamiliarManager().getFamiliar().dismiss(); + player.getPacketDispatch().sendMessage("The cat has run away."); + } end(); break; case 2:// no