Pet related code corrections and improvements.

This commit is contained in:
MobiusDevelopment
2021-05-22 14:42:07 +00:00
parent d1b8f3fe49
commit 6ebd7458e3
12 changed files with 88 additions and 84 deletions

View File

@@ -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.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.PetItemHolder; 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.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
@@ -86,7 +86,7 @@ public class SummonPet extends AbstractEffect
return; 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()); 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)) if ((petData == null) || (petData.getNpcId() == -1))
{ {

View File

@@ -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.PlayerInstance;
import org.l2jmobius.gameserver.model.actor.instance.ServitorInstance; import org.l2jmobius.gameserver.model.actor.instance.ServitorInstance;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; 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.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
@@ -134,7 +134,7 @@ public class CharSummonTable
return; 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()); 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) if (petData == null)
{ {

View File

@@ -24,7 +24,7 @@ import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.enums.AttributeType; import org.l2jmobius.gameserver.enums.AttributeType;
import org.l2jmobius.gameserver.model.buylist.Product; import org.l2jmobius.gameserver.model.buylist.Product;
import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; 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.Item;
import org.l2jmobius.gameserver.model.items.WarehouseItem; import org.l2jmobius.gameserver.model.items.WarehouseItem;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
@@ -87,7 +87,7 @@ public class ItemInfo
private Collection<EnsoulOption> _soulCrystalSpecialOptions; private Collection<EnsoulOption> _soulCrystalSpecialOptions;
private int _visualId; private int _visualId;
private long _visualExpiration; private long _visualExpiration;
private PlayerPetMetadataHolder _petData; private PetEvolveHolder _petData;
/** /**
* Get all information from ItemInstance to generate ItemInfo. * Get all information from ItemInstance to generate ItemInfo.
@@ -419,7 +419,7 @@ public class ItemInfo
return _isBlessed; return _isBlessed;
} }
public PlayerPetMetadataHolder getPetData() public PetEvolveHolder getPetData()
{ {
return _petData; return _petData;
} }

View File

@@ -59,7 +59,7 @@ import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.stat.PetStat; import org.l2jmobius.gameserver.model.actor.stat.PetStat;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; 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.Inventory;
import org.l2jmobius.gameserver.model.itemcontainer.PetInventory; import org.l2jmobius.gameserver.model.itemcontainer.PetInventory;
import org.l2jmobius.gameserver.model.items.Item; 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 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 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=?"; 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=?"; private static final String SELECT_PET_SKILLS = "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)"; 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)";
public final String deletePetSkills = "DELETE FROM pet_skills WHERE petObjItemId=?"; private static final String DELETE_PET_SKILLS = "DELETE FROM pet_skills WHERE petObjItemId=?";
public final String selectEvolvedPets = "SELECT * FROM pet_evolves WHERE itemObjId=?"; private static final String SELECT_EVOLVED_PETS = "SELECT * FROM pet_evolves WHERE itemObjId=?";
public final String updateEvolvedPets = "REPLACE INTO pet_evolves (`itemObjId`, `index`, `level`) VALUES (?, ?, ?)"; 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 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 PetData _data;
private PetLevelData _leveldata; private PetLevelData _leveldata;
private EvolveLevel _evolveLevel = EvolveLevel.None; private EvolveLevel _evolveLevel = EvolveLevel.None;
private int _petType = 0; private Future<?> _feedTask;
/** The Experience before the last Death Penalty */
private long _expBeforeDeath = 0;
private int _curWeightPenalty = 0;
private void deletePetEvolved() private void deletePetEvolved()
{ {
@@ -125,7 +124,7 @@ public class PetInstance extends Summon
public void restorePetEvolvesByItem() public void restorePetEvolvesByItem()
{ {
try (Connection con = DatabaseFactory.getConnection(); try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps2 = con.prepareStatement(selectEvolvedPets)) PreparedStatement ps2 = con.prepareStatement(SELECT_EVOLVED_PETS))
{ {
ps2.setInt(1, _controlObjectId); ps2.setInt(1, _controlObjectId);
try (ResultSet rset = ps2.executeQuery()) try (ResultSet rset = ps2.executeQuery())
@@ -146,7 +145,7 @@ public class PetInstance extends Summon
{ {
deletePetEvolved(); deletePetEvolved();
try (Connection con = DatabaseFactory.getConnection(); try (Connection con = DatabaseFactory.getConnection();
PreparedStatement stmt = con.prepareStatement(updateEvolvedPets)) PreparedStatement stmt = con.prepareStatement(UPDATE_EVOLVED_PETS))
{ {
stmt.setInt(1, controlItemObjId); stmt.setInt(1, controlItemObjId);
stmt.setInt(2, index); stmt.setInt(2, index);
@@ -157,13 +156,13 @@ public class PetInstance extends Summon
{ {
e.printStackTrace(); 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) public void storePetSkills(int skillId, int skillLevel)
{ {
try (Connection con = DatabaseFactory.getConnection(); try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps2 = con.prepareStatement(insertPetSkills)) PreparedStatement ps2 = con.prepareStatement(INSERT_PET_SKILLS))
{ {
ps2.setInt(1, _controlObjectId); ps2.setInt(1, _controlObjectId);
ps2.setInt(2, skillId); ps2.setInt(2, skillId);
@@ -179,8 +178,8 @@ public class PetInstance extends Summon
public void restoreSkills() public void restoreSkills()
{ {
try (Connection con = DatabaseFactory.getConnection(); try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps1 = con.prepareStatement(selectPetSkills); PreparedStatement ps1 = con.prepareStatement(SELECT_PET_SKILLS);
PreparedStatement ps2 = con.prepareStatement(deletePetSkills)) PreparedStatement ps2 = con.prepareStatement(DELETE_PET_SKILLS))
{ {
ps1.setInt(1, _controlObjectId); ps1.setInt(1, _controlObjectId);
try (ResultSet rset = ps1.executeQuery()) try (ResultSet rset = ps1.executeQuery())

View File

@@ -231,8 +231,8 @@ import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
import org.l2jmobius.gameserver.model.holders.MovieHolder; 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.PlayerEventHolder;
import org.l2jmobius.gameserver.model.holders.PlayerPetMetadataHolder;
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder;
import org.l2jmobius.gameserver.model.holders.SkillUseHolder; import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
@@ -902,7 +902,7 @@ public class PlayerInstance extends Playable
private PlayerRandomCraft _randomCraft = null; private PlayerRandomCraft _randomCraft = null;
private final Map<Integer, PlayerPetMetadataHolder> _petEvolves = new HashMap<>(); private final Map<Integer, PetEvolveHolder> _petEvolves = new HashMap<>();
private final List<QuestTimer> _questTimers = new ArrayList<>(); private final List<QuestTimer> _questTimers = new ArrayList<>();
private final List<TimerHolder<?>> _timerHolders = new ArrayList<>(); private final List<TimerHolder<?>> _timerHolders = new ArrayList<>();
@@ -14571,14 +14571,22 @@ public class PlayerInstance extends Playable
return _randomCraft; 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<Integer, PlayerPetMetadataHolder> getAllPetEvolves() public void setPetEvolve(int itemObjectId, PetEvolveHolder entry)
{ {
return _petEvolves; _petEvolves.put(itemObjectId, entry);
} }
public void restorePetEvolvesByItem() public void restorePetEvolvesByItem()
@@ -14596,7 +14604,7 @@ public class PlayerInstance extends Playable
final EvolveLevel evolve = EvolveLevel.values()[rset.getInt("evolve")]; final EvolveLevel evolve = EvolveLevel.values()[rset.getInt("evolve")];
if (evolve != null) 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);
}
} }

View File

@@ -21,7 +21,7 @@ import org.l2jmobius.gameserver.enums.EvolveLevel;
/** /**
* Written by Berezkin Nikolay, on 16.05.2021 * Written by Berezkin Nikolay, on 16.05.2021
*/ */
public class PlayerPetMetadataHolder public class PetEvolveHolder
{ {
private final int _index; private final int _index;
private final int _level; private final int _level;
@@ -29,7 +29,7 @@ public class PlayerPetMetadataHolder
private final long _exp; private final long _exp;
private final String _name; 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; _index = index;
_evolve = EvolveLevel.values()[evolve]; _evolve = EvolveLevel.values()[evolve];

View File

@@ -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.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.PetItemHolder; 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.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
@@ -86,7 +86,7 @@ public class SummonPet extends AbstractEffect
return; 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()); 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)) if ((petData == null) || (petData.getNpcId() == -1))
{ {

View File

@@ -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.PlayerInstance;
import org.l2jmobius.gameserver.model.actor.instance.ServitorInstance; import org.l2jmobius.gameserver.model.actor.instance.ServitorInstance;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; 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.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
@@ -134,7 +134,7 @@ public class CharSummonTable
return; 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()); 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) if (petData == null)
{ {

View File

@@ -24,7 +24,7 @@ import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.enums.AttributeType; import org.l2jmobius.gameserver.enums.AttributeType;
import org.l2jmobius.gameserver.model.buylist.Product; import org.l2jmobius.gameserver.model.buylist.Product;
import org.l2jmobius.gameserver.model.ensoul.EnsoulOption; 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.Item;
import org.l2jmobius.gameserver.model.items.WarehouseItem; import org.l2jmobius.gameserver.model.items.WarehouseItem;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
@@ -87,7 +87,7 @@ public class ItemInfo
private Collection<EnsoulOption> _soulCrystalSpecialOptions; private Collection<EnsoulOption> _soulCrystalSpecialOptions;
private int _visualId; private int _visualId;
private long _visualExpiration; private long _visualExpiration;
private PlayerPetMetadataHolder _petData; private PetEvolveHolder _petData;
/** /**
* Get all information from ItemInstance to generate ItemInfo. * Get all information from ItemInstance to generate ItemInfo.
@@ -419,7 +419,7 @@ public class ItemInfo
return _isBlessed; return _isBlessed;
} }
public PlayerPetMetadataHolder getPetData() public PetEvolveHolder getPetData()
{ {
return _petData; return _petData;
} }

View File

@@ -59,7 +59,7 @@ import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.stat.PetStat; import org.l2jmobius.gameserver.model.actor.stat.PetStat;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; 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.Inventory;
import org.l2jmobius.gameserver.model.itemcontainer.PetInventory; import org.l2jmobius.gameserver.model.itemcontainer.PetInventory;
import org.l2jmobius.gameserver.model.items.Item; 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 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 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=?"; 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=?"; private static final String SELECT_PET_SKILLS = "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)"; 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)";
public final String deletePetSkills = "DELETE FROM pet_skills WHERE petObjItemId=?"; private static final String DELETE_PET_SKILLS = "DELETE FROM pet_skills WHERE petObjItemId=?";
public final String selectEvolvedPets = "SELECT * FROM pet_evolves WHERE itemObjId=?"; private static final String SELECT_EVOLVED_PETS = "SELECT * FROM pet_evolves WHERE itemObjId=?";
public final String updateEvolvedPets = "REPLACE INTO pet_evolves (`itemObjId`, `index`, `level`) VALUES (?, ?, ?)"; 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 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 PetData _data;
private PetLevelData _leveldata; private PetLevelData _leveldata;
private EvolveLevel _evolveLevel = EvolveLevel.None; private EvolveLevel _evolveLevel = EvolveLevel.None;
private int _petType = 0; private Future<?> _feedTask;
/** The Experience before the last Death Penalty */
private long _expBeforeDeath = 0;
private int _curWeightPenalty = 0;
private void deletePetEvolved() private void deletePetEvolved()
{ {
@@ -125,7 +124,7 @@ public class PetInstance extends Summon
public void restorePetEvolvesByItem() public void restorePetEvolvesByItem()
{ {
try (Connection con = DatabaseFactory.getConnection(); try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps2 = con.prepareStatement(selectEvolvedPets)) PreparedStatement ps2 = con.prepareStatement(SELECT_EVOLVED_PETS))
{ {
ps2.setInt(1, _controlObjectId); ps2.setInt(1, _controlObjectId);
try (ResultSet rset = ps2.executeQuery()) try (ResultSet rset = ps2.executeQuery())
@@ -146,7 +145,7 @@ public class PetInstance extends Summon
{ {
deletePetEvolved(); deletePetEvolved();
try (Connection con = DatabaseFactory.getConnection(); try (Connection con = DatabaseFactory.getConnection();
PreparedStatement stmt = con.prepareStatement(updateEvolvedPets)) PreparedStatement stmt = con.prepareStatement(UPDATE_EVOLVED_PETS))
{ {
stmt.setInt(1, controlItemObjId); stmt.setInt(1, controlItemObjId);
stmt.setInt(2, index); stmt.setInt(2, index);
@@ -157,13 +156,13 @@ public class PetInstance extends Summon
{ {
e.printStackTrace(); 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) public void storePetSkills(int skillId, int skillLevel)
{ {
try (Connection con = DatabaseFactory.getConnection(); try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps2 = con.prepareStatement(insertPetSkills)) PreparedStatement ps2 = con.prepareStatement(INSERT_PET_SKILLS))
{ {
ps2.setInt(1, _controlObjectId); ps2.setInt(1, _controlObjectId);
ps2.setInt(2, skillId); ps2.setInt(2, skillId);
@@ -179,8 +178,8 @@ public class PetInstance extends Summon
public void restoreSkills() public void restoreSkills()
{ {
try (Connection con = DatabaseFactory.getConnection(); try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps1 = con.prepareStatement(selectPetSkills); PreparedStatement ps1 = con.prepareStatement(SELECT_PET_SKILLS);
PreparedStatement ps2 = con.prepareStatement(deletePetSkills)) PreparedStatement ps2 = con.prepareStatement(DELETE_PET_SKILLS))
{ {
ps1.setInt(1, _controlObjectId); ps1.setInt(1, _controlObjectId);
try (ResultSet rset = ps1.executeQuery()) try (ResultSet rset = ps1.executeQuery())

View File

@@ -234,9 +234,9 @@ import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder; import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
import org.l2jmobius.gameserver.model.holders.MovieHolder; 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.PlayerCollectionData;
import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; 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.PreparedMultisellListHolder;
import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder; import org.l2jmobius.gameserver.model.holders.PurgePlayerHolder;
import org.l2jmobius.gameserver.model.holders.SellBuffHolder; import org.l2jmobius.gameserver.model.holders.SellBuffHolder;
@@ -926,7 +926,7 @@ public class PlayerInstance extends Playable
private final Map<Integer, PurgePlayerHolder> _purgePoints = new HashMap<>(); private final Map<Integer, PurgePlayerHolder> _purgePoints = new HashMap<>();
private final Map<Integer, PlayerPetMetadataHolder> _petEvolves = new HashMap<>(); private final Map<Integer, PetEvolveHolder> _petEvolves = new HashMap<>();
private final List<QuestTimer> _questTimers = new ArrayList<>(); private final List<QuestTimer> _questTimers = new ArrayList<>();
private final List<TimerHolder<?>> _timerHolders = new ArrayList<>(); private final List<TimerHolder<?>> _timerHolders = new ArrayList<>();
@@ -14623,14 +14623,22 @@ public class PlayerInstance extends Playable
return _randomCraft; 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<Integer, PlayerPetMetadataHolder> getAllPetEvolves() public void setPetEvolve(int itemObjectId, PetEvolveHolder entry)
{ {
return _petEvolves; _petEvolves.put(itemObjectId, entry);
} }
public void restorePetEvolvesByItem() public void restorePetEvolvesByItem()
@@ -14648,7 +14656,7 @@ public class PlayerInstance extends Playable
final EvolveLevel evolve = EvolveLevel.values()[rset.getInt("evolve")]; final EvolveLevel evolve = EvolveLevel.values()[rset.getInt("evolve")];
if (evolve != null) 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<PlayerCollectionData> getCollections() public List<PlayerCollectionData> getCollections()
{ {
return _collections; return _collections;

View File

@@ -21,7 +21,7 @@ import org.l2jmobius.gameserver.enums.EvolveLevel;
/** /**
* Written by Berezkin Nikolay, on 16.05.2021 * Written by Berezkin Nikolay, on 16.05.2021
*/ */
public class PlayerPetMetadataHolder public class PetEvolveHolder
{ {
private final int _index; private final int _index;
private final int _level; private final int _level;
@@ -29,7 +29,7 @@ public class PlayerPetMetadataHolder
private final long _exp; private final long _exp;
private final String _name; 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; _index = index;
_evolve = EvolveLevel.values()[evolve]; _evolve = EvolveLevel.values()[evolve];