소스 검색

BETA: Added new effect !MagicalSoulAttack, !PhysicalSoulAttack and !SoulBlow for kamael skills.

Adry_85 12 년 전
부모
커밋
7fa233b5ef

+ 3 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java

@@ -98,6 +98,7 @@ public final class EffectMasterHandler
 		Lucky.class,
 		MagicalAttack.class,
 		MagicalAttackMp.class,
+		MagicalSoulAttack.class,
 		ManaDamOverTime.class,
 		ManaHeal.class,
 		ManaHealByLevel.class,
@@ -114,6 +115,7 @@ public final class EffectMasterHandler
 		PhysicalAttackHpLink.class,
 		PhysicalAttackMute.class,
 		PhysicalMute.class,
+		PhysicalSoulAttack.class,
 		ProtectionBlessing.class,
 		RandomizeHate.class,
 		Recovery.class,
@@ -130,6 +132,7 @@ public final class EffectMasterHandler
 		SignetNoise.class,
 		SilentMove.class,
 		Sleep.class,
+		SoulBlow.class,
 		Spoil.class,
 		StaticDamage.class,
 		StealAbnormal.class,

+ 0 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java

@@ -68,12 +68,6 @@ public class FatalBlow extends L2Effect
 		boolean ss = getSkill().useSoulShot() && activeChar.isChargedShot(ShotType.SOULSHOTS);
 		byte shld = Formulas.calcShldUse(activeChar, target, getSkill());
 		double damage = (int) Formulas.calcBlowDamage(activeChar, target, getSkill(), shld, ss);
-		if ((getSkill().getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
-		{
-			// Souls Formula (each soul increase +4%)
-			int chargedSouls = (activeChar.getActingPlayer().getChargedSouls() <= getSkill().getMaxSoulConsumeCount()) ? activeChar.getActingPlayer().getChargedSouls() : getSkill().getMaxSoulConsumeCount();
-			damage *= 1 + (chargedSouls * 0.04);
-		}
 		
 		// Crit rate base crit rate for skill, modified with STR bonus
 		if (Formulas.calcCrit(getSkill().getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target))

+ 2 - 16
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java

@@ -63,31 +63,17 @@ public class MagicalAttack extends L2Effect
 			return false;
 		}
 		
-		boolean sps = getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.SPIRITSHOTS);
-		boolean bss = getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS);
-		
 		if (target.isPlayer() && target.getActingPlayer().isFakeDeath())
 		{
 			target.stopFakeDeath(true);
 		}
 		
+		boolean sps = getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.SPIRITSHOTS);
+		boolean bss = getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS);
 		final boolean mcrit = Formulas.calcMCrit(activeChar.getMCriticalHit(target, getSkill()));
 		final byte shld = Formulas.calcShldUse(activeChar, target, getSkill());
 		int damage = (int) Formulas.calcMagicDam(activeChar, target, getSkill(), shld, sps, bss, mcrit);
 		
