diff --git a/L2J_DataPack_BETA/dist/game/data/scripts.cfg b/L2J_DataPack_BETA/dist/game/data/scripts.cfg
index 5294980515f28a99e0243860b09f4ee35f5cf02b..3f1cbdd150854dc251684f577aaf9fb39d065113 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 12f20822d88d6c0b54474ef3a21f9361d6c2014a..0000000000000000000000000000000000000000
--- 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 bcb1f6abba674cab7b0a102da1c38630fd766d52..2189c82a3984b8df64e4e879f3b8eb4e022559c8 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 a94ae1ae638f929c4909e0170b021d08b141f667..e926dc0dc26c34c564a375abf10ac6fa33d6a9bb 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 0000000000000000000000000000000000000000..1537e549c36ddbdcaacb339294beff70932a0857
--- /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 0000000000000000000000000000000000000000..55ba897829cf591b43ff1256efafa2f48c37fd57
--- /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 645c8dfc9bb204e8e15cf3fe6d8b01991e93503e..0000000000000000000000000000000000000000
--- 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 818443b0ed75106374890ee69bc00317cb10befa..0000000000000000000000000000000000000000
--- 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 e6eb3cedfb696a1ef74f16db3bdbfabacd1a6bc1..6400fbb3f59833a40c3164654065248abdb57119 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 e6521274a826efa398d8cb27ed4528d256c96253..e4d4687378a35232754fe2655b6eb568cf5b76a8 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 83949670eb65cd510c3409d4787eac8c0c45893f..53bbba4b41ab89fe3ca1a4e5e6f094cea1360867 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 562ec0f83118f09d086558da72e785e792917319..1dc2132ed267681cd9a4d87467448fda09335a7f 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 ac9697b11a285a173899bb5e0e167dd0787105ec..9d4b12dda7ac797397fc281a8519bbff55ea87df 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 300ec056ea9d12fc6d37cee58d13d10ec629dc9b..a4b5bfd0f2311731eec9c3c90c3ab3e94e811a85 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 60cb640ae43b13615a5a6e3e904c5e9c3f4255da..e161b8ea6f8fb9e43b139a6c07984c0df28b5fc1 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 a4e975d4e39434fdba7402a1a851c13c9aa43d89..ab565a0d00f25addaa0f96310a98252d61812a15 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 2db674c1f249746a838295021c62eb1b587544ea..7e378478ebb343fbd4cd92dead25161f30f80deb 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 a73a8ceb5ed483ca7f097b29ebc15f2a40e8864e..7a9225553c99dabda8833e0d1a410b6c583c399a 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 -->