diff --git a/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java b/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java index 5a5c90141e..fe298550f1 100644 --- a/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java +++ b/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java @@ -77,6 +77,13 @@ public final class MagicalAttack extends AbstractEffect if (damage > 0) { + // reduce damage if target has maxdamage buff + double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null)); + if (maxDamage > 0) + { + damage = (int) maxDamage; + } + // Manage attack or cast break of the target (calculating rate, sending message...) if (!target.isRaid() && Formulas.calcAtkBreak(target, damage)) { diff --git a/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java b/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java index b40ca3c074..4ac4371d51 100644 --- a/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java +++ b/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java @@ -79,6 +79,13 @@ public final class MagicalAttackByAbnormal extends AbstractEffect if (damage > 0) { + // reduce damage if target has maxdamage buff + double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null)); + if (maxDamage > 0) + { + damage = (int) maxDamage; + } + // Manage attack or cast break of the target (calculating rate, sending message...) if (!target.isRaid() && Formulas.calcAtkBreak(target, damage)) { diff --git a/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java b/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java index a310c05a1d..4bc24441ac 100644 --- a/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java +++ b/trunk/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java @@ -83,6 +83,13 @@ public final class MagicalSoulAttack extends AbstractEffect if (damage > 0) { + // reduce damage if target has maxdamage buff + double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null)); + if (maxDamage > 0) + { + damage = (int) maxDamage; + } + // Manage attack or cast break of the target (calculating rate, sending message...) if (!target.isRaid() && Formulas.calcAtkBreak(target, damage)) { diff --git a/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java index 4e8443e377..b8af7cdaa5 100644 --- a/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java +++ b/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java @@ -27,6 +27,7 @@ import com.l2jserver.gameserver.model.effects.L2EffectType; import com.l2jserver.gameserver.model.skills.BuffInfo; import com.l2jserver.gameserver.model.stats.BaseStats; import com.l2jserver.gameserver.model.stats.Formulas; +import com.l2jserver.gameserver.model.stats.Stats; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; @@ -102,6 +103,13 @@ public final class PhysicalAttack extends AbstractEffect if (damage > 0) { + // reduce damage if target has maxdamage buff + double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null)); + if (maxDamage > 0) + { + damage = (int) maxDamage; + } + activeChar.sendDamageMessage(target, damage, false, crit, false); target.reduceCurrentHp(damage, activeChar, info.getSkill()); target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false); diff --git a/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java index 54dba767ac..405ac5bd4b 100644 --- a/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java +++ b/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java @@ -27,6 +27,7 @@ import com.l2jserver.gameserver.model.effects.L2EffectType; import com.l2jserver.gameserver.model.skills.BuffInfo; import com.l2jserver.gameserver.model.stats.BaseStats; import com.l2jserver.gameserver.model.stats.Formulas; +import com.l2jserver.gameserver.model.stats.Stats; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; @@ -92,6 +93,13 @@ public final class PhysicalAttackHpLink extends AbstractEffect if (damage > 0) { + // reduce damage if target has maxdamage buff + double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null)); + if (maxDamage > 0) + { + damage = (int) maxDamage; + } + activeChar.sendDamageMessage(target, damage, false, crit, false); target.reduceCurrentHp(damage, activeChar, info.getSkill()); target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false); diff --git a/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java index 870b0ac7c5..b66de9a0fe 100644 --- a/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java +++ b/trunk/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java @@ -27,6 +27,7 @@ import com.l2jserver.gameserver.model.effects.L2EffectType; import com.l2jserver.gameserver.model.skills.BuffInfo; import com.l2jserver.gameserver.model.stats.BaseStats; import com.l2jserver.gameserver.model.stats.Formulas; +import com.l2jserver.gameserver.model.stats.Stats; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; @@ -108,6 +109,13 @@ public final class PhysicalSoulAttack extends AbstractEffect if (damage > 0) { + // reduce damage if target has maxdamage buff + double maxDamage = (target.getStat().calcStat(Stats.MAX_SKILL_DAMAGE, 0, null, null)); + if (maxDamage > 0) + { + damage = (int) maxDamage; + } + activeChar.sendDamageMessage(target, damage, false, crit, false); target.reduceCurrentHp(damage, activeChar, info.getSkill()); target.notifyDamageReceived(damage, activeChar, info.getSkill(), crit, false); diff --git a/trunk/dist/game/data/stats/skills/08800-08899.xml b/trunk/dist/game/data/stats/skills/08800-08899.xml index 76afbd6a99..a4f1b6f8d4 100644 --- a/trunk/dist/game/data/stats/skills/08800-08899.xml +++ b/trunk/dist/game/data/stats/skills/08800-08899.xml @@ -498,6 +498,7 @@ + diff --git a/trunk/dist/game/data/stats/skills/10000-10099.xml b/trunk/dist/game/data/stats/skills/10000-10099.xml index 6d40519a89..369511dc37 100644 --- a/trunk/dist/game/data/stats/skills/10000-10099.xml +++ b/trunk/dist/game/data/stats/skills/10000-10099.xml @@ -750,7 +750,7 @@ - + 58 63 68 72
67 63 59 54 50 46 41 37 33 28
31 32 33 34 35 36 37 38 39 40
@@ -761,6 +761,7 @@ 40 60 80 100
85 90 95 99
300 200 150 100
+ 890000 880000 870000 860000 850000 840000 830000 820000 810000 800000
@@ -769,46 +770,37 @@ - + - + - + - - - - - - - - - - + - + - + - +
@@ -1019,7 +1011,7 @@
- + 92 88 84 80 76 72 69 65 61 57
1 2 3 4 5 6 7 8 9 10
@@ -1038,18 +1030,18 @@ - + - + - + - + - + - +
diff --git a/trunk/java/com/l2jserver/gameserver/model/stats/Stats.java b/trunk/java/com/l2jserver/gameserver/model/stats/Stats.java index 359144bfba..c34bb2d573 100644 --- a/trunk/java/com/l2jserver/gameserver/model/stats/Stats.java +++ b/trunk/java/com/l2jserver/gameserver/model/stats/Stats.java @@ -206,7 +206,10 @@ public enum Stats BROOCH_JEWELS("broochJewels"), // Summon Points - MAX_SUMMON_POINTS("summonPoints"); + MAX_SUMMON_POINTS("summonPoints"), + + // Max Skill Damage Receive + MAX_SKILL_DAMAGE("maxSkillDamage"); public static final int NUM_STATS = values().length;