Elemental spirit related cleanup.

This commit is contained in:
MobiusDevelopment 2021-10-27 01:46:27 +00:00
parent a0ee3599f5
commit 27176333cf
20 changed files with 165 additions and 165 deletions

View File

@ -64,21 +64,21 @@ public class ElementalSpirit
_template = ElementalSpiritData.getInstance().getSpirit(data.getType(), data.getStage()); _template = ElementalSpiritData.getInstance().getSpirit(data.getType(), data.getStage());
} }
public void addExperience(long experience) public void addExperience(int experience)
{ {
if ((getLevel() == getMaxLevel()) && ((getExperience() + experience) > getExperienceToNextLevel())) if ((_data.getLevel() == _template.getMaxLevel()) && (_data.getExperience() >= _template.getMaxExperienceAtLevel(_template.getMaxLevel())))
{ {
return; return;
} }
_data.addExperience(experience); _data.addExperience(experience);
_owner.sendPacket(new ExElementalSpiritGetExp(getType(), _data.getExperience())); _owner.sendPacket(new ExElementalSpiritGetExp(_data.getType(), _data.getExperience()));
_owner.sendPacket(new SystemMessage(SystemMessageId.OBTAINED_S2_ATTRIBUTE_XP_OF_S1).addInt((int) experience).addElementalSpirit(getType())); _owner.sendPacket(new SystemMessage(SystemMessageId.OBTAINED_S2_ATTRIBUTE_XP_OF_S1).addInt(experience).addElementalSpirit(getType()));
if (getExperience() > getExperienceToNextLevel()) if (_data.getExperience() > getExperienceToNextLevel())
{ {
levelUp(); levelUp();
_owner.sendPacket(new SystemMessage(SystemMessageId.S1_ATTRIBUTE_SPIRIT_BECAME_LEVEL_S2).addElementalSpirit(getType()).addByte(_data.getLevel())); _owner.sendPacket(new SystemMessage(SystemMessageId.S1_ATTRIBUTE_SPIRIT_BECAME_LEVEL_S2).addElementalSpirit(_data.getType()).addByte(_data.getLevel()));
_owner.sendPacket(new ElementalSpiritInfo(_owner, _owner.getActiveElementalSpiritType(), (byte) 0)); _owner.sendPacket(new ElementalSpiritInfo(_owner, _owner.getActiveElementalSpiritType(), (byte) 0));
final UserInfo userInfo = new UserInfo(_owner); final UserInfo userInfo = new UserInfo(_owner);
userInfo.addComponentType(UserInfoType.ATT_SPIRITS); userInfo.addComponentType(UserInfoType.ATT_SPIRITS);
@ -90,7 +90,7 @@ public class ElementalSpirit
{ {
do do
{ {
if (_data.getLevel() < getMaxLevel()) if (_data.getLevel() < _template.getMaxLevel())
{ {
_data.increaseLevel(); _data.increaseLevel();
} }
@ -104,8 +104,8 @@ public class ElementalSpirit
public void reduceLevel() public void reduceLevel()
{ {
_data.setLevel((byte) Math.max(1, _data.getLevel() - 1)); _data.setLevel(Math.max(1, _data.getLevel() - 1));
_data.setExperience(ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1))); _data.setExperience(ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()).getMaxExperienceAtLevel(_data.getLevel() - 1));
resetCharacteristics(); resetCharacteristics();
} }
@ -134,27 +134,27 @@ public class ElementalSpirit
int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME); int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
if (getLevel() > 1) if (getLevel() > 1)
{ {
amount += ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)) / ElementalSpiritData.FRAGMENT_XP_CONSUME; amount += ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()).getMaxExperienceAtLevel(getLevel() - 1) / ElementalSpiritData.FRAGMENT_XP_CONSUME;
} }
return amount; return amount;
} }
public void resetStage() public void resetStage()
{ {
_data.setLevel((byte) 1); _data.setLevel(1);
_data.setExperience(0); _data.setExperience(0);
resetCharacteristics(); resetCharacteristics();
} }
public boolean canEvolve() public boolean canEvolve()
{ {
return (getStage() < 3) && (getLevel() == 10) && (getExperience() == getExperienceToNextLevel()); return (_data.getStage() < 3) && (_data.getLevel() == 10) && (_data.getExperience() == getExperienceToNextLevel());
} }
public void upgrade() public void upgrade()
{ {
_data.increaseStage(); _data.increaseStage();
_data.setLevel((byte) 1); _data.setLevel(1);
_data.setExperience(0); _data.setExperience(0);
_template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage());
EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner);
@ -193,7 +193,7 @@ public class ElementalSpirit
return _template.getMaxExperienceAtLevel(_data.getLevel()); return _template.getMaxExperienceAtLevel(_data.getLevel());
} }
public byte getLevel() public int getLevel()
{ {
return _data.getLevel(); return _data.getLevel();
} }

View File

