From 884d6b4730025b3ae45e839cfa60ff39bfee69f7 Mon Sep 17 00:00:00 2001
From: MELERIX <MELERIX@users.noreply.github.com>
Date: Wed, 26 Dec 2012 00:27:01 +0000
Subject: [PATCH] BETA: Unhardcoded & Updated Souls Formula.

---
 .../scripts/handlers/skillhandlers/Blow.java  | 65 ++++++------
 .../scripts/handlers/skillhandlers/Mdam.java  | 28 +-----
 .../scripts/handlers/skillhandlers/Pdam.java  | 98 ++++++++++---------
 3 files changed, 88 insertions(+), 103 deletions(-)

diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Blow.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Blow.java
index 906720391f..821a4119b1 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Blow.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Blow.java
@@ -34,7 +34,7 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 
 /**
- * @author  Steuf
+ * @author Steuf
  */
 public class Blow implements ISkillHandler
 {
@@ -44,22 +44,25 @@ public class Blow implements ISkillHandler
 	{
 		L2SkillType.BLOW
 	};
-
 	
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
 		if (activeChar.isAlikeDead())
+		{
 			return;
+		}
 		
 		boolean ss = skill.useSoulShot() && activeChar.isChargedShot(ShotType.SOULSHOTS);
 		boolean sps = skill.useSpiritShot() && activeChar.isChargedShot(ShotType.SPIRITSHOTS);
 		boolean bss = skill.useSpiritShot() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS);
 		
-		for (L2Character target: (L2Character[]) targets)
+		for (L2Character target : (L2Character[]) targets)
 		{
 			if (target.isAlikeDead())
+			{
 				continue;
+			}
 			
 			// Check firstly if target dodges skill
 			final boolean skillIsEvaded = Formulas.calcPhysicalSkillEvasion(target, skill);
@@ -102,40 +105,30 @@ public class Blow implements ISkillHandler
 				byte shld = Formulas.calcShldUse(activeChar, target, skill);
 				
 				double damage = skill.isStaticDamage() ? skill.getPower() : (int) Formulas.calcBlowDamage(activeChar, target, skill, shld, ss);
-				if (!skill.isStaticDamage() && skill.getMaxSoulConsumeCount() > 0 && activeChar.isPlayer())
+				if (!skill.isStaticDamage() && (skill.getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
 				{
-					switch (activeChar.getActingPlayer().getSouls())
-					{
-						case 0:
-							break;
-						case 1:
-							damage *= 1.10;
-							break;
-						case 2:
-							damage *= 1.12;
-							break;
-						case 3:
-							damage *= 1.15;
-							break;
-						case 4:
-							damage *= 1.18;
-							break;
-						default:
-							damage *= 1.20;
-							break;
-					}
+					// Souls Formula (each soul increase +4%)
+					damage *= ((activeChar.getActingPlayer().getSouls() * 0.04) + 1);
 				}
 				
 				// Crit rate base crit rate for skill, modified with STR bonus
 				if (!skill.isStaticDamage() && Formulas.calcCrit(skill.getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target))
+				{
 					damage *= 2;
+				}
 				
-				if (Config.LOG_GAME_DAMAGE
-						&& activeChar.isPlayable()
-						&& damage > Config.LOG_GAME_DAMAGE_THRESHOLD)
+				if (Config.LOG_GAME_DAMAGE && activeChar.isPlayable() && (damage > Config.LOG_GAME_DAMAGE_THRESHOLD))
 				{
 					LogRecord record = new LogRecord(Level.INFO, "");
-					record.setParameters(new Object[]{activeChar, " did damage ", (int)damage, skill, " to ", target});
+					record.setParameters(new Object[]
+					{
+						activeChar,
+						" did damage ",
+						(int) damage,
+						skill,
+						" to ",
+						target
+					});
 					record.setLoggerName("pdam");
 					_logDamage.log(record);
 				}
@@ -159,7 +152,7 @@ public class Blow implements ISkillHandler
 					}
 					// Formula from Diego Vargas post: http://www.l2guru.com/forum/showthread.php?p=3122630
 					// 1189 x Your PATK / PDEF of target
-					double vegdamage = (1189 * target.getPAtk(activeChar) / activeChar.getPDef(target));
+					double vegdamage = ((1189 * target.getPAtk(activeChar)) / activeChar.getPDef(target));
 					activeChar.reduceCurrentHp(vegdamage, target, skill);
 				}
 				
@@ -169,12 +162,12 @@ public class Blow implements ISkillHandler
 					target.breakAttack();
 					target.breakCast();
 				}
