Pet level should be set properly to wanted value.

This commit is contained in:
MobiusDevelopment
2022-11-04 01:33:28 +00:00
parent 033808b5d2
commit 25fa7f050b
106 changed files with 260 additions and 198 deletions

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = MAX_LEVEL + 1; // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -854,7 +854,7 @@ public class Pet extends Summon
return new Pet(template, owner, control);
}
pet = new Pet(template, owner, control, rset.getByte("level"));
pet = new Pet(template, owner, control, rset.getInt("level"));
pet._respawned = true;
pet.setName(rset.getString("name"));

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = MAX_LEVEL + 1; // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -854,7 +854,7 @@ public class Pet extends Summon
return new Pet(template, owner, control);
}
pet = new Pet(template, owner, control, rset.getByte("level"));
pet = new Pet(template, owner, control, rset.getInt("level"));
pet._respawned = true;
pet.setName(rset.getString("name"));

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = MAX_LEVEL + 1; // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -854,7 +854,7 @@ public class Pet extends Summon
return new Pet(template, owner, control);
}
pet = new Pet(template, owner, control, rset.getByte("level"));
pet = new Pet(template, owner, control, rset.getInt("level"));
pet._respawned = true;
pet.setName(rset.getString("name"));

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = MAX_LEVEL + 1; // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -854,7 +854,7 @@ public class Pet extends Summon
return new Pet(template, owner, control);
}
pet = new Pet(template, owner, control, rset.getByte("level"));
pet = new Pet(template, owner, control, rset.getInt("level"));
pet._respawned = true;
pet.setName(rset.getString("name"));

View File

@@ -70,9 +70,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -174,7 +174,15 @@ public class PetDataTable implements IXmlReader
public PetLevelData getPetLevelData(int petId, int petLevel)
{
final PetData pd = getPetData(petId);
return pd != null ? pd.getPetLevelData(petLevel) : null;
if (pd != null)
{
if (petLevel > pd.getMaxLevel())
{
return pd.getPetLevelData(pd.getMaxLevel());
}
return pd.getPetLevelData(petLevel);
}
return null;
}
/**

View File

@@ -40,6 +40,7 @@ public class PetData
private int _load = 20000;
private int _hungryLimit = 1;
private int _minLevel = Byte.MAX_VALUE;
private int _maxLevel = 0;
private boolean _syncLevel = false;
private final Set<Integer> _food = new HashSet<>();
@@ -75,6 +76,10 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < level)
{
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -119,6 +124,14 @@ public class PetData
return _minLevel;
}
/**
* @return the pet's maximum level.
*/
public int getMaxLevel()
{
return _maxLevel;
}
/**
* @return the pet's food list.
*/
@@ -172,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.
@@ -180,17 +192,19 @@ public class PetData
public int getAvailableLevel(int skillId, int petLvl)
{
int lvl = 0;
boolean found = false;
for (PetSkillLearn temp : _skills)
{
if (temp.getSkillId() != skillId)
{
continue;
}
found = true;
if (temp.getSkillLevel() == 0)
{
if (petLvl < 70)
{
lvl = petLvl / 10;
lvl = (petLvl / 10);
if (lvl <= 0)
{
lvl = 1;
@@ -198,7 +212,7 @@ public class PetData
}
else
{
lvl = 7 + ((petLvl - 70) / 5);
lvl = (7 + ((petLvl - 70) / 5));
}
// formula usable for skill that have 10 or more skill levels
@@ -209,11 +223,15 @@ public class PetData
}
break;
}
if ((temp.getMinLevel() <= petLvl) && (temp.getSkillLevel() > lvl))
else if ((temp.getMinLevel() <= petLvl) && (temp.getSkillLevel() > lvl))
{
lvl = temp.getSkillLevel();
}
}
if (found && (lvl == 0))
{
return 1;
}
return lvl;
}

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -246,8 +246,9 @@ public class Pet extends Summon
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));
}
World.getInstance().addPet(owner.getObjectId(), pet);
}

View File