@ -724,7 +724,7 @@ public class Attackable extends Npc
{ {
if ((player.getActiveElementalSpiritType() > 0) && (getAttributeExp() > 0) && (getElementalSpiritType() != ElementalType.NONE)) if ((player.getActiveElementalSpiritType() > 0) && (getAttributeExp() > 0) && (getElementalSpiritType() != ElementalType.NONE))
{ {
final long attributeExp = (long) (((getAttributeExp() * damage) / totalDamage) * player.getElementalSpiritXpBonus()); final int attributeExp = (int) (((getAttributeExp() * damage) / totalDamage) * player.getElementalSpiritXpBonus());
final ElementalSpirit spirit = player.getElementalSpirit(getElementalSpiritType().getSuperior()); final ElementalSpirit spirit = player.getElementalSpirit(getElementalSpiritType().getSuperior());
if (spirit != null) if (spirit != null)
{ {

View File

@ -22,8 +22,8 @@ package org.l2jmobius.gameserver.model.holders;
public class ElementalSpiritDataHolder public class ElementalSpiritDataHolder
{ {
private int _charId; private int _charId;
private int _level = 1;
private byte _type; private byte _type;
private byte _level = 1;
private byte _stage = 1; private byte _stage = 1;
private long _experience; private long _experience;
private byte _attackPoints; private byte _attackPoints;
@ -52,6 +52,16 @@ public class ElementalSpiritDataHolder
_charId = charId; _charId = charId;
} }
public int getLevel()
{
return _level;
}
public void setLevel(int level)
{
_level = level;
}
public byte getType() public byte getType()
{ {
return _type; return _type;
@ -62,16 +72,6 @@ public class ElementalSpiritDataHolder
_type = type; _type = type;
} }
public byte getLevel()
{
return _level;
}
public void setLevel(byte level)
{
_level = level;
}
public byte getStage() public byte getStage()
{ {
return _stage; return _stage;

View File

@ -33,7 +33,7 @@ public class ElementalSpiritTemplateHolder
private final int _maxCharacteristics; private final int _maxCharacteristics;
private final int _extractItem; private final int _extractItem;
private final Map<Byte, SpiritLevel> _levels; private final Map<Integer, SpiritLevel> _levels;
private List<ItemHolder> _itemsToEvolve; private List<ItemHolder> _itemsToEvolve;
private List<ElementalSpiritAbsorbItemHolder> _absorbItems; private List<ElementalSpiritAbsorbItemHolder> _absorbItems;
@ -55,7 +55,7 @@ public class ElementalSpiritTemplateHolder
spiritLevel.criticalRate = criticalRate; spiritLevel.criticalRate = criticalRate;
spiritLevel.criticalDamage = criticalDamage; spiritLevel.criticalDamage = criticalDamage;
spiritLevel.maxExperience = maxExperience; spiritLevel.maxExperience = maxExperience;
_levels.put((byte) level, spiritLevel); _levels.put(level, spiritLevel);
} }
public void addItemToEvolve(Integer itemId, Integer count) public void addItemToEvolve(Integer itemId, Integer count)
@ -82,7 +82,7 @@ public class ElementalSpiritTemplateHolder
return _npcId; return _npcId;
} }
public long getMaxExperienceAtLevel(byte level) public long getMaxExperienceAtLevel(int level)
{ {
final SpiritLevel spiritLevel = _levels.get(level); final SpiritLevel spiritLevel = _levels.get(level);
return spiritLevel == null ? 0 : spiritLevel.maxExperience; return spiritLevel == null ? 0 : spiritLevel.maxExperience;
@ -93,22 +93,22 @@ public class ElementalSpiritTemplateHolder
return _levels.size(); return _levels.size();
} }
public int getAttackAtLevel(byte level) public int getAttackAtLevel(int level)
{ {
return _levels.get(level).attack; return _levels.get(level).attack;
} }
public int getDefenseAtLevel(byte level) public int getDefenseAtLevel(int level)
{ {
return _levels.get(level).defense; return _levels.get(level).defense;
} }
public int getCriticalRateAtLevel(byte level) public int getCriticalRateAtLevel(int level)
{ {
return _levels.get(level).criticalRate; return _levels.get(level).criticalRate;
} }
public int getCriticalDamageAtLevel(byte level) public int getCriticalDamageAtLevel(int level)
{ {
return _levels.get(level).criticalDamage; return _levels.get(level).criticalDamage;
} }

View File

@ -64,21 +64,21 @@ public class ElementalSpirit
_template = ElementalSpiritData.getInstance().getSpirit(data.getType(), data.getStage()); _template = ElementalSpiritData.getInstance().getSpirit(data.getType(), data.getStage());
} }
public void addExperience(long experience) public void addExperience(int experience)
{ {
if ((getLevel() == getMaxLevel()) && ((getExperience() + experience) > getExperienceToNextLevel())) if ((_data.getLevel() == _template.getMaxLevel()) && (_data.getExperience() >= _template.getMaxExperienceAtLevel(_template.getMaxLevel())))
{ {
return; return;
} }
_data.addExperience(experience); _data.addExperience(experience);
_owner.sendPacket(new ExElementalSpiritGetExp(getType(), _data.getExperience())); _owner.sendPacket(new ExElementalSpiritGetExp(_data.getType(), _data.getExperience()));
_owner.sendPacket(new SystemMessage(SystemMessageId.OBTAINED_S2_ATTRIBUTE_XP_OF_S1).addInt((int) experience).addElementalSpirit(getType())); _owner.sendPacket(new SystemMessage(SystemMessageId.OBTAINED_S2_ATTRIBUTE_XP_OF_S1).addInt(experience).addElementalSpirit(getType()));
if (getExperience() > getExperienceToNextLevel()) if (_data.getExperience() > getExperienceToNextLevel())
{ {
levelUp(); levelUp();
_owner.sendPacket(new SystemMessage(SystemMessageId.S1_ATTRIBUTE_SPIRIT_BECAME_LEVEL_S2).addElementalSpirit(getType()).addByte(_data.getLevel())); _owner.sendPacket(new SystemMessage(SystemMessageId.S1_ATTRIBUTE_SPIRIT_BECAME_LEVEL_S2).addElementalSpirit(_data.getType()).addByte(_data.getLevel()));
_owner.sendPacket(new ElementalSpiritInfo(_owner, _owner.getActiveElementalSpiritType(), (byte) 0)); _owner.sendPacket(new ElementalSpiritInfo(_owner, _owner.getActiveElementalSpiritType(), (byte) 0));
final UserInfo userInfo = new UserInfo(_owner); final UserInfo userInfo = new UserInfo(_owner);
userInfo.addComponentType(UserInfoType.ATT_SPIRITS); userInfo.addComponentType(UserInfoType.ATT_SPIRITS);
@ -90,7 +90,7 @@ public class ElementalSpirit
{ {
do do
{ {
if (_data.getLevel() < getMaxLevel()) if (_data.getLevel() < _template.getMaxLevel())
{ {
_data.increaseLevel(); _data.increaseLevel();
} }
@ -104,8 +104,8 @@ public class ElementalSpirit
public void reduceLevel() public void reduceLevel()
{ {
_data.setLevel((byte) Math.max(1, _data.getLevel() - 1)); _data.setLevel(Math.max(1, _data.getLevel() - 1));
_data.setExperience(ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1))); _data.setExperience(ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()).getMaxExperienceAtLevel(_data.getLevel() - 1));
resetCharacteristics(); resetCharacteristics();
} }
@ -134,27 +134,27 @@ public class ElementalSpirit
int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME); int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
if (getLevel() > 1) if (getLevel() > 1)
{ {
amount += ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)) / ElementalSpiritData.FRAGMENT_XP_CONSUME; amount += ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()).getMaxExperienceAtLevel(getLevel() - 1) / ElementalSpiritData.FRAGMENT_XP_CONSUME;
} }
return amount; return amount;
} }
public void resetStage() public void resetStage()
{ {
_data.setLevel((byte) 1); _data.setLevel(1);
_data.setExperience(0); _data.setExperience(0);
resetCharacteristics(); resetCharacteristics();
} }
public boolean canEvolve() public boolean canEvolve()
{ {
return (getStage() < 3) && (getLevel() == 10) && (getExperience() == getExperienceToNextLevel()); return (_data.getStage() < 3) && (_data.getLevel() == 10) && (_data.getExperience() == getExperienceToNextLevel());
} }
public void upgrade() public void upgrade()
{ {
_data.increaseStage(); _data.increaseStage();
_data.setLevel((byte) 1); _data.setLevel(1);
_data.setExperience(0); _data.setExperience(0);
_template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage());
EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner);
@ -193,7 +193,7 @@ public class ElementalSpirit
return _template.getMaxExperienceAtLevel(_data.getLevel()); return _template.getMaxExperienceAtLevel(_data.getLevel());
} }
public byte getLevel() public int getLevel()
{ {
return _data.getLevel(); return _data.getLevel();
} }