-		// Curse of Divinity Formula (each buff increase +30%)
-		if (getSkill().getDependOnTargetBuff())
-		{
-			damage *= (((target.getBuffCount() * 0.3) + 1.3) / 4);
-		}
-		
-		if ((getSkill().getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
-		{
-			// Souls Formula (each soul increase +4%)
-			int chargedSouls = (activeChar.getActingPlayer().getChargedSouls() <= getSkill().getMaxSoulConsumeCount()) ? activeChar.getActingPlayer().getChargedSouls() : getSkill().getMaxSoulConsumeCount();
-			damage *= 1 + (chargedSouls * 0.04);
-		}
-		
 		if (damage > 0)
 		{
 			// Manage attack or cast break of the target (calculating rate, sending message...)

+ 111 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java

@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2004-2013 L2J DataPack
+ * 
+ * This file is part of L2J DataPack.
+ * 
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package handlers.effecthandlers;
+
+import com.l2jserver.gameserver.model.ShotType;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.effects.EffectTemplate;
+import com.l2jserver.gameserver.model.effects.L2Effect;
+import com.l2jserver.gameserver.model.effects.L2EffectType;
+import com.l2jserver.gameserver.model.stats.Env;
+import com.l2jserver.gameserver.model.stats.Formulas;
+import com.l2jserver.gameserver.model.stats.Stats;
+import com.l2jserver.util.Rnd;
+
+/**
+ * Magical Soul Attack effect implementation.
+ * @author Adry_85
+ */
+public class MagicalSoulAttack extends L2Effect
+{
+	public MagicalSoulAttack(Env env, EffectTemplate template)
+	{
+		super(env, template);
+	}
+	
+	@Override
+	public boolean calcSuccess()
+	{
+		return true;
+	}
+	
+	@Override
+	public L2EffectType getEffectType()
+	{
+		return L2EffectType.MAGICAL_ATTACK;
+	}
+	
+	@Override
+	public boolean onStart()
+	{
+		L2Character target = getEffected();
+		L2Character activeChar = getEffector();
+		
+		if (activeChar.isAlikeDead())
+		{
+			return false;
+		}
+		
+		if (target.isPlayer() && target.getActingPlayer().isFakeDeath())
+		{
+			target.stopFakeDeath(true);
+		}
+		
+		boolean sps = getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.SPIRITSHOTS);
+		boolean bss = getSkill().useSpiritShot() && activeChar.isChargedShot(ShotType.BLESSED_SPIRITSHOTS);
+		final boolean mcrit = Formulas.calcMCrit(activeChar.getMCriticalHit(target, getSkill()));
+		final byte shld = Formulas.calcShldUse(activeChar, target, getSkill());
+		int damage = (int) Formulas.calcMagicDam(activeChar, target, getSkill(), shld, sps, bss, mcrit);
+		
+		// Curse of Divinity Formula (each buff increase +30%)
+		if (getSkill().getDependOnTargetBuff())
+		{
+			damage *= (((target.getBuffCount() * 0.3) + 1.3) / 4);
+		}
+		
+		if ((getSkill().getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
+		{
+			// Souls Formula (each soul increase +4%)
+			int chargedSouls = (activeChar.getActingPlayer().getChargedSouls() <= getSkill().getMaxSoulConsumeCount()) ? activeChar.getActingPlayer().getChargedSouls() : getSkill().getMaxSoulConsumeCount();
+			damage *= 1 + (chargedSouls * 0.04);
+		}
+		
+		if (damage > 0)
+		{
+			// Manage attack or cast break of the target (calculating rate, sending message...)
+			if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
+			{
+				target.breakAttack();
+				target.breakCast();
+			}
+			
+			// Shield Deflect Magic: Reflect all damage on caster.
+			if (target.getStat().calcStat(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0, target, getSkill()) > Rnd.get(100))
+			{
+				activeChar.reduceCurrentHp(damage, target, getSkill());
+			}
+			else
+			{
+				target.reduceCurrentHp(damage, activeChar, getSkill());
+				activeChar.sendDamageMessage(target, damage, mcrit, false, false);
+			}
+		}
+		return true;
+	}
+}

+ 0 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java

@@ -88,12 +88,6 @@ public class PhysicalAttack extends L2Effect
 		
 		damage = (int) Formulas.calcPhysDam(activeChar, target, getSkill(), shld, false, ss);
 		
-		if ((getSkill().getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
-		{
-			// Souls Formula (each soul increase +4%)
-			int chargedSouls = (activeChar.getActingPlayer().getChargedSouls() <= getSkill().getMaxSoulConsumeCount()) ? activeChar.getActingPlayer().getChargedSouls() : getSkill().getMaxSoulConsumeCount();
-			damage *= 1 + (chargedSouls * 0.04);
-		}
 		if (crit)
 		{
 			damage *= 2;

+ 120 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java

@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2004-2013 L2J DataPack
+ * 
+ * This file is part of L2J DataPack.
+ * 
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package handlers.effecthandlers;
+
+import com.l2jserver.gameserver.model.ShotType;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.effects.EffectTemplate;
+import com.l2jserver.gameserver.model.effects.L2Effect;
+import com.l2jserver.gameserver.model.effects.L2EffectType;
+import com.l2jserver.gameserver.model.stats.BaseStats;
+import com.l2jserver.gameserver.model.stats.Env;
+import com.l2jserver.gameserver.model.stats.Formulas;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
+
+/**
+ * Physical Soul Attack effect implementation.
+ * @author Adry_85
+ */
+public class PhysicalSoulAttack extends L2Effect
+{
+	public PhysicalSoulAttack(Env env, EffectTemplate template)
+	{
+		super(env, template);
+	}
+	
+	@Override
+	public boolean calcSuccess()
+	{
+		return !Formulas.calcPhysicalSkillEvasion(getEffector(), getEffected(), getSkill());
+	}
+	
+	@Override
+	public L2EffectType getEffectType()
+	{
+		return L2EffectType.PHYSICAL_ATTACK;
+	}
+	
+	@Override
+	public boolean onStart()
+	{
+		L2Character target = getEffected();
+		L2Character activeChar = getEffector();
+		
+		if (activeChar.isAlikeDead())
+		{
+			return false;
+		}
+		
+		if (((getSkill().getFlyRadius() > 0) || (getSkill().getFlyType() != null)) && activeChar.isMovementDisabled())
+		{
+			final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
+			sm.addSkillName(getSkill());
+			activeChar.sendPacket(sm);
+			return false;
+		}
+		
+		if (target.isPlayer() && target.getActingPlayer().isFakeDeath())
+		{
+			target.stopFakeDeath(true);
+		}
+		
+		int damage = 0;
+		boolean ss = getSkill().isPhysical() && activeChar.isChargedShot(ShotType.SOULSHOTS);
+		final byte shld = Formulas.calcShldUse(activeChar, target, getSkill());
+		// Physical damage critical rate is only affected by STR.
+		boolean crit = false;
+		if (getSkill().getBaseCritRate() > 0)
+		{
+			crit = Formulas.calcCrit(getSkill().getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target);
+		}
+		
+		damage = (int) Formulas.calcPhysDam(activeChar, target, getSkill(), shld, false, ss);
+		
+		if ((getSkill().getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
+		{
+			// Souls Formula (each soul increase +4%)
+			int chargedSouls = (activeChar.getActingPlayer().getChargedSouls() <= getSkill().getMaxSoulConsumeCount()) ? activeChar.getActingPlayer().getChargedSouls() : getSkill().getMaxSoulConsumeCount();
+			damage *= 1 + (chargedSouls * 0.04);
+		}
+		if (crit)
+		{
+			damage *= 2;
+		}
+		
+		if (damage > 0)
+		{
+			activeChar.sendDamageMessage(target, damage, false, crit, false);
+			target.reduceCurrentHp(damage, activeChar, getSkill());
+			// Check if damage should be reflected
+			Formulas.calcDamageReflected(activeChar, target, getSkill(), crit);
+		}
+		else
+		{
+			activeChar.sendPacket(SystemMessageId.ATTACK_FAILED);
+		}
+		
+		if (getSkill().isSuicideAttack())
+		{
+			activeChar.doDie(activeChar);
+		}
+		return true;
+	}
+}

+ 103 - 0
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java

@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2004-2013 L2J DataPack
+ * 
+ * This file is part of L2J DataPack.
+ * 
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package handlers.effecthandlers;
+
+import com.l2jserver.gameserver.model.ShotType;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.effects.EffectTemplate;
+import com.l2jserver.gameserver.model.effects.L2Effect;
+import com.l2jserver.gameserver.model.effects.L2EffectType;
+import com.l2jserver.gameserver.model.stats.BaseStats;
+import com.l2jserver.gameserver.model.stats.Env;
+import com.l2jserver.gameserver.model.stats.Formulas;
+
+/**
+ * Soul Blow effect implementation.
+ * @author Adry_85
+ */
+public class SoulBlow extends L2Effect
+{
+	public SoulBlow(Env env, EffectTemplate template)
+	{
+		super(env, template);
+	}
+	
+	/**
+	 * If is not evaded and blow lands.
+	 */
+	@Override
+	public boolean calcSuccess()
+	{
+		return !Formulas.calcPhysicalSkillEvasion(getEffector(), getEffected(), getSkill()) && Formulas.calcBlowSuccess(getEffector(), getEffected(), getSkill());
+	}
+	
+	@Override
+	public L2EffectType getEffectType()
+	{
+		return L2EffectType.FATAL_BLOW;
+	}
+	
+	@Override
+	public boolean onStart()
+	{
+		L2Character target = getEffected();
+		L2Character activeChar = getEffector();
+		
+		if (activeChar.isAlikeDead())
+		{
+			return false;
+		}
+		
+		boolean ss = getSkill().useSoulShot() && activeChar.isChargedShot(ShotType.SOULSHOTS);
+		byte shld = Formulas.calcShldUse(activeChar, target, getSkill());
+		double damage = (int) Formulas.calcBlowDamage(activeChar, target, getSkill(), shld, ss);
+		if ((getSkill().getMaxSoulConsumeCount() > 0) && activeChar.isPlayer())
+		{
+			// Souls Formula (each soul increase +4%)
+			int chargedSouls = (activeChar.getActingPlayer().getChargedSouls() <= getSkill().getMaxSoulConsumeCount()) ? activeChar.getActingPlayer().getChargedSouls() : getSkill().getMaxSoulConsumeCount();
+			damage *= 1 + (chargedSouls * 0.04);
+		}
+		
+		// Crit rate base crit rate for skill, modified with STR bonus
+		if (Formulas.calcCrit(getSkill().getBaseCritRate() * 10 * BaseStats.STR.calcBonus(activeChar), true, target))
+		{
+			damage *= 2;
+		}
+		
+		target.reduceCurrentHp(damage, activeChar, getSkill());
+		
+		// Check if damage should be reflected
+		Formulas.calcDamageReflected(activeChar, target, getSkill(), true);
+		
+		// Manage attack or cast break of the target (calculating rate, sending message...)
+		if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
+		{
+			target.breakAttack();
+			target.breakCast();
+		}
+		
+		if (activeChar.isPlayer())
+		{
+			L2PcInstance activePlayer = activeChar.getActingPlayer();
+			activePlayer.sendDamageMessage(target, (int) damage, false, true, false);
+		}
+		return true;
+	}
+}

+ 14 - 14
L2J_DataPack_BETA/dist/game/data/stats/skills/00400-00499.xml

@@ -2350,7 +2350,7 @@
 			<using kind="Sword,Big Sword,Blunt,Big Blunt,Ancient" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="477" levels="37" name="Dark Smash" enchantGroup1="2" enchantGroup2="2" enchantGroup3="2" enchantGroup4="2">
@@ -2391,7 +2391,7 @@
 			<using kind="Ancient" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="478" levels="15" name="Double Thrust">
@@ -2418,7 +2418,7 @@
 			<using kind="Rapier" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="479" levels="1" name="Hard March">
@@ -2625,7 +2625,7 @@
 			<using kind="Crossbow" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="489" levels="1" name="Shift Target">
@@ -2733,7 +2733,7 @@
 		<enchant2 name="mpConsume" val="#ench2MpConsume" />
 		<enchant2 name="power" val="#ench2Power" />
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="493" levels="28" name="Storm Assault" enchantGroup1="2" enchantGroup2="2" enchantGroup3="2" enchantGroup4="2" enchantGroup5="2" enchantGroup6="2" enchantGroup7="2">
@@ -2792,7 +2792,7 @@
 			</and>
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="494" levels="37" name="Shoulder Charge" enchantGroup1="2" enchantGroup2="2" enchantGroup3="2" enchantGroup4="2" enchantGroup5="2" enchantGroup6="2" enchantGroup7="2">
@@ -2853,12 +2853,12 @@
 			</and>
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="Stun" val="0" effectPower="70" />
 			<effect name="EnemyCharge" noicon="1" val="0" />
 		</for>
 		<enchant2for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="Stun" val="0" effectPower="#ench2Chance" />
 			<effect name="EnemyCharge" noicon="1" val="0" />
 		</enchant2for>
@@ -2915,15 +2915,15 @@
 			</and>
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="DamOverTime" ticks="3" val="#dot" abnormalVisualEffect="bleed" effectPower="50" />
 		</for>
 		<enchant1for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="DamOverTime" ticks="3" val="#ench1Power" abnormalVisualEffect="bleed" effectPower="50" />
 		</enchant1for>
 		<enchant2for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="DamOverTime" ticks="3" val="134" abnormalVisualEffect="bleed" effectPower="#ench2Chance" />
 		</enchant2for>
 	</skill>
@@ -2975,7 +2975,7 @@
 			<using kind="Ancient" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="497" levels="16" name="Crushing Pain" enchantGroup1="2" enchantGroup2="2" enchantGroup3="2" enchantGroup4="2" enchantGroup5="2" enchantGroup6="2" enchantGroup7="2">
@@ -3028,7 +3028,7 @@
 			<using kind="Ancient" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="498" levels="12" name="Contagion" enchantGroup1="2" enchantGroup2="2" enchantGroup3="2">
@@ -3070,7 +3070,7 @@
 			</and>
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="499" levels="3" name="Courage">

+ 10 - 10
L2J_DataPack_BETA/dist/game/data/stats/skills/00500-00599.xml

@@ -185,7 +185,7 @@
 			<using kind="Rapier" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="505" levels="28" name="Shining Edge" enchantGroup1="2" enchantGroup2="2" enchantGroup3="2" enchantGroup4="2" enchantGroup5="2" enchantGroup6="2" enchantGroup7="2">
@@ -239,7 +239,7 @@
 			<using kind="Rapier" />
 		</cond>
 		<for>
-			<effect name="FatalBlow" noicon="1" val="0" />
+			<effect name="SoulBlow" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="506" levels="4" name="Checkmate" enchantGroup1="2" enchantGroup2="2" enchantGroup3="2" enchantGroup4="2">
@@ -286,7 +286,7 @@
 			</and>
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="507" levels="37" name="Twin Shot" enchantGroup1="2" enchantGroup2="2" enchantGroup3="2" enchantGroup4="2" enchantGroup5="2" enchantGroup6="2" enchantGroup7="2">
@@ -336,7 +336,7 @@
 			<using kind="Crossbow" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="508" levels="31" name="Rising Shot" enchantGroup1="2" enchantGroup2="2" enchantGroup3="2" enchantGroup4="2" enchantGroup5="2" enchantGroup6="2" enchantGroup7="2">
@@ -387,7 +387,7 @@
 			<using kind="Crossbow" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="509" levels="34" name="Bleeding Shot" enchantGroup1="2" enchantGroup2="2" enchantGroup3="2">
@@ -433,11 +433,11 @@
 			<using kind="Crossbow" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="DamOverTime" ticks="3" val="#dot" abnormalVisualEffect="bleed" effectPower="50" />
 		</for>
 		<enchant3for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="DamOverTime" ticks="3" val="67" abnormalVisualEffect="bleed" effectPower="#ench3Power" />
 		</enchant3for>
 	</skill>
@@ -1055,7 +1055,7 @@
 		<enchant4 name="magicLvl" val="#enchMagicLvl" />
 		<enchant4 name="pvpPower" val="#ench4Duel" />
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="527" levels="1" name="Iron Shield">
@@ -1350,7 +1350,7 @@
 		<set name="SSBoost" val="2.0" />
 		<set name="targetType" val="ONE" />
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="540" levels="1" name="Wing Assault">
@@ -1375,7 +1375,7 @@
 			<target mindistance="200" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="541" levels="1" name="Transform Grail Apostle">

+ 3 - 3
L2J_DataPack_BETA/dist/game/data/stats/skills/00600-00699.xml

@@ -435,15 +435,15 @@
 			<using kind="Crossbow" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="Fear" val="0" effectPower="40" />
 		</for>
 		<enchant3for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="Fear" val="0" effectPower="40" />
 		</enchant3for>
 		<enchant4for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="Fear" val="0" effectPower="#ench4Chance" />
 		</enchant4for>
 	</skill>

+ 4 - 4
L2J_DataPack_BETA/dist/game/data/stats/skills/00700-00799.xml

@@ -2123,7 +2123,7 @@
 			<using kind="Crossbow" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="791" levels="1" name="Lightning Shock">
@@ -2150,7 +2150,7 @@
 		<set name="targetType" val="AURA" />
 		<set name="trait" val="PARALYZE" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 			<effect name="ChanceSkillTrigger" val="0" triggeredId="6092" chanceType="ON_EXIT" effectPower="50">
 				<mul order="0x30" stat="pAtkSpd" val="0.5" />
 				<mul order="0x30" stat="runSpd" val="0.5" />
@@ -2240,11 +2240,11 @@
 			</and>
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="Stun" val="0" effectPower="60" />
 		</for>
 		<enchant3for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="Stun" val="0" effectPower="#ench3Chance" />
 		</enchant3for>
 	</skill>

+ 1 - 1
L2J_DataPack_BETA/dist/game/data/stats/skills/00800-00899.xml

@@ -1338,7 +1338,7 @@
 		<set name="soulMaxConsumeCount" val="5" />
 		<set name="targetType" val="FRONT_AREA" />
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="877" levels="8" name="Kamael Captain Mercenary Disarm">

+ 3 - 3
L2J_DataPack_BETA/dist/game/data/stats/skills/00900-00999.xml

@@ -1052,7 +1052,7 @@
 		<set name="SSBoost" val="2.0" />
 		<set name="targetType" val="ONE" />
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="951" levels="7" name="Wing Assault">
@@ -1080,7 +1080,7 @@
 			<target mindistance="200" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="952" levels="5" name="Collector's Experience">
@@ -1657,7 +1657,7 @@
 			<target mindistance="200" />
 		</cond>
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="Stun" val="0" effectPower="80" />
 			<effect name="EnemyCharge" noicon="1" val="0" />
 		</for>

+ 12 - 12
L2J_DataPack_BETA/dist/game/data/stats/skills/01400-01499.xml

@@ -952,7 +952,7 @@
 		<set name="soulMaxConsumeCount" val="5" />
 		<set name="targetType" val="ONE" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="1432" levels="2" name="Increase Power">
@@ -1004,7 +1004,7 @@
 		<set name="soulMaxConsumeCount" val="5" />
 		<set name="targetType" val="ONE" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="1434" levels="4" name="Dark Explosion">
@@ -1031,7 +1031,7 @@
 		<set name="soulMaxConsumeCount" val="5" />
 		<set name="targetType" val="AREA" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="1435" levels="10" name="Death Mark" enchantGroup1="2" enchantGroup2="2">
@@ -1119,7 +1119,7 @@
 		<enchant4 name="magicLvl" val="#enchMagicLvl" />
 		<enchant4 name="pvpPower" val="#ench4Duel" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 			<effect name="RemoveTarget" noicon="1" val="0" effectPower="30" />
 		</for>
 	</skill>
@@ -1173,18 +1173,19 @@
 		<enchant4 name="magicLvl" val="#enchMagicLvl" />
 		<enchant5 name="magicLvl" val="#enchMagicLvl" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 			<effect name="Debuff" val="0" effectPower="40" >
 				<mul order="0x30" stat="runSpd" val="0.7" />
 			</effect>
 		</for>
 		<enchant3for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 			<effect name="Debuff" val="0" effectPower="#ench3Power" >
 				<mul order="0x30" stat="runSpd" val="0.7" />
 			</effect>
 		</enchant3for>
 		<enchant5for>
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 			<effect name="Debuff" val="0" effectPower="40" >
 				<sub order="0x40" stat="darkRes" val="#ench5DarkhVuln" />
 				<mul order="0x30" stat="runSpd" val="0.7" />
@@ -1232,7 +1233,7 @@
 		<enchant4 name="magicLvl" val="#enchMagicLvl" />
 		<enchant4 name="pvpPower" val="#ench4Duel" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="1439" levels="5" name="Curse of Divinity">
@@ -1647,7 +1648,7 @@
 		<enchant2 name="flyRadius" val="#ench2Radius" />
 		<enchant2 name="magicLvl" val="#enchMagicLvl" />
 		<for>
-			<effect name="PhysicalAttack" noicon="1" val="0" />
+			<effect name="PhysicalSoulAttack" noicon="1" val="0" />
 			<effect name="Stun" val="0" effectPower="99" />
 			<effect self="1" name="Warp" noicon="1" val="0" />
 		</for>
@@ -1681,7 +1682,6 @@
 		<table name="#ench3Wind"> 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 </table>
 		<table name="#ench4Duel"> 203 207 211 214 218 222 226 229 233 237 241 244 248 252 256 </table>
 		<table name="#enchMagicLvl"> 81 81 81 82 82 82 83 83 83 84 84 84 85 85 85 </table>
-		<!-- set name="affectLimit" = "5;12" / -->
 		<set name="affectLimit" val="5-12" />
 		<set name="affectRange" val="200" />
 		<set name="castRange" val="500" />
@@ -1709,7 +1709,7 @@
 		<enchant4 name="magicLvl" val="#enchMagicLvl" />
 		<enchant4 name="pvpPower" val="#ench4Duel" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="1451" levels="1" name="Fire Vortex Buster" enchantGroup1="6" enchantGroup2="6" enchantGroup3="6">
@@ -2303,7 +2303,7 @@
 		<enchant4 name="magicLvl" val="#enchMagicLvl" />
 		<enchant4 name="pvpPower" val="#ench4Duel" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="1470" levels="1" name="Prahnah" enchantGroup1="5" enchantGroup2="5" enchantGroup3="5" enchantGroup4="5">
@@ -2374,7 +2374,7 @@
 		<set name="reuseDelay" val="4000" />
 		<set name="targetType" val="FRONT_AREA" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="1472" levels="1" name="Soul Sucking">

+ 5 - 5
L2J_DataPack_BETA/dist/game/data/stats/skills/01500-01599.xml

@@ -370,7 +370,7 @@
 		<enchant4 name="magicLvl" val="#enchMagicLvl" />
 		<enchant4 name="pvpPower" val="#ench4Duel" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 			<effect name="ManaDamOverTime" ticks="3" val="12" effectPower="80" >
 				<mul order="0x30" stat="runSpd" val="0.8" />
 				<mul order="0x30" stat="pAtkSpd" val="0.7" />
@@ -378,7 +378,7 @@
 			</effect>
 		</for>
 		<enchant3for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 			<effect name="ManaDamOverTime" ticks="3" val="12" effectPower="#ench3effectPower" >
 				<mul order="0x30" stat="runSpd" val="0.8" />
 				<mul order="0x30" stat="pAtkSpd" val="0.7" />
@@ -418,7 +418,7 @@
 			<target active_effect_id="1512" />
 		</cond>
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 			<effect name="DispelBySlot" noicon="1" val="0" />
 		</for>
 	</skill>
@@ -530,7 +530,7 @@
 		<enchant2 name="magicLvl" val="#enchMagicLvl" />
 		<enchant2 name="pvpPower" val="#ench2Duel" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="1517" levels="1" name="Chant of Combat">
@@ -1275,7 +1275,7 @@
 		<set name="reuseDelay" val="4000" />
 		<set name="targetType" val="FRONT_AREA" />
 		<for>
-			<effect name="MagicalAttack" noicon="1" val="0" />
+			<effect name="MagicalSoulAttack" noicon="1" val="0" />
 		</for>
 	</skill>
 	<skill id="1545" levels="1" name="Soul Sucking">