@@ -267,8 +267,9 @@ public class PlayerStat extends PlayableStat
final Pet pet = (Pet) getActiveChar().getSummon();
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));

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<table maxLevel="85" maxPetLevel="86" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/experience.xsd">
<table maxLevel="85" maxPetLevel="85" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/experience.xsd">
<experience level="1" tolevel="0" />
<experience level="2" tolevel="68" />
<experience level="3" tolevel="363" />

View File

@@ -70,9 +70,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -174,7 +174,15 @@ public class PetDataTable implements IXmlReader
public PetLevelData getPetLevelData(int petId, int petLevel)
{
final PetData pd = getPetData(petId);
return pd != null ? pd.getPetLevelData(petLevel) : null;
if (pd != null)
{
if (petLevel > pd.getMaxLevel())
{
return pd.getPetLevelData(pd.getMaxLevel());
}
return pd.getPetLevelData(petLevel);
}
return null;
}
/**

View File

@@ -40,6 +40,7 @@ public class PetData
private int _load = 20000;
private int _hungryLimit = 1;
private int _minLevel = Byte.MAX_VALUE;
private int _maxLevel = 0;
private boolean _syncLevel = false;
private final Set<Integer> _food = new HashSet<>();
@@ -75,6 +76,10 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < level)
{
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -119,6 +124,14 @@ public class PetData
return _minLevel;
}
/**
* @return the pet's maximum level.
*/
public int getMaxLevel()
{
return _maxLevel;
}
/**
* @return the pet's food list.
*/
@@ -172,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.
@@ -180,17 +192,19 @@ public class PetData
public int getAvailableLevel(int skillId, int petLvl)
{
int lvl = 0;
boolean found = false;
for (PetSkillLearn temp : _skills)
{
if (temp.getSkillId() != skillId)
{
continue;
}
found = true;
if (temp.getSkillLevel() == 0)
{
if (petLvl < 70)
{
lvl = petLvl / 10;
lvl = (petLvl / 10);
if (lvl <= 0)
{
lvl = 1;
@@ -198,7 +212,7 @@ public class PetData
}
else
{
lvl = 7 + ((petLvl - 70) / 5);
lvl = (7 + ((petLvl - 70) / 5));
}
// formula usable for skill that have 10 or more skill levels
@@ -209,11 +223,15 @@ public class PetData
}
break;
}
if ((temp.getMinLevel() <= petLvl) && (temp.getSkillLevel() > lvl))
else if ((temp.getMinLevel() <= petLvl) && (temp.getSkillLevel() > lvl))
{
lvl = temp.getSkillLevel();
}
}
if (found && (lvl == 0))
{
return 1;
}
return lvl;
}

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -248,8 +248,9 @@ public class Pet extends Summon
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));
}
World.getInstance().addPet(owner.getObjectId(), pet);
}

View File

@@ -280,8 +280,9 @@ public class PlayerStat extends PlayableStat
final Pet pet = (Pet) getActiveChar().getSummon();
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));

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<table maxLevel="85" maxPetLevel="86" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/experience.xsd">
<table maxLevel="85" maxPetLevel="85" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/experience.xsd">
<experience level="1" tolevel="0" />
<experience level="2" tolevel="68" />
<experience level="3" tolevel="363" />

View File

