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()); 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() public int getAvailableCharacteristicsPoints()
{ {
final int stage = _data.getStage(); final int stage = _data.getStage();
@@ -118,7 +125,12 @@ public class ElementalSpirit
public int getExtractAmount() 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() public void resetStage()

View File

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

View File

@@ -96,6 +96,13 @@ public class ElementalSpirit
while (_data.getExperience() > getExperienceToNextLevel()); 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() public int getAvailableCharacteristicsPoints()
{ {
final int stage = _data.getStage(); final int stage = _data.getStage();
@@ -118,7 +125,12 @@ public class ElementalSpirit
public int getExtractAmount() 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() public void resetStage()

View File

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

View File

@@ -96,6 +96,13 @@ public class ElementalSpirit
while (_data.getExperience() > getExperienceToNextLevel()); 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() public int getAvailableCharacteristicsPoints()
{ {
final int stage = _data.getStage(); final int stage = _data.getStage();
@@ -118,7 +125,12 @@ public class ElementalSpirit
public int getExtractAmount() 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() public void resetStage()

View File

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

View File

@@ -96,6 +96,13 @@ public class ElementalSpirit
while (_data.getExperience() > getExperienceToNextLevel()); 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() public int getAvailableCharacteristicsPoints()
{ {
final int stage = _data.getStage(); final int stage = _data.getStage();
@@ -118,7 +125,12 @@ public class ElementalSpirit
public int getExtractAmount() 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() public void resetStage()

View File

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

View File

@@ -96,6 +96,13 @@ public class ElementalSpirit
while (_data.getExperience() > getExperienceToNextLevel()); 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() public int getAvailableCharacteristicsPoints()
{ {
final int stage = _data.getStage(); final int stage = _data.getStage();
@@ -118,7 +125,12 @@ public class ElementalSpirit
public int getExtractAmount() 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() public void resetStage()

View File

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