Pet max level differs from player max level.

This commit is contained in:
MobiusDev 2016-12-26 18:15:45 +00:00
parent 3b2b617dd2
commit 2b141cb81a
3 changed files with 19 additions and 4 deletions

View File

@ -38,6 +38,7 @@ public class L2PetData
private int _load = 20000;
private int _hungryLimit = 1;
private int _minlvl = Byte.MAX_VALUE;
private int _maxlvl = 0;
private boolean _syncLevel = false;
private final List<Integer> _food = new ArrayList<>();
@ -73,6 +74,10 @@ public class L2PetData
{
_minlvl = level;
}
if (_maxlvl < (level - 1))
{
_maxlvl = level - 1;
}
_levelStats.put(level, data);
}
@ -117,6 +122,14 @@ public class L2PetData
return _minlvl;
}
/**
* @return the pet's maximum level.
*/
public int getMaxLevel()
{
return _maxlvl;
}
/**
* @return the pet's food list.
*/

View File

@ -229,8 +229,9 @@ public class L2PetInstance extends L2Summon
pet.setTitle(owner.getName());
if (data.isSynchLevel() && (pet.getLevel() != owner.getLevel()))
{
pet.getStat().setLevel((byte) owner.getLevel());
pet.getStat().setExp(pet.getStat().getExpForLevel(owner.getLevel()));
final byte availableLevel = (byte) Math.min(data.getMaxLevel(), owner.getLevel());
pet.getStat().setLevel(availableLevel);
pet.getStat().setExp(pet.getStat().getExpForLevel(availableLevel));
}
L2World.getInstance().addPet(owner.getObjectId(), pet);
}

View File

@ -249,8 +249,9 @@ public class PcStat extends PlayableStat
final L2PetInstance pet = (L2PetInstance) sPet;
if (pet.getPetData().isSynchLevel() && (pet.getLevel() != getLevel()))
{
pet.getStat().setLevel(getLevel());
pet.getStat().getExpForLevel(getActiveChar().getLevel());
final byte availableLevel = (byte) Math.min(pet.getPetData().getMaxLevel(), getLevel());
pet.getStat().setLevel(availableLevel);
pet.getStat().getExpForLevel(availableLevel);
pet.setCurrentHp(pet.getMaxHp());
pet.setCurrentMp(pet.getMaxMp());
pet.broadcastPacket(new SocialAction(getActiveChar().getObjectId(), SocialAction.LEVEL_UP));