HpCpHeal effect should also use additional potion CP stat.

Thanks to petryxa.
This commit is contained in:
MobiusDevelopment
2022-11-17 02:42:52 +00:00
parent 5bdec26cc0
commit bb66fa5fd7
27 changed files with 835 additions and 550 deletions

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_RECOVER_S1_CP);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_RECOVER_S1_CP);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_RECOVER_S1_CP);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_RECOVER_S1_CP);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -58,8 +58,7 @@ public enum CommonSkill
ALCHEMY_CUBE(17943, 1),
ALCHEMY_CUBE_RANDOM_SUCCESS(17966, 1),
PET_SWITCH_STANCE(6054, 1),
WEIGHT_PENALTY(4270, 1),
POTION_MASTERY(45184, 1);
WEIGHT_PENALTY(4270, 1);
private final SkillHolder _holder;

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -35,7 +35,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -123,9 +123,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
// Classic Potion Mastery
// TODO: Create an effect if more mastery skills are added.
@@ -142,10 +147,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -159,28 +161,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -34,7 +34,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -122,9 +122,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
}
// Prevents overheal and negative amount
@@ -137,10 +142,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -154,28 +156,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -35,7 +35,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -123,9 +123,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
// Classic Potion Mastery
// TODO: Create an effect if more mastery skills are added.
@@ -142,10 +147,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -159,28 +161,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -35,7 +35,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -123,9 +123,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
// Classic Potion Mastery
// TODO: Create an effect if more mastery skills are added.
@@ -142,10 +147,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -159,28 +161,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CP_HAS_BEEN_RESTORED);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -35,7 +35,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -123,9 +123,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
// Classic Potion Mastery
// TODO: Create an effect if more mastery skills are added.
@@ -142,10 +147,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -159,28 +161,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_RECOVER_S1_CP);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_RECOVER_S1_CP);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}

View File

@@ -35,7 +35,7 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* HpCpHeal effect implementation.
* @author Sdw
* @author Sdw, Mobius
*/
public class HpCpHeal extends AbstractEffect
{
@@ -123,9 +123,14 @@ public class HpCpHeal extends AbstractEffect
// Additional potion HP.
double additionalHp = 0;
// Additional potion CP.
double additionalCp = 0;
if ((item != null) && (item.isPotion() || item.isElixir()))
{
additionalHp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_HP, 0);
additionalCp = effected.getStat().getValue(Stat.ADDITIONAL_POTION_CP, 0);
// Classic Potion Mastery
// TODO: Create an effect if more mastery skills are added.
@@ -142,10 +147,7 @@ public class HpCpHeal extends AbstractEffect
additionalHp = Math.max(effected.getMaxRecoverableHp() - newHp, 0);
}
effected.setCurrentHp(newHp + additionalHp, false);
}
if (effected.isPlayer())
{
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
@@ -159,28 +161,37 @@ public class HpCpHeal extends AbstractEffect
sm.addInt((int) (healAmount + additionalHp));
effected.sendPacket(sm);
}
}
// CP recovery.
if (effected.isPlayer())
{
amount = Math.max(Math.min(amount - healAmount, effected.getMaxRecoverableCp() - effected.getCurrentCp()), 0);
if (amount != 0)
{
final double newCp = amount + effected.getCurrentCp();
effected.setCurrentCp(newCp, false);
}
if ((newCp + additionalCp) > effected.getMaxRecoverableCp())
{
additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0);
}
effected.setCurrentCp(newCp + additionalCp, false);
if (effector.isPlayer() && (effector != effected))
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) amount);
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_RECOVER_S1_CP);
sm.addInt((int) amount);
effected.sendPacket(sm);
if (effector != effected)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.S2_CP_HAS_BEEN_RESTORED_BY_C1);
sm.addString(effector.getName());
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
else
{
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_RECOVER_S1_CP);
sm.addInt((int) (amount + additionalCp));
effected.sendPacket(sm);
}
}
}
effected.broadcastStatusUpdate(effector);
}
}