-
-				if(activeChar.isPlayer())
+				
+				if (activeChar.isPlayer())
 				{
 					L2PcInstance activePlayer = activeChar.getActingPlayer();
 					
-					activePlayer.sendDamageMessage(target, (int)damage, false, true, false);
+					activePlayer.sendDamageMessage(target, (int) damage, false, true, false);
 				}
 			}
 			
@@ -195,15 +188,17 @@ public class Blow implements ISkillHandler
 				}
 			}
 			
-			//Possibility of a lethal strike
+			// Possibility of a lethal strike
 			Formulas.calcLethalHit(activeChar, target, skill);
 			
-			//Self Effect
+			// Self Effect
 			if (skill.hasSelfEffects())
 			{
 				final L2Effect effect = activeChar.getFirstEffect(skill.getId());
-				if (effect != null && effect.isSelfEffect())
+				if ((effect != null) && effect.isSelfEffect())
+				{
 					effect.exit();
+				}
 				skill.getEffectsSelf(activeChar);
 			}
 			
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Mdam.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Mdam.java
index 26024965cd..0705a2f702 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Mdam.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Mdam.java
@@ -77,28 +77,10 @@ public class Mdam implements ISkillHandler
 				damage *= (((target.getBuffCount() * 0.3) + 1.3) / 4);
 			}
 			
