diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SummonPet.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SummonPet.java index 3fa2eac56b..5e04f3af9e 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SummonPet.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/SummonPet.java @@ -30,7 +30,7 @@ import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.holders.PetItemHolder; -import org.l2jmobius.gameserver.model.holders.PlayerPetMetadataHolder; +import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -86,7 +86,7 @@ public class SummonPet extends AbstractEffect return; } - final PlayerPetMetadataHolder evolveData = player.getPetEvolve(collar.getObjectId()); + final PetEvolveHolder evolveData = player.getPetEvolve(collar.getObjectId()); final PetData petData = evolveData.getEvolve() == EvolveLevel.None ? PetDataTable.getInstance().getPetDataByEvolve(collar.getId(), evolveData.getEvolve()) : PetDataTable.getInstance().getPetDataByEvolve(collar.getId(), evolveData.getEvolve(), evolveData.getIndex()); if ((petData == null) || (petData.getNpcId() == -1)) { diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/CharSummonTable.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/CharSummonTable.java index f0c5c4a7cf..9a689c980c 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/CharSummonTable.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/sql/CharSummonTable.java @@ -37,7 +37,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.ServitorInstance; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; -import org.l2jmobius.gameserver.model.holders.PlayerPetMetadataHolder; +import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.skills.Skill; @@ -134,7 +134,7 @@ public class CharSummonTable return; } - final PlayerPetMetadataHolder evolveData = player.getPetEvolve(item.getObjectId()); + final PetEvolveHolder evolveData = player.getPetEvolve(item.getObjectId()); final PetData petData = evolveData.getEvolve() == EvolveLevel.None ? PetDataTable.getInstance().getPetDataByEvolve(item.getId(), evolveData.getEvolve()) : PetDataTable.getInstance().getPetDataByEvolve(item.getId(), evolveData.getEvolve(), evolveData.getIndex()); if (petData == null) { diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ItemInfo.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ItemInfo.java index b6c52f4183..56e99dde2f 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ItemInfo.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/ItemInfo.java @@ -24,7 +24,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.enums.AttributeType; import org.l2jmobius.gameserver.model.buylist.Product; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; -import org.l2jmobius.gameserver.model.holders.PlayerPetMetadataHolder; +import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.WarehouseItem; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; @@ -87,7 +87,7 @@ public class ItemInfo private Collection _soulCrystalSpecialOptions; private int _visualId; private long _visualExpiration; - private PlayerPetMetadataHolder _petData; + private PetEvolveHolder _petData; /** * Get all information from ItemInstance to generate ItemInfo. @@ -419,7 +419,7 @@ public class ItemInfo return _isBlessed; } - public PlayerPetMetadataHolder getPetData() + public PetEvolveHolder getPetData() { return _petData; } diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java index 9fc94a4f21..499b364348 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java @@ -59,7 +59,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.stat.PetStat; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; -import org.l2jmobius.gameserver.model.holders.PlayerPetMetadataHolder; +import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; import org.l2jmobius.gameserver.model.itemcontainer.PetInventory; import org.l2jmobius.gameserver.model.items.Item; @@ -88,25 +88,24 @@ public class PetInstance extends Summon private static final String ADD_SKILL_SAVE = "INSERT INTO character_pet_skills_save (petObjItemId,skill_id,skill_level,skill_sub_level,remaining_time,buff_index) VALUES (?,?,?,?,?,?)"; private static final String RESTORE_SKILL_SAVE = "SELECT petObjItemId,skill_id,skill_level,skill_sub_level,remaining_time,buff_index FROM character_pet_skills_save WHERE petObjItemId=? ORDER BY buff_index ASC"; private static final String DELETE_SKILL_SAVE = "DELETE FROM character_pet_skills_save WHERE petObjItemId=?"; - public final String selectPetSkills = "SELECT * FROM pet_skills WHERE petObjItemId=?"; - public final String insertPetSkills = "INSERT INTO pet_skills (petObjItemId, skillId, skillLevel) VALUES (?,?,?) ON DUPLICATE KEY UPDATE skillId=VALUES(skillId), skillLevel=VALUES(skillLevel), petObjItemId=VALUES(petObjItemId)"; - public final String deletePetSkills = "DELETE FROM pet_skills WHERE petObjItemId=?"; - public final String selectEvolvedPets = "SELECT * FROM pet_evolves WHERE itemObjId=?"; - public final String updateEvolvedPets = "REPLACE INTO pet_evolves (`itemObjId`, `index`, `level`) VALUES (?, ?, ?)"; + private static final String SELECT_PET_SKILLS = "SELECT * FROM pet_skills WHERE petObjItemId=?"; + private static final String INSERT_PET_SKILLS = "INSERT INTO pet_skills (petObjItemId, skillId, skillLevel) VALUES (?,?,?) ON DUPLICATE KEY UPDATE skillId=VALUES(skillId), skillLevel=VALUES(skillLevel), petObjItemId=VALUES(petObjItemId)"; + private static final String DELETE_PET_SKILLS = "DELETE FROM pet_skills WHERE petObjItemId=?"; + private static final String SELECT_EVOLVED_PETS = "SELECT * FROM pet_evolves WHERE itemObjId=?"; + private static final String UPDATE_EVOLVED_PETS = "REPLACE INTO pet_evolves (`itemObjId`, `index`, `level`) VALUES (?, ?, ?)"; - private int _curFed; - private final PetInventory _inventory; - private final int _controlObjectId; - private boolean _respawned; private final boolean _mountable; - private Future _feedTask; + private final int _controlObjectId; + private final PetInventory _inventory; + private boolean _respawned; + private int _curFed; + private int _petType = 0; + private int _curWeightPenalty = 0; + private long _expBeforeDeath = 0; private PetData _data; private PetLevelData _leveldata; private EvolveLevel _evolveLevel = EvolveLevel.None; - private int _petType = 0; - /** The Experience before the last Death Penalty */ - private long _expBeforeDeath = 0; - private int _curWeightPenalty = 0; + private Future _feedTask; private void deletePetEvolved() { @@ -125,7 +124,7 @@ public class PetInstance extends Summon public void restorePetEvolvesByItem() { try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps2 = con.prepareStatement(selectEvolvedPets)) + PreparedStatement ps2 = con.prepareStatement(SELECT_EVOLVED_PETS)) { ps2.setInt(1, _controlObjectId); try (ResultSet rset = ps2.executeQuery()) @@ -146,7 +145,7 @@ public class PetInstance extends Summon { deletePetEvolved(); try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement stmt = con.prepareStatement(updateEvolvedPets)) + PreparedStatement stmt = con.prepareStatement(UPDATE_EVOLVED_PETS)) { stmt.setInt(1, controlItemObjId); stmt.setInt(2, index); @@ -157,13 +156,13 @@ public class PetInstance extends Summon { e.printStackTrace(); } - getOwner().setPetEvolved(controlItemObjId, new PlayerPetMetadataHolder(index, evolveLevel, getName(), getLevel(), getExpForThisLevel())); + getOwner().setPetEvolve(controlItemObjId, new PetEvolveHolder(index, evolveLevel, getName(), getLevel(), getExpForThisLevel())); } public void storePetSkills(int skillId, int skillLevel) { try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps2 = con.prepareStatement(insertPetSkills)) + PreparedStatement ps2 = con.prepareStatement(INSERT_PET_SKILLS)) { ps2.setInt(1, _controlObjectId); ps2.setInt(2, skillId); @@ -179,8 +178,8 @@ public class PetInstance extends Summon public void restoreSkills() { try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps1 = con.prepareStatement(selectPetSkills); - PreparedStatement ps2 = con.prepareStatement(deletePetSkills)) + PreparedStatement ps1 = con.prepareStatement(SELECT_PET_SKILLS); + PreparedStatement ps2 = con.prepareStatement(DELETE_PET_SKILLS)) { ps1.setInt(1, _controlObjectId); try (ResultSet rset = ps1.executeQuery()) diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index f99dcee1ee..38e873d3c9 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -231,8 +231,8 @@ import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; +import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.model.holders.PlayerPetMetadataHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SkillUseHolder; @@ -902,7 +902,7 @@ public class PlayerInstance extends Playable private PlayerRandomCraft _randomCraft = null; - private final Map _petEvolves = new HashMap<>(); + private final Map _petEvolves = new HashMap<>(); private final List _questTimers = new ArrayList<>(); private final List> _timerHolders = new ArrayList<>(); @@ -14571,14 +14571,22 @@ public class PlayerInstance extends Playable return _randomCraft; } - public PlayerPetMetadataHolder getPetEvolve(int _controlItemId) + public PetEvolveHolder getPetEvolve(int controlItemId) { - return _petEvolves.get(_controlItemId) != null ? _petEvolves.get(_controlItemId) : new PlayerPetMetadataHolder(PetDataTable.getInstance().getPetDataByItemId(getInventory().getItemByObjectId(_controlItemId).getId()) == null ? 0 : PetDataTable.getInstance().getPetDataByItemId(getInventory().getItemByObjectId(_controlItemId).getId()).getIndex(), EvolveLevel.None.ordinal(), "", 1, 0L); + final PetEvolveHolder evolve = _petEvolves.get(controlItemId); + if (evolve != null) + { + return evolve; + } + + final ItemInstance item = getInventory().getItemByObjectId(controlItemId); + final PetData petData = item == null ? null : PetDataTable.getInstance().getPetDataByItemId(item.getId()); + return new PetEvolveHolder(petData == null ? 0 : petData.getIndex(), EvolveLevel.None.ordinal(), "", 1, 0); } - public Map getAllPetEvolves() + public void setPetEvolve(int itemObjectId, PetEvolveHolder entry) { - return _petEvolves; + _petEvolves.put(itemObjectId, entry); } public void restorePetEvolvesByItem() @@ -14596,7 +14604,7 @@ public class PlayerInstance extends Playable final EvolveLevel evolve = EvolveLevel.values()[rset.getInt("evolve")]; if (evolve != null) { - _petEvolves.put(it.getObjectId(), new PlayerPetMetadataHolder(rset.getInt("index"), rset.getInt("evolve"), rset.getString("name"), rset.getInt("level"), rset.getLong("exp"))); + _petEvolves.put(it.getObjectId(), new PetEvolveHolder(rset.getInt("index"), rset.getInt("evolve"), rset.getString("name"), rset.getInt("level"), rset.getLong("exp"))); } } } @@ -14607,9 +14615,4 @@ public class PlayerInstance extends Playable } }); } - - public void setPetEvolved(int itemObjectId, PlayerPetMetadataHolder entry) - { - _petEvolves.put(itemObjectId, entry); - } } diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/PlayerPetMetadataHolder.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/PetEvolveHolder.java similarity index 87% rename from L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/PlayerPetMetadataHolder.java rename to L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/PetEvolveHolder.java index e99ca517ad..939dfd4e0f 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/PlayerPetMetadataHolder.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/PetEvolveHolder.java @@ -21,7 +21,7 @@ import org.l2jmobius.gameserver.enums.EvolveLevel; /** * Written by Berezkin Nikolay, on 16.05.2021 */ -public class PlayerPetMetadataHolder +public class PetEvolveHolder { private final int _index; private final int _level; @@ -29,7 +29,7 @@ public class PlayerPetMetadataHolder private final long _exp; private final String _name; - public PlayerPetMetadataHolder(int index, int evolve, String name, int level, long exp) + public PetEvolveHolder(int index, int evolve, String name, int level, long exp) { _index = index; _evolve = EvolveLevel.values()[evolve]; diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/SummonPet.java b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/SummonPet.java index 3fa2eac56b..5e04f3af9e 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/SummonPet.java +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/SummonPet.java @@ -30,7 +30,7 @@ import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.holders.PetItemHolder; -import org.l2jmobius.gameserver.model.holders.PlayerPetMetadataHolder; +import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -86,7 +86,7 @@ public class SummonPet extends AbstractEffect return; } - final PlayerPetMetadataHolder evolveData = player.getPetEvolve(collar.getObjectId()); + final PetEvolveHolder evolveData = player.getPetEvolve(collar.getObjectId()); final PetData petData = evolveData.getEvolve() == EvolveLevel.None ? PetDataTable.getInstance().getPetDataByEvolve(collar.getId(), evolveData.getEvolve()) : PetDataTable.getInstance().getPetDataByEvolve(collar.getId(), evolveData.getEvolve(), evolveData.getIndex()); if ((petData == null) || (petData.getNpcId() == -1)) { diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/sql/CharSummonTable.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/sql/CharSummonTable.java index f0c5c4a7cf..9a689c980c 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/sql/CharSummonTable.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/sql/CharSummonTable.java @@ -37,7 +37,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PetInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.ServitorInstance; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; -import org.l2jmobius.gameserver.model.holders.PlayerPetMetadataHolder; +import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.skills.Skill; @@ -134,7 +134,7 @@ public class CharSummonTable return; } - final PlayerPetMetadataHolder evolveData = player.getPetEvolve(item.getObjectId()); + final PetEvolveHolder evolveData = player.getPetEvolve(item.getObjectId()); final PetData petData = evolveData.getEvolve() == EvolveLevel.None ? PetDataTable.getInstance().getPetDataByEvolve(item.getId(), evolveData.getEvolve()) : PetDataTable.getInstance().getPetDataByEvolve(item.getId(), evolveData.getEvolve(), evolveData.getIndex()); if (petData == null) { diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/ItemInfo.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/ItemInfo.java index b6c52f4183..56e99dde2f 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/ItemInfo.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/ItemInfo.java @@ -24,7 +24,7 @@ import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.enums.AttributeType; import org.l2jmobius.gameserver.model.buylist.Product; import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; -import org.l2jmobius.gameserver.model.holders.PlayerPetMetadataHolder; +import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; import org.l2jmobius.gameserver.model.items.Item; import org.l2jmobius.gameserver.model.items.WarehouseItem; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; @@ -87,7 +87,7 @@ public class ItemInfo private Collection _soulCrystalSpecialOptions; private int _visualId; private long _visualExpiration; - private PlayerPetMetadataHolder _petData; + private PetEvolveHolder _petData; /** * Get all information from ItemInstance to generate ItemInfo. @@ -419,7 +419,7 @@ public class ItemInfo return _isBlessed; } - public PlayerPetMetadataHolder getPetData() + public PetEvolveHolder getPetData() { return _petData; } diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java index 9fc94a4f21..499b364348 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java @@ -59,7 +59,7 @@ import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.stat.PetStat; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; -import org.l2jmobius.gameserver.model.holders.PlayerPetMetadataHolder; +import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; import org.l2jmobius.gameserver.model.itemcontainer.Inventory; import org.l2jmobius.gameserver.model.itemcontainer.PetInventory; import org.l2jmobius.gameserver.model.items.Item; @@ -88,25 +88,24 @@ public class PetInstance extends Summon private static final String ADD_SKILL_SAVE = "INSERT INTO character_pet_skills_save (petObjItemId,skill_id,skill_level,skill_sub_level,remaining_time,buff_index) VALUES (?,?,?,?,?,?)"; private static final String RESTORE_SKILL_SAVE = "SELECT petObjItemId,skill_id,skill_level,skill_sub_level,remaining_time,buff_index FROM character_pet_skills_save WHERE petObjItemId=? ORDER BY buff_index ASC"; private static final String DELETE_SKILL_SAVE = "DELETE FROM character_pet_skills_save WHERE petObjItemId=?"; - public final String selectPetSkills = "SELECT * FROM pet_skills WHERE petObjItemId=?"; - public final String insertPetSkills = "INSERT INTO pet_skills (petObjItemId, skillId, skillLevel) VALUES (?,?,?) ON DUPLICATE KEY UPDATE skillId=VALUES(skillId), skillLevel=VALUES(skillLevel), petObjItemId=VALUES(petObjItemId)"; - public final String deletePetSkills = "DELETE FROM pet_skills WHERE petObjItemId=?"; - public final String selectEvolvedPets = "SELECT * FROM pet_evolves WHERE itemObjId=?"; - public final String updateEvolvedPets = "REPLACE INTO pet_evolves (`itemObjId`, `index`, `level`) VALUES (?, ?, ?)"; + private static final String SELECT_PET_SKILLS = "SELECT * FROM pet_skills WHERE petObjItemId=?"; + private static final String INSERT_PET_SKILLS = "INSERT INTO pet_skills (petObjItemId, skillId, skillLevel) VALUES (?,?,?) ON DUPLICATE KEY UPDATE skillId=VALUES(skillId), skillLevel=VALUES(skillLevel), petObjItemId=VALUES(petObjItemId)"; + private static final String DELETE_PET_SKILLS = "DELETE FROM pet_skills WHERE petObjItemId=?"; + private static final String SELECT_EVOLVED_PETS = "SELECT * FROM pet_evolves WHERE itemObjId=?"; + private static final String UPDATE_EVOLVED_PETS = "REPLACE INTO pet_evolves (`itemObjId`, `index`, `level`) VALUES (?, ?, ?)"; - private int _curFed; - private final PetInventory _inventory; - private final int _controlObjectId; - private boolean _respawned; private final boolean _mountable; - private Future _feedTask; + private final int _controlObjectId; + private final PetInventory _inventory; + private boolean _respawned; + private int _curFed; + private int _petType = 0; + private int _curWeightPenalty = 0; + private long _expBeforeDeath = 0; private PetData _data; private PetLevelData _leveldata; private EvolveLevel _evolveLevel = EvolveLevel.None; - private int _petType = 0; - /** The Experience before the last Death Penalty */ - private long _expBeforeDeath = 0; - private int _curWeightPenalty = 0; + private Future _feedTask; private void deletePetEvolved() { @@ -125,7 +124,7 @@ public class PetInstance extends Summon public void restorePetEvolvesByItem() { try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps2 = con.prepareStatement(selectEvolvedPets)) + PreparedStatement ps2 = con.prepareStatement(SELECT_EVOLVED_PETS)) { ps2.setInt(1, _controlObjectId); try (ResultSet rset = ps2.executeQuery()) @@ -146,7 +145,7 @@ public class PetInstance extends Summon { deletePetEvolved(); try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement stmt = con.prepareStatement(updateEvolvedPets)) + PreparedStatement stmt = con.prepareStatement(UPDATE_EVOLVED_PETS)) { stmt.setInt(1, controlItemObjId); stmt.setInt(2, index); @@ -157,13 +156,13 @@ public class PetInstance extends Summon { e.printStackTrace(); } - getOwner().setPetEvolved(controlItemObjId, new PlayerPetMetadataHolder(index, evolveLevel, getName(), getLevel(), getExpForThisLevel())); + getOwner().setPetEvolve(controlItemObjId, new PetEvolveHolder(index, evolveLevel, getName(), getLevel(), getExpForThisLevel())); } public void storePetSkills(int skillId, int skillLevel) { try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps2 = con.prepareStatement(insertPetSkills)) + PreparedStatement ps2 = con.prepareStatement(INSERT_PET_SKILLS)) { ps2.setInt(1, _controlObjectId); ps2.setInt(2, skillId); @@ -179,8 +178,8 @@ public class PetInstance extends Summon public void restoreSkills() { try (Connection con = DatabaseFactory.getConnection(); - PreparedStatement ps1 = con.prepareStatement(selectPetSkills); - PreparedStatement ps2 = con.prepareStatement(deletePetSkills)) + PreparedStatement ps1 = con.prepareStatement(SELECT_PET_SKILLS); + PreparedStatement ps2 = con.prepareStatement(DELETE_PET_SKILLS)) { ps1.setInt(1, _controlObjectId); try (ResultSet rset = ps1.executeQuery()) diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index c8c4bb2d90..f82e2ff3ce 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -234,9 +234,9 @@ import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder; +import org.l2jmobius.gameserver.model.holders.PetEvolveHolder; import org.l2jmobius.gameserver.model.holders.PlayerCollectionData; import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; -import org.l2jmobius.gameserver.model.holders.PlayerPetMetadataHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder; @@ -926,7 +926,7 @@ public class PlayerInstance extends Playable private final Map _purgePoints = new HashMap<>(); - private final Map _petEvolves = new HashMap<>(); + private final Map _petEvolves = new HashMap<>(); private final List _questTimers = new ArrayList<>(); private final List> _timerHolders = new ArrayList<>(); @@ -14623,14 +14623,22 @@ public class PlayerInstance extends Playable return _randomCraft; } - public PlayerPetMetadataHolder getPetEvolve(int _controlItemId) + public PetEvolveHolder getPetEvolve(int controlItemId) { - return _petEvolves.get(_controlItemId) != null ? _petEvolves.get(_controlItemId) : new PlayerPetMetadataHolder(PetDataTable.getInstance().getPetDataByItemId(getInventory().getItemByObjectId(_controlItemId).getId()) == null ? 0 : PetDataTable.getInstance().getPetDataByItemId(getInventory().getItemByObjectId(_controlItemId).getId()).getIndex(), EvolveLevel.None.ordinal(), "", 1, 0L); + final PetEvolveHolder evolve = _petEvolves.get(controlItemId); + if (evolve != null) + { + return evolve; + } + + final ItemInstance item = getInventory().getItemByObjectId(controlItemId); + final PetData petData = item == null ? null : PetDataTable.getInstance().getPetDataByItemId(item.getId()); + return new PetEvolveHolder(petData == null ? 0 : petData.getIndex(), EvolveLevel.None.ordinal(), "", 1, 0); } - public Map getAllPetEvolves() + public void setPetEvolve(int itemObjectId, PetEvolveHolder entry) { - return _petEvolves; + _petEvolves.put(itemObjectId, entry); } public void restorePetEvolvesByItem() @@ -14648,7 +14656,7 @@ public class PlayerInstance extends Playable final EvolveLevel evolve = EvolveLevel.values()[rset.getInt("evolve")]; if (evolve != null) { - _petEvolves.put(it.getObjectId(), new PlayerPetMetadataHolder(rset.getInt("index"), rset.getInt("evolve"), rset.getString("name"), rset.getInt("level"), rset.getLong("exp"))); + _petEvolves.put(it.getObjectId(), new PetEvolveHolder(rset.getInt("index"), rset.getInt("evolve"), rset.getString("name"), rset.getInt("level"), rset.getLong("exp"))); } } } @@ -14660,11 +14668,6 @@ public class PlayerInstance extends Playable }); } - public void setPetEvolved(int itemObjectId, PlayerPetMetadataHolder entry) - { - _petEvolves.put(itemObjectId, entry); - } - public List getCollections() { return _collections; diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/holders/PlayerPetMetadataHolder.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/holders/PetEvolveHolder.java similarity index 87% rename from L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/holders/PlayerPetMetadataHolder.java rename to L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/holders/PetEvolveHolder.java index e99ca517ad..939dfd4e0f 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/holders/PlayerPetMetadataHolder.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/holders/PetEvolveHolder.java @@ -21,7 +21,7 @@ import org.l2jmobius.gameserver.enums.EvolveLevel; /** * Written by Berezkin Nikolay, on 16.05.2021 */ -public class PlayerPetMetadataHolder +public class PetEvolveHolder { private final int _index; private final int _level; @@ -29,7 +29,7 @@ public class PlayerPetMetadataHolder private final long _exp; private final String _name; - public PlayerPetMetadataHolder(int index, int evolve, String name, int level, long exp) + public PetEvolveHolder(int index, int evolve, String name, int level, long exp) { _index = index; _evolve = EvolveLevel.values()[evolve];