From 05ab4e0ffdf14ff92c0311efeb5f224ba947326a Mon Sep 17 00:00:00 2001 From: Adry85 <adrya85@hotmail.it> Date: Sat, 17 Mar 2018 18:13:22 +0100 Subject: [PATCH] Implemented Aura Undead Enemy target type and fixed all skills related. Reported by: ShinichiYao --- .../data/scripts/handlers/MasterHandler.java | 2 + .../targethandlers/AuraUndeadEnemy.java | 70 +++++++++++++++++++ dist/game/data/stats/skills/00000-00099.xml | 5 +- dist/game/data/stats/skills/00100-00199.xml | 5 +- dist/game/data/stats/skills/01000-01099.xml | 10 +-- 5 files changed, 76 insertions(+), 16 deletions(-) create mode 100644 dist/game/data/scripts/handlers/targethandlers/AuraUndeadEnemy.java diff --git a/dist/game/data/scripts/handlers/MasterHandler.java b/dist/game/data/scripts/handlers/MasterHandler.java index 21f895ffff..ec5cab5203 100644 --- a/dist/game/data/scripts/handlers/MasterHandler.java +++ b/dist/game/data/scripts/handlers/MasterHandler.java @@ -222,6 +222,7 @@ import handlers.targethandlers.AreaSummon; import handlers.targethandlers.Aura; import handlers.targethandlers.AuraCorpseMob; import handlers.targethandlers.AuraFriendly; +import handlers.targethandlers.AuraUndeadEnemy; import handlers.targethandlers.BehindArea; import handlers.targethandlers.BehindAura; import handlers.targethandlers.Clan; @@ -546,6 +547,7 @@ public class MasterHandler Aura.class, AuraCorpseMob.class, AuraFriendly.class, + AuraUndeadEnemy.class, BehindArea.class, BehindAura.class, Clan.class, diff --git a/dist/game/data/scripts/handlers/targethandlers/AuraUndeadEnemy.java b/dist/game/data/scripts/handlers/targethandlers/AuraUndeadEnemy.java new file mode 100644 index 0000000000..8b9be4b809 --- /dev/null +++ b/dist/game/data/scripts/handlers/targethandlers/AuraUndeadEnemy.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2004-2018 L2J DataPack + * + * This file is part of L2J DataPack. + * + * L2J DataPack is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * L2J DataPack is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package handlers.targethandlers; + +import java.util.ArrayList; +import java.util.List; + +import com.l2jserver.gameserver.handler.ITargetTypeHandler; +import com.l2jserver.gameserver.model.L2Object; +import com.l2jserver.gameserver.model.actor.L2Character; +import com.l2jserver.gameserver.model.skills.Skill; +import com.l2jserver.gameserver.model.skills.targets.L2TargetType; + +/** + * Aura Undead Enemy target handler implementation. + * @author Adry_85 + * @since 2.6.0.0 + */ +public class AuraUndeadEnemy implements ITargetTypeHandler +{ + @Override + public L2Object[] getTargetList(Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target) + { + List<L2Character> targetList = new ArrayList<>(); + int maxTargets = skill.getAffectLimit(); + for (L2Character obj : activeChar.getKnownList().getKnownCharactersInRadius(skill.getAffectRange())) + { + if (obj.isAttackable() && obj.isUndead()) + { + if (onlyFirst) + { + return new L2Character[] + { + obj + }; + } + + if ((maxTargets > 0) && (targetList.size() >= maxTargets)) + { + break; + } + + targetList.add(obj); + } + } + return targetList.toArray(new L2Character[targetList.size()]); + } + + @Override + public Enum<L2TargetType> getTargetType() + { + return L2TargetType.AURA_UNDEAD_ENEMY; + } +} diff --git a/dist/game/data/stats/skills/00000-00099.xml b/dist/game/data/stats/skills/00000-00099.xml index 7cd5426df7..92a2587d4b 100644 --- a/dist/game/data/stats/skills/00000-00099.xml +++ b/dist/game/data/stats/skills/00000-00099.xml @@ -2765,16 +2765,13 @@ <set name="operateType" val="A2" /> <set name="reuseDelay" val="2000" /> <set name="rideState" val="NONE" /> - <set name="targetType" val="AREA" /> + <set name="targetType" val="AURA_UNDEAD_ENEMY" /> <enchant1 name="activateRate" val="#ench1ActivateRates" /> <enchant1 name="magicLvl" val="#enchMagicLvl" /> <enchant2 name="magicLvl" val="#enchMagicLvl" /> <enchant2 name="mpConsume2" val="#ench2Cost" /> <enchant3 name="magicLvl" val="#enchMagicLvl" /> <enchant4 name="magicLvl" val="#enchMagicLvl" /> - <cond msgId="144"> - <target race="UNDEAD" /> - </cond> <effects> <effect name="Debuff"> <mul stat="pAtk" val="0.77" /> diff --git a/dist/game/data/stats/skills/00100-00199.xml b/dist/game/data/stats/skills/00100-00199.xml index ab9569a4ae..ff0f1de425 100644 --- a/dist/game/data/stats/skills/00100-00199.xml +++ b/dist/game/data/stats/skills/00100-00199.xml @@ -354,16 +354,13 @@ <set name="operateType" val="A2" /> <set name="reuseDelay" val="5000" /> <set name="rideState" val="NONE" /> - <set name="targetType" val="AREA" /> + <set name="targetType" val="AURA_UNDEAD_ENEMY" /> <set name="trait" val="HOLD" /> <enchant1 name="activateRate" val="#ench1ActivateRates" /> <enchant1 name="magicLvl" val="#enchMagicLvl" /> <enchant2 name="magicLvl" val="#enchMagicLvl" /> <enchant2 name="mpConsume2" val="#ench2MpConsume2" /> <enchant3 name="magicLvl" val="#enchMagicLvl" /> - <cond msgId="144"> - <target race="UNDEAD" /> - </cond> <effects> <effect name="Root" /> <effect name="DefenceTrait"> diff --git a/dist/game/data/stats/skills/01000-01099.xml b/dist/game/data/stats/skills/01000-01099.xml index 1c313e073c..e747e2f384 100644 --- a/dist/game/data/stats/skills/01000-01099.xml +++ b/dist/game/data/stats/skills/01000-01099.xml @@ -800,15 +800,12 @@ <set name="operateType" val="A1" /> <set name="reuseDelay" val="5000" /> <set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" /> - <set name="targetType" val="AURA" /> + <set name="targetType" val="AURA_UNDEAD_ENEMY" /> <set name="trait" val="DERANGEMENT" /> <enchant1 name="magicLvl" val="#enchMagicLvl" /> <enchant2 name="magicLvl" val="#enchMagicLvl" /> <enchant2 name="mpConsume2" val="#ench2MpConsume2" /> <enchant2 name="mpConsume1" val="#ench2MpConsume1" /> - <cond msgId="144"> - <target race="UNDEAD" /> - </cond> <effects> <effect name="DeleteHate"> <param chance="40" /> @@ -1194,11 +1191,8 @@ <set name="operateType" val="A2" /> <set name="reuseDelay" val="5000" /> <set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" /> - <set name="targetType" val="AREA" /> + <set name="targetType" val="AURA_UNDEAD_ENEMY" /> <set name="trait" val="DERANGEMENT" /> - <cond msgId="144"> - <target race="UNDEAD" /> - </cond> <effects> <effect name="Passive" /> </effects> -- GitLab