From f54d1857720df9beb32ac60e200ee7c516e18851 Mon Sep 17 00:00:00 2001 From: brenoepic <59066707+brenoepics@users.noreply.github.com> Date: Mon, 11 Apr 2022 14:45:14 -0300 Subject: [PATCH] Feature: InteractionPetToy --- .../interactions/pets/InteractionPetToy.java | 40 ++++++++++++++----- .../com/eu/habbo/habbohotel/rooms/Room.java | 4 ++ 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetToy.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetToy.java index caeaf54f..d33e5cc7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetToy.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/pets/InteractionPetToy.java @@ -1,14 +1,12 @@ package com.eu.habbo.habbohotel.items.interactions.pets; import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionDefault; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.PetTasks; -import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; -import com.eu.habbo.habbohotel.rooms.RoomUserRotation; +import com.eu.habbo.habbohotel.rooms.*; import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.threading.runnables.PetClearPosture; @@ -26,13 +24,30 @@ public class InteractionPetToy extends InteractionDefault { this.setExtradata("0"); } + @Override + public void onClick(GameClient client, Room room, Object[] objects) {} + @Override + public void onMove(Room room, RoomTile oldLocation, RoomTile newLocation) { + for (Pet pet : room.getPetsAt(oldLocation)) { + pet.getRoomUnit().clearStatus(); + pet.packetUpdate = true; + } + } + @Override + public void onPickUp(Room room) { + for (Pet pet : room.getPetsOnItem(this)) { + pet.getRoomUnit().clearStatus(); + pet.packetUpdate = true; + } + } + @Override public void onWalkOn(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { super.onWalkOn(roomUnit, room, objects); Pet pet = room.getPet(roomUnit); - if (pet != null) { + if (pet != null && pet.getPetData().haveToyItem(this.getBaseItem()) && this.getOccupyingTiles(room.getLayout()).contains(pet.getRoomUnit().getGoal())) { if (pet.getEnergy() <= 35) { return; } @@ -41,15 +56,16 @@ public class InteractionPetToy extends InteractionDefault { pet.getRoomUnit().setGoalLocation(room.getLayout().getTile(this.getX(), this.getY())); pet.getRoomUnit().setRotation(RoomUserRotation.values()[this.getRotation()]); pet.getRoomUnit().clearStatus(); - pet.getRoomUnit().removeStatus(RoomUnitStatus.MOVE); - pet.getRoomUnit().setStatus(RoomUnitStatus.PLAY, "0"); + pet.getRoomUnit().setStatus(RoomUnitStatus.PLAY, pet.getRoomUnit().getCurrentLocation().getStackHeight() + ""); pet.packetUpdate = true; HabboItem item = this; Emulator.getThreading().run(() -> { pet.addHappyness(25); item.setExtradata("0"); room.updateItem(item); + pet.getRoomUnit().clearStatus(); new PetClearPosture(pet, RoomUnitStatus.PLAY, null, true).run(); + pet.packetUpdate = true; }, 2500 + (Emulator.getRandom().nextInt(20) * 500)); this.setExtradata("1"); room.updateItemState(this); @@ -63,11 +79,17 @@ public class InteractionPetToy extends InteractionDefault { Pet pet = room.getPet(roomUnit); if (pet != null) { - this.setExtradata("0"); - room.updateItemState(this); + pet.getRoomUnit().clearStatus(); + pet.packetUpdate = true; } } + @Override + public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { + Pet pet = room.getPet(roomUnit); + return roomUnit.getRoomUnitType() == RoomUnitType.PET && pet != null && pet.getPetData().haveToyItem(this.getBaseItem()); + } + @Override public boolean allowWiredResetState() { return false; diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java b/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java index 42d3b428..8036e661 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java @@ -2390,6 +2390,8 @@ public class Room implements Comparable, ISerialize, Runnable { this.roomSpecialTypes.addPetDrink((InteractionPetDrink) item); } else if (item instanceof InteractionPetFood) { this.roomSpecialTypes.addPetFood((InteractionPetFood) item); + } else if (item instanceof InteractionPetToy) { + this.roomSpecialTypes.addPetToy((InteractionPetToy) item); } else if (item instanceof InteractionPetTree) { this.roomSpecialTypes.addUndefined(item); } else if (item instanceof InteractionMoodLight) { @@ -2542,6 +2544,8 @@ public class Room implements Comparable, ISerialize, Runnable { this.roomSpecialTypes.removePetDrink((InteractionPetDrink) item); } else if (item instanceof InteractionPetFood) { this.roomSpecialTypes.removePetFood((InteractionPetFood) item); + } else if (item instanceof InteractionPetToy) { + this.roomSpecialTypes.removePetToy((InteractionPetToy) item); } else if (item instanceof InteractionPetTree) { this.roomSpecialTypes.removeUndefined(item); } else if (item instanceof InteractionMoodLight) {