Base HP/MP/CP stats per level stored in player templates.

This commit is contained in:
MobiusDevelopment
2020-08-13 17:10:21 +00:00
parent 400af440fa
commit c8197713ad
10 changed files with 290 additions and 300 deletions

View File

@@ -102,9 +102,9 @@ public class CreatureTemplate
_baseINT = set.getInt("baseINT");
_baseWIT = set.getInt("baseWIT");
_baseMEN = set.getInt("baseMEN");
_baseHpMax = set.getFloat("baseHpMax");
_baseCpMax = set.getFloat("baseCpMax");
_baseMpMax = set.getFloat("baseMpMax");
_baseHpMax = set.getFloat("baseHpMax", 1);
_baseCpMax = set.getFloat("baseCpMax", 1);
_baseMpMax = set.getFloat("baseMpMax", 1);
_baseHpReg = set.getFloat("baseHpReg");
_baseMpReg = set.getFloat("baseMpReg");
_basePAtk = set.getInt("basePAtk");
@@ -113,7 +113,7 @@ public class CreatureTemplate
_baseMDef = set.getInt("baseMDef");
_basePAtkSpd = set.getInt("basePAtkSpd");
_baseMAtkSpd = set.getInt("baseMAtkSpd");
_baseMReuseRate = set.getFloat("baseMReuseDelay", 1.f);
_baseMReuseRate = set.getFloat("baseMReuseDelay", 1);
_baseShldDef = set.getInt("baseShldDef");
_baseAtkRange = set.getInt("baseAtkRange");
_baseShldRate = set.getInt("baseShldRate");

View File

@@ -33,16 +33,13 @@ public class PlayerTemplate extends CreatureTemplate
private final ClassId _classId;
private final String _className;
private final int _classBaseLevel;
private final float _levelHpAdd;
private final float _levelHpMod;
private final float _levelCpAdd;
private final float _levelCpMod;
private final float _levelMpAdd;
private final float _levelMpMod;
private final int _spawnX;
private final int _spawnY;
private final int _spawnZ;
private final List<ItemHolder> _items = new ArrayList<>();
private final float[] _hpTable;
private final float[] _mpTable;
private final float[] _cpTable;
public PlayerTemplate(StatSet set)
{
@@ -54,18 +51,37 @@ public class PlayerTemplate extends CreatureTemplate
_spawnY = set.getInt("spawnY");
_spawnZ = set.getInt("spawnZ");
_classBaseLevel = set.getInt("baseLevel");
_levelHpAdd = set.getFloat("levelHpAdd");
_levelHpMod = set.getFloat("levelHpMod");
_levelCpAdd = set.getFloat("levelCpAdd");
_levelCpMod = set.getFloat("levelCpMod");
_levelMpAdd = set.getFloat("levelMpAdd");
_levelMpMod = set.getFloat("levelMpMod");
String[] item;
for (String split : set.getString("items").split(";"))
{
item = split.split(",");
_items.add(new ItemHolder(Integer.parseInt(item[0]), Integer.parseInt(item[1])));
}
int counter = 0;
final String[] hpValues = set.getString("hpTable").split(";");
_hpTable = new float[hpValues.length];
for (String value : hpValues)
{
_hpTable[counter++] = Float.valueOf(value);
}
counter = 0;
final String[] mpValues = set.getString("mpTable").split(";");
_mpTable = new float[mpValues.length];
for (String value : mpValues)
{
_mpTable[counter++] = Float.valueOf(value);
}
counter = 0;
final String[] cpValues = set.getString("cpTable").split(";");
_cpTable = new float[cpValues.length];
for (String value : cpValues)
{
_cpTable[counter++] = Float.valueOf(value);
}
}
public List<ItemHolder> getItems()
@@ -108,34 +124,31 @@ public class PlayerTemplate extends CreatureTemplate
return _classBaseLevel;
}
public float getLevelHpAdd()
public float getBaseHpMax(int level)
{
return _levelHpAdd;
if (level > _hpTable.length)
{
return _hpTable[_hpTable.length - 1];
}
return _hpTable[level - 1];
}
public float getLevelHpMod()
public float getBaseMpMax(int level)
{
return _levelHpMod;
if (level > _mpTable.length)
{
return _mpTable[_mpTable.length - 1];
}
return _mpTable[level - 1];
}
public float getLevelCpAdd()
public float getBaseCpMax(int level)
{
return _levelCpAdd;
}
public float getLevelCpMod()
{
return _levelCpMod;
}
public float getLevelMpAdd()
{
return _levelMpAdd;
}
public float getLevelMpMod()
{
return _levelMpMod;
if (level > _cpTable.length)
{
return _cpTable[_cpTable.length - 1];
}
return _cpTable[level - 1];
}
public int getBaseFallSafeHeight(boolean female)

View File

@@ -707,11 +707,7 @@ public class Formulas
public void calc(Env env)
{
final PlayerTemplate t = (PlayerTemplate) env.player.getTemplate();
final int lvl = Math.max(env.player.getLevel() - t.getClassBaseLevel(), -50);
final double hpmod = t.getLevelHpMod() * lvl;
final double hpmax = (t.getLevelHpAdd() + hpmod) * lvl;
final double hpmin = (t.getLevelHpAdd() * lvl) + hpmod;
env.value += (hpmax + hpmin) / 2;
env.value += t.getBaseHpMax(env.player.getLevel());
}
}
@@ -754,11 +750,7 @@ public class Formulas
public void calc(Env env)
{
final PlayerTemplate t = (PlayerTemplate) env.player.getTemplate();
final int lvl = Math.max(env.player.getLevel() - t.getClassBaseLevel(), -50);
final double cpmod = t.getLevelCpMod() * lvl;
final double cpmax = (t.getLevelCpAdd() + cpmod) * lvl;
final double cpmin = (t.getLevelCpAdd() * lvl) + cpmod;
env.value += (cpmax + cpmin) / 2;
env.value += t.getBaseCpMax(env.player.getLevel());
}
}
@@ -801,11 +793,7 @@ public class Formulas
public void calc(Env env)
{
final PlayerTemplate t = (PlayerTemplate) env.player.getTemplate();
final int lvl = Math.max(env.player.getLevel() - t.getClassBaseLevel(), -50);
final double mpmod = t.getLevelMpMod() * lvl;
final double mpmax = (t.getLevelMpAdd() + mpmod) * lvl;
final double mpmin = (t.getLevelMpAdd() * lvl) + mpmod;
env.value += (mpmax + mpmin) / 2;
env.value += t.getBaseMpMax(env.player.getLevel());
}
}