Extract elemental spirit adjustments.

Thanks to Mode.
This commit is contained in:
MobiusDevelopment 2021-02-26 03:44:57 +00:00
parent 3847b65fcd
commit c7a4956a2a
10 changed files with 75 additions and 15 deletions

View File

@ -96,6 +96,13 @@ public class ElementalSpirit
while (_data.getExperience() > getExperienceToNextLevel());
}
public void reduceLevel()
{
_data.setLevel((byte) Math.max(1, _data.getLevel() - 1));
_data.setExperience(ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)));
resetCharacteristics();
}
public int getAvailableCharacteristicsPoints()
{
final int stage = _data.getStage();
@ -118,7 +125,12 @@ public class ElementalSpirit
public int getExtractAmount()
{
return Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
if (getLevel() > 1)
{
amount += ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)) / ElementalSpiritData.FRAGMENT_XP_CONSUME;
}
return amount;
}
public void resetStage()

View File

@ -65,7 +65,7 @@ public class ExElementalSpiritExtract implements IClientIncomingPacket
{
final int amount = spirit.getExtractAmount();
client.sendPacket(new SystemMessage(SystemMessageId.EXTRACTED_S1_S2_SUCCESSFULLY).addItemName(spirit.getExtractItem()).addInt(amount));
spirit.resetStage();
spirit.reduceLevel();
player.addItem("Extract", spirit.getExtractItem(), amount, player, true);
final UserInfo userInfo = new UserInfo(player);
@ -78,7 +78,7 @@ public class ExElementalSpiritExtract implements IClientIncomingPacket
private boolean checkConditions(PlayerInstance player, ElementalSpirit spirit)
{
if (spirit.getExtractAmount() < 1)
if ((spirit.getLevel() < 2) || (spirit.getExtractAmount() < 1))
{
player.sendPacket(SystemMessageId.NOT_ENOUGH_ATTRIBUTE_XP_FOR_EXTRACTION);
return false;

View File

@ -96,6 +96,13 @@ public class ElementalSpirit
while (_data.getExperience() > getExperienceToNextLevel());
}
public void reduceLevel()
{
_data.setLevel((byte) Math.max(1, _data.getLevel() - 1));
_data.setExperience(ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)));
resetCharacteristics();
}
public int getAvailableCharacteristicsPoints()
{
final int stage = _data.getStage();
@ -118,7 +125,12 @@ public class ElementalSpirit
public int getExtractAmount()
{
return Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
if (getLevel() > 1)
{
amount += ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)) / ElementalSpiritData.FRAGMENT_XP_CONSUME;
}
return amount;
}
public void resetStage()

View File

@ -65,7 +65,7 @@ public class ExElementalSpiritExtract implements IClientIncomingPacket
{
final int amount = spirit.getExtractAmount();
client.sendPacket(new SystemMessage(SystemMessageId.EXTRACTED_S1_S2_SUCCESSFULLY).addItemName(spirit.getExtractItem()).addInt(amount));
spirit.resetStage();
spirit.reduceLevel();
player.addItem("Extract", spirit.getExtractItem(), amount, player, true);
final UserInfo userInfo = new UserInfo(player);
@ -78,7 +78,7 @@ public class ExElementalSpiritExtract implements IClientIncomingPacket
private boolean checkConditions(PlayerInstance player, ElementalSpirit spirit)
{
if (spirit.getExtractAmount() < 1)
if ((spirit.getLevel() < 2) || (spirit.getExtractAmount() < 1))
{
player.sendPacket(SystemMessageId.NOT_ENOUGH_ATTRIBUTE_XP_FOR_EXTRACTION);
return false;

View File

@ -96,6 +96,13 @@ public class ElementalSpirit
while (_data.getExperience() > getExperienceToNextLevel());
}
public void reduceLevel()
{
_data.setLevel((byte) Math.max(1, _data.getLevel() - 1));
_data.setExperience(ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)));
resetCharacteristics();
}
public int getAvailableCharacteristicsPoints()
{
final int stage = _data.getStage();
@ -118,7 +125,12 @@ public class ElementalSpirit
public int getExtractAmount()
{
return Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
if (getLevel() > 1)
{
amount += ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)) / ElementalSpiritData.FRAGMENT_XP_CONSUME;
}
return amount;
}
public void resetStage()

View File

