mirror of
https://git.krews.org/morningstar/Arcturus-Community.git
synced 2024-06-30 12:45:34 +02:00
205 lines
7.1 KiB
Java
205 lines
7.1 KiB
Java
package com.eu.habbo.habbohotel.items.interactions;
|
|
|
|
import com.eu.habbo.Emulator;
|
|
import com.eu.habbo.habbohotel.achievements.AchievementManager;
|
|
import com.eu.habbo.habbohotel.items.Item;
|
|
import com.eu.habbo.habbohotel.pets.Pet;
|
|
import com.eu.habbo.habbohotel.pets.PetManager;
|
|
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.users.Habbo;
|
|
import com.eu.habbo.habbohotel.users.HabboItem;
|
|
import com.eu.habbo.messages.ServerMessage;
|
|
import com.eu.habbo.messages.outgoing.rooms.pets.PetPackageNameValidationComposer;
|
|
import com.eu.habbo.messages.outgoing.rooms.pets.breeding.PetBreedingCompleted;
|
|
import com.eu.habbo.messages.outgoing.rooms.pets.breeding.PetBreedingResultComposer;
|
|
import com.eu.habbo.threading.runnables.QueryDeleteHabboItem;
|
|
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
|
|
public class InteractionPetBreedingNest extends HabboItem
|
|
{
|
|
public Pet petOne = null;
|
|
public Pet petTwo = null;
|
|
|
|
public InteractionPetBreedingNest(ResultSet set, Item baseItem) throws SQLException
|
|
{
|
|
super(set, baseItem);
|
|
}
|
|
|
|
public InteractionPetBreedingNest(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells)
|
|
{
|
|
super(id, userId, item, extradata, limitedStack, limitedSells);
|
|
}
|
|
|
|
@Override
|
|
public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects)
|
|
{
|
|
return room.getPet(roomUnit) != null && !this.boxFull();
|
|
}
|
|
|
|
@Override
|
|
public boolean isWalkable()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
|
|
@Override
|
|
public void serializeExtradata(ServerMessage serverMessage)
|
|
{
|
|
serverMessage.appendInt((this.isLimited() ? 256 : 0));
|
|
serverMessage.appendString(this.getExtradata());
|
|
|
|
super.serializeExtradata(serverMessage);
|
|
}
|
|
|
|
@Override
|
|
public void onWalk(RoomUnit roomUnit, Room room, Object[] objects) throws Exception
|
|
{
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onWalkOn(RoomUnit roomUnit, Room room, Object[] objects) throws Exception
|
|
{
|
|
Pet pet = room.getPet(roomUnit);
|
|
|
|
if (pet != null)
|
|
{
|
|
if (!this.boxFull())
|
|
{
|
|
this.addPet(pet);
|
|
|
|
if (this.boxFull())
|
|
{
|
|
Habbo ownerPetOne = room.getHabbo(this.petOne.getUserId());
|
|
Habbo ownerPetTwo = room.getHabbo(this.petTwo.getUserId());
|
|
|
|
if (ownerPetOne != null && ownerPetTwo != null && this.petOne.getPetData().getType() == this.petTwo.getPetData().getType() && this.petOne.getPetData().getOffspringType() != -1)
|
|
{
|
|
ownerPetTwo.getClient().sendResponse(new PetBreedingResultComposer(this.getId(), this.petOne.getPetData().getOffspringType(), this.petOne, ownerPetOne.getHabboInfo().getUsername(), this.petTwo, ownerPetTwo.getHabboInfo().getUsername()));
|
|
this.setExtradata("1");
|
|
room.updateItem(this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public boolean addPet(Pet pet)
|
|
{
|
|
if (this.petOne == null)
|
|
{
|
|
this.petOne = pet;
|
|
this.petOne.getRoomUnit().setCanWalk(false);
|
|
return true;
|
|
}
|
|
else if (this.petTwo == null && this.petOne != pet)
|
|
{
|
|
this.petTwo = pet;
|
|
this.petTwo.getRoomUnit().setCanWalk(false);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public boolean boxFull()
|
|
{
|
|
return this.petOne != null && this.petTwo != null;
|
|
}
|
|
|
|
@Override
|
|
public void onWalkOff(RoomUnit roomUnit, Room room, Object[] objects) throws Exception
|
|
{
|
|
if (this.petOne != null && this.petOne.getRoomUnit() == roomUnit) this.petOne = null;
|
|
if (this.petTwo != null && this.petTwo.getRoomUnit() == roomUnit) this.petTwo = null;
|
|
|
|
this.setExtradata("0");
|
|
room.updateItem(this);
|
|
}
|
|
|
|
@Override
|
|
public boolean allowWiredResetState()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public void stopBreeding(Habbo habbo)
|
|
{
|
|
this.setExtradata("0");
|
|
habbo.getHabboInfo().getCurrentRoom().updateItem(this);
|
|
|
|
if (this.petOne != null)
|
|
{
|
|
habbo.getClient().sendResponse(new PetPackageNameValidationComposer(this.getId(), PetPackageNameValidationComposer.CLOSE_WIDGET, ""));
|
|
}
|
|
if (this.petTwo.getUserId() != habbo.getHabboInfo().getId())
|
|
{
|
|
Habbo owner = this.petTwo.getRoom().getHabbo(this.petTwo.getUserId());
|
|
if (owner != null)
|
|
{
|
|
owner.getClient().sendResponse(new PetPackageNameValidationComposer(this.getId(), PetPackageNameValidationComposer.CLOSE_WIDGET, ""));
|
|
}
|
|
}
|
|
|
|
this.freePets();
|
|
|
|
}
|
|
|
|
private void freePets()
|
|
{
|
|
if (this.petOne != null)
|
|
{
|
|
this.petOne.getRoomUnit().setCanWalk(true);
|
|
this.petOne.setTask(PetTasks.FREE);
|
|
this.petOne = null;
|
|
}
|
|
|
|
if (this.petTwo != null)
|
|
{
|
|
this.petTwo.getRoomUnit().setCanWalk(true);
|
|
this.petTwo.setTask(PetTasks.FREE);
|
|
this.petTwo = null;
|
|
}
|
|
}
|
|
|
|
public void breed(Habbo habbo, String name, int petOneId, int petTwoId)
|
|
{
|
|
Emulator.getThreading().run(new QueryDeleteHabboItem(this.getId()));
|
|
|
|
this.setExtradata("2");
|
|
habbo.getHabboInfo().getCurrentRoom().updateItem(this);
|
|
|
|
HabboItem box = this;
|
|
Pet petOne = this.petOne;
|
|
Pet petTwo = this.petTwo;
|
|
Emulator.getThreading().run(new Runnable()
|
|
{
|
|
@Override
|
|
public void run()
|
|
{
|
|
Pet offspring = Emulator.getGameEnvironment().getPetManager().createPet(petOne.getPetData().getOffspringType(), (int) Math.min(Math.round(Math.max(1d, PetManager.getNormalDistributionForBreeding(petOne.getLevel(), petTwo.getLevel()).sample())), 20), name, habbo.getClient());
|
|
|
|
//habbo.getClient().sendResponse(new PetPackageNameValidationComposer(box.getId(), PetPackageNameValidationComposer.CLOSE_WIDGET, ""));
|
|
habbo.getHabboInfo().getCurrentRoom().placePet(offspring, box.getX(), box.getY(), box.getZ(), box.getRotation());
|
|
offspring.needsUpdate = true;
|
|
offspring.run();
|
|
InteractionPetBreedingNest.this.freePets();
|
|
habbo.getHabboInfo().getCurrentRoom().removeHabboItem(box);
|
|
habbo.getClient().sendResponse(new PetBreedingCompleted(offspring.getId(), Emulator.getGameEnvironment().getPetManager().getRarityForOffspring(offspring)));
|
|
|
|
if (box.getBaseItem().getName().startsWith("pet_breeding_"))
|
|
{
|
|
String boxType = box.getBaseItem().getName().replace("pet_breeding_", "");
|
|
String achievement = boxType.substring(0, 1).toUpperCase() + boxType.substring(1) + "Breeder";
|
|
AchievementManager.progressAchievement(habbo, Emulator.getGameEnvironment().getAchievementManager().getAchievement(achievement));
|
|
}
|
|
}
|
|
}, 2000);
|
|
|
|
}
|
|
} |