From 12507e9b430c55fcf04a021785709618ae37e804 Mon Sep 17 00:00:00 2001 From: Alejandro <25-alejandro@users.noreply.git.krews.org> Date: Thu, 1 Aug 2019 20:40:49 +0300 Subject: [PATCH] Store death status of monsterplants --- sqlupdates/2_1_1_TO_2_2_0-RC-1.sql | 2 ++ .../eu/habbo/habbohotel/pets/MonsterplantPet.java | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/sqlupdates/2_1_1_TO_2_2_0-RC-1.sql b/sqlupdates/2_1_1_TO_2_2_0-RC-1.sql index 7688d9ed..0e934e61 100644 --- a/sqlupdates/2_1_1_TO_2_2_0-RC-1.sql +++ b/sqlupdates/2_1_1_TO_2_2_0-RC-1.sql @@ -47,3 +47,5 @@ ALTER TABLE `vouchers` ADD COLUMN `amount` int(11) NOT NULL DEFAULT 1, ADD COLUMN `limit` int(11) NOT NULL DEFAULT -1; +ALTER TABLE `users_pets` +ADD COLUMN `mp_is_dead` tinyint(1) NOT NULL DEFAULT 0; diff --git a/src/main/java/com/eu/habbo/habbohotel/pets/MonsterplantPet.java b/src/main/java/com/eu/habbo/habbohotel/pets/MonsterplantPet.java index beea7293..19bb4181 100644 --- a/src/main/java/com/eu/habbo/habbohotel/pets/MonsterplantPet.java +++ b/src/main/java/com/eu/habbo/habbohotel/pets/MonsterplantPet.java @@ -71,6 +71,7 @@ public class MonsterplantPet extends Pet implements IPetLook { private boolean canBreed = true; private boolean publiclyBreedable = false; private int growthStage = 0; + private boolean hasDied = false; public MonsterplantPet(ResultSet set) throws SQLException { super(set); @@ -85,6 +86,7 @@ public class MonsterplantPet extends Pet implements IPetLook { this.deathTimestamp = set.getInt("mp_death_timestamp"); this.publiclyBreedable = set.getString("mp_allow_breed").equals("1"); this.canBreed = set.getString("mp_breedable").equals("1"); + this.hasDied = set.getInt("mp_is_dead") == 1; } public MonsterplantPet(int userId, int type, int hue, int nose, int noseColor, int mouth, int mouthColor, int eyes, int eyesColor) { @@ -120,7 +122,7 @@ public class MonsterplantPet extends Pet implements IPetLook { if (this.needsUpdate) { super.run(); - try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE users_pets SET mp_type = ?, mp_color = ?, mp_nose = ?, mp_eyes = ?, mp_mouth = ?, mp_nose_color = ?, mp_eyes_color = ?, mp_mouth_color = ?, mp_death_timestamp = ?, mp_breedable = ?, mp_allow_breed = ? WHERE id = ?")) { + try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE users_pets SET mp_type = ?, mp_color = ?, mp_nose = ?, mp_eyes = ?, mp_mouth = ?, mp_nose_color = ?, mp_eyes_color = ?, mp_mouth_color = ?, mp_death_timestamp = ?, mp_breedable = ?, mp_allow_breed = ?, mp_is_dead = ? WHERE id = ?")) { statement.setInt(1, this.type); statement.setInt(2, this.hue); statement.setInt(3, this.nose); @@ -132,7 +134,8 @@ public class MonsterplantPet extends Pet implements IPetLook { statement.setInt(9, this.deathTimestamp); statement.setString(10, this.canBreed ? "1" : "0"); statement.setString(11, this.publiclyBreedable ? "1" : "0"); - statement.setInt(12, this.id); + statement.setInt(12, this.hasDied ? 1 : 0); + statement.setInt(13, this.id); statement.execute(); } catch (SQLException e) { Emulator.getLogging().logSQLException(e); @@ -146,8 +149,11 @@ public class MonsterplantPet extends Pet implements IPetLook { if (this.isDead()) { this.roomUnit.removeStatus(RoomUnitStatus.GESTURE); - if (!this.roomUnit.hasStatus(RoomUnitStatus.RIP)) { + if (!this.hasDied) { AchievementManager.progressAchievement(Emulator.getGameEnvironment().getHabboManager().getHabbo(this.userId), Emulator.getGameEnvironment().getAchievementManager().getAchievement("MonsterPlantGardenOfDeath")); + + this.hasDied = true; + this.needsUpdate = true; } this.roomUnit.clearStatus();