@ -65,7 +65,7 @@ public class ExElementalSpiritExtract implements IClientIncomingPacket
{
final int amount = spirit.getExtractAmount();
client.sendPacket(new SystemMessage(SystemMessageId.EXTRACTED_S1_S2_SUCCESSFULLY).addItemName(spirit.getExtractItem()).addInt(amount));
spirit.resetStage();
spirit.reduceLevel();
player.addItem("Extract", spirit.getExtractItem(), amount, player, true);
final UserInfo userInfo = new UserInfo(player);
@ -78,7 +78,7 @@ public class ExElementalSpiritExtract implements IClientIncomingPacket
private boolean checkConditions(PlayerInstance player, ElementalSpirit spirit)
{
if (spirit.getExtractAmount() < 1)
if ((spirit.getLevel() < 2) || (spirit.getExtractAmount() < 1))
{
player.sendPacket(SystemMessageId.NOT_ENOUGH_ATTRIBUTE_XP_FOR_EXTRACTION);
return false;

View File

@ -96,6 +96,13 @@ public class ElementalSpirit
while (_data.getExperience() > getExperienceToNextLevel());
}
public void reduceLevel()
{
_data.setLevel((byte) Math.max(1, _data.getLevel() - 1));
_data.setExperience(ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)));
resetCharacteristics();
}
public int getAvailableCharacteristicsPoints()
{
final int stage = _data.getStage();
@ -118,7 +125,12 @@ public class ElementalSpirit
public int getExtractAmount()
{
return Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
if (getLevel() > 1)
{
amount += ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)) / ElementalSpiritData.FRAGMENT_XP_CONSUME;
}
return amount;
}
public void resetStage()

View File

@ -65,7 +65,7 @@ public class ExElementalSpiritExtract implements IClientIncomingPacket
{
final int amount = spirit.getExtractAmount();
client.sendPacket(new SystemMessage(SystemMessageId.EXTRACTED_S1_S2_SUCCESSFULLY).addItemName(spirit.getExtractItem()).addInt(amount));
spirit.resetStage();
spirit.reduceLevel();
player.addItem("Extract", spirit.getExtractItem(), amount, player, true);
final UserInfo userInfo = new UserInfo(player);
@ -78,7 +78,7 @@ public class ExElementalSpiritExtract implements IClientIncomingPacket
private boolean checkConditions(PlayerInstance player, ElementalSpirit spirit)
{
if (spirit.getExtractAmount() < 1)
if ((spirit.getLevel() < 2) || (spirit.getExtractAmount() < 1))
{
player.sendPacket(SystemMessageId.NOT_ENOUGH_ATTRIBUTE_XP_FOR_EXTRACTION);
return false;

View File

@ -96,6 +96,13 @@ public class ElementalSpirit
while (_data.getExperience() > getExperienceToNextLevel());
}
public void reduceLevel()
{
_data.setLevel((byte) Math.max(1, _data.getLevel() - 1));
_data.setExperience(ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)));
resetCharacteristics();
}
public int getAvailableCharacteristicsPoints()
{
final int stage = _data.getStage();
@ -118,7 +125,12 @@ public class ElementalSpirit
public int getExtractAmount()
{
return Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
int amount = Math.round(_data.getExperience() / ElementalSpiritData.FRAGMENT_XP_CONSUME);
if (getLevel() > 1)
{
amount += ElementalSpiritData.getInstance().getSpirit(getType(), getStage()).getMaxExperienceAtLevel((byte) (getLevel() - 1)) / ElementalSpiritData.FRAGMENT_XP_CONSUME;
}
return amount;
}
public void resetStage()

View File

@ -65,7 +65,7 @@ public class ExElementalSpiritExtract implements IClientIncomingPacket
{
final int amount = spirit.getExtractAmount();
client.sendPacket(new SystemMessage(SystemMessageId.EXTRACTED_S1_S2_SUCCESSFULLY).addItemName(spirit.getExtractItem()).addInt(amount));
spirit.resetStage();
spirit.reduceLevel();
player.addItem("Extract", spirit.getExtractItem(), amount, player, true);
final UserInfo userInfo = new UserInfo(player);
@ -78,7 +78,7 @@ public class ExElementalSpiritExtract implements IClientIncomingPacket
private boolean checkConditions(PlayerInstance player, ElementalSpirit spirit)
{
if (spirit.getExtractAmount() < 1)
if ((spirit.getLevel() < 2) || (spirit.getExtractAmount() < 1))
{
player.sendPacket(SystemMessageId.NOT_ENOUGH_ATTRIBUTE_XP_FOR_EXTRACTION);
return false;