View File

@ -724,7 +724,7 @@ public class Attackable extends Npc
{ {
if ((player.getActiveElementalSpiritType() > 0) && (getAttributeExp() > 0) && (getElementalSpiritType() != ElementalType.NONE)) if ((player.getActiveElementalSpiritType() > 0) && (getAttributeExp() > 0) && (getElementalSpiritType() != ElementalType.NONE))
{ {
final long attributeExp = (long) (((getAttributeExp() * damage) / totalDamage) * player.getElementalSpiritXpBonus()); final int attributeExp = (int) (((getAttributeExp() * damage) / totalDamage) * player.getElementalSpiritXpBonus());
final ElementalSpirit spirit = player.getElementalSpirit(getElementalSpiritType().getSuperior()); final ElementalSpirit spirit = player.getElementalSpirit(getElementalSpiritType().getSuperior());
if (spirit != null) if (spirit != null)
{ {

View File

@ -22,8 +22,8 @@ package org.l2jmobius.gameserver.model.holders;
public class ElementalSpiritDataHolder public class ElementalSpiritDataHolder
{ {
private int _charId; private int _charId;
private int _level = 1;
private byte _type; private byte _type;
private byte _level = 1;
private byte _stage = 1; private byte _stage = 1;
private long _experience; private long _experience;
private byte _attackPoints; private byte _attackPoints;
@ -52,6 +52,16 @@ public class ElementalSpiritDataHolder
_charId = charId; _charId = charId;
} }
public int getLevel()
{
return _level;
}
public void setLevel(int level)
{
_level = level;
}
public byte getType() public byte getType()
{ {
return _type; return _type;
@ -62,16 +72,6 @@ public class ElementalSpiritDataHolder
_type = type; _type = type;
} }
public byte getLevel()
{
return _level;
}
public void setLevel(byte level)
{
_level = level;
}
public byte getStage() public byte getStage()
{ {
return _stage; return _stage;

View File

@ -33,7 +33,7 @@ public class ElementalSpiritTemplateHolder
private final int _maxCharacteristics; private final int _maxCharacteristics;
private final int _extractItem; private final int _extractItem;
private final Map<Byte, SpiritLevel> _levels; private final Map<Integer, SpiritLevel> _levels;
private List<ItemHolder> _itemsToEvolve; private List<ItemHolder> _itemsToEvolve;
private List<ElementalSpiritAbsorbItemHolder> _absorbItems; private List<ElementalSpiritAbsorbItemHolder> _absorbItems;
@ -55,7 +55,7 @@ public class ElementalSpiritTemplateHolder
spiritLevel.criticalRate = criticalRate; spiritLevel.criticalRate = criticalRate;
spiritLevel.criticalDamage = criticalDamage; spiritLevel.criticalDamage = criticalDamage;
spiritLevel.maxExperience = maxExperience; spiritLevel.maxExperience = maxExperience;
_levels.put((byte) level, spiritLevel); _levels.put(level, spiritLevel);
} }
public void addItemToEvolve(Integer itemId, Integer count) public void addItemToEvolve(Integer itemId, Integer count)
@ -82,7 +82,7 @@ public class ElementalSpiritTemplateHolder
return _npcId; return _npcId;
} }
public long getMaxExperienceAtLevel(byte level) public long getMaxExperienceAtLevel(int level)
{ {
final SpiritLevel spiritLevel = _levels.get(level); final SpiritLevel spiritLevel = _levels.get(level);
return spiritLevel == null ? 0 : spiritLevel.maxExperience; return spiritLevel == null ? 0 : spiritLevel.maxExperience;
@ -93,22 +93,22 @@ public class ElementalSpiritTemplateHolder
return _levels.size(); return _levels.size();
} }
public int getAttackAtLevel(byte level) public int getAttackAtLevel(int level)
{ {
return _levels.get(level).attack; return _levels.get(level).attack;
} }
public int getDefenseAtLevel(byte level) public int getDefenseAtLevel(int level)
{ {
return _levels.get(level).defense; return _levels.get(level).defense;
} }
public int getCriticalRateAtLevel(byte level) public int getCriticalRateAtLevel(int level)
{ {
return _levels.get(level).criticalRate; return _levels.get(level).criticalRate;
} }
public int getCriticalDamageAtLevel(byte level) public int getCriticalDamageAtLevel(int level)
{ {
return _levels.get(level).criticalDamage; return _levels.get(level).criticalDamage;
} }

View File

@ -64,21 +64,21 @@ public class ElementalSpirit
_template = ElementalSpiritData.getInstance().getSpirit(data.getType(), data.getStage()); _template = ElementalSpiritData.getInstance().getSpirit(data.getType(), data.getStage());
} }
public void addExperience(long experience) public void addExperience(int experience)
{ {
if ((getLevel() == getMaxLevel()) && ((getExperience() + experience) > getExperienceToNextLevel())) if ((_data.getLevel() == _template.getMaxLevel()) && (_data.getExperience() >= _template.getMaxExperienceAtLevel(_template.getMaxLevel())))
{ {
return; return;
} }
_data.addExperience(experience); _data.addExperience(experience);
_owner.sendPacket(new ExElementalSpiritGetExp(getType(), _data.getExperience())); _owner.sendPacket(new ExElementalSpiritGetExp(_data.getType(), _data.getExperience()));
_owner.sendPacket(new SystemMessage(SystemMessageId.OBTAINED_S2_ATTRIBUTE_XP_OF_S1).addInt((int) experience).addElementalSpirit(getType())); _owner.sendPacket(new SystemMessage(SystemMessageId.OBTAINED_S2_ATTRIBUTE_XP_OF_S1).addInt(experience).addElementalSpirit(getType()));
if (getExperience() > getExperienceToNextLevel()) if (_data.getExperience() > getExperienceToNextLevel())
{ {
levelUp(); levelUp();
_owner.sendPacket(new SystemMessage(SystemMessageId.S1_ATTRIBUTE_SPIRIT_BECAME_LEVEL_S2).addElementalSpirit(getType()).addByte(_data.getLevel())); _owner.sendPacket(new SystemMessage(SystemMessageId.S1_ATTRIBUTE_SPIRIT_BECAME_LEVEL_S2).addElementalSpirit(_data.getType()).addByte(_data.getLevel()));
_owner.sendPacket(new ElementalSpiritInfo(_owner, _owner.getActiveElementalSpiritType(), (byte) 0)); _owner.sendPacket(new ElementalSpiritInfo(_owner, _owner.getActiveElementalSpiritType(), (byte) 0));
final UserInfo userInfo = new UserInfo(_owner); final UserInfo userInfo = new UserInfo(_owner);
userInfo.addComponentType(UserInfoType.ATT_SPIRITS); userInfo.addComponentType(UserInfoType.ATT_SPIRITS);
@ -90,7 +90,7 @@ public class ElementalSpirit
{ {
do do
{ {
if (_data.getLevel() < getMaxLevel()) if (_data.getLevel() < _template.getMaxLevel())
{ {
_data.increaseLevel(); _data.increaseLevel();
} }
@ -104,8 +104,8 @@ public class ElementalSpirit
public void reduceLevel() public void reduceLevel()
{ {
_data.setLevel((byte) Math.max(1, _data.getLevel() - 1)); _data.setLevel(Math.max(1, _data.getLevel() - 1));
_data.setExperience(ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1))); _data.setExperience(ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()).getMaxExperienceAtLevel(_data.getLevel() - 1));
resetCharacteristics(); resetCharacteristics();
} }
@ -134,27 +134,27 @@ public class ElementalSpirit
int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME); int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
if (getLevel() > 1) if (getLevel() > 1)
{ {
amount += ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)) / ElementalSpiritData.FRAGMENT_XP_CONSUME; amount += ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()).getMaxExperienceAtLevel(getLevel() - 1) / ElementalSpiritData.FRAGMENT_XP_CONSUME;
} }
return amount; return amount;
} }
public void resetStage() public void resetStage()
{ {
_data.setLevel((byte) 1); _data.setLevel(1);
_data.setExperience(0); _data.setExperience(0);
resetCharacteristics(); resetCharacteristics();
} }
public boolean canEvolve() public boolean canEvolve()
{ {
return (getStage() < 3) && (getLevel() == 10) && (getExperience() == getExperienceToNextLevel()); return (_data.getStage() < 3) && (_data.getLevel() == 10) && (_data.getExperience() == getExperienceToNextLevel());
} }
public void upgrade() public void upgrade()
{ {
_data.increaseStage(); _data.increaseStage();
_data.setLevel((byte) 1); _data.setLevel(1);
_data.setExperience(0); _data.setExperience(0);
_template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage());
EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner);
@ -193,7 +193,7 @@ public class ElementalSpirit
return _template.getMaxExperienceAtLevel(_data.getLevel()); return _template.getMaxExperienceAtLevel(_data.getLevel());
} }
public byte getLevel() public int getLevel()
{ {
return _data.getLevel(); return _data.getLevel();
} }

