diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java index e8e27a0dfe5f5824b95418ff2f0a91fd60f1746a..780e0bc8d3e4fdd7176409c6aecc54b3f6369882 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java @@ -179,6 +179,8 @@ public final class EffectMasterHandler TransferDamage.class, TransferHate.class, Transformation.class, + TrapDetect.class, + TrapRemove.class, TriggerSkillByDamage.class, UnsummonAgathion.class, VitalityPointUp.class, diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java index b42ecb7184433a8b59fb9952d165428037f521d8..f4425eab0be5028a6cab7815604357588608823d 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java @@ -209,7 +209,6 @@ import handlers.skillhandlers.Detection; import handlers.skillhandlers.Dummy; import handlers.skillhandlers.NornilsPower; import handlers.skillhandlers.Sow; -import handlers.skillhandlers.Trap; import handlers.skillhandlers.Unlock; import handlers.targethandlers.Area; import handlers.targethandlers.AreaCorpseMob; @@ -498,7 +497,6 @@ public class MasterHandler Dummy.class, NornilsPower.class, Sow.class, - Trap.class, Unlock.class, }, { diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TrapDetect.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TrapDetect.java new file mode 100644 index 0000000000000000000000000000000000000000..1474f8a77c8caeb9f180c4148c6a8c37374193a0 --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TrapDetect.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2004-2014 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.effecthandlers; + +import com.l2jserver.gameserver.model.StatsSet; +import com.l2jserver.gameserver.model.actor.L2Character; +import com.l2jserver.gameserver.model.actor.instance.L2TrapInstance; +import com.l2jserver.gameserver.model.conditions.Condition; +import com.l2jserver.gameserver.model.effects.AbstractEffect; +import com.l2jserver.gameserver.model.skills.BuffInfo; + +/** + * @author UnAfraid + */ +public class TrapDetect extends AbstractEffect +{ + private final int _power; + + public TrapDetect(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params) + { + super(attachCond, applyCond, set, params); + if (params == null) + { + throw new IllegalArgumentException(getClass().getSimpleName() + ": effect without power!"); + } + _power = params.getInt("power"); + } + + @Override + public boolean isInstant() + { + return true; + } + + @Override + public void onStart(BuffInfo info) + { + super.onStart(info); + + final L2Character target = info.getEffected(); + if (!target.isTrap()) + { + return; + } + + if (target.isAlikeDead()) + { + return; + } + + final L2TrapInstance trap = (L2TrapInstance) target; + if (trap.getLevel() <= _power) + { + trap.setDetected(info.getEffector()); + } + } +} diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java new file mode 100644 index 0000000000000000000000000000000000000000..4c48da758c4ccb8acbdeeade8e4a7d4d49ba79cf --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TrapRemove.java @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2004-2014 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.effecthandlers; + +import com.l2jserver.gameserver.enums.QuestEventType; +import com.l2jserver.gameserver.enums.TrapAction; +import com.l2jserver.gameserver.model.StatsSet; +import com.l2jserver.gameserver.model.actor.L2Character; +import com.l2jserver.gameserver.model.actor.instance.L2TrapInstance; +import com.l2jserver.gameserver.model.conditions.Condition; +import com.l2jserver.gameserver.model.effects.AbstractEffect; +import com.l2jserver.gameserver.model.quest.Quest; +import com.l2jserver.gameserver.model.skills.BuffInfo; +import com.l2jserver.gameserver.network.SystemMessageId; + +/** + * @author UnAfraid + */ +public class TrapRemove extends AbstractEffect +{ + private final int _power; + + public TrapRemove(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params) + { + super(attachCond, applyCond, set, params); + if (params == null) + { + throw new IllegalArgumentException(getClass().getSimpleName() + ": effect without power!"); + } + _power = params.getInt("power"); + } + + @Override + public boolean isInstant() + { + return true; + } + + @Override + public void onStart(BuffInfo info) + { + super.onStart(info); + + final L2Character target = info.getEffected(); + if (!target.isTrap()) + { + return; + } + + if (target.isAlikeDead()) + { + return; + } + + final L2TrapInstance trap = (L2TrapInstance) target; + if (!trap.canBeSeen(info.getEffector())) + { + if (info.getEffector().isPlayer()) + { + info.getEffector().sendPacket(SystemMessageId.INCORRECT_TARGET); + } + return; + } + + if (trap.getLevel() > _power) + { + return; + } + + if (trap.getTemplate().getEventQuests(QuestEventType.ON_TRAP_ACTION) != null) + { + for (Quest quest : trap.getTemplate().getEventQuests(QuestEventType.ON_TRAP_ACTION)) + { + quest.notifyTrapAction(trap, info.getEffector(), TrapAction.TRAP_DISARMED); + } + } + + trap.unSummon(); + if (info.getEffector().isPlayer()) + { + info.getEffector().sendPacket(SystemMessageId.A_TRAP_DEVICE_HAS_BEEN_STOPPED); + } + } +} diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Trap.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Trap.java deleted file mode 100644 index 60040a90e1f2b999adc85ccb3448f07dca33e8e8..0000000000000000000000000000000000000000 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Trap.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (C) 2004-2014 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.skillhandlers; - -import com.l2jserver.gameserver.enums.QuestEventType; -import com.l2jserver.gameserver.enums.TrapAction; -import com.l2jserver.gameserver.handler.ISkillHandler; -import com.l2jserver.gameserver.model.L2Object; -import com.l2jserver.gameserver.model.actor.L2Character; -import com.l2jserver.gameserver.model.actor.instance.L2TrapInstance; -import com.l2jserver.gameserver.model.quest.Quest; -import com.l2jserver.gameserver.model.skills.L2Skill; -import com.l2jserver.gameserver.model.skills.L2SkillType; -import com.l2jserver.gameserver.network.SystemMessageId; - -public class Trap implements ISkillHandler -{ - private static final L2SkillType[] SKILL_IDS = - { - L2SkillType.DETECT_TRAP, - L2SkillType.REMOVE_TRAP - }; - - @Override - public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets) - { - if ((activeChar == null) || (skill == null)) - { - return; - } - - switch (skill.getSkillType()) - { - case DETECT_TRAP: - { - for (L2Character target : activeChar.getKnownList().getKnownCharactersInRadius(skill.getAffectRange())) - { - if (!target.isTrap()) - { - continue; - } - - if (target.isAlikeDead()) - { - continue; - } - - final L2TrapInstance trap = (L2TrapInstance) target; - if (trap.getLevel() <= skill.getPower()) - { - trap.setDetected(activeChar); - } - } - break; - } - case REMOVE_TRAP: - { - for (L2Character target : (L2Character[]) targets) - { - if (!target.isTrap()) - { - continue; - } - - if (target.isAlikeDead()) - { - continue; - } - - final L2TrapInstance trap = (L2TrapInstance) target; - if (!trap.canBeSeen(activeChar)) - { - if (activeChar.isPlayer()) - { - activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); - } - continue; - } - - if (trap.getLevel() > skill.getPower()) - { - continue; - } - - if (trap.getTemplate().getEventQuests(QuestEventType.ON_TRAP_ACTION) != null) - { - for (Quest quest : trap.getTemplate().getEventQuests(QuestEventType.ON_TRAP_ACTION)) - { - quest.notifyTrapAction(trap, activeChar, TrapAction.TRAP_DISARMED); - } - } - - trap.unSummon(); - if (activeChar.isPlayer()) - { - activeChar.sendPacket(SystemMessageId.A_TRAP_DEVICE_HAS_BEEN_STOPPED); - } - } - } - } - } - - @Override - public L2SkillType[] getSkillIds() - { - return SKILL_IDS; - } -} diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/00400-00499.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/00400-00499.xml index 3c0dfca5ff0925d97cfd3caa99f8766ba2fc79e3..cadec6b0eadd94a94a65b1e524f252df3a3a2519 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/00400-00499.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/00400-00499.xml @@ -2280,10 +2280,13 @@ <set name="magicLvl" val="#magicLvl" /> <set name="mpConsume" val="#mpConsume" /> <set name="operateType" val="A1" /> - <set name="power" val="#power" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="DETECT_TRAP" /> - <set name="targetType" val="SELF" /> + <set name="targetType" val="AURA" /> + <for> + <effect name="TrapDetect"> + <param power="#power" /> + </effect> + </for> </skill> <skill id="471" levels="7" name="Defuse Trap"> <!-- Confirmed CT2.5 --> @@ -2297,13 +2300,14 @@ <set name="magicLvl" val="#magicLvl" /> <set name="mpConsume" val="#mpConsume" /> <set name="operateType" val="A1" /> - <set name="power" val="#power" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="REMOVE_TRAP" /> <set name="targetType" val="ONE" /> <cond msgId="109"> <target npcType="L2TrapInstance" /> </cond> + <effect name="TrapRemove"> + <param power="#power" /> + </effect> </skill> <skill id="472" levels="45" name="Ancient Sword Mastery" enchantGroup1="1" enchantGroup2="1"> <!-- Confirmed CT2.5 --> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/00600-00699.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/00600-00699.xml index 90bfd93fffb6546b2efe34f741289e27e3ffd536..a49eba7104b83333431715cf42d5f3476ec1dd2b 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/00600-00699.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/00600-00699.xml @@ -373,10 +373,13 @@ <set name="magicLvl" val="74" /> <set name="mpConsume" val="67" /> <set name="operateType" val="A1" /> - <set name="power" val="78" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="DETECT_TRAP" /> <set name="targetType" val="AURA" /> + <for> + <effect name="TrapDetect"> + <param power="78" /> + </effect> + </for> </skill> <skill id="624" levels="1" name="Remove Trap"> <!-- Confirmed CT2.5 --> @@ -387,13 +390,14 @@ <set name="magicLvl" val="74" /> <set name="mpConsume" val="17" /> <set name="operateType" val="A1" /> - <set name="power" val="78" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="REMOVE_TRAP" /> <set name="targetType" val="ONE" /> <cond msgId="109"> <target npcType="L2TrapInstance" /> </cond> + <effect name="TrapRemove"> + <param power="78" /> + </effect> </skill> <skill id="625" levels="1" name="Soul Gathering" enchantGroup1="1" enchantGroup2="1"> <!-- Confirmed CT2.5 -->