From c1d931342c339061baf22a003ba38d0c5392036d Mon Sep 17 00:00:00 2001
From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Sun, 3 Dec 2017 09:19:10 +0000
Subject: [PATCH] Various item and skill improvements. Contributed by
gamelike85.
---
.../OpCheckAbnormalSkillCondition.java | 18 +-
.../OpCheckAbnormalSkillCondition.java | 18 +-
.../OpCheckAbnormalSkillCondition.java | 18 +-
.../game/data/stats/items/47600-47699.xml | 4 +-
.../game/data/stats/skills/10700-10799.xml | 17 +-
.../dist/game/data/AppearanceStones.xml | 13 +-
.../dist/game/data/EnchantItemData.xml | 28 +
.../game/data/buylists/custom/0000006.xml | 16 +-
.../OpCheckAbnormalSkillCondition.java | 18 +-
.../game/data/stats/items/28500-28599.xml | 169 ++
.../game/data/stats/items/47600-47699.xml | 4 +-
.../game/data/stats/items/48000-48099.xml | 6 +
.../game/data/stats/skills/10500-10599.xml | 6 +-
.../game/data/stats/skills/10600-10699.xml | 10 +-
.../game/data/stats/skills/10700-10799.xml | 17 +-
.../game/data/stats/skills/11000-11099.xml | 19 +-
.../game/data/stats/skills/18700-18799.xml | 17 +-
.../game/data/stats/skills/19400-19499.xml | 2 +-
.../game/data/stats/skills/27800-27899.xml | 1449 ++++++++++++++++-
.../game/data/stats/skills/28000-28099.xml | 24 +-
.../OpCheckAbnormalSkillCondition.java | 18 +-
21 files changed, 1767 insertions(+), 124 deletions(-)
diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
index cdf1e91197..ccc9c26faa 100644
--- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
+++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
@@ -16,6 +16,7 @@
*/
package handlers.skillconditionhandlers;
+import com.l2jmobius.gameserver.enums.SkillConditionAffectType;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
@@ -31,21 +32,32 @@ public class OpCheckAbnormalSkillCondition implements ISkillCondition
private final AbnormalType _type;
private final int _level;
private final boolean _hasAbnormal;
+ private final SkillConditionAffectType _affectType;
public OpCheckAbnormalSkillCondition(StatsSet params)
{
_type = params.getEnum("type", AbnormalType.class);
_level = params.getInt("level");
_hasAbnormal = params.getBoolean("hasAbnormal");
+ _affectType = params.getEnum("affectType", SkillConditionAffectType.class, SkillConditionAffectType.TARGET);
}
@Override
public boolean canUse(L2Character caster, Skill skill, L2Object target)
{
- if (target.isCharacter())
+ switch (_affectType)
{
- final boolean hasAbnormal = ((L2Character) target).getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level));
- return _hasAbnormal ? hasAbnormal : !hasAbnormal;
+ case CASTER:
+ {
+ return caster.getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level)) == _hasAbnormal;
+ }
+ case TARGET:
+ {
+ if (target.isCharacter())
+ {
+ return ((L2Character) target).getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level)) == _hasAbnormal;
+ }
+ }
}
return false;
}
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
index cdf1e91197..ccc9c26faa 100644
--- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
@@ -16,6 +16,7 @@
*/
package handlers.skillconditionhandlers;
+import com.l2jmobius.gameserver.enums.SkillConditionAffectType;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
@@ -31,21 +32,32 @@ public class OpCheckAbnormalSkillCondition implements ISkillCondition
private final AbnormalType _type;
private final int _level;
private final boolean _hasAbnormal;
+ private final SkillConditionAffectType _affectType;
public OpCheckAbnormalSkillCondition(StatsSet params)
{
_type = params.getEnum("type", AbnormalType.class);
_level = params.getInt("level");
_hasAbnormal = params.getBoolean("hasAbnormal");
+ _affectType = params.getEnum("affectType", SkillConditionAffectType.class, SkillConditionAffectType.TARGET);
}
@Override
public boolean canUse(L2Character caster, Skill skill, L2Object target)
{
- if (target.isCharacter())
+ switch (_affectType)
{
- final boolean hasAbnormal = ((L2Character) target).getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level));
- return _hasAbnormal ? hasAbnormal : !hasAbnormal;
+ case CASTER:
+ {
+ return caster.getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level)) == _hasAbnormal;
+ }
+ case TARGET:
+ {
+ if (target.isCharacter())
+ {
+ return ((L2Character) target).getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level)) == _hasAbnormal;
+ }
+ }
}
return false;
}
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
index cdf1e91197..ccc9c26faa 100644
--- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
@@ -16,6 +16,7 @@
*/
package handlers.skillconditionhandlers;
+import com.l2jmobius.gameserver.enums.SkillConditionAffectType;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
@@ -31,21 +32,32 @@ public class OpCheckAbnormalSkillCondition implements ISkillCondition
private final AbnormalType _type;
private final int _level;
private final boolean _hasAbnormal;
+ private final SkillConditionAffectType _affectType;
public OpCheckAbnormalSkillCondition(StatsSet params)
{
_type = params.getEnum("type", AbnormalType.class);
_level = params.getInt("level");
_hasAbnormal = params.getBoolean("hasAbnormal");
+ _affectType = params.getEnum("affectType", SkillConditionAffectType.class, SkillConditionAffectType.TARGET);
}
@Override
public boolean canUse(L2Character caster, Skill skill, L2Object target)
{
- if (target.isCharacter())
+ switch (_affectType)
{
- final boolean hasAbnormal = ((L2Character) target).getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level));
- return _hasAbnormal ? hasAbnormal : !hasAbnormal;
+ case CASTER:
+ {
+ return caster.getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level)) == _hasAbnormal;
+ }
+ case TARGET:
+ {
+ if (target.isCharacter())
+ {
+ return ((L2Character) target).getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level)) == _hasAbnormal;
+ }
+ }
}
return false;
}
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/items/47600-47699.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/items/47600-47699.xml
index 59e5bf6d1f..47bb79b7ad 100644
--- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/items/47600-47699.xml
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/items/47600-47699.xml
@@ -580,7 +580,7 @@
-
+
-
@@ -594,7 +594,7 @@
-
+
-
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/10700-10799.xml b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/10700-10799.xml
index 00311b4d20..74e792caed 100644
--- a/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/10700-10799.xml
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/stats/skills/10700-10799.xml
@@ -1100,24 +1100,9 @@
-722
7000
- 5-12
-
- 0;0;900;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
-
NONE
ENEMY
- SQUARE
- NOT_FRIEND
+ SINGLE
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/AppearanceStones.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/AppearanceStones.xml
index 33d9664f50..4710d0565e 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/AppearanceStones.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/AppearanceStones.xml
@@ -3917,5 +3917,16 @@
hair2
hairall
+
+
+
+ chest
+ fullarmor
+
-
+
+
+ chest
+ fullarmor
+
+
\ No newline at end of file
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/EnchantItemData.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/EnchantItemData.xml
index a95e6e484d..7667d43ed7 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/EnchantItemData.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/EnchantItemData.xml
@@ -29,6 +29,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/buylists/custom/0000006.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/buylists/custom/0000006.xml
index 681e747468..ff4b5088d8 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/buylists/custom/0000006.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/buylists/custom/0000006.xml
@@ -83,10 +83,10 @@
-
+
-
+
@@ -143,11 +143,17 @@
-
+
-
+
-
+
+
+
+
+
+
+
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
index cdf1e91197..ccc9c26faa 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
@@ -16,6 +16,7 @@
*/
package handlers.skillconditionhandlers;
+import com.l2jmobius.gameserver.enums.SkillConditionAffectType;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
@@ -31,21 +32,32 @@ public class OpCheckAbnormalSkillCondition implements ISkillCondition
private final AbnormalType _type;
private final int _level;
private final boolean _hasAbnormal;
+ private final SkillConditionAffectType _affectType;
public OpCheckAbnormalSkillCondition(StatsSet params)
{
_type = params.getEnum("type", AbnormalType.class);
_level = params.getInt("level");
_hasAbnormal = params.getBoolean("hasAbnormal");
+ _affectType = params.getEnum("affectType", SkillConditionAffectType.class, SkillConditionAffectType.TARGET);
}
@Override
public boolean canUse(L2Character caster, Skill skill, L2Object target)
{
- if (target.isCharacter())
+ switch (_affectType)
{
- final boolean hasAbnormal = ((L2Character) target).getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level));
- return _hasAbnormal ? hasAbnormal : !hasAbnormal;
+ case CASTER:
+ {
+ return caster.getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level)) == _hasAbnormal;
+ }
+ case TARGET:
+ {
+ if (target.isCharacter())
+ {
+ return ((L2Character) target).getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level)) == _hasAbnormal;
+ }
+ }
}
return false;
}
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/28500-28599.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/28500-28599.xml
index a9b212e9f5..0da9cd5d01 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/28500-28599.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/28500-28599.xml
@@ -879,6 +879,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
40
50
@@ -896,6 +910,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
40
50
@@ -913,6 +941,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
40
50
@@ -930,6 +972,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
40
50
@@ -945,6 +1001,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
80
50
@@ -960,6 +1039,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
80
50
@@ -975,6 +1077,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
80
50
@@ -990,6 +1115,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
80
50
@@ -1001,6 +1149,13 @@
+
+
+
+
+
+
+
-
@@ -1008,6 +1163,13 @@
+
+
+
+
+
+
+
-
@@ -1015,6 +1177,13 @@
+
+
+
+
+
+
+
-
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/47600-47699.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/47600-47699.xml
index b3ae5c4680..d1338caf3c 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/47600-47699.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/47600-47699.xml
@@ -981,7 +981,7 @@
-
+
-
@@ -995,7 +995,7 @@
-
+
-
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/48000-48099.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/48000-48099.xml
index d696bbd4b6..b6bc491a98 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/48000-48099.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/items/48000-48099.xml
@@ -39,6 +39,9 @@
+
+
+
-
@@ -47,6 +50,9 @@
+
+
+
-
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10500-10599.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10500-10599.xml
index c9d6a06ac1..a112f677e2 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10500-10599.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10500-10599.xml
@@ -3734,7 +3734,7 @@
-
+
1
300
FOCUS_DAGGER
@@ -3762,7 +3762,7 @@
FRONT
- 20
+ 30
PER
SIDE
@@ -3772,7 +3772,7 @@
BACK
- 20
+ 30
PER
SIDE
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10600-10699.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10600-10699.xml
index 27a71520b2..05dfc9bd23 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10600-10699.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10600-10699.xml
@@ -109,7 +109,7 @@
-
+
1
300
FOCUS_DAGGER
@@ -137,7 +137,7 @@
FRONT
- 30
+ 65
PER
SIDE
@@ -147,7 +147,7 @@
BACK
- 30
+ 65
PER
SIDE
@@ -287,7 +287,7 @@
-
+
1
300
FOCUS_DAGGER
@@ -320,7 +320,7 @@
SIDE
- 50
+ 65
PER
BACK
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10700-10799.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10700-10799.xml
index 21836c1ab5..146adb9c7d 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10700-10799.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/10700-10799.xml
@@ -1121,24 +1121,9 @@
-722
7000
- 5-12
-
- 0;0;900;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
- 0;0;700;50
-
NONE
ENEMY
- SQUARE
- NOT_FRIEND
+ SINGLE
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/11000-11099.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/11000-11099.xml
index 9629dcd41d..f57594c06a 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/11000-11099.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/11000-11099.xml
@@ -2278,9 +2278,11 @@
84
88
+ 6-12
+ 200
1100
1100
- 10000
+ 15000
20000
1
@@ -2296,6 +2298,9 @@
15
true
+ ENEMY
+ RANGE
+ NOT_FRIEND
@@ -2308,8 +2313,6 @@
100
- ENEMY
- SINGLE
@@ -4948,7 +4951,7 @@
-
+
1
5
KNOCKDOWN
@@ -5000,10 +5003,10 @@
- 620
- 641
- 655
- 669
+ 635
+ 651
+ 667
+ 683
{base + base / 100 * (1 + 0.4 * (subIndex - 1))}
{base + base / 100 * (2 + 0.8 * (subIndex - 5))}
{base + base / 100 * (3 + 0.3 * (subIndex - 6))}
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/18700-18799.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/18700-18799.xml
index 3880d14851..5c622729ed 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/18700-18799.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/18700-18799.xml
@@ -284,16 +284,19 @@
-
- icon.skill0000
+
+ icon.bm_jewel_ssdmg_high_lv1_lavianrose
A1
+ SELF
-
- icon.skill0000
+
+ icon.bm_jewel_ssdmg_high_lv1_lavianrose
A1
+ SELF
+
P
5
1
@@ -308,11 +311,13 @@
-
- icon.skill0000
+
+ icon.bm_jewel_spsdmg_high_lv1_lavianrose
A1
+ SELF
+
P
5
1
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19400-19499.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19400-19499.xml
index 9959285219..7906412dc0 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19400-19499.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/19400-19499.xml
@@ -151,7 +151,7 @@
-
+
15207
15208
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/27800-27899.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/27800-27899.xml
index 06a90251c6..52f341caca 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/27800-27899.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/27800-27899.xml
@@ -412,44 +412,994 @@
A1
-
icon.skill0000
- A1
+ P
-
icon.skill0000
- A1
+
+ P
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+
+ PER
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+
+ PER
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+
+ PER
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 30
+ 40
+ 50
+
+ PER
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 30
+ 40
+ 50
+
+ PER
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 30
+ 40
+ 50
+
+ PER
+
+
+ 5
+ PER
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2800
+ 3080
+ 3388
+ 3727
+ 4099
+ 4509
+ 4960
+ 5456
+ 6002
+ 6602
+ 7262
+ 7989
+
+ DIFF
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 50
+ ENEMY
+ true
+ false
+ false
+ ALL
+ 27886
+ 1
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 40
+ ENEMY
+ true
+ false
+ false
+ ALL
+ 27886
+ 2
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 30
+ ENEMY
+ true
+ false
+ false
+ ALL
+ 27886
+ 3
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 30
+ ENEMY
+ true
+ false
+ false
+ ALL
+ 27886
+ 4
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 30
+ ENEMY
+ true
+ false
+ false
+ ALL
+ 27887
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 100
+ ENEMY
+ false
+ true
+ false
+ ALL
+ 27894
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 100
+ ENEMY
+ false
+ true
+ false
+ ALL
+ 27888
+ 1
+
+
-
icon.skill0000
- A1
+ P
-
icon.skill0000
- A1
+ P
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+
+ PER
+
+
+ 7
+ PER
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 20
+
+ PER
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 20
+
+ PER
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 15
+
+ PER
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 30
+ SELF
+ true
+ false
+ false
+ ALL
+ 27889
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 30
+ SELF
+ true
+ false
+ false
+ ALL
+ 27883
+ 1
+
+
-
icon.skill0000
- A1
+ P
-
icon.skill0000
- A1
+ P
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+
+ PER
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+
+ PER
+
+
+ 7
+ PER
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 20
+
+ PER
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 20
+
+ PER
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 15
+
+ PER
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 30
+ SELF
+ true
+ false
+ false
+ ALL
+ 27890
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 30
+ SELF
+ false
+ true
+ false
+ ALL
+ 27884
+ 1
+
+
-
icon.skill0000
- A1
+ P
-
+
icon.skill0000
- A1
+ P
+
+
+
+ 10
+ 12
+ 14
+ 16
+ 18
+ 20
+ 22
+ 24
+ 26
+ 28
+ 30
+ 32
+ 34
+ 36
+ 38
+ 40
+ 42
+ 44
+ 46
+ 50
+
+ FIRE
+
+
+
+ 10
+ 12
+ 14
+ 16
+ 18
+ 20
+ 22
+ 24
+ 26
+ 28
+ 30
+ 32
+ 34
+ 36
+ 38
+ 40
+ 42
+ 44
+ 46
+ 50
+
+ WATER
+
+
+
+ 10
+ 12
+ 14
+ 16
+ 18
+ 20
+ 22
+ 24
+ 26
+ 28
+ 30
+ 32
+ 34
+ 36
+ 38
+ 40
+ 42
+ 44
+ 46
+ 50
+
+ EARTH
+
+
+
+ 10
+ 12
+ 14
+ 16
+ 18
+ 20
+ 22
+ 24
+ 26
+ 28
+ 30
+ 32
+ 34
+ 36
+ 38
+ 40
+ 42
+ 44
+ 46
+ 50
+
+ WIND
+
+
+
+ 10
+ 12
+ 14
+ 16
+ 18
+ 20
+ 22
+ 24
+ 26
+ 28
+ 30
+ 32
+ 34
+ 36
+ 38
+ 40
+ 42
+ 44
+ 46
+ 50
+
+ HOLY
+
+
+
+ 10
+ 12
+ 14
+ 16
+ 18
+ 20
+ 22
+ 24
+ 26
+ 28
+ 30
+ 32
+ 34
+ 36
+ 38
+ 40
+ 42
+ 44
+ 46
+ 50
+
+ DARK
+
+
+ 5
+ PER
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2800
+ 3080
+ 3388
+ 3727
+ 4099
+ 4509
+ 4960
+ 5456
+ 6002
+ 6602
+ 7262
+ 7989
+
+ DIFF
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 30
+ SELF
+ false
+ true
+ false
+ ALL
+ 27891
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 30
+ SELF
+ false
+ true
+ false
+ ALL
+ 27892
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 2
+ 2
+ 2
+ 3
+ 3
+ 3
+
+
+
+
+ L2Character
+ 1
+ 110
+ 1
+ 30
+ SELF
+ false
+ true
+ false
+ ALL
+ 27893
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 3
+
+
+
@@ -457,79 +1407,496 @@
A1
-
icon.skill0000
- A1
+ A2
+ 1200
+ 1
+ INVINCIBILITY
+ NONE
+ NONE
+ 5
+ 99
+ 1
+ 10
+ 300
+ INVINCIBILITY
+ 600000
+ true
+ SELF
+ SINGLE
+
+
+ BLOCK_HP
+
+
+ BLOCK_MP
+
+
+
+ -100
+ ALL
+
+
+ 100
+ DIFF
+
+
-
icon.skill0000
A1
+ 1200
+ 1
+ NONE
+ NONE
+ 5
+ 99
+ 300
+ 1200000
+ true
+ SELF
+ SINGLE
+
+
+ 100
+ PER
+
+
+ 100
+ PER
+
+
-
icon.skill0000
A1
+ 1200
+ 1
+ NONE
+ NONE
+ 5
+ 99
+ 300
+ 1200000
+ true
+ SELF
+ SINGLE
+
+
+ 100
+ PER
+
+
+ 100
+ PER
+
+
-
icon.skill0000
- A1
+ A2
+ 800
+ 1
+ NONE
+ NONE
+ 5
+ 99
+ 1
+ 10
+ 300
+ 1200000
+ true
+ SELF
+ SINGLE
+
+
+ 100
+ PER
+
+
-
icon.skill0000
- A1
+ A2
+ 800
+ 1
+ NONE
+ NONE
+ 5
+ 99
+ 1
+ 10
+ 300
+ 1200000
+ true
+ SELF
+ SINGLE
+
+
+ 100
+ PER
+
+
+ 100
+ PER
+
+
-
icon.skill0000
- A1
+ A2
+ 1200
+ 1
+ INVINCIBILITY
+ NONE
+ NONE
+ 5
+ 99
+ 1
+ 20
+ 300
+ INVINCIBILITY
+ 600000
+ true
+ SELF
+ SINGLE
+
+
+ BLOCK_HP
+
+
+ BLOCK_MP
+
+
+
+ -100
+ ALL
+
+
-
icon.skill0000
A1
+
+ 1
+ 2
+ 3
+ 4
+
+ 1
+ 600
+ 1000
+ 500
+ -1000
+ 180000
+ ENEMY
+ SINGLE
+
+
+
+ 6500
+ 9000
+ 11000
+ 15000
+
+
+
-
icon.skill0000
A1
+ 1
+ 1
+ 600
+ 1000
+ 500
+ -1000
+ 60000
+ ENEMY
+ SINGLE
+
+
+
+ -50
+ -53
+ -56
+ -58
+ -60
+ -62
+ -64
+ -66
+ -68
+ -70
+
+ PER
+
+
-
icon.skill0000
- A1
+ A2
+ KNOCKDOWN
+ 1
+ 3
+ KNOCKDOWN
+ 200
+ 20-25
+ 1
+ 400
+ 5000
+ 120000
+ 500
+ -700
+ ENEMY
+ SINGLE
+ NOT_FRIEND
+ 1
+ KNOCKDOWN
+ true
+
+
+ 600
+ 200
+ true
+
+
+ 10279;10517;10025;10776;11770;1904;11264;11093;13314;1912;30516
+
+
-
icon.skill0000
- A1
+ A2
+ 1200
+ 1
+ NONE
+ NONE
+ 5
+ 99
+ 1
+ 120
+ 300
+ 600000
+ true
+ SELF
+ SINGLE
+
+
+
+ 50
+ 55
+ 61
+ 67
+ 73
+ 81
+ 89
+ 97
+ 107
+ 118
+ 130
+ 200
+ 200
+ 200
+
+ PER
+
+
-
icon.skill0000
- A1
+ A2
+ 1200
+ 1
+ NONE
+ NONE
+ 5
+ 99
+ 1
+ 120
+ 300
+ 600000
+ true
+ SELF
+ SINGLE
+
+
+
+ 50
+ 55
+ 61
+ 67
+ 73
+ 81
+ 89
+ 97
+ 107
+ 118
+ 130
+ 200
+ 200
+ 200
+
+ PER
+
+
+
+ 50
+ 55
+ 61
+ 67
+ 73
+ 81
+ 89
+ 97
+ 107
+ 118
+ 130
+ 200
+ 200
+ 200
+
+ PER
+
+
-
icon.skill0000
- A1
+ A2
+ 800
+ 1
+ NONE
+ NONE
+ 5
+ 99
+ 1
+ 7
+ 300
+ 120000
+ true
+ SELF
+ SINGLE
+
+
+
+ 30000
+ 31500
+ 33075
+ 34729
+ 36465
+ 38288
+ 40203
+ 42213
+ 44324
+ 46540
+ 48867
+ 51310
+ 53876
+ 56569
+
+ DIFF
+
+
-
icon.skill0000
- A1
+ A2
+ 800
+ 1
+ NONE
+ NONE
+ 5
+ 99
+ 1
+ 20
+ 300
+ 600000
+ true
+ SELF
+ SINGLE
+
+
+
+ 16000
+ 17000
+ 18000
+
+ DIFF
+
+
+
+ 16000
+ 17000
+ 18000
+
+ DIFF
+
+
-
icon.skill0000
- A1
+ A2
+ 600
+ 1
+ NONE
+ NONE
+ 5
+ 99
+ 1
+ 180
+ 300
+ 1200000
+ 1000
+ true
+ -1
+ SELF
+ PARTY
+ FRIEND
+
+
+
+ 50
+ 55
+ 60
+
+ PER
+
+
+
+ 50
+ 55
+ 60
+
+ PER
+
+
-
icon.skill0000
A1
+ 1
+ 1
+ 600
+ 1000
+ 500
+ -1000
+ 120000
+ SELF
+ SINGLE
+
+
+
+ 50
+ 53
+ 55
+ 58
+ 61
+ 64
+ 67
+ 70
+
+ PER
+
+
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/28000-28099.xml b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/28000-28099.xml
index f04e611d88..b6549196e2 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/28000-28099.xml
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/stats/skills/28000-28099.xml
@@ -106,14 +106,26 @@
A1
-
icon.skill0000
A1
+ NONE;STRIDER;WYVERN;WOLF
+ 5
+ 0
+ 1
+ 2
+ ITEM
+ SINGLE
-
icon.skill0000
A1
+ NONE;STRIDER;WYVERN;WOLF
+ 5
+ 0
+ 1
+ 2
+ ITEM
+ SINGLE
@@ -136,9 +148,15 @@
A1
-
icon.skill0000
A1
+ NONE;STRIDER;WYVERN;WOLF
+ 5
+ 0
+ 1
+ 2
+ ITEM
+ SINGLE
diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
index cdf1e91197..ccc9c26faa 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpCheckAbnormalSkillCondition.java
@@ -16,6 +16,7 @@
*/
package handlers.skillconditionhandlers;
+import com.l2jmobius.gameserver.enums.SkillConditionAffectType;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Character;
@@ -31,21 +32,32 @@ public class OpCheckAbnormalSkillCondition implements ISkillCondition
private final AbnormalType _type;
private final int _level;
private final boolean _hasAbnormal;
+ private final SkillConditionAffectType _affectType;
public OpCheckAbnormalSkillCondition(StatsSet params)
{
_type = params.getEnum("type", AbnormalType.class);
_level = params.getInt("level");
_hasAbnormal = params.getBoolean("hasAbnormal");
+ _affectType = params.getEnum("affectType", SkillConditionAffectType.class, SkillConditionAffectType.TARGET);
}
@Override
public boolean canUse(L2Character caster, Skill skill, L2Object target)
{
- if (target.isCharacter())
+ switch (_affectType)
{
- final boolean hasAbnormal = ((L2Character) target).getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level));
- return _hasAbnormal ? hasAbnormal : !hasAbnormal;
+ case CASTER:
+ {
+ return caster.getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level)) == _hasAbnormal;
+ }
+ case TARGET:
+ {
+ if (target.isCharacter())
+ {
+ return ((L2Character) target).getEffectList().hasAbnormalType(_type, info -> (info.getSkill().getAbnormalLvl() >= _level)) == _hasAbnormal;
+ }
+ }
}
return false;
}