View File

@ -724,7 +724,7 @@ public class Attackable extends Npc
{ {
if ((player.getActiveElementalSpiritType() > 0) && (getAttributeExp() > 0) && (getElementalSpiritType() != ElementalType.NONE)) if ((player.getActiveElementalSpiritType() > 0) && (getAttributeExp() > 0) && (getElementalSpiritType() != ElementalType.NONE))
{ {
final long attributeExp = (long) (((getAttributeExp() * damage) / totalDamage) * player.getElementalSpiritXpBonus()); final int attributeExp = (int) (((getAttributeExp() * damage) / totalDamage) * player.getElementalSpiritXpBonus());
final ElementalSpirit spirit = player.getElementalSpirit(getElementalSpiritType().getSuperior()); final ElementalSpirit spirit = player.getElementalSpirit(getElementalSpiritType().getSuperior());
if (spirit != null) if (spirit != null)
{ {

View File

@ -22,8 +22,8 @@ package org.l2jmobius.gameserver.model.holders;
public class ElementalSpiritDataHolder public class ElementalSpiritDataHolder
{ {
private int _charId; private int _charId;
private int _level = 1;
private byte _type; private byte _type;
private byte _level = 1;
private byte _stage = 1; private byte _stage = 1;
private long _experience; private long _experience;
private byte _attackPoints; private byte _attackPoints;
@ -52,6 +52,16 @@ public class ElementalSpiritDataHolder
_charId = charId; _charId = charId;
} }
public int getLevel()
{
return _level;
}
public void setLevel(int level)
{
_level = level;
}
public byte getType() public byte getType()
{ {
return _type; return _type;
@ -62,16 +72,6 @@ public class ElementalSpiritDataHolder
_type = type; _type = type;
} }
public byte getLevel()
{
return _level;
}
public void setLevel(byte level)
{
_level = level;
}
public byte getStage() public byte getStage()
{ {
return _stage; return _stage;

View File

@ -33,7 +33,7 @@ public class ElementalSpiritTemplateHolder
private final int _maxCharacteristics; private final int _maxCharacteristics;
private final int _extractItem; private final int _extractItem;
private final Map<Byte, SpiritLevel> _levels; private final Map<Integer, SpiritLevel> _levels;
private List<ItemHolder> _itemsToEvolve; private List<ItemHolder> _itemsToEvolve;
private List<ElementalSpiritAbsorbItemHolder> _absorbItems; private List<ElementalSpiritAbsorbItemHolder> _absorbItems;
@ -55,7 +55,7 @@ public class ElementalSpiritTemplateHolder
spiritLevel.criticalRate = criticalRate; spiritLevel.criticalRate = criticalRate;
spiritLevel.criticalDamage = criticalDamage; spiritLevel.criticalDamage = criticalDamage;
spiritLevel.maxExperience = maxExperience; spiritLevel.maxExperience = maxExperience;
_levels.put((byte) level, spiritLevel); _levels.put(level, spiritLevel);
} }
public void addItemToEvolve(Integer itemId, Integer count) public void addItemToEvolve(Integer itemId, Integer count)
@ -82,7 +82,7 @@ public class ElementalSpiritTemplateHolder
return _npcId; return _npcId;
} }
public long getMaxExperienceAtLevel(byte level) public long getMaxExperienceAtLevel(int level)
{ {
final SpiritLevel spiritLevel = _levels.get(level); final SpiritLevel spiritLevel = _levels.get(level);
return spiritLevel == null ? 0 : spiritLevel.maxExperience; return spiritLevel == null ? 0 : spiritLevel.maxExperience;
@ -93,22 +93,22 @@ public class ElementalSpiritTemplateHolder
return _levels.size(); return _levels.size();
} }
public int getAttackAtLevel(byte level) public int getAttackAtLevel(int level)
{ {
return _levels.get(level).attack; return _levels.get(level).attack;
} }
public int getDefenseAtLevel(byte level) public int getDefenseAtLevel(int level)
{ {
return _levels.get(level).defense; return _levels.get(level).defense;
} }
public int getCriticalRateAtLevel(byte level) public int getCriticalRateAtLevel(int level)
{ {
return _levels.get(level).criticalRate; return _levels.get(level).criticalRate;
} }
public int getCriticalDamageAtLevel(byte level) public int getCriticalDamageAtLevel(int level)
{ {
return _levels.get(level).criticalDamage; return _levels.get(level).criticalDamage;
} }

View File

@ -64,21 +64,21 @@ public class ElementalSpirit
_template = ElementalSpiritData.getInstance().getSpirit(data.getType(), data.getStage()); _template = ElementalSpiritData.getInstance().getSpirit(data.getType(), data.getStage());
} }
public void addExperience(long experience) public void addExperience(int experience)
{ {
if ((getLevel() == getMaxLevel()) && ((getExperience() + experience) > getExperienceToNextLevel())) if ((_data.getLevel() == _template.getMaxLevel()) && (_data.getExperience() >= _template.getMaxExperienceAtLevel(_template.getMaxLevel())))
{ {
return; return;
} }
_data.addExperience(experience); _data.addExperience(experience);
_owner.sendPacket(new ExElementalSpiritGetExp(getType(), _data.getExperience())); _owner.sendPacket(new ExElementalSpiritGetExp(_data.getType(), _data.getExperience()));
_owner.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_ACQUIRED_S1_S2_ATTRIBUTE_XP).addInt((int) experience).addElementalSpirit(getType())); _owner.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_ACQUIRED_S1_S2_ATTRIBUTE_XP).addInt(experience).addElementalSpirit(_data.getType()));
if (getExperience() > getExperienceToNextLevel()) if (_data.getExperience() > getExperienceToNextLevel())
{ {
levelUp(); levelUp();
_owner.sendPacket(new SystemMessage(SystemMessageId.S1_ATTRIBUTE_SPIRIT_BECAME_LEVEL_S2).addElementalSpirit(getType()).addByte(_data.getLevel())); _owner.sendPacket(new SystemMessage(SystemMessageId.S1_ATTRIBUTE_SPIRIT_BECAME_LEVEL_S2).addElementalSpirit(_data.getType()).addByte(_data.getLevel()));
_owner.sendPacket(new ElementalSpiritInfo(_owner, _owner.getActiveElementalSpiritType(), (byte) 0)); _owner.sendPacket(new ElementalSpiritInfo(_owner, _owner.getActiveElementalSpiritType(), (byte) 0));
final UserInfo userInfo = new UserInfo(_owner); final UserInfo userInfo = new UserInfo(_owner);
userInfo.addComponentType(UserInfoType.ATT_SPIRITS); userInfo.addComponentType(UserInfoType.ATT_SPIRITS);
@ -90,7 +90,7 @@ public class ElementalSpirit
{ {
do do
{ {
if (_data.getLevel() < getMaxLevel()) if (_data.getLevel() < _template.getMaxLevel())
{ {
_data.increaseLevel(); _data.increaseLevel();
} }
@ -104,8 +104,8 @@ public class ElementalSpirit
public void reduceLevel() public void reduceLevel()
{ {
_data.setLevel((byte) Math.max(1, _data.getLevel() - 1)); _data.setLevel(Math.max(1, _data.getLevel() - 1));
_data.setExperience(ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1))); _data.setExperience(ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()).getMaxExperienceAtLevel(_data.getLevel() - 1));
resetCharacteristics(); resetCharacteristics();
} }
@ -134,27 +134,27 @@ public class ElementalSpirit
int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME); int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
if (getLevel() > 1) if (getLevel() > 1)
{ {
amount += ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)) / ElementalSpiritData.FRAGMENT_XP_CONSUME; amount += ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()).getMaxExperienceAtLevel(getLevel() - 1) / ElementalSpiritData.FRAGMENT_XP_CONSUME;
} }
return amount; return amount;
} }
public void resetStage() public void resetStage()
{ {
_data.setLevel((byte) 1); _data.setLevel(1);
_data.setExperience(0); _data.setExperience(0);
resetCharacteristics(); resetCharacteristics();
} }
public boolean canEvolve() public boolean canEvolve()
{ {
return (getStage() < 5) && (getLevel() == 10) && (getExperience() == getExperienceToNextLevel()); return (_data.getStage() < 5) && (_data.getLevel() == 10) && (_data.getExperience() == getExperienceToNextLevel());
} }
public void upgrade() public void upgrade()
{ {
_data.increaseStage(); _data.increaseStage();
_data.setLevel((byte) 1); _data.setLevel(1);
_data.setExperience(0); _data.setExperience(0);
_template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage());
EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner);
@ -193,7 +193,7 @@ public class ElementalSpirit
return _template.getMaxExperienceAtLevel(_data.getLevel()); return _template.getMaxExperienceAtLevel(_data.getLevel());
} }
public byte getLevel() public int getLevel()
{ {
return _data.getLevel(); return _data.getLevel();
} }

