From 8a2faf6afca31cda8e4ef01bdc03f154c873e097 Mon Sep 17 00:00:00 2001
From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Tue, 30 Jun 2015 19:12:17 +0000
Subject: [PATCH] -Implemented maxSkillDamage stat. -Done skills Final Ultimate
Defense (10017) & Party Rescue (10024) - maxSkillDamage & enchant groups.
-Small fix on Seed Talisman skill (added missing rEvas stat).
Contributed by NviX.
---
.../effecthandlers/MagicalAttack.java | 7 ++++
.../MagicalAttackByAbnormal.java | 7 ++++
.../effecthandlers/MagicalSoulAttack.java | 7 ++++
.../effecthandlers/PhysicalAttack.java | 8 ++++
.../effecthandlers/PhysicalAttackHpLink.java | 8 ++++
.../effecthandlers/PhysicalSoulAttack.java | 8 ++++
.../game/data/stats/skills/08800-08899.xml | 1 +
.../game/data/stats/skills/10000-10099.xml | 40 ++++++++-----------
.../gameserver/model/stats/Stats.java | 5 ++-
9 files changed, 66 insertions(+), 25 deletions(-)
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 @@
-
+
67 63 59 54 50 46 41 37 33 28
31 32 33 34 35 36 37 38 39 40
@@ -761,6 +761,7 @@
+ 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
@@ -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;