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; }