HpCpHeal effect should also use additional potion CP stat.
Thanks to petryxa.
This commit is contained in:
		| @@ -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 (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 ((newCp + additionalCp) > effected.getMaxRecoverableCp()) | ||||
| 				{ | ||||
| 					additionalCp = Math.max(effected.getMaxRecoverableCp() - newCp, 0); | ||||
| 				} | ||||
| 				effected.setCurrentCp(newCp + additionalCp, false); | ||||
| 				 | ||||
| 				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); | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDevelopment
					MobiusDevelopment