-			if (!skill.isStaticDamage() && skill.getMaxSoulConsumeCount() > 0 && activeChar.isPlayer())
+			if (!skill.isStaticDamage() && (skill.getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
 			{
-				switch (activeChar.getActingPlayer().getSouls())
-				{
-					case 0:
-						break;
-					case 1:
-						damage *= 1.10;
-						break;
-					case 2:
-						damage *= 1.12;
-						break;
-					case 3:
-						damage *= 1.15;
-						break;
-					case 4:
-						damage *= 1.18;
-						break;
-					default:
-						damage *= 1.20;
-						break;
-				}
+				// Souls Formula (each soul increase +4%)
+				damage *= ((activeChar.getActingPlayer().getSouls() * 0.04) + 1);
 			}
 			
 			// Possibility of a lethal strike
@@ -155,7 +137,7 @@ public class Mdam implements ISkillHandler
 				}
 				
 				// Logging damage
-				if (Config.LOG_GAME_DAMAGE && activeChar.isPlayable() && damage > Config.LOG_GAME_DAMAGE_THRESHOLD)
+				if (Config.LOG_GAME_DAMAGE && activeChar.isPlayable() && (damage > Config.LOG_GAME_DAMAGE_THRESHOLD))
 				{
 					LogRecord record = new LogRecord(Level.INFO, "");
 					record.setParameters(new Object[]
@@ -177,7 +159,7 @@ public class Mdam implements ISkillHandler
 		if (skill.hasSelfEffects())
 		{
 			final L2Effect effect = activeChar.getFirstEffect(skill.getId());
-			if (effect != null && effect.isSelfEffect())
+			if ((effect != null) && effect.isSelfEffect())
 			{
 				// Replace old effect with new one.
 				effect.exit();
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Pdam.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Pdam.java
index 6ef30eacc7..856028dba7 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Pdam.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Pdam.java
@@ -39,16 +39,19 @@ public class Pdam implements ISkillHandler
 	
 	private static final L2SkillType[] SKILL_IDS =
 	{
-		L2SkillType.PDAM, L2SkillType.FATAL
+		L2SkillType.PDAM,
+		L2SkillType.FATAL
 	};
 	
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
 		if (activeChar.isAlikeDead())
+		{
 			return;
+		}
 		
-		if ((skill.getFlyRadius() > 0 || skill.getFlyType() != null) && activeChar.isMovementDisabled())
+		if (((skill.getFlyRadius() > 0) || (skill.getFlyType() != null)) && activeChar.isMovementDisabled())
 		{
 			SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
 			sm.addSkillName(skill);
@@ -60,7 +63,7 @@ public class Pdam implements ISkillHandler
 		
 		boolean ss = skill.useSoulShot() && activeChar.isChargedShot(ShotType.SOULSHOTS);
 		
-		for (L2Character target: (L2Character[]) targets)
+		for (L2Character target : (L2Character[]) targets)
 		{
 			
 			if (activeChar.isPlayer() && target.isPlayer() && target.getActingPlayer().isFakeDeath())
@@ -68,46 +71,36 @@ public class Pdam implements ISkillHandler
 				target.stopFakeDeath(true);
 			}
 			else if (target.isDead())
+			{
 				continue;
+			}
 			
 			final boolean dual = activeChar.isUsingDualWeapon();
 			final byte shld = Formulas.calcShldUse(activeChar, target, skill);
 			// PDAM critical chance not affected by buffs, only by STR. Only some skills are meant to crit.
 			boolean crit = false;
-			if (!skill.isStaticDamage() && skill.getBaseCritRate() > 0)
+			if (!skill.isStaticDamage() && (skill.getBaseCritRate() > 0))
+			{
 				crit = Formulas.calcCrit(skill.getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target);
+			}
 			
-			
-			if (!crit && (skill.getCondition() & L2Skill.COND_CRIT) != 0)
+			if (!crit && ((skill.getCondition() & L2Skill.COND_CRIT) != 0))
+			{
 				damage = 0;
+			}
 			else
-				damage = skill.isStaticDamage() ? (int)skill.getPower() : (int) Formulas.calcPhysDam(activeChar, target, skill, shld, false, dual, ss);
-			if (!skill.isStaticDamage() && skill.getMaxSoulConsumeCount() > 0 && activeChar.isPlayer())
 			{
-				switch (activeChar.getActingPlayer().getSouls())
-				{
-					case 0:
-						break;
-					case 1:
-						damage *= 1.10;
-						break;
-					case 2:
-						damage *= 1.12;
-						break;
-					case 3:
-						damage *= 1.15;
-						break;
-					case 4:
-						damage *= 1.18;
-						break;
-					default:
-						damage *= 1.20;
-						break;
-				}
+				damage = skill.isStaticDamage() ? (int) skill.getPower() : (int) Formulas.calcPhysDam(activeChar, target, skill, shld, false, dual, ss);
+			}
+			if (!skill.isStaticDamage() && (skill.getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
+			{
+				// Souls Formula (each soul increase +4%)
+				damage *= ((activeChar.getActingPlayer().getSouls() * 0.04) + 1);
 			}
 			if (crit)
+			{
 				damage *= 2; // PDAM Critical damage always 2x and not affected by buffs
-			
+			}
 			
 			final boolean skillIsEvaded = Formulas.calcPhysicalSkillEvasion(target, skill);
 			final byte reflect = Formulas.calcSkillReflect(target, skill);
@@ -121,7 +114,7 @@ public class Pdam implements ISkillHandler
 					{
 						activeChar.stopSkillEffects(skill.getId());
 						effects = skill.getEffects(target, activeChar);
-						if (effects != null && effects.length > 0)
+						if ((effects != null) && (effects.length > 0))
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
 							sm.addSkillName(skill);
@@ -133,7 +126,7 @@ public class Pdam implements ISkillHandler
 						// activate attacked effects, if any
 						target.stopSkillEffects(skill.getId());
 						effects = skill.getEffects(activeChar, target, new Env(shld, false, false, false));
-						if (effects != null && effects.length > 0)
+						if ((effects != null) && (effects.length > 0))
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
 							sm.addSkillName(skill);
@@ -141,26 +134,32 @@ public class Pdam implements ISkillHandler
 						}
 					}
 				}
-
+				
 				if (damage > 0)
 				{
 					activeChar.sendDamageMessage(target, damage, false, crit, false);
 					
-					if (Config.LOG_GAME_DAMAGE
-							&& activeChar.isPlayable()
-							&& damage > Config.LOG_GAME_DAMAGE_THRESHOLD)
+					if (Config.LOG_GAME_DAMAGE && activeChar.isPlayable() && (damage > Config.LOG_GAME_DAMAGE_THRESHOLD))
 					{
 						LogRecord record = new LogRecord(Level.INFO, "");
-						record.setParameters(new Object[]{activeChar, " did damage ", damage, skill, " to ", target});
+						record.setParameters(new Object[]
+						{
+							activeChar,
+							" did damage ",
+							damage,
+							skill,
+							" to ",
+							target
+						});
 						record.setLoggerName("pdam");
 						_logDamage.log(record);
 					}
-
+					
 					// Possibility of a lethal strike
 					Formulas.calcLethalHit(activeChar, target, skill);
-
+					
 					target.reduceCurrentHp(damage, activeChar, skill);
-
+					
 					// vengeance reflected damage
 					if ((reflect & Formulas.SKILL_REFLECT_VENGEANCE) != 0)
 					{
@@ -178,12 +177,15 @@ public class Pdam implements ISkillHandler
 						}
 						// Formula from Diego Vargas post: http://www.l2guru.com/forum/showthread.php?p=3122630
 						// 1189 x Your PATK / PDEF of target
-						double vegdamage = (1189 * target.getPAtk(activeChar) / activeChar.getPDef(target));
+						double vegdamage = ((1189 * target.getPAtk(activeChar)) / activeChar.getPDef(target));
 						activeChar.reduceCurrentHp(vegdamage, target, skill);
 					}
 				}
-				else // No damage
+				else
+				{
+					// No damage
 					activeChar.sendPacket(SystemMessageId.ATTACK_FAILED);
+				}
 			}
 			else
 			{
@@ -216,10 +218,14 @@ public class Pdam implements ISkillHandler
 						{
 							int count = 0;
 							
-							if (activeChar.getActingPlayer().getSouls() + skill.getNumSouls() <= soulmastery.getNumSouls())
+							if ((activeChar.getActingPlayer().getSouls() + skill.getNumSouls()) <= soulmastery.getNumSouls())
+							{
 								count = skill.getNumSouls();
+							}
 							else
+							{
 								count = soulmastery.getNumSouls() - activeChar.getActingPlayer().getSouls();
+							}
 							activeChar.getActingPlayer().increaseSouls(count);
 						}
 						else
@@ -232,13 +238,13 @@ public class Pdam implements ISkillHandler
 			}
 		}
 		
-		//self Effect :]
+		// self Effect :]
 		if (skill.hasSelfEffects())
 		{
 			final L2Effect effect = activeChar.getFirstEffect(skill.getId());
-			if (effect != null && effect.isSelfEffect())
+			if ((effect != null) && effect.isSelfEffect())
 			{
-				//Replace old effect with new one.
+				// Replace old effect with new one.
 				effect.exit();
 			}
 			skill.getEffectsSelf(activeChar);
@@ -247,7 +253,9 @@ public class Pdam implements ISkillHandler
 		activeChar.setChargedShot(ShotType.SOULSHOTS, false);
 		
 		if (skill.isSuicideAttack())
+		{
 			activeChar.doDie(activeChar);
+		}
 	}
 	
 	@Override
-- 
GitLab