diff --git a/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index 4886fa4c3006f3a14c56210a2c2ede6fb0c9c914..a89853c95e64798587e5d187ba5ad0d40d2edf62 100644 --- a/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -36,9 +36,15 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage; */ public final class PhysicalAttackHpLink extends AbstractEffect { + private final double _power; + private final double _pvpPower; + public PhysicalAttackHpLink(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params) { super(attachCond, applyCond, set, params); + + _power = params.getDouble("power", 0); + _pvpPower = params.getDouble("pvpPower", _power); } @Override @@ -50,7 +56,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect @Override public L2EffectType getEffectType() { - return L2EffectType.PHYSICAL_ATTACK_HP_LINK; + return L2EffectType.PHYSICAL_ATTACK; } @Override @@ -65,6 +71,8 @@ public final class PhysicalAttackHpLink extends AbstractEffect L2Character target = info.getEffected(); L2Character activeChar = info.getEffector(); Skill skill = info.getSkill(); + double power = activeChar.isPlayable() && target.isPlayable() ? _pvpPower : _power; + power *= (-((target.getCurrentHp() * 2) / target.getMaxHp()) + 2); if (activeChar.isAlikeDead()) { @@ -80,13 +88,13 @@ public final class PhysicalAttackHpLink extends AbstractEffect } final byte shld = Formulas.calcShldUse(activeChar, target, skill); - int damage = 0; + double damage = 0; boolean ss = skill.isPhysical() && activeChar.isChargedShot(ShotType.SOULSHOTS); - damage = (int) Formulas.calcPhysDam(activeChar, target, skill, shld, false, ss); + damage = Formulas.calcSkillPhysDam(activeChar, target, shld, false, ss, power); if (damage > 0) { - activeChar.sendDamageMessage(target, damage, false, false, false); + activeChar.sendDamageMessage(target, (int) damage, false, false, false); target.reduceCurrentHp(damage, activeChar, skill); target.notifyDamageReceived(damage, activeChar, skill, false, false, false); diff --git a/dist/game/data/stats/skills/00300-00399.xml b/dist/game/data/stats/skills/00300-00399.xml index c16b6c3d9eecbfa6045720613b6024e2d2882fbd..9a7a7667b10cdf26f6a7ae88f987645cbb51a989 100644 --- a/dist/game/data/stats/skills/00300-00399.xml +++ b/dist/game/data/stats/skills/00300-00399.xml @@ -542,7 +542,6 @@ <set name="mpConsume" val="#mpConsume" /> <set name="operateType" val="A1" /> <set name="overHit" val="true" /> - <set name="power" val="#power" /> <set name="reuseDelay" val="5000" /> <set name="rideState" val="NONE" /> <set name="targetType" val="ONE" /> @@ -563,13 +562,20 @@ <enchant6 name="elementPower" val="#enchElementPower" /> <enchant6 name="magicLvl" val="#enchMagicLvl" /> <enchant7 name="magicLvl" val="#enchMagicLvl" /> - <enchant7 name="pvpPower" val="#enchDuel" /> <cond msgId="113" addName="1"> <using kind="BOW" /> </cond> <for> - <effect name="PhysicalAttackHpLink" /> + <effect name="PhysicalAttackHpLink"> + <param power="#power" /> + </effect> </for> + <enchant7for> + <effect name="PhysicalAttackHpLink"> + <param power="4870" /> + <param pvpPower="#enchDuel" /> + </effect> + </enchant7for> </skill> <skill id="315" levels="16" name="Crush of Doom" enchantGroup1="2" enchantGroup2="2" enchantGroup3="2" enchantGroup4="2" enchantGroup5="2" enchantGroup6="2" enchantGroup7="2"> <table name="#effectPoints"> -425 -431 -438 -444 -449 -455 -460 -466 -471 -475 -480 -484 -488 -492 -496 -499 </table>