Pet related code corrections and improvements.
This commit is contained in:
@@ -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))
|
||||||
{
|
{
|
||||||
|
@@ -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)
|
||||||
{
|
{
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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())
|
||||||
|
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -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];
|
@@ -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))
|
||||||
{
|
{
|
||||||
|
@@ -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)
|
||||||
{
|
{
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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())
|
||||||
|
@@ -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;
|
||||||
|
@@ -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];
|
Reference in New Issue
Block a user