@@ -70,9 +70,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -174,7 +174,15 @@ public class PetDataTable implements IXmlReader
public PetLevelData getPetLevelData(int petId, int petLevel)
{
final PetData pd = getPetData(petId);
return pd != null ? pd.getPetLevelData(petLevel) : null;
if (pd != null)
{
if (petLevel > pd.getMaxLevel())
{
return pd.getPetLevelData(pd.getMaxLevel());
}
return pd.getPetLevelData(petLevel);
}
return null;
}
/**

View File

@@ -40,6 +40,7 @@ public class PetData
private int _load = 20000;
private int _hungryLimit = 1;
private int _minLevel = Byte.MAX_VALUE;
private int _maxLevel = 0;
private boolean _syncLevel = false;
private final Set<Integer> _food = new HashSet<>();
@@ -75,6 +76,10 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < level)
{
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -119,6 +124,14 @@ public class PetData
return _minLevel;
}
/**
* @return the pet's maximum level.
*/
public int getMaxLevel()
{
return _maxLevel;
}
/**
* @return the pet's food list.
*/
@@ -172,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.
@@ -180,17 +192,19 @@ public class PetData
public int getAvailableLevel(int skillId, int petLvl)
{
int lvl = 0;
boolean found = false;
for (PetSkillLearn temp : _skills)
{
if (temp.getSkillId() != skillId)
{
continue;
}
found = true;
if (temp.getSkillLevel() == 0)
{
if (petLvl < 70)
{
lvl = petLvl / 10;
lvl = (petLvl / 10);
if (lvl <= 0)
{
lvl = 1;
@@ -198,7 +212,7 @@ public class PetData
}
else
{
lvl = 7 + ((petLvl - 70) / 5);
lvl = (7 + ((petLvl - 70) / 5));
}
// formula usable for skill that have 10 or more skill levels
@@ -209,11 +223,15 @@ public class PetData
}
break;
}
if ((temp.getMinLevel() <= petLvl) && (temp.getSkillLevel() > lvl))
else if ((temp.getMinLevel() <= petLvl) && (temp.getSkillLevel() > lvl))
{
lvl = temp.getSkillLevel();
}
}
if (found && (lvl == 0))
{
return 1;
}
return lvl;
}

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -248,8 +248,9 @@ public class Pet extends Summon
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));
}
World.getInstance().addPet(owner.getObjectId(), pet);
}

View File

@@ -313,8 +313,9 @@ public class PlayerStat extends PlayableStat
final Pet pet = (Pet) getActiveChar().getSummon();
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));

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = (byte) (MAX_LEVEL + 1); // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -76,9 +76,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}
@@ -185,7 +185,6 @@ public class PetData
}
/**
* TODO: Simplify this.
* @param skillId the skill Id.
* @param petLvl the pet level.
* @return the level of the skill for the given skill Id and pet level.

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = MAX_LEVEL + 1; // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -100,9 +100,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -993,7 +993,7 @@ public class Pet extends Summon
return new Pet(template, owner, control);
}
pet = new Pet(template, owner, control, rset.getByte("level"));
pet = new Pet(template, owner, control, rset.getInt("level"));
pet._respawned = true;
pet.setName(rset.getString("name"));

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = MAX_LEVEL + 1; // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -100,9 +100,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}

View File

@@ -49,7 +49,7 @@ public class PetLevelData
public PetLevelData(StatSet set)
{
_ownerExpTaken = set.getInt("get_exp_type");
_petMaxExp = set.getLong("exp");
_petMaxExp = (long) set.getDouble("exp");
_petMaxHP = set.getFloat("org_hp");
_petMaxMP = set.getFloat("org_mp");
_petPAtk = set.getFloat("org_pattack");

View File

@@ -993,7 +993,7 @@ public class Pet extends Summon
return new Pet(template, owner, control);
}
pet = new Pet(template, owner, control, rset.getByte("level"));
pet = new Pet(template, owner, control, rset.getInt("level"));
pet._respawned = true;
pet.setName(rset.getString("name"));

View File

@@ -72,9 +72,9 @@ public class ExperienceData implements IXmlReader
{
MAX_LEVEL = Config.PLAYER_MAXIMUM_LEVEL;
}
if (MAX_PET_LEVEL > MAX_LEVEL)
if (MAX_PET_LEVEL > (MAX_LEVEL + 1))
{
MAX_PET_LEVEL = MAX_LEVEL; // Pet level should not exceed owner level.
MAX_PET_LEVEL = MAX_LEVEL + 1; // Pet level should not exceed owner level.
}
int maxLevel = 0;

View File

@@ -100,9 +100,9 @@ public class PetData
{
_minLevel = level;
}
if (_maxLevel < (level - 1))
if (_maxLevel < level)
{
_maxLevel = level - 1;
_maxLevel = level;
}
_levelStats.put(level, data);
}

Some files were not shown because too many files have changed in this diff Show More