View File

@ -729,7 +729,7 @@ public class Attackable extends Npc
{ {
if ((player.getActiveElementalSpiritType() > 0) && (getAttributeExp() > 0) && (getElementalSpiritType() != ElementalType.NONE)) if ((player.getActiveElementalSpiritType() > 0) && (getAttributeExp() > 0) && (getElementalSpiritType() != ElementalType.NONE))
{ {
final long attributeExp = (long) (((getAttributeExp() * damage) / totalDamage) * player.getElementalSpiritXpBonus()); final int attributeExp = (int) (((getAttributeExp() * damage) / totalDamage) * player.getElementalSpiritXpBonus());
final ElementalSpirit spirit = player.getElementalSpirit(getElementalSpiritType().getSuperior()); final ElementalSpirit spirit = player.getElementalSpirit(getElementalSpiritType().getSuperior());
if (spirit != null) if (spirit != null)
{ {

View File

@ -22,8 +22,8 @@ package org.l2jmobius.gameserver.model.holders;
public class ElementalSpiritDataHolder public class ElementalSpiritDataHolder
{ {
private int _charId; private int _charId;
private int _level = 1;
private byte _type; private byte _type;
private byte _level = 1;
private byte _stage = 1; private byte _stage = 1;
private long _experience; private long _experience;
private byte _attackPoints; private byte _attackPoints;
@ -52,6 +52,16 @@ public class ElementalSpiritDataHolder
_charId = charId; _charId = charId;
} }
public int getLevel()
{
return _level;
}
public void setLevel(int level)
{
_level = level;
}
public byte getType() public byte getType()
{ {
return _type; return _type;
@ -62,16 +72,6 @@ public class ElementalSpiritDataHolder
_type = type; _type = type;
} }
public byte getLevel()
{
return _level;
}
public void setLevel(byte level)
{
_level = level;
}
public byte getStage() public byte getStage()
{ {
return _stage; return _stage;

View File

@ -33,7 +33,7 @@ public class ElementalSpiritTemplateHolder
private final int _maxCharacteristics; private final int _maxCharacteristics;
private final int _extractItem; private final int _extractItem;
private final Map<Byte, SpiritLevel> _levels; private final Map<Integer, SpiritLevel> _levels;
private List<ItemHolder> _itemsToEvolve; private List<ItemHolder> _itemsToEvolve;
private List<ElementalSpiritAbsorbItemHolder> _absorbItems; private List<ElementalSpiritAbsorbItemHolder> _absorbItems;
@ -55,7 +55,7 @@ public class ElementalSpiritTemplateHolder
spiritLevel.criticalRate = criticalRate; spiritLevel.criticalRate = criticalRate;
spiritLevel.criticalDamage = criticalDamage; spiritLevel.criticalDamage = criticalDamage;
spiritLevel.maxExperience = maxExperience; spiritLevel.maxExperience = maxExperience;
_levels.put((byte) level, spiritLevel); _levels.put(level, spiritLevel);
} }
public void addItemToEvolve(Integer itemId, Integer count) public void addItemToEvolve(Integer itemId, Integer count)
@ -82,7 +82,7 @@ public class ElementalSpiritTemplateHolder
return _npcId; return _npcId;
} }
public long getMaxExperienceAtLevel(byte level) public long getMaxExperienceAtLevel(int level)
{ {
final SpiritLevel spiritLevel = _levels.get(level); final SpiritLevel spiritLevel = _levels.get(level);
return spiritLevel == null ? 0 : spiritLevel.maxExperience; return spiritLevel == null ? 0 : spiritLevel.maxExperience;
@ -93,22 +93,22 @@ public class ElementalSpiritTemplateHolder
return _levels.size(); return _levels.size();
} }
public int getAttackAtLevel(byte level) public int getAttackAtLevel(int level)
{ {
return _levels.get(level).attack; return _levels.get(level).attack;
} }
public int getDefenseAtLevel(byte level) public int getDefenseAtLevel(int level)
{ {
return _levels.get(level).defense; return _levels.get(level).defense;
} }
public int getCriticalRateAtLevel(byte level) public int getCriticalRateAtLevel(int level)
{ {
return _levels.get(level).criticalRate; return _levels.get(level).criticalRate;
} }
public int getCriticalDamageAtLevel(byte level) public int getCriticalDamageAtLevel(int level)
{ {
return _levels.get(level).criticalDamage; return _levels.get(level).criticalDamage;
} }

View File

@ -64,21 +64,21 @@ public class ElementalSpirit
_template = ElementalSpiritData.getInstance().getSpirit(data.getType(), data.getStage()); _template = ElementalSpiritData.getInstance().getSpirit(data.getType(), data.getStage());
} }
public void addExperience(long experience) public void addExperience(int experience)
{ {
if ((getLevel() == getMaxLevel()) && ((getExperience() + experience) > getExperienceToNextLevel())) if ((_data.getLevel() == _template.getMaxLevel()) && (_data.getExperience() >= _template.getMaxExperienceAtLevel(_template.getMaxLevel())))
{ {
return; return;
} }
_data.addExperience(experience); _data.addExperience(experience);
_owner.sendPacket(new ExElementalSpiritGetExp(getType(), _data.getExperience())); _owner.sendPacket(new ExElementalSpiritGetExp(_data.getType(), _data.getExperience()));
_owner.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_ACQUIRED_S1_S2_ATTRIBUTE_XP).addInt((int) experience).addElementalSpirit(getType())); _owner.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_ACQUIRED_S1_S2_ATTRIBUTE_XP).addInt(experience).addElementalSpirit(_data.getType()));
if (getExperience() > getExperienceToNextLevel()) if (_data.getExperience() > getExperienceToNextLevel())
{ {
levelUp(); levelUp();
_owner.sendPacket(new SystemMessage(SystemMessageId.S1_ATTRIBUTE_SPIRIT_BECAME_LEVEL_S2).addElementalSpirit(getType()).addByte(_data.getLevel())); _owner.sendPacket(new SystemMessage(SystemMessageId.S1_ATTRIBUTE_SPIRIT_BECAME_LEVEL_S2).addElementalSpirit(_data.getType()).addByte(_data.getLevel()));
_owner.sendPacket(new ElementalSpiritInfo(_owner, _owner.getActiveElementalSpiritType(), (byte) 0)); _owner.sendPacket(new ElementalSpiritInfo(_owner, _owner.getActiveElementalSpiritType(), (byte) 0));
final UserInfo userInfo = new UserInfo(_owner); final UserInfo userInfo = new UserInfo(_owner);
userInfo.addComponentType(UserInfoType.ATT_SPIRITS); userInfo.addComponentType(UserInfoType.ATT_SPIRITS);
@ -90,7 +90,7 @@ public class ElementalSpirit
{ {
do do
{ {
if (_data.getLevel() < getMaxLevel()) if (_data.getLevel() < _template.getMaxLevel())
{ {
_data.increaseLevel(); _data.increaseLevel();
} }
@ -104,8 +104,8 @@ public class ElementalSpirit
public void reduceLevel() public void reduceLevel()
{ {
_data.setLevel((byte) Math.max(1, _data.getLevel() - 1)); _data.setLevel(Math.max(1, _data.getLevel() - 1));
_data.setExperience(ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1))); _data.setExperience(ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()).getMaxExperienceAtLevel(_data.getLevel() - 1));
resetCharacteristics(); resetCharacteristics();
} }
@ -134,27 +134,27 @@ public class ElementalSpirit
int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME); int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
if (getLevel() > 1) if (getLevel() > 1)
{ {
amount += ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)) / ElementalSpiritData.FRAGMENT_XP_CONSUME; amount += ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()).getMaxExperienceAtLevel(getLevel() - 1) / ElementalSpiritData.FRAGMENT_XP_CONSUME;
} }
return amount; return amount;
} }
public void resetStage() public void resetStage()
{ {
_data.setLevel((byte) 1); _data.setLevel(1);
_data.setExperience(0); _data.setExperience(0);
resetCharacteristics(); resetCharacteristics();
} }
public boolean canEvolve() public boolean canEvolve()
{ {
return (getStage() < 5) && (getLevel() == 10) && (getExperience() == getExperienceToNextLevel()); return (_data.getStage() < 5) && (_data.getLevel() == 10) && (_data.getExperience() == getExperienceToNextLevel());
} }
public void upgrade() public void upgrade()
{ {
_data.increaseStage(); _data.increaseStage();
_data.setLevel((byte) 1); _data.setLevel(1);
_data.setExperience(0); _data.setExperience(0);
_template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage()); _template = ElementalSpiritData.getInstance().getSpirit(_data.getType(), _data.getStage());
EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner); EventDispatcher.getInstance().notifyEventAsync(new OnElementalSpiritUpgrade(_owner, this), _owner);
@ -193,7 +193,7 @@ public class ElementalSpirit
return _template.getMaxExperienceAtLevel(_data.getLevel()); return _template.getMaxExperienceAtLevel(_data.getLevel());
} }
public byte getLevel() public int getLevel()
{ {
return _data.getLevel(); return _data.getLevel();
} }

