From 26601665319c2317fe472c34bec4a6b05d467f44 Mon Sep 17 00:00:00 2001 From: Adry_85 <Adrya85@hotmail.it> Date: Fri, 28 Feb 2014 23:39:13 +0000 Subject: [PATCH] BETA: Adding new effects '''!OpenChest''' and '''!OpenDoor'''. * Removing old skillhandler * Removing old chest AI. Reviewed by: Nos, !UnAfraid, Zoey76 --- L2J_DataPack_BETA/dist/game/data/scripts.cfg | 1 - .../scripts/ai/group_template/Chests.java | 154 ------------- .../scripts/handlers/EffectMasterHandler.java | 2 + .../data/scripts/handlers/MasterHandler.java | 4 - .../handlers/effecthandlers/OpenChest.java | 75 ++++++ .../handlers/effecthandlers/OpenDoor.java | 103 +++++++++ .../handlers/skillhandlers/DeluxeKey.java | 68 ------ .../handlers/skillhandlers/Unlock.java | 216 ------------------ .../game/data/stats/items/06600-06699.xml | 32 --- .../game/data/stats/skills/00000-00099.xml | 8 +- .../game/data/stats/skills/02000-02099.xml | 8 +- .../game/data/stats/skills/02200-02299.xml | 28 ++- .../game/data/stats/skills/02300-02399.xml | 123 +++++++--- .../game/data/stats/skills/02400-02499.xml | 4 +- .../game/data/stats/skills/02600-02699.xml | 21 +- .../game/data/stats/skills/03100-03199.xml | 8 +- .../game/data/stats/skills/09000-09099.xml | 7 +- .../game/data/stats/skills/22200-22299.xml | 6 +- 18 files changed, 333 insertions(+), 535 deletions(-) delete mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Chests.java create mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/OpenChest.java create mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/OpenDoor.java delete mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/DeluxeKey.java delete mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Unlock.java diff --git a/L2J_DataPack_BETA/dist/game/data/scripts.cfg b/L2J_DataPack_BETA/dist/game/data/scripts.cfg index 5294980515..3f1cbdd150 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts.cfg +++ b/L2J_DataPack_BETA/dist/game/data/scripts.cfg @@ -90,7 +90,6 @@ ai/fantasy_isle/HandysBlockCheckerEvent.java ai/group_template/L2AttackableAIScript.java ai/group_template/AltarsOfSacrifice.java ai/group_template/BeastFarm.java -ai/group_template/Chests.java ai/group_template/Chimeras.java ai/group_template/DenOfEvil.java ai/group_template/DragonValley.java diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Chests.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Chests.java deleted file mode 100644 index 12f20822d8..0000000000 --- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Chests.java +++ /dev/null @@ -1,154 +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 ai.group_template; - -import ai.npc.AbstractNpcAI; - -import com.l2jserver.gameserver.ai.CtrlIntention; -import com.l2jserver.gameserver.enums.QuestEventType; -import com.l2jserver.gameserver.model.L2Object; -import com.l2jserver.gameserver.model.actor.L2Character; -import com.l2jserver.gameserver.model.actor.L2Npc; -import com.l2jserver.gameserver.model.actor.instance.L2ChestInstance; -import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; -import com.l2jserver.gameserver.model.skills.L2Skill; -import com.l2jserver.gameserver.util.Util; - -/** - * Chest AI implementation. - * @author Fulminus - */ -public class Chests extends AbstractNpcAI -{ - // NPCs - // @formatter:off - private static final int[] TREASURE_CHESTS = - { - 18265, 18266, 18267, 18268, 18269, 18270, 18271, 18272, 18273, 18274, - 18275, 18276, 18277, 18278, 18279, 18280, 18281, 18282, 18283, 18284, - 18285, 18286, 18287, 18288, 18289, 18290, 18291, 18292, 18293, 18294, - 18295, 18296, 18297, 18298, 21671, 21694, 21717, 21740, 21763, 21786, - 21801, 21802, 21803, 21804, 21805, 21806, 21807, 21808, 21809, 21810, - 21811, 21812, 21813, 21814, 21815, 21816, 21817, 21818, 21819, 21820, - 21821, 21822 - }; - // @formatter:on - private static final int SKILL_DELUXE_KEY = 2229; - // Base chance for BOX to be opened - private static final int BASE_CHANCE = 100; - // Percent to decrease base chance when grade of DELUXE key not match - private static final int LEVEL_DECREASE = 40; - // Chance for a chest to actually be a BOX (as opposed to being a mimic). - private static final int IS_BOX = 40; - - private Chests() - { - super(Chests.class.getSimpleName(), "ai/group_template"); - registerMobs(TREASURE_CHESTS, QuestEventType.ON_ATTACK, QuestEventType.ON_SKILL_SEE); - } - - @Override - public String onSkillSee(L2Npc npc, L2PcInstance caster, L2Skill skill, L2Object[] targets, boolean isSummon) - { - if (npc instanceof L2ChestInstance) - { - // this behavior is only run when the target of skill is the passed npc (chest) - // i.e. when the player is attempting to open the chest using a skill - if (!Util.contains(targets, npc)) - { - return super.onSkillSee(npc, caster, skill, targets, isSummon); - } - L2ChestInstance chest = ((L2ChestInstance) npc); - - // if this has already been interacted, no further ai decisions are needed - // if it's the first interaction, check if this is a box or mimic - if (!chest.isInteracted()) - { - chest.setInteracted(); - if (getRandom(100) < IS_BOX) - { - // if it's a box, either it will be successfully opened by a proper key, or instantly disappear - if (skill.getId() == SKILL_DELUXE_KEY) - { - // check the chance to open the box - int keyLevelNeeded = chest.getLevel() / 10; - keyLevelNeeded -= skill.getLevel(); - if (keyLevelNeeded < 0) - { - keyLevelNeeded *= -1; - } - int chance = BASE_CHANCE - (keyLevelNeeded * LEVEL_DECREASE); - - // success, pretend-death with rewards: chest.reduceCurrentHp(99999999, player) - if (getRandom(100) < chance) - { - chest.setMustRewardExpSp(false); - chest.setSpecialDrop(); - chest.reduceCurrentHp(99999999, caster, null); - return null; - } - } - // used a skill other than chest-key, or used a chest-key but failed to open: disappear with no rewards - chest.deleteMe(); - } - else - { - L2Character originalCaster = isSummon ? caster.getSummon() : caster; - chest.setRunning(); - chest.addDamageHate(originalCaster, 0, 999); - chest.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, originalCaster); - } - } - } - return super.onSkillSee(npc, caster, skill, targets, isSummon); - } - - @Override - public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon) - { - if (npc instanceof L2ChestInstance) - { - L2ChestInstance chest = ((L2ChestInstance) npc); - // if this was a mimic, set the target, start the skills and become agro - if (!chest.isInteracted()) - { - chest.setInteracted(); - if (getRandom(100) < IS_BOX) - { - chest.deleteMe(); - } - else - { - // if this weren't a box, upon interaction start the mimic behaviors... - // TODO: perhaps a self-buff (skill id 4245) with random chance goes here? - L2Character originalAttacker = isSummon ? attacker.getSummon() : attacker; - chest.setRunning(); - chest.addDamageHate(originalAttacker, 0, (damage * 100) / (chest.getLevel() + 7)); - chest.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, originalAttacker); - } - } - } - return super.onAttack(npc, attacker, damage, isSummon); - } - - public static void main(String[] args) - { - new Chests(); - } -} 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 bcb1f6abba..2189c82a39 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java @@ -123,8 +123,10 @@ public final class EffectMasterHandler MpConsumePerLevel.class, Mute.class, NoblesseBless.class, + OpenChest.class, Unsummon.class, OpenCommonRecipeBook.class, + OpenDoor.class, OpenDwarfRecipeBook.class, OutpostCreate.class, OutpostDestroy.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 a94ae1ae63..e926dc0dc2 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java @@ -204,9 +204,7 @@ import handlers.itemhandlers.TeleportBookmark; import handlers.punishmenthandlers.BanHandler; import handlers.punishmenthandlers.ChatBanHandler; import handlers.punishmenthandlers.JailHandler; -import handlers.skillhandlers.DeluxeKey; import handlers.skillhandlers.Dummy; -import handlers.skillhandlers.Unlock; import handlers.targethandlers.Area; import handlers.targethandlers.AreaCorpseMob; import handlers.targethandlers.AreaFriendly; @@ -489,9 +487,7 @@ public class MasterHandler }, { // Skill Handlers - DeluxeKey.class, Dummy.class, - Unlock.class, }, { // User Command Handlers diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/OpenChest.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/OpenChest.java new file mode 100644 index 0000000000..1537e549c3 --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/OpenChest.java @@ -0,0 +1,75 @@ +/* + * 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.ai.CtrlIntention; +import com.l2jserver.gameserver.model.StatsSet; +import com.l2jserver.gameserver.model.actor.instance.L2ChestInstance; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.model.conditions.Condition; +import com.l2jserver.gameserver.model.effects.AbstractEffect; +import com.l2jserver.gameserver.model.skills.BuffInfo; + +/** + * Open Chest effect implementation. + * @author Adry_85 + */ +public final class OpenChest extends AbstractEffect +{ + public OpenChest(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params) + { + super(attachCond, applyCond, set, params); + } + + @Override + public boolean isInstant() + { + return true; + } + + @Override + public void onStart(BuffInfo info) + { + if (!(info.getEffected() instanceof L2ChestInstance)) + { + return; + } + + final L2PcInstance player = info.getEffector().getActingPlayer(); + final L2ChestInstance chest = (L2ChestInstance) info.getEffected(); + if (chest.isDead() || (player.getInstanceId() != chest.getInstanceId())) + { + return; + } + + if (((player.getLevel() <= 77) && (Math.abs(chest.getLevel() - player.getLevel()) <= 6)) || ((player.getLevel() >= 78) && (Math.abs(chest.getLevel() - player.getLevel()) <= 5))) + { + player.broadcastSocialAction(3); + chest.setSpecialDrop(); + chest.setMustRewardExpSp(false); + chest.reduceCurrentHp(chest.getMaxHp(), player, info.getSkill()); + } + else + { + player.broadcastSocialAction(13); + chest.addDamageHate(player, 0, 1); + chest.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player); + } + } +} diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/OpenDoor.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/OpenDoor.java new file mode 100644 index 0000000000..55ba897829 --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/OpenDoor.java @@ -0,0 +1,103 @@ +/* + * 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.instancemanager.InstanceManager; +import com.l2jserver.gameserver.model.StatsSet; +import com.l2jserver.gameserver.model.actor.L2Character; +import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance; +import com.l2jserver.gameserver.model.conditions.Condition; +import com.l2jserver.gameserver.model.effects.AbstractEffect; +import com.l2jserver.gameserver.model.entity.Instance; +import com.l2jserver.gameserver.model.skills.BuffInfo; +import com.l2jserver.gameserver.network.SystemMessageId; +import com.l2jserver.util.Rnd; + +/** + * Open Door effect implementation. + * @author Adry_85 + */ +public final class OpenDoor extends AbstractEffect +{ + private final int _chance; + private final boolean _isItem; + + public OpenDoor(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params) + { + super(attachCond, applyCond, set, params); + _chance = params != null ? params.getInt("chance", 0) : 0; + _isItem = params != null ? params.getBoolean("isItem", false) : false; + } + + @Override + public boolean isInstant() + { + return true; + } + + @Override + public void onStart(BuffInfo info) + { + if (!info.getEffected().isDoor()) + { + return; + } + + final L2Character effector = info.getEffector(); + L2DoorInstance door = (L2DoorInstance) info.getEffected(); + // Check if door in the different instance + if (effector.getInstanceId() != door.getInstanceId()) + { + // Search for the instance + final Instance inst = InstanceManager.getInstance().getInstance(effector.getInstanceId()); + if (inst == null) + { + // Instance not found + return; + } + final L2DoorInstance instanceDoor = inst.getDoor(door.getId()); + if (instanceDoor != null) + { + // Door found + door = instanceDoor; + } + + // Checking instance again + if (effector.getInstanceId() != door.getInstanceId()) + { + return; + } + } + + if ((!door.isOpenableBySkill() && !_isItem) || (door.getFort() != null)) + { + effector.sendPacket(SystemMessageId.UNABLE_TO_UNLOCK_DOOR); + return; + } + + if ((Rnd.get(100) < _chance) && !door.getOpen()) + { + door.openMe(); + } + else + { + effector.sendPacket(SystemMessageId.FAILED_TO_UNLOCK_DOOR); + } + } +} diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/DeluxeKey.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/DeluxeKey.java deleted file mode 100644 index 645c8dfc9b..0000000000 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/DeluxeKey.java +++ /dev/null @@ -1,68 +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 java.util.logging.Logger; - -import com.l2jserver.gameserver.handler.ISkillHandler; -import com.l2jserver.gameserver.model.L2Object; -import com.l2jserver.gameserver.model.actor.L2Character; -import com.l2jserver.gameserver.model.skills.L2Skill; -import com.l2jserver.gameserver.model.skills.L2SkillType; - -/** - * @author Julian - */ -public class DeluxeKey implements ISkillHandler -{ - private static Logger _log = Logger.getLogger(DeluxeKey.class.getName()); - - private static final L2SkillType[] SKILL_IDS = - { - L2SkillType.DELUXE_KEY_UNLOCK - }; - - @Override - public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets) - { - if (!activeChar.isPlayer()) - { - return; - } - - L2Object[] targetList = skill.getTargetList(activeChar); - - if (targetList == null) - { - return; - } - - _log.fine("Delux key casting succeded."); - - // This is just a dummy skill handler for the golden food and crystal food skills, - // since the AI responce onSkillUse handles the rest. - - } - - @Override - public L2SkillType[] getSkillIds() - { - return SKILL_IDS; - } -} diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Unlock.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Unlock.java deleted file mode 100644 index 818443b0ed..0000000000 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Unlock.java +++ /dev/null @@ -1,216 +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.ai.CtrlIntention; -import com.l2jserver.gameserver.handler.ISkillHandler; -import com.l2jserver.gameserver.instancemanager.InstanceManager; -import com.l2jserver.gameserver.model.L2Object; -import com.l2jserver.gameserver.model.actor.L2Character; -import com.l2jserver.gameserver.model.actor.instance.L2ChestInstance; -import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance; -import com.l2jserver.gameserver.model.entity.Instance; -import com.l2jserver.gameserver.model.skills.L2Skill; -import com.l2jserver.gameserver.model.skills.L2SkillType; -import com.l2jserver.gameserver.network.SystemMessageId; -import com.l2jserver.gameserver.network.serverpackets.ActionFailed; -import com.l2jserver.util.Rnd; - -public class Unlock implements ISkillHandler -{ - private static final L2SkillType[] SKILL_IDS = - { - L2SkillType.UNLOCK, - L2SkillType.UNLOCK_SPECIAL - }; - - @Override - public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets) - { - for (L2Object target : targets) - { - if (target.isDoor()) - { - L2DoorInstance door = (L2DoorInstance) target; - // Check if door in the different instance - if (activeChar.getInstanceId() != door.getInstanceId()) - { - // Search for the instance - final Instance inst = InstanceManager.getInstance().getInstance(activeChar.getInstanceId()); - if (inst == null) - { - // Instance not found - activeChar.sendPacket(ActionFailed.STATIC_PACKET); - return; - } - final L2DoorInstance instanceDoor = inst.getDoor(door.getId()); - if (instanceDoor != null) - { - // Door found - door = instanceDoor; - } - - // Checking instance again - if (activeChar.getInstanceId() != door.getInstanceId()) - { - activeChar.sendPacket(ActionFailed.STATIC_PACKET); - return; - } - } - - if ((!door.isOpenableBySkill() && (skill.getSkillType() != L2SkillType.UNLOCK_SPECIAL)) || (door.getFort() != null)) - { - activeChar.sendPacket(SystemMessageId.UNABLE_TO_UNLOCK_DOOR); - activeChar.sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - if (doorUnlock(skill) && !door.getOpen()) - { - door.openMe(); - } - else - { - activeChar.sendPacket(SystemMessageId.FAILED_TO_UNLOCK_DOOR); - } - } - else if (target instanceof L2ChestInstance) - { - L2ChestInstance chest = (L2ChestInstance) target; - if ((chest.getCurrentHp() <= 0) || chest.isInteracted() || (activeChar.getInstanceId() != chest.getInstanceId())) - { - activeChar.sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - chest.setInteracted(); - if (chestUnlock(skill, chest)) - { - activeChar.broadcastSocialAction(3); - chest.setSpecialDrop(); - chest.setMustRewardExpSp(false); - chest.reduceCurrentHp(99999999, activeChar, skill); - } - else - { - activeChar.broadcastSocialAction(13); - chest.addDamageHate(activeChar, 0, 1); - chest.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, activeChar); - if (chestTrap(chest)) - { - chest.chestTrap(activeChar); - } - } - } - } - } - - private static final boolean doorUnlock(L2Skill skill) - { - if (skill.getSkillType() == L2SkillType.UNLOCK_SPECIAL) - { - return Rnd.get(100) < skill.getPower(); - } - - switch (skill.getLevel()) - { - case 0: - return false; - case 1: - return Rnd.get(120) < 30; - case 2: - return Rnd.get(120) < 50; - case 3: - return Rnd.get(120) < 75; - default: - return Rnd.get(120) < 100; - } - } - - private static final boolean chestUnlock(L2Skill skill, L2Character chest) - { - int chance = 0; - if (chest.getLevel() > 60) - { - if (skill.getLevel() < 10) - { - return false; - } - - chance = ((skill.getLevel() - 10) * 5) + 30; - } - else if (chest.getLevel() > 40) - { - if (skill.getLevel() < 6) - { - return false; - } - - chance = ((skill.getLevel() - 6) * 5) + 10; - } - else if (chest.getLevel() > 30) - { - if (skill.getLevel() < 3) - { - return false; - } - if (skill.getLevel() > 12) - { - return true; - } - - chance = ((skill.getLevel() - 3) * 5) + 30; - } - else - { - if (skill.getLevel() > 10) - { - return true; - } - - chance = (skill.getLevel() * 5) + 35; - } - - chance = Math.min(chance, 50); - return Rnd.get(100) < chance; - } - - private static final boolean chestTrap(L2Character chest) - { - if (chest.getLevel() > 60) - { - return Rnd.get(100) < 80; - } - if (chest.getLevel() > 40) - { - return Rnd.get(100) < 50; - } - if (chest.getLevel() > 30) - { - return Rnd.get(100) < 30; - } - return Rnd.get(100) < 10; - } - - @Override - public L2SkillType[] getSkillIds() - { - return SKILL_IDS; - } -} diff --git a/L2J_DataPack_BETA/dist/game/data/stats/items/06600-06699.xml b/L2J_DataPack_BETA/dist/game/data/stats/items/06600-06699.xml index e6eb3cedfb..6400fbb3f5 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/items/06600-06699.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/items/06600-06699.xml @@ -1178,10 +1178,6 @@ <set name="weight" val="10" /> <set name="price" val="130" /> <set name="is_stackable" val="true" /> - <!-- NOTE: cannot be used anymore in H5 --> - <!-- <set name="default_action" val="skill_reduce" /> --> - <!-- <set name="handler" val="ItemSkills" /> --> - <!-- <set name="item_skill" val="2229-1" /> --> </item> <item id="6666" type="EtcItem" name="Deluxe Chest Key - Grade 2"> <set name="icon" val="icon.etc_old_key_i00" /> @@ -1189,10 +1185,6 @@ <set name="weight" val="10" /> <set name="price" val="200" /> <set name="is_stackable" val="true" /> - <!-- NOTE: cannot be used anymore in H5 --> - <!-- <set name="default_action" val="skill_reduce" /> --> - <!-- <set name="handler" val="ItemSkills" /> --> - <!-- <set name="item_skill" val="2229-2" /> --> </item> <item id="6667" type="EtcItem" name="Deluxe Chest Key - Grade 3"> <set name="icon" val="icon.etc_old_key_i00" /> @@ -1200,10 +1192,6 @@ <set name="weight" val="10" /> <set name="price" val="320" /> <set name="is_stackable" val="true" /> - <!-- NOTE: cannot be used anymore in H5 --> - <!-- <set name="default_action" val="skill_reduce" /> --> - <!-- <set name="handler" val="ItemSkills" /> --> - <!-- <set name="item_skill" val="2229-3" /> --> </item> <item id="6668" type="EtcItem" name="Deluxe Chest Key - Grade 4"> <set name="icon" val="icon.etc_old_key_i00" /> @@ -1211,10 +1199,6 @@ <set name="weight" val="10" /> <set name="price" val="560" /> <set name="is_stackable" val="true" /> - <!-- NOTE: cannot be used anymore in H5 --> - <!-- <set name="default_action" val="skill_reduce" /> --> - <!-- <set name="handler" val="ItemSkills" /> --> - <!-- <set name="item_skill" val="2229-4" /> --> </item> <item id="6669" type="EtcItem" name="Deluxe Chest Key - Grade 5"> <set name="icon" val="icon.etc_old_key_i00" /> @@ -1222,10 +1206,6 @@ <set name="weight" val="10" /> <set name="price" val="860" /> <set name="is_stackable" val="true" /> - <!-- NOTE: cannot be used anymore in H5 --> - <!-- <set name="default_action" val="skill_reduce" /> --> - <!-- <set name="handler" val="ItemSkills" /> --> - <!-- <set name="item_skill" val="2229-5" /> --> </item> <item id="6670" type="EtcItem" name="Deluxe Chest Key - Grade 6"> <set name="icon" val="icon.etc_old_key_i00" /> @@ -1233,10 +1213,6 @@ <set name="weight" val="10" /> <set name="price" val="1200" /> <set name="is_stackable" val="true" /> - <!-- NOTE: cannot be used anymore in H5 --> - <!-- <set name="default_action" val="skill_reduce" /> --> - <!-- <set name="handler" val="ItemSkills" /> --> - <!-- <set name="item_skill" val="2229-6" /> --> </item> <item id="6671" type="EtcItem" name="Deluxe Chest Key - Grade 7"> <set name="icon" val="icon.etc_old_key_i00" /> @@ -1244,10 +1220,6 @@ <set name="weight" val="10" /> <set name="price" val="1800" /> <set name="is_stackable" val="true" /> - <!-- NOTE: cannot be used anymore in H5 --> - <!-- <set name="default_action" val="skill_reduce" /> --> - <!-- <set name="handler" val="ItemSkills" /> --> - <!-- <set name="item_skill" val="2229-7" /> --> </item> <item id="6672" type="EtcItem" name="Deluxe Chest Key - Grade 8"> <set name="icon" val="icon.etc_old_key_i00" /> @@ -1255,10 +1227,6 @@ <set name="weight" val="10" /> <set name="price" val="2400" /> <set name="is_stackable" val="true" /> - <!-- NOTE: cannot be used anymore in H5 --> - <!-- <set name="default_action" val="skill_reduce" /> --> - <!-- <set name="handler" val="ItemSkills" /> --> - <!-- <set name="item_skill" val="2229-8" /> --> </item> <item id="6673" type="EtcItem" name="Festival Adena"> <set name="icon" val="icon.etc_coin_of_fair_i00" /> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/00000-00099.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/00000-00099.xml index e6521274a8..e4d4687378 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/00000-00099.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/00000-00099.xml @@ -940,10 +940,14 @@ <set name="magicLvl" val="#magicLvl" /> <set name="mpConsume" val="#mpConsume" /> <set name="operateType" val="A1" /> - <set name="power" val="#chance" /> <set name="reuseDelay" val="30000" /> - <set name="skillType" val="UNLOCK" /> <set name="targetType" val="UNLOCKABLE" /> + <for> + <effect name="OpenDoor"> + <param chance="#chance" /> + </effect> + <effect name="OpenChest" /> + </for> </skill> <skill id="28" levels="49" name="Aggression" enchantGroup1="1" enchantGroup2="1" enchantGroup3="1"> <!-- Confirmed CT2.5 --> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02000-02099.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02000-02099.xml index 83949670eb..53bbba4b41 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02000-02099.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02000-02099.xml @@ -779,8 +779,14 @@ <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="UNLOCK" /> <set name="targetType" val="UNLOCKABLE" /> + <set name="targetType" val="UNLOCKABLE" /> + <cond msgId="109"> + <target npcType="L2ChestInstance" /> + </cond> + <for> + <effect name="OpenChest" /> + </for> </skill> <skill id="2066" levels="1" name="Item - Theme Sound Crystal"> <set name="isMagic" val="2" /> <!-- Static Skill --> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml index 562ec0f831..1dc2132ed2 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml @@ -660,11 +660,13 @@ <set name="magicLvl" val="10" /> <set name="operateType" val="A1" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="DELUXE_KEY_UNLOCK" /> - <set name="targetType" val="ONE" /> + <set name="targetType" val="UNLOCKABLE" /> <cond msgId="109"> <target npcType="L2ChestInstance" /> </cond> + <for> + <effect name="OpenChest" /> + </for> </skill> <skill id="2230" levels="1" name="Item - Theme Sound Crystal"> <set name="isMagic" val="2" /> <!-- Static Skill --> @@ -768,7 +770,6 @@ <set name="operateType" val="A1" /> <set name="power" val="100" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="19160002,19160003,19160004,19160005,19160006,19160007,19160008,19160009" /> @@ -784,13 +785,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="19160010,19160011" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2237" levels="1" name="Key of Darkness"> <!-- Confirmed CT2.5 --> @@ -802,13 +806,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="19160012,19160013" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2238" levels="1" name="Room of Splendor Key"> <!-- Confirmed CT2.5 --> @@ -820,13 +827,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="23150003,23150004" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2239" levels="1" name="Petrification Scroll"> <!-- Confirmed CT2.5 --> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02300-02399.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02300-02399.xml index ac9697b11a..9d4b12dda7 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02300-02399.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02300-02399.xml @@ -425,11 +425,13 @@ <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="ONE" /> <cond msgId="109"> <target npcId="13036" /> </cond> + <for> + <effect name="OpenChest" /> + </for> </skill> <skill id="2323" levels="1" name="Red Sage's Stone"> <!-- Confirmed CT2.5 --> @@ -737,13 +739,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="16200002" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2344" levels="1" name="Gate Key of Records"> <set name="afterEffectId" val="1" /> <!-- Hack to keep doors opened --> @@ -754,13 +759,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="16200005" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2345" levels="1" name="Gate Key of Observation"> <set name="afterEffectId" val="1" /> <!-- Hack to keep doors opened --> @@ -771,13 +779,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="16200009" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2346" levels="1" name="Gate Key of Specula"> <set name="afterEffectId" val="1" /> <!-- Hack to keep doors opened --> @@ -788,13 +799,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="16200003" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2347" levels="1" name="Enuma Elish Key"> <set name="afterEffectId" val="1" /> <!-- Hack to keep doors opened --> @@ -805,13 +819,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="16200007" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2348" levels="1" name="Prahnah Key"> <set name="afterEffectId" val="1" /> <!-- Hack to keep doors opened --> @@ -822,13 +839,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="16200008" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2349" levels="1" name="Gate Key of Arvitaire"> <set name="afterEffectId" val="1" /> <!-- Hack to keep doors opened --> @@ -839,13 +859,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="16200010" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2350" levels="1" name="Leopold Key"> <set name="afterEffectId" val="1" /> <!-- Hack to keep doors opened --> @@ -856,13 +879,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="16200006" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2351" levels="1" name="Gate Key of Prediction"> <set name="afterEffectId" val="1" /> <!-- Hack to keep doors opened --> @@ -873,13 +899,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="16200011" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2352" levels="1" name="Gate Key of Nornil"> <set name="afterEffectId" val="1" /> <!-- Hack to keep doors opened --> @@ -890,13 +919,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="16200012" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2353" levels="1" name="Nornil's Power"> <set name="affectRange" val="600" /> @@ -926,13 +958,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="20260001" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2355" levels="1" name="Gate Key of Destruction"> <!-- Confirmed CT2.5 --> @@ -944,13 +979,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="20260006" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2356" levels="1" name="Gate Key of Blood"> <!-- Confirmed CT2.5 --> @@ -962,13 +1000,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="20260002" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2357" levels="1" name="Fiery Demon Blood"> <!-- Confirmed CT2.5 --> @@ -1047,13 +1088,16 @@ <set name="itemConsumeId" val="10015" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="24220009,24220011,24220012,24220014,24220015,24220016,24220017,24220019" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2363" levels="1" name="Underground Warehouse Key"> <!-- Confirmed CT2.5 --> @@ -1066,13 +1110,16 @@ <set name="itemConsumeId" val="10016" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="24220040" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2364" levels="1" name="Blessed Scroll of Fortress Return"> <set name="hitTime" val="200" /> @@ -1128,13 +1175,16 @@ <set name="itemConsumeId" val="9698" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="24220020" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2367" levels="1" name="Red Coral Key"> <!-- Confirmed CT2.5 --> @@ -1147,13 +1197,16 @@ <set name="itemConsumeId" val="9699" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="24220022" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2368" levels="1" name="Spirit of the Lake"> <!-- Confirmed CT2.5 --> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02400-02499.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02400-02499.xml index 300ec056ea..a4b5bfd0f2 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02400-02499.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02400-02499.xml @@ -13,11 +13,13 @@ <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="18477" /> </cond> + <for> + <effect name="OpenChest" /> + </for> </skill> <skill id="2401" levels="1" name="Lesser Battlefield Mana Potion"> <!-- Confirmed CT2.5 --> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml index 60cb640ae4..e161b8ea6f 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml @@ -73,13 +73,16 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="22110100,22110101,22110102,22110103,22110104,22110105" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2608" levels="3" name="Crystal of Fantasy"> <!-- Lvl 1: Blue Crystal of Fantasy --> @@ -392,13 +395,16 @@ <set name="isMagic" val="2" /> <!-- Static Skill --> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="17240101,17240105,17240109" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2634" levels="1" name="Court Magician's Blessing"> <!-- Confirmed CT2.5 --> @@ -409,13 +415,16 @@ <set name="isMagic" val="2" /> <!-- Static Skill --> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="17240103,17240107" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="2635" levels="1" name="Blessing of Fire"> <set name="abnormalLvl" val="1" /> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/03100-03199.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/03100-03199.xml index a4e975d4e3..ab565a0d00 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/03100-03199.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/03100-03199.xml @@ -1312,10 +1312,14 @@ <set name="magicLvl" val="#magicLvl" /> <set name="mpConsume" val="#mpConsume" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="300000" /> - <set name="skillType" val="UNLOCK" /> <set name="targetType" val="UNLOCKABLE" /> + <for> + <effect name="OpenDoor"> + <param chance="100" /> + </effect> + <effect name="OpenChest" /> + </for> </skill> <skill id="3156" levels="1" name="Item Skill: Firework"> <set name="icon" val="icon.skill3123" /> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/09000-09099.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/09000-09099.xml index 2db674c1f2..7e378478eb 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/09000-09099.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/09000-09099.xml @@ -1217,13 +1217,16 @@ <set name="itemConsumeId" val="15690" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="power" val="100" /> <set name="reuseDelay" val="3000" /> - <set name="skillType" val="UNLOCK_SPECIAL" /> <set name="targetType" val="UNLOCKABLE" /> <cond msgId="113" addName="1"> <target npcId="23150001,23150002" /> </cond> + <for> + <effect name="OpenDoor"> + <param chance="100" isItem="true" /> + </effect> + </for> </skill> <skill id="9077" levels="1" name="Open Packaged Book"> <!-- Confirmed CT2.5 --> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/22200-22299.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/22200-22299.xml index a73a8ceb5e..7a9225553c 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/22200-22299.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/22200-22299.xml @@ -492,11 +492,13 @@ <set name="magicLvl" val="85" /> <set name="operateType" val="A1" /> <set name="reuseDelay" val="8000" /> - <set name="skillType" val="DELUXE_KEY_UNLOCK" /> - <set name="targetType" val="ONE" /> + <set name="targetType" val="UNLOCKABLE" /> <cond msgId="109"> <target npcType="L2ChestInstance" /> </cond> + <for> + <effect name="OpenChest" /> + </for> </skill> <skill id="22272" levels="1" name="Beginner Adventurer's Treasure Sack"> <!-- none --> -- GitLab