View File

@ -734,7 +734,7 @@ public class Attackable extends Npc
{ {
if ((player.getActiveElementalSpiritType() > 0) && (getAttributeExp() > 0) && (getElementalSpiritType() != ElementalType.NONE)) if ((player.getActiveElementalSpiritType() > 0) && (getAttributeExp() > 0) && (getElementalSpiritType() != ElementalType.NONE))
{ {
final long attributeExp = (long) (((getAttributeExp() * damage) / totalDamage) * player.getElementalSpiritXpBonus()); final int attributeExp = (int) (((getAttributeExp() * damage) / totalDamage) * player.getElementalSpiritXpBonus());
final ElementalSpirit spirit = player.getElementalSpirit(getElementalSpiritType().getSuperior()); final ElementalSpirit spirit = player.getElementalSpirit(getElementalSpiritType().getSuperior());
if (spirit != null) if (spirit != null)
{ {

View File

@ -22,8 +22,8 @@ package org.l2jmobius.gameserver.model.holders;
public class ElementalSpiritDataHolder public class ElementalSpiritDataHolder
{ {
private int _charId; private int _charId;
private int _level = 1;
private byte _type; private byte _type;
private byte _level = 1;
private byte _stage = 1; private byte _stage = 1;
private long _experience; private long _experience;
private byte _attackPoints; private byte _attackPoints;
@ -52,6 +52,16 @@ public class ElementalSpiritDataHolder
_charId = charId; _charId = charId;
} }
public int getLevel()
{
return _level;
}
public void setLevel(int level)
{
_level = level;
}
public byte getType() public byte getType()
{ {
return _type; return _type;
@ -62,16 +72,6 @@ public class ElementalSpiritDataHolder
_type = type; _type = type;
} }
public byte getLevel()
{
return _level;
}
public void setLevel(byte level)
{
_level = level;
}
public byte getStage() public byte getStage()
{ {
return _stage; return _stage;

View File

@ -33,7 +33,7 @@ public class ElementalSpiritTemplateHolder
private final int _maxCharacteristics; private final int _maxCharacteristics;
private final int _extractItem; private final int _extractItem;
private final Map<Byte, SpiritLevel> _levels; private final Map<Integer, SpiritLevel> _levels;
private List<ItemHolder> _itemsToEvolve; private List<ItemHolder> _itemsToEvolve;
private List<ElementalSpiritAbsorbItemHolder> _absorbItems; private List<ElementalSpiritAbsorbItemHolder> _absorbItems;
@ -55,7 +55,7 @@ public class ElementalSpiritTemplateHolder
spiritLevel.criticalRate = criticalRate; spiritLevel.criticalRate = criticalRate;
spiritLevel.criticalDamage = criticalDamage; spiritLevel.criticalDamage = criticalDamage;
spiritLevel.maxExperience = maxExperience; spiritLevel.maxExperience = maxExperience;
_levels.put((byte) level, spiritLevel); _levels.put(level, spiritLevel);
} }
public void addItemToEvolve(Integer itemId, Integer count) public void addItemToEvolve(Integer itemId, Integer count)
@ -82,7 +82,7 @@ public class ElementalSpiritTemplateHolder
return _npcId; return _npcId;
} }
public long getMaxExperienceAtLevel(byte level) public long getMaxExperienceAtLevel(int level)
{ {
final SpiritLevel spiritLevel = _levels.get(level); final SpiritLevel spiritLevel = _levels.get(level);
return spiritLevel == null ? 0 : spiritLevel.maxExperience; return spiritLevel == null ? 0 : spiritLevel.maxExperience;
@ -93,22 +93,22 @@ public class ElementalSpiritTemplateHolder
return _levels.size(); return _levels.size();
} }
public int getAttackAtLevel(byte level) public int getAttackAtLevel(int level)
{ {
return _levels.get(level).attack; return _levels.get(level).attack;
} }
public int getDefenseAtLevel(byte level) public int getDefenseAtLevel(int level)
{ {
return _levels.get(level).defense; return _levels.get(level).defense;
} }
public int getCriticalRateAtLevel(byte level) public int getCriticalRateAtLevel(int level)
{ {
return _levels.get(level).criticalRate; return _levels.get(level).criticalRate;
} }
public int getCriticalDamageAtLevel(byte level) public int getCriticalDamageAtLevel(int level)
{ {
return _levels.get(level).criticalDamage; return _levels.get(level).criticalDamage;
} }