From 807947d6a53ee35eae61df7914d9db62600c2719 Mon Sep 17 00:00:00 2001
From: Zealar <Zealar@users.noreply.github.com>
Date: Mon, 27 Oct 2014 19:54:17 +0000
Subject: [PATCH] BETA: Data Pack for [L6667]

---
 .../scripts/handlers/EffectMasterHandler.java |   4 +-
 .../effecthandlers/ChanceSkillTrigger.java    |  60 -------
 .../effecthandlers/TriggerSkillByAttack.java  | 156 ++++++++++++++++++
 .../effecthandlers/TriggerSkillByAvoid.java   | 111 +++++++++++++
 .../effecthandlers/TriggerSkillBySkill.java   | 118 +++++++++++++
 .../game/data/stats/skills/00200-00299.xml    | 110 ++++++------
 .../game/data/stats/skills/00400-00499.xml    |   9 +-
 .../game/data/stats/skills/00600-00699.xml    |  30 +++-
 .../game/data/stats/skills/00700-00799.xml    |  40 ++---
 .../game/data/stats/skills/00800-00899.xml    |  21 ++-
 .../game/data/stats/skills/00900-00999.xml    |  79 ++++-----
 .../game/data/stats/skills/01400-01499.xml    |  10 +-
 .../game/data/stats/skills/01500-01599.xml    |  28 +++-
 .../game/data/stats/skills/03400-03499.xml    |  18 +-
 .../game/data/stats/skills/03600-03699.xml    |  75 +++++++--
 .../game/data/stats/skills/03800-03899.xml    |  68 ++++++--
 .../game/data/stats/skills/05500-05599.xml    |  17 +-
 .../game/data/stats/skills/05600-05699.xml    |   9 +-
 .../game/data/stats/skills/05800-05899.xml    |  23 ++-
 .../game/data/stats/skills/05900-05999.xml    |  36 +++-
 .../game/data/stats/skills/08200-08299.xml    |   9 +-
 .../game/data/stats/skills/08300-08399.xml    |  10 +-
 .../game/data/stats/skills/21200-21299.xml    |  59 +++++--
 .../dist/game/data/xsd/skills.xsd             |   7 +-
 24 files changed, 858 insertions(+), 249 deletions(-)
 delete mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ChanceSkillTrigger.java
 create mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java
 create mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java
 create mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java

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 319b936d56..70e568fd51 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -52,7 +52,6 @@ public final class EffectMasterHandler
 		CallPc.class,
 		CallSkill.class,
 		ChameleonRest.class,
-		ChanceSkillTrigger.class,
 		ChangeFace.class,
 		ChangeFishingMastery.class,
 		ChangeHairColor.class,
@@ -188,7 +187,10 @@ public final class EffectMasterHandler
 		Transformation.class,
 		TrapDetect.class,
 		TrapRemove.class,
+		TriggerSkillByAttack.class,
+		TriggerSkillByAvoid.class,
 		TriggerSkillByDamage.class,
+		TriggerSkillBySkill.class,
 		UnsummonAgathion.class,
 		VitalityPointUp.class,
 	};
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ChanceSkillTrigger.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ChanceSkillTrigger.java
deleted file mode 100644
index efba26dd68..0000000000
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ChanceSkillTrigger.java
+++ /dev/null
@@ -1,60 +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.effecthandlers;
-
-import com.l2jserver.gameserver.model.StatsSet;
-import com.l2jserver.gameserver.model.conditions.Condition;
-import com.l2jserver.gameserver.model.effects.AbstractEffect;
-import com.l2jserver.gameserver.model.skills.BuffInfo;
-
-/**
- * Chance Skill Trigger effect implementation.
- */
-public final class ChanceSkillTrigger extends AbstractEffect
-{
-	public ChanceSkillTrigger(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
-	{
-		super(attachCond, applyCond, set, params);
-	}
-	
-	@Override
-	public boolean onActionTime(BuffInfo info)
-	{
-		info.getEffected().onActionTimeChanceEffect(info.getSkill().getElement());
-		return info.getSkill().isPassive();
-	}
-	
-	@Override
-	public void onExit(BuffInfo info)
-	{
-		// trigger only if effect in use and successfully ticked to the end
-		if (info.getTickCount(this) >= getTicks())
-		{
-			info.getEffected().onExitChanceEffect(info.getSkill().getElement());
-		}
-		info.getEffected().removeChanceEffect(this);
-	}
-	
-	@Override
-	public void onStart(BuffInfo info)
-	{
-		info.getEffected().addChanceTrigger(this);
-		info.getEffected().onStartChanceEffect(info.getSkill().getElement());
-	}
-}
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java
new file mode 100644
index 0000000000..ef08d93946
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2004-2014 L2J DataPack
+ * 
+ * This file is part of L2J DataPack.
+ * 
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package handlers.effecthandlers;
+
+import com.l2jserver.gameserver.enums.InstanceType;
+import com.l2jserver.gameserver.handler.ITargetTypeHandler;
+import com.l2jserver.gameserver.handler.TargetHandler;
+import com.l2jserver.gameserver.model.L2Object;
+import com.l2jserver.gameserver.model.StatsSet;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.conditions.Condition;
+import com.l2jserver.gameserver.model.effects.AbstractEffect;
+import com.l2jserver.gameserver.model.events.EventType;
+import com.l2jserver.gameserver.model.events.impl.character.OnCreatureDamageDealt;
+import com.l2jserver.gameserver.model.events.listeners.ConsumerEventListener;
+import com.l2jserver.gameserver.model.holders.SkillHolder;
+import com.l2jserver.gameserver.model.items.type.WeaponType;
+import com.l2jserver.gameserver.model.skills.BuffInfo;
+import com.l2jserver.gameserver.model.skills.Skill;
+import com.l2jserver.gameserver.model.skills.targets.L2TargetType;
+import com.l2jserver.util.Rnd;
+
+/**
+ * Trigger Skill By Attack effect implementation.
+ * @author Zealar
+ */
+public final class TriggerSkillByAttack extends AbstractEffect
+{
+	private final int _minAttackerLevel;
+	private final int _maxAttackerLevel;
+	private final int _minDamage;
+	private final int _chance;
+	private final SkillHolder _skill;
+	private final L2TargetType _targetType;
+	private final InstanceType _attackerType;
+	private int _allowWeapons;
+	private final boolean _isCritical;
+	
+	/**
+	 * @param attachCond
+	 * @param applyCond
+	 * @param set
+	 * @param params
+	 */
+	
+	public TriggerSkillByAttack(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
+	{
+		super(attachCond, applyCond, set, params);
+		
+		_minAttackerLevel = params.getInt("minAttackerLevel", 1);
+		_maxAttackerLevel = params.getInt("maxAttackerLevel", 100);
+		_minDamage = params.getInt("minDamage", 1);
+		_chance = params.getInt("chance", 100);
+		_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
+		_targetType = params.getEnum("targetType", L2TargetType.class, L2TargetType.SELF);
+		_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.L2Character);
+		_isCritical = params.getBoolean("isCritical", false);
+		
+		if (params.getString("allowWeapons").equalsIgnoreCase("ALL"))
+		{
+			_allowWeapons = 2097151;
+		}
+		else
+		{
+			for (String s : params.getString("allowWeapons").split(","))
+			{
+				_allowWeapons |= WeaponType.valueOf(s).mask();
+			}
+		}
+	}
+	
+	public void onAttackEvent(OnCreatureDamageDealt event)
+	{
+		if (event.isDamageOverTime() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0)))
+		{
+			return;
+		}
+		
+		if (_isCritical != event.isCritical())
+		{
+			return;
+		}
+		
+		final ITargetTypeHandler targetHandler = TargetHandler.getInstance().getHandler(_targetType);
+		if (targetHandler == null)
+		{
+			_log.warning("Handler for target type: " + _targetType + " does not exist.");
+			return;
+		}
+		
+		if (event.getAttacker() == event.getTarget())
+		{
+			return;
+		}
+		
+		if ((event.getAttacker().getLevel() < _minAttackerLevel) || (event.getAttacker().getLevel() > _maxAttackerLevel))
+		{
+			return;
+		}
+		
+		if ((event.getDamage() < _minDamage) || (Rnd.get(100) > _chance) || !event.getAttacker().getInstanceType().isType(_attackerType))
+		{
+			return;
+		}
+		
+		if ((event.getAttacker().getActiveWeaponItem().getItemType().mask() & _allowWeapons) == 0)
+		{
+			return;
+		}
+		
+		final Skill triggerSkill = _skill.getSkill();
+		final L2Object[] targets = targetHandler.getTargetList(triggerSkill, event.getAttacker(), false, event.getTarget());
+		
+		for (L2Object triggerTarget : targets)
+		{
+			if ((triggerTarget == null) || !triggerTarget.isCharacter())
+			{
+				continue;
+			}
+			
+			final L2Character targetChar = (L2Character) triggerTarget;
+			if (!targetChar.isInvul())
+			{
+				event.getAttacker().makeTriggerCast(triggerSkill, targetChar);
+			}
+		}
+	}
+	
+	@Override
+	public void onExit(BuffInfo info)
+	{
+		info.getEffected().removeListenerIf(EventType.ON_CREATURE_DAMAGE_DEALT, listener -> listener.getOwner() == this);
+	}
+	
+	@Override
+	public void onStart(BuffInfo info)
+	{
+		info.getEffected().addListener(new ConsumerEventListener(info.getEffected(), EventType.ON_CREATURE_DAMAGE_DEALT, (OnCreatureDamageDealt event) -> onAttackEvent(event), this));
+	}
+}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java
new file mode 100644
index 0000000000..6694bd46c5
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java
@@ -0,0 +1,111 @@
+/*
+ * 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.handler.ITargetTypeHandler;
+import com.l2jserver.gameserver.handler.TargetHandler;
+import com.l2jserver.gameserver.model.L2Object;
+import com.l2jserver.gameserver.model.StatsSet;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.conditions.Condition;
+import com.l2jserver.gameserver.model.effects.AbstractEffect;
+import com.l2jserver.gameserver.model.events.EventType;
+import com.l2jserver.gameserver.model.events.impl.character.OnCreatureAttackAvoid;
+import com.l2jserver.gameserver.model.events.listeners.ConsumerEventListener;
+import com.l2jserver.gameserver.model.holders.SkillHolder;
+import com.l2jserver.gameserver.model.skills.BuffInfo;
+import com.l2jserver.gameserver.model.skills.Skill;
+import com.l2jserver.gameserver.model.skills.targets.L2TargetType;
+import com.l2jserver.util.Rnd;
+
+/**
+ * Trigger Skill By Avoid effect implementation.
+ * @author Zealar
+ */
+public final class TriggerSkillByAvoid extends AbstractEffect
+{
+	private final int _chance;
+	private final SkillHolder _skill;
+	private final L2TargetType _targetType;
+	
+	/**
+	 * @param attachCond
+	 * @param applyCond
+	 * @param set
+	 * @param params
+	 */
+	
+	public TriggerSkillByAvoid(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
+	{
+		super(attachCond, applyCond, set, params);
+		
+		_chance = params.getInt("chance", 100);
+		_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
+		_targetType = params.getEnum("targetType", L2TargetType.class, L2TargetType.ONE);
+	}
+	
+	public void onAvoidEvent(OnCreatureAttackAvoid event)
+	{
+		if (event.isDamageOverTime() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0)))
+		{
+			return;
+		}
+		
+		final ITargetTypeHandler targetHandler = TargetHandler.getInstance().getHandler(_targetType);
+		if (targetHandler == null)
+		{
+			_log.warning("Handler for target type: " + _targetType + " does not exist.");
+			return;
+		}
+		
+		if (Rnd.get(100) > _chance)
+		{
+			return;
+		}
+		
+		final Skill triggerSkill = _skill.getSkill();
+		final L2Object[] targets = targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker());
+		
+		for (L2Object triggerTarget : targets)
+		{
+			if ((triggerTarget == null) || !triggerTarget.isCharacter())
+			{
+				continue;
+			}
+			
+			final L2Character targetChar = (L2Character) triggerTarget;
+			if (!targetChar.isInvul())
+			{
+				event.getTarget().makeTriggerCast(triggerSkill, targetChar);
+			}
+		}
+	}
+	
+	@Override
+	public void onExit(BuffInfo info)
+	{
+		info.getEffected().removeListenerIf(EventType.ON_CREATURE_ATTACK_AVOID, listener -> listener.getOwner() == this);
+	}
+	
+	@Override
+	public void onStart(BuffInfo info)
+	{
+		info.getEffected().addListener(new ConsumerEventListener(info.getEffected(), EventType.ON_CREATURE_ATTACK_AVOID, (OnCreatureAttackAvoid event) -> onAvoidEvent(event), this));
+	}
+}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java
new file mode 100644
index 0000000000..73bdedd9c7
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java
@@ -0,0 +1,118 @@
+/*
+ * 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.handler.ITargetTypeHandler;
+import com.l2jserver.gameserver.handler.TargetHandler;
+import com.l2jserver.gameserver.model.L2Object;
+import com.l2jserver.gameserver.model.StatsSet;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.conditions.Condition;
+import com.l2jserver.gameserver.model.effects.AbstractEffect;
+import com.l2jserver.gameserver.model.events.EventType;
+import com.l2jserver.gameserver.model.events.impl.character.OnCreatureSkillUse;
+import com.l2jserver.gameserver.model.events.listeners.ConsumerEventListener;
+import com.l2jserver.gameserver.model.holders.SkillHolder;
+import com.l2jserver.gameserver.model.skills.BuffInfo;
+import com.l2jserver.gameserver.model.skills.Skill;
+import com.l2jserver.gameserver.model.skills.targets.L2TargetType;
+import com.l2jserver.util.Rnd;
+
+/**
+ * Trigger Skill By Skill effect implementation.
+ * @author Zealar
+ */
+public final class TriggerSkillBySkill extends AbstractEffect
+{
+	private final int _castSkillId;
+	private final int _chance;
+	private final SkillHolder _skill;
+	private final L2TargetType _targetType;
+	
+	/**
+	 * @param attachCond
+	 * @param applyCond
+	 * @param set
+	 * @param params
+	 */
+	
+	public TriggerSkillBySkill(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
+	{
+		super(attachCond, applyCond, set, params);
+		
+		_castSkillId = params.getInt("castSkillId", 0);
+		_chance = params.getInt("chance", 100);
+		_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
+		_targetType = params.getEnum("targetType", L2TargetType.class, L2TargetType.ONE);
+	}
+	
+	public void onSkillUseEvent(OnCreatureSkillUse event)
+	{
+		if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0) || (_castSkillId == 0)))
+		{
+			return;
+		}
+		
+		if (_castSkillId != event.getSkill().getId())
+		{
+			return;
+		}
+		
+		final ITargetTypeHandler targetHandler = TargetHandler.getInstance().getHandler(_targetType);
+		if (targetHandler == null)
+		{
+			_log.warning("Handler for target type: " + _targetType + " does not exist.");
+			return;
+		}
+		
+		if (Rnd.get(100) > _chance)
+		{
+			return;
+		}
+		
+		final Skill triggerSkill = _skill.getSkill();
+		final L2Object[] targets = targetHandler.getTargetList(triggerSkill, event.getCaster(), false, event.getTarget());
+		
+		for (L2Object triggerTarget : targets)
+		{
+			if ((triggerTarget == null) || !triggerTarget.isCharacter())
+			{
+				continue;
+			}
+			
+			final L2Character targetChar = (L2Character) triggerTarget;
+			if (!targetChar.isInvul())
+			{
+				event.getCaster().makeTriggerCast(triggerSkill, targetChar);
+			}
+		}
+	}
+	
+	@Override
+	public void onExit(BuffInfo info)
+	{
+		info.getEffected().removeListenerIf(EventType.ON_CREATURE_SKILL_USE, listener -> listener.getOwner() == this);
+	}
+	
+	@Override
+	public void onStart(BuffInfo info)
+	{
+		info.getEffected().addListener(new ConsumerEventListener(info.getEffected(), EventType.ON_CREATURE_SKILL_USE, (OnCreatureSkillUse event) -> onSkillUseEvent(event), this));
+	}
+}
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/00200-00299.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/00200-00299.xml
index a53c88feef..6bc56bd454 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/00200-00299.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/00200-00299.xml
@@ -9,30 +9,27 @@
 		<table name="#ench2cAtkAdd"> 65 81 96 112 127 143 158 174 189 205 220 236 251 267 282 298 313 329 344 360 375 391 406 422 437 453 468 484 499 515 </table>
 		<table name="#ench3pAtkSpd"> 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 5 </table>
 		<table name="#enchMagicLvl"> 76 76 76 77 77 77 78 78 78 79 79 79 80 80 80 81 81 81 82 82 82 83 83 83 84 84 84 85 85 85 </table>
-		<set name="activationChance" val="50" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<set name="chanceType" val="ON_HIT" /> <!-- TODO: Remove when support for effects using conditions is done -->
 		<set name="icon" val="icon.skill0217" />
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="operateType" val="P" />
 		<set name="targetType" val="SELF" />
-		<set name="triggeredId" val="#triggeredId" /> <!-- TODO: Remove when support for effects using conditions is done -->
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<enchant2 name="magicLvl" val="#enchMagicLvl" />
 		<enchant3 name="magicLvl" val="#enchMagicLvl" />
-		<!-- TODO: Remove when support for effects using conditions is done -->
-		<cond>
-			<using kind="SWORD,BLUNT" />
-		</cond>
 		<for>
 			<effect name="Buff">
 				<add order="0x40" stat="pAtk" val="#pAtk">
 					<using kind="SWORD,BLUNT" />
 				</add>
 			</effect>
-			<!-- TODO: Require support for effects using conditions -->
-			<!-- <effect name="ChanceSkillTrigger" activationChance="50" chanceType="ON_HIT" triggeredId="#triggeredId"> -->
-			<!-- <using kind="SWORD,BLUNT" /> -->
-			<!-- </effect> -->
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="50" />
+				<param skillId="#triggeredId" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="SWORD,BLUNT" />
+			</effect>
 		</for>
 		<enchant1for>
 			<effect name="Buff">
@@ -43,10 +40,14 @@
 					<using kind="SWORD,BLUNT" />
 				</add>
 			</effect>
-			<!-- TODO: Require support for effects using conditions -->
-			<!-- <effect name="ChanceSkillTrigger" activationChance="50" chanceType="ON_HIT" triggeredId="5604"> -->
-			<!-- <using kind="SWORD,BLUNT" /> -->
-			<!-- </effect> -->
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="50" />
+				<param skillId="5604" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="SWORD,BLUNT" />
+			</effect>
 		</enchant1for>
 		<enchant2for>
 			<effect name="Buff">
@@ -57,10 +58,14 @@
 					<using kind="SWORD,BLUNT" />
 				</add>
 			</effect>
-			<!-- TODO: Require support for effects using conditions -->
-			<!-- <effect name="ChanceSkillTrigger" activationChance="50" chanceType="ON_HIT" triggeredId="5604"> -->
-			<!-- <using kind="SWORD,BLUNT" /> -->
-			<!-- </effect> -->
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="50" />
+				<param skillId="5604" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="SWORD,BLUNT" />
+			</effect>
 		</enchant2for>
 		<enchant3for>
 			<effect name="Buff">
@@ -71,10 +76,14 @@
 					<using kind="SWORD,BLUNT" />
 				</add>
 			</effect>
-			<!-- TODO: Require support for effects using conditions -->
-			<!-- <effect name="ChanceSkillTrigger" activationChance="50" chanceType="ON_HIT" triggeredId="5604"> -->
-			<!-- <using kind="SWORD,BLUNT" /> -->
-			<!-- </effect> -->
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="50" />
+				<param skillId="5604" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="SWORD,BLUNT" />
+			</effect>
 		</enchant3for>
 	</skill>
 	<skill id="208" levels="52" name="Bow Mastery" enchantGroup1="1" enchantGroup2="1">
@@ -120,30 +129,27 @@
 		<table name="#ench2rCrit"> 0.0019 0.0029 0.0039 0.0048 0.0058 0.0068 0.0077 0.0087 0.0097 0.0106 0.0116 0.0126 0.0135 0.0145 0.0155 0.0164 0.0174 0.0184 0.0193 0.0203 0.0213 0.0222 0.0232 0.0242 0.0251 0.0261 0.0271 0.028 0.029 0.03 </table>
 		<table name="#ench3cAtk"> 1.0019 1.0029 1.0039 1.0048 1.0058 1.0068 1.0077 1.0087 1.0097 1.0106 1.0116 1.0126 1.0135 1.0145 1.0155 1.0164 1.0174 1.0184 1.0193 1.0203 1.0213 1.0222 1.0232 1.0242 1.0251 1.0261 1.0271 1.028 1.029 1.03 </table>
 		<table name="#enchMagicLvl"> 76 76 76 77 77 77 78 78 78 79 79 79 80 80 80 81 81 81 82 82 82 83 83 83 84 84 84 85 85 85 </table>
-		<set name="activationChance" val="33" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<set name="chanceType" val="ON_HIT" /> <!-- TODO: Remove when support for effects using conditions is done -->
 		<set name="icon" val="icon.skill0209" />
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="operateType" val="P" />
 		<set name="targetType" val="SELF" />
-		<set name="triggeredId" val="#triggeredId" /> <!-- TODO: Remove when support for effects using conditions is done -->
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<enchant2 name="magicLvl" val="#enchMagicLvl" />
 		<enchant3 name="magicLvl" val="#enchMagicLvl" />
-		<!-- TODO: Remove when support for effects using conditions is done -->
-		<cond>
-			<using kind="DAGGER,DUALDAGGER" />
-		</cond>
 		<for>
 			<effect name="Buff">
 				<add order="0x40" stat="pAtk" val="#pAtk">
 					<using kind="DAGGER,DUALDAGGER" />
 				</add>
 			</effect>
-			<!-- TODO: Require support for effects using conditions -->
-			<!-- <effect name="ChanceSkillTrigger" activationChance="33" chanceType="ON_HIT" triggeredId="#triggeredId"> -->
-			<!-- <using kind="DAGGER,DUALDAGGER" /> -->
-			<!-- </effect> -->
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="33" />
+				<param skillId="#triggeredId" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="DAGGER,DUALDAGGER" />
+			</effect>
 		</for>
 		<enchant1for>
 			<effect name="Buff">
@@ -151,10 +157,14 @@
 					<using kind="DAGGER,DUALDAGGER" />
 				</add>
 			</effect>
-			<!-- TODO: Require support for effects using conditions -->
-			<!-- <effect name="ChanceSkillTrigger" activationChance="33" chanceType="ON_HIT" triggeredId="5603"> -->
-			<!-- <using kind="DAGGER,DUALDAGGER" /> -->
-			<!-- </effect> -->
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="33" />
+				<param skillId="5603" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="DAGGER,DUALDAGGER" />
+			</effect>
 		</enchant1for>
 		<enchant2for>
 			<effect name="Buff">
@@ -165,10 +175,14 @@
 					<using kind="DAGGER,DUALDAGGER" />
 				</basemul>
 			</effect>
-			<!-- TODO: Require support for effects using conditions -->
-			<!-- <effect name="ChanceSkillTrigger" activationChance="33" chanceType="ON_HIT" triggeredId="5603"> -->
-			<!-- <using kind="DAGGER,DUALDAGGER" /> -->
-			<!-- </effect> -->
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="33" />
+				<param skillId="5603" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="DAGGER,DUALDAGGER" />
+			</effect>
 		</enchant2for>
 		<enchant3for>
 			<effect name="Buff">
@@ -179,10 +193,14 @@
 					<using kind="DAGGER,DUALDAGGER" />
 				</mul>
 			</effect>
-			<!-- TODO: Require support for effects using conditions -->
-			<!-- <effect name="ChanceSkillTrigger" activationChance="33" chanceType="ON_HIT" triggeredId="5603"> -->
-			<!-- <using kind="DAGGER,DUALDAGGER" /> -->
-			<!-- </effect> -->
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="33" />
+				<param skillId="5603" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="DAGGER,DUALDAGGER" />
+			</effect>
 		</enchant3for>
 	</skill>
 	<skill id="210" levels="45" name="Fist Weapon Mastery" enchantGroup1="1" enchantGroup2="1">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/00400-00499.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/00400-00499.xml
index 3f8afdc5fe..a5fecae125 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/00400-00499.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/00400-00499.xml
@@ -2239,7 +2239,14 @@
 			<effect name="SoulEating">
 				<param expNeeded="#expNeeded" />
 			</effect>
-			<effect name="ChanceSkillTrigger" activationChance="#activationChance" chanceType="ON_HIT" triggeredId="5548" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="#activationChance" />
+				<param skillId="5548" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="468" levels="9" name="Fallen Attack">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/00600-00699.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/00600-00699.xml
index 51c9691f42..ce8e9a94f3 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/00600-00699.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/00600-00699.xml
@@ -891,7 +891,14 @@
 		<set name="operateType" val="P" />
 		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="2" chanceType="ON_HIT" triggeredId="5572" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="2" />
+				<param skillId="5572" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="652" levels="1" name="Knight Ability - Defense">
@@ -900,7 +907,6 @@
 		<set name="icon" val="icon.skill0110" />
 		<set name="magicLvl" val="75" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
 			<effect name="TriggerSkillByDamage">
 				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="99" />
@@ -917,9 +923,15 @@
 		<set name="icon" val="icon.skill1077" />
 		<set name="magicLvl" val="75" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="2" chanceType="ON_HIT" triggeredId="5574" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="2" />
+				<param skillId="5574" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="654" levels="1" name="Wizard Ability - Mana Steal">
@@ -928,9 +940,15 @@
 		<set name="icon" val="icon.skill1398" />
 		<set name="magicLvl" val="75" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="2" chanceType="ON_HIT" triggeredId="5575" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="2" />
+				<param skillId="5575" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="655" levels="1" name="Enchanter Ability - Barrier">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/00700-00799.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/00700-00799.xml
index c1bf3f6022..059a17ee41 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/00700-00799.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/00700-00799.xml
@@ -1460,17 +1460,9 @@
 	</skill>
 	<skill id="758" levels="1" name="Fighter's Will">
 		<!-- Confirmed CT2.5 -->
-		<set name="activationChance" val="3" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<set name="chanceType" val="ON_HIT" /> <!-- TODO: Remove when support for effects using conditions is done -->
 		<set name="icon" val="icon.skill0758" />
 		<set name="magicLvl" val="81" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
-		<set name="triggeredId" val="5559" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<!-- TODO: Remove when support for effects using conditions is done -->
-		<cond>
-			<using kind="SWORD,BLUNT,DUAL,DUALFIST,DAGGER,DUALDAGGER,POLE,ANCIENTSWORD,RAPIER" />
-		</cond>
 		<for>
 			<effect name="Buff">
 				<add order="0x40" stat="pAtk" val="100">
@@ -1480,25 +1472,21 @@
 					<using kind="SWORD,BLUNT,DUAL,DUALFIST,DAGGER,DUALDAGGER,POLE,ANCIENTSWORD,RAPIER" />
 				</mul>
 			</effect>
-			<!-- TODO: Require support for effects using conditions -->
-			<!-- <effect name="ChanceSkillTrigger" activationChance="3" chanceType="ON_HIT" triggeredId="5559"> -->
-			<!-- <using kind="SWORD,BLUNT,DUAL,DUALFIST,DAGGER,DUALDAGGER,POLE,ANCIENTSWORD,RAPIER" /> -->
-			<!-- </effect> -->
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="3" />
+				<param skillId="5559" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="SWORD,BLUNT,DUAL,DUALFIST,DAGGER,DUALDAGGER,POLE,ANCIENTSWORD,RAPIER" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="759" levels="1" name="Archer's Will">
 		<!-- Confirmed CT2.5 -->
-		<set name="activationChance" val="3" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<set name="chanceType" val="ON_HIT" /> <!-- TODO: Remove when support for effects using conditions is done -->
 		<set name="icon" val="icon.skill0759" />
 		<set name="magicLvl" val="81" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
-		<set name="triggeredId" val="5559" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<!-- TODO: Remove when support for effects using conditions is done -->
-		<cond>
-			<using kind="BOW,CROSSBOW" />
-		</cond>
 		<for>
 			<effect name="Buff">
 				<add order="0x40" stat="accCombat" val="8">
@@ -1508,10 +1496,14 @@
 					<using kind="CROSSBOW,BOW" />
 				</add>
 			</effect>
-			<!-- TODO: Require support for effects using conditions -->
-			<!-- <effect name="ChanceSkillTrigger" activationChance="3" chanceType="ON_HIT" triggeredId="5559"> -->
-			<!-- <using kind="CROSSBOW,BOW" /> -->
-			<!-- </effect> -->
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="3" />
+				<param skillId="5559" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="SWORD,BLUNT,DUAL,DUALFIST,DAGGER,DUALDAGGER,POLE,ANCIENTSWORD,RAPIER" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="760" levels="1" name="Anti Magic Armor">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/00800-00899.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/00800-00899.xml
index 4da3a668fc..98da1a0cfa 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/00800-00899.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/00800-00899.xml
@@ -391,9 +391,12 @@
 		<set name="icon" val="icon.skill0818" />
 		<set name="magicLvl" val="74" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="10" chanceType="ON_EVADED_HIT" triggeredId="5673" />
+			<effect name="TriggerSkillByAvoid">
+				<param chance="10" />
+				<param skillId="5673" skillLevel="1" />
+				<param targetType="ONE" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="819" levels="1" name="Evasion Chance">
@@ -401,9 +404,12 @@
 		<set name="icon" val="icon.skill0819" />
 		<set name="magicLvl" val="74" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="10" chanceType="ON_EVADED_HIT" triggeredId="5674" />
+			<effect name="TriggerSkillByAvoid">
+				<param chance="10" />
+				<param skillId="5674" skillLevel="1" />
+				<param targetType="SELF" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="820" levels="1" name="Evasion Haste">
@@ -411,9 +417,12 @@
 		<set name="icon" val="icon.skill0820" />
 		<set name="magicLvl" val="74" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="10" chanceType="ON_EVADED_HIT" triggeredId="5675" />
+			<effect name="TriggerSkillByAvoid">
+				<param chance="10" />
+				<param skillId="5675" skillLevel="1" />
+				<param targetType="SELF" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="821" levels="1" name="Shadow Step">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/00900-00999.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/00900-00999.xml
index e222a2e729..30b7500c6e 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/00900-00999.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/00900-00999.xml
@@ -1195,8 +1195,12 @@
 				</add>
 			</effect>
 			<mul order="0x30" stat="rShld" val="#rShld" />
-			<!-- FIXME: activationChance value unconfirmed -->
-			<effect name="ChanceSkillTrigger" activationChance="30" activationSkills="997" chanceType="ON_CAST" triggeredId="6920" />
+			<effect name="TriggerSkillBySkill">
+				<param castSkillId="997" />
+				<param chance="30" />
+				<param skillId="6920" skillLevel="1" />
+				<param targetType="SELF" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="953" levels="1" name="Life to Soul">
@@ -2138,53 +2142,54 @@
 		<!-- High Five Skill -->
 		<table name="#magicLvl"> 40 43 49 55 60 66 70 79 </table>
 		<table name="#triggeredLevel"> 1 2 3 4 5 6 7 8 </table>
-		<set name="activationChance" val="15" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<set name="chanceType" val="ON_HIT" /> <!-- TODO: Remove when support for effects using conditions is done -->
 		<set name="icon" val="icon.skill0992" />
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
-		<set name="triggeredId" val="6813" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<set name="triggeredLevel" val="#triggeredLevel" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<!-- TODO: Remove when support for effects using conditions is done -->
-		<cond>
-			<using kind="DUAL,SWORD,BLUNT" />
-		</cond>
-		<!-- TODO: Require support for effects using conditions -->
-		<!-- <for> -->
-		<!-- <effect name="ChanceSkillTrigger" activationChance="15" chanceType="ON_HIT" triggeredId="6813" triggeredLevel="#triggeredLevel"> -->
-		<!-- <using kind="DUAL,SWORD,BLUNT" /> -->
-		<!-- </effect> -->
-		<!-- <effect name="ChanceSkillTrigger" activationChance="30" chanceType="ON_CRIT" triggeredId="6813" triggeredLevel="#triggeredLevel"> -->
-		<!-- <using kind="DUAL,SWORD,BLUNT" /> -->
-		<!-- </effect> -->
-		<!-- </for> -->
+		<for>
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="15" />
+				<param skillId="6813" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="DUAL,SWORD,BLUNT" />
+			</effect>
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="30" />
+				<param skillId="6813" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="DUAL,SWORD,BLUNT" />
+			</effect>
+		</for>
 	</skill>
 	<skill id="993" levels="8" name="Force Mastery">
 		<!-- High Five Skill -->
 		<table name="#magicLvl"> 24 32 40 52 60 66 72 79 </table>
 		<table name="#triggeredLevel"> 1 2 3 4 5 6 7 8 </table>
-		<set name="activationChance" val="15" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<set name="chanceType" val="ON_HIT" /> <!-- TODO: Remove when support for effects using conditions is done -->
 		<set name="icon" val="icon.skill0993" />
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="operateType" val="P" />
 		<set name="targetType" val="SELF" />
-		<set name="triggeredId" val="6814" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<set name="triggeredLevel" val="#triggeredLevel" /> <!-- TODO: Remove when support for effects using conditions is done -->
-		<!-- TODO: Remove when support for effects using conditions is done -->
-		<cond>
-			<using kind="DUALFIST" />
-		</cond>
-		<!-- TODO: Require support for effects using conditions -->
-		<!-- <for> -->
-		<!-- <effect name="ChanceSkillTrigger" activationChance="15" chanceType="ON_HIT" triggeredId="6814" triggeredLevel="#triggeredLevel"> -->
-		<!-- <using kind="DUALFIST" /> -->
-		<!-- </effect> -->
-		<!-- <effect name="ChanceSkillTrigger" activationChance="30" chanceType="ON_CRIT" triggeredId="6814" triggeredLevel="#triggeredLevel"> -->
-		<!-- <using kind="DUALFIST" /> -->
-		<!-- </effect> -->
-		<!-- </for> -->
+		<for>
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="15" />
+				<param skillId="6814" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="DUALFIST" />
+			</effect>
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="30" />
+				<param skillId="6814" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="DUALFIST" />
+			</effect>
+		</for>
 	</skill>
 	<skill id="994" levels="1" name="Rush">
 		<!-- High Five Skill -->
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/01400-01499.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/01400-01499.xml
index aed73c0d62..bacca7f66b 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/01400-01499.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/01400-01499.xml
@@ -3356,9 +3356,15 @@
 		<set name="icon" val="icon.skill1498" />
 		<set name="magicLvl" val="81" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="5" chanceType="ON_HIT" triggeredId="5571" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="5" />
+				<param skillId="5571" skillLevel="1" />
+				<param targetType="SUMMON" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="1499" levels="1" name="Improved Combat">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/01500-01599.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/01500-01599.xml
index 0d359f8d6b..b40c4435af 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/01500-01599.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/01500-01599.xml
@@ -859,7 +859,7 @@
 	</skill>
 	<skill id="1526" levels="3" name="Steal Mana">
 		<!-- Confirmed CT2.5 -->
-		<table name="#activationMinDamage"> 41 51 49 </table>
+		<table name="#minDamage"> 41 51 49 </table>
 		<table name="#magicLvl"> 44 56 64 </table>
 		<table name="#triggeredId"> 5676 5677 5678 </table>
 		<set name="icon" val="icon.skill1526" />
@@ -867,7 +867,14 @@
 		<set name="operateType" val="P" />
 		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="10" activationMinDamage="#activationMinDamage" chanceType="ON_HIT" triggeredId="#triggeredId" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="99" />
+				<param isCritical="true" />
+				<param minDamage="#minDamage" chance="10" />
+				<param skillId="#triggeredId" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="1527" levels="3" name="Expert Casting">
@@ -1354,9 +1361,13 @@
 		<set name="icon" val="icon.skill1543" />
 		<set name="magicLvl" val="81" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="30" activationSkills="927" chanceType="ON_CAST" triggeredId="6060" />
+			<effect name="TriggerSkillBySkill">
+				<param castSkillId="927" />
+				<param chance="30" />
+				<param skillId="6060" skillLevel="1" />
+				<param targetType="PARTY" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="1544" levels="7" name="Death Beam">
@@ -1766,10 +1777,13 @@
 		<set name="targetType" val="ONE" />
 		<for>
 			<effect name="MagicalAttack" />
+			<effect name="TriggerSkillBySkill">
+				<param castSkillId="1558" />
+				<param chance="5" />
+				<param skillId="5571" skillLevel="1" />
+				<param targetType="SUMMON" />
+			</effect>
 		</for>
-		<selfEffects>
-			<effect name="ChanceSkillTrigger" activationChance="5" chanceType="ON_START" triggeredId="5571" />
-		</selfEffects>
 	</skill>
 	<skill id="1559" levels="3" name="Potential Ability">
 		<!-- High Five Skill -->
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/03400-03499.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/03400-03499.xml
index c12eb46e09..f2ee05da87 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/03400-03499.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/03400-03499.xml
@@ -373,7 +373,14 @@
 		<set name="operateType" val="P" />
 		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="5" chanceType="ON_HIT" triggeredId="5547" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="5" />
+				<param skillId="5547" skillLevel="1" />
+				<param targetType="PARTY" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3427" levels="1" name="Special Ability: Infinity Rapier">
@@ -392,8 +399,15 @@
 				<mul order="0x30" stat="pvpMagicalDmg" val="1.1" /> <!-- PVP Damage Bonus +10% -->
 				<mul order="0x30" stat="pvpPhysSkillsDmg" val="1.1" /> <!-- PVP Damage Bonus +10% -->
 				<add order="0x40" stat="reflectDam" val="9" /> <!-- Reflect Damage 9% -->
+			</effect>			
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="5" />
+				<param skillId="5547" skillLevel="1" />
+				<param targetType="PARTY" />
+				<param allowWeapons="ALL" />
 			</effect>
-			<effect name="ChanceSkillTrigger" activationChance="5" chanceType="ON_HIT" triggeredId="5547" />
 		</for>
 	</skill>
 	<skill id="3428" levels="1" name="Blue Talisman - Explosion">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/03600-03699.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/03600-03699.xml
index 3bb1f2f538..403ba65e3f 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/03600-03699.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/03600-03699.xml
@@ -982,9 +982,15 @@
 		<set name="icon" val="icon.skill1306" />
 		<set name="magicLvl" val="80" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="20" activationMinDamage="50" chanceType="ON_HIT" triggeredId="5681" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Playable" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="50" chance="20" />
+				<param skillId="5681" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3651" levels="1" name="PvP Weapon - Cancel">
@@ -994,7 +1000,14 @@
 		<set name="operateType" val="P" />
 		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="10" activationMinDamage="50" chanceType="ON_HIT" triggeredId="5682" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Playable" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="50" chance="10" />
+				<param skillId="5682" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3652" levels="1" name="PvP Weapon - Ignore Shield Defense">
@@ -1002,9 +1015,15 @@
 		<set name="icon" val="icon.skill1304" />
 		<set name="magicLvl" val="80" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="20" activationMinDamage="50" chanceType="ON_HIT" triggeredId="5683" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Playable" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="50" chance="20" />
+				<param skillId="5683" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3653" levels="1" name="PvP Weapon - Attack Chance">
@@ -1012,9 +1031,15 @@
 		<set name="icon" val="icon.skill0005" />
 		<set name="magicLvl" val="80" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="10" activationMinDamage="50" chanceType="ON_HIT" triggeredId="5684" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Playable" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="50" chance="10" />
+				<param skillId="5684" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3654" levels="1" name="PvP Weapon - Casting">
@@ -1038,9 +1063,15 @@
 		<set name="icon" val="icon.skill0413" />
 		<set name="magicLvl" val="80" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="10" activationMinDamage="50" chanceType="ON_HIT" triggeredId="5686" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Playable" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="50" chance="10" />
+				<param skillId="5686" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3656" levels="1" name="PvP Weapon - Decrease Range">
@@ -1048,9 +1079,15 @@
 		<set name="icon" val="icon.skill0486" />
 		<set name="magicLvl" val="80" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="10" activationMinDamage="50" chanceType="ON_HIT" triggeredId="5687" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Playable" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="50" chance="10" />
+				<param skillId="5687" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3657" levels="1" name="PvP Weapon - Decrease Resist">
@@ -1060,7 +1097,14 @@
 		<set name="operateType" val="P" />
 		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="10" activationMinDamage="50" chanceType="ON_HIT" triggeredId="5688" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Playable" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="50" chance="10" />
+				<param skillId="5688" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3658" levels="1" name="PvP Shield - Reflect Damage">
@@ -1118,7 +1162,12 @@
 		<set name="operateType" val="P" />
 		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="5" activationSkills="1401" chanceType="ON_CAST" triggeredId="5692" />
+			<effect name="TriggerSkillBySkill">
+				<param castSkillId="1401" />
+				<param chance="5" />
+				<param skillId="5692" skillLevel="1" />
+				<param targetType="ONE" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3662" levels="1" name="PvP Armor - Speed Down">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/03800-03899.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/03800-03899.xml
index 24787a4ae1..9db3979bdc 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/03800-03899.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/03800-03899.xml
@@ -372,9 +372,15 @@
 		<set name="icon" val="icon.skill0100" />
 		<set name="magicLvl" val="70" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="6" chanceType="ON_HIT" triggeredId="5665" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="6" />
+				<param skillId="5665" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3830" levels="3" name="Rapier of Might">
@@ -436,7 +442,14 @@
 		<set name="operateType" val="P" />
 		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="6" chanceType="ON_HIT" triggeredId="5666" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="6" />
+				<param skillId="5666" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3835" levels="3" name="Dual-Blade Weapon of Might">
@@ -498,7 +511,14 @@
 		<set name="operateType" val="P" />
 		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="6" chanceType="ON_HIT" triggeredId="5667" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="6" />
+				<param skillId="5667" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3840" levels="2" name="Two-handed Sword of Haste">
@@ -762,9 +782,15 @@
 		<set name="icon" val="icon.skill0129" />
 		<set name="magicLvl" val="70" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="5" chanceType="ON_HIT" triggeredId="5668" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="5" />
+				<param skillId="5668" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3862" levels="1" name="Dagger of Guidance">
@@ -947,9 +973,15 @@
 		<set name="icon" val="icon.skill0100" />
 		<set name="magicLvl" val="70" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="6" chanceType="ON_HIT" triggeredId="5669" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="6" />
+				<param skillId="5669" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3877" levels="2" name="Polearm of Boost HP">
@@ -1022,9 +1054,15 @@
 		<set name="icon" val="icon.skill0100" />
 		<set name="magicLvl" val="70" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="6" chanceType="ON_HIT" triggeredId="5670" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="6" />
+				<param skillId="5670" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3883" levels="1" name="Fist Weapon of Critical Power">
@@ -1060,9 +1098,15 @@
 		<set name="icon" val="icon.skill0100" />
 		<set name="magicLvl" val="61" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="#activationChance" chanceType="ON_HIT" triggeredId="#triggeredId" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="#activationChance" />
+				<param skillId="#triggeredId" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="3886" levels="1" name="Blunt Weapon of Haste">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/05500-05599.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/05500-05599.xml
index 9a6e0e5e55..27bef146f6 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/05500-05599.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/05500-05599.xml
@@ -839,10 +839,8 @@
 		</for>
 	</skill>
 	<skill id="5549" levels="1" name="Physical Short-range Weakness">
-		<!-- TODO: Implement me! -->
 		<set name="magicLvl" val="70" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="NONE" />
 		<for>
 			<effect name="DefenceTrait">
 				<param BLUNT="-30" />
@@ -859,13 +857,18 @@
 	<skill id="5550" levels="12" name="NPC Trigger Stun">
 		<table name="#magicLvl"> 10 20 30 40 50 60 70 75 80 85 90 95 </table>
 		<table name="#triggeredLvl"> 1 2 3 4 5 6 7 8 9 10 11 12 </table>
-		<set name="activationChance" val="15" />
-		<set name="chanceType" val="ON_HIT" />
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
-		<set name="triggeredId" val="5551" />
-		<set name="triggeredLevel" val="#triggeredLvl" />
+		<for>
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="15" />
+				<param skillId="5551" skillLevel="#triggeredLvl" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
+		</for>
 	</skill>
 	<skill id="5551" levels="12" name="Stun">
 		<table name="#magicLvl"> 10 20 30 40 50 60 70 75 80 85 90 95 </table>
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/05600-05699.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/05600-05699.xml
index 0c3bf60cb7..96fe14a27a 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/05600-05699.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/05600-05699.xml
@@ -1419,7 +1419,14 @@
 		<set name="operateType" val="A2" />
 		<set name="targetType" val="AURA" />
 		<for>
-			<effect name="ChanceSkillTrigger" triggeredId="5680" chanceType="ON_ATTACKED" activationChance="30" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="60" />
+				<param skillId="5680" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="5680" levels="1" name="Oblivion Trap">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/05800-05899.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/05800-05899.xml
index 2e7a397562..88b68e0b4a 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/05800-05899.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/05800-05899.xml
@@ -654,12 +654,24 @@
 		</for>
 	</skill>
 	<skill id="5845" levels="12" name="NPC Trigger Bleed">
-		<set name="magicLvl" val="10" />
+		<table name="#magicLvl"> 10 20 30 40 50 60 70 75 80 85 90 95 </table>
+		<table name="#skillLevel"> 1 2 3 4 5 6 7 8 9 10 11 12 </table>
+		<set name="magicLvl" val="#magicLvl" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="NONE" />
+		<for>
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="20" />
+				<param skillId="5846" skillLevel="#skillLevel" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
+		</for>
 	</skill>
 	<skill id="5846" levels="12" name="Bleed">
 		<table name="#abnormalLvls"> 2 3 4 5 6 7 8 8 9 9 10 10 </table>
+		<table name="#dot"> 18 25 34 44 54 62 67 67 70 70 71 71 </table>
 		<table name="#magicLvl"> 10 20 30 40 50 60 70 75 80 85 90 95 </table>
 		<set name="abnormalLvl" val="#abnormalLvls" />
 		<set name="abnormalTime" val="20" />
@@ -675,8 +687,13 @@
 		<set name="lvlBonusRate" val="2" />
 		<set name="magicLvl" val="#magicLvl" />
 		<set name="operateType" val="A2" />
-		<set name="targetType" val="NONE" />
+		<set name="targetType" val="ONE" />
 		<set name="trait" val="BLEED" />
+		<for>
+			<effect name="DamOverTime" ticks="5">
+				<param power="#dot" />
+			</effect>
+		</for>
 	</skill>
 	<skill id="5847" levels="1" name="Flip Nearby Blocks">
 		<set name="affectLimit" val="10-10" />
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/05900-05999.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/05900-05999.xml
index 432b51d565..a27a43f97b 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/05900-05999.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/05900-05999.xml
@@ -18,6 +18,16 @@
 		<set name="operateType" val="A2" />
 		<set name="targetType" val="FRONT_AREA" />
 		<set name="trait" val="DERANGEMENT" />
+		<for>
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="99" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="90" />
+				<param skillId="5902" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
+		</for>
 	</skill>
 	<skill id="5901" levels="2" name="Mist of Oblivion">
 		<table name="#hitTime"> 2000 22940 </table>
@@ -37,6 +47,16 @@
 		<set name="operateType" val="A2" />
 		<set name="targetType" val="NONE" />
 		<set name="trait" val="DERANGEMENT" />
+		<for>
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="99" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="90" />
+				<param skillId="5902" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
+		</for>
 	</skill>
 	<skill id="5902" levels="1" name="NPC Trigger Target Cancel">
 		<!-- Confirmed CT2.5 -->
@@ -221,7 +241,16 @@
 	<skill id="5913" levels="1" name="Putrefection Cleanse">
 		<set name="magicLvl" val="83" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="NONE" />
+		<for>
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="100" />
+				<param skillId="5914" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
+		</for>
 	</skill>
 	<skill id="5914" levels="1" name="Putrefaction Cleanse">
 		<set name="abnormalLvl" val="1" />
@@ -272,11 +301,10 @@
 		<set name="targetType" val="NONE" />
 	</skill>
 	<skill id="5918" levels="10" name="Physical Root Weakness">
-		<!-- TODO: Implement me! -->
 		<table name="#trait_root_physically"> -10 -20 -30 -40 -50 -60 -70 -80 -90 -99 </table>
-		<set name="magicLvl" val="10" />
+		<table name="#magicLvl"> 10 20 30 40 50 60 70 80 90 95 </table>
+		<set name="magicLvl" val="#magicLvl" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="NONE" />
 		<for>
 			<effect name="DefenceTrait">
 				<param ROOT_PHYSICALLY="#trait_root_physically" />
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/08200-08299.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/08200-08299.xml
index 5ef150d4fb..9347d77614 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/08200-08299.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/08200-08299.xml
@@ -978,7 +978,14 @@
 				<basemul order="0x30" stat="rCrit" val="0.3" />
 				<mul order="0x30" stat="pAtkSpd" val="1.33" />
 			</effect>
-			<effect name="ChanceSkillTrigger" activationChance="100" chanceType="ON_HIT" triggeredId="5760" triggeredLevel="1" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="99" />
+				<param isCritical="true" />
+				<param minDamage="1" chance="99" />
+				<param skillId="5760" skillLevel="1" />
+				<param targetType="SELF" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="8240" levels="3" name="Obliteration Storm">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/08300-08399.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/08300-08399.xml
index 869a81e56c..2d4be66ce6 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/08300-08399.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/08300-08399.xml
@@ -180,9 +180,15 @@
 		<set name="icon" val="icon.weapon_bbyong_hammer_a_i00" />
 		<set name="magicLvl" val="1" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="33" activationMinDamage="1" chanceType="ON_HIT" triggeredId="21007" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Playable" minAttackerLevel="1" maxAttackerLevel="99" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="33" />
+				<param skillId="21007" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="8308" levels="1" name="Red Talisman - Guardian of the Territory">
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/21200-21299.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/21200-21299.xml
index 4308ffc91a..256fa3c263 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/21200-21299.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/21200-21299.xml
@@ -613,9 +613,15 @@
 		<!-- FIXME: value unconfirmed -->
 		<set name="icon" val="BranchSys2.icon.br_wp_Caladbulg_i00" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="3" chanceType="ON_HIT" triggeredId="23319" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="3" />
+				<param skillId="23319" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="21253" levels="1" name="Butcher Blades">
@@ -623,9 +629,15 @@
 		<!-- FIXME: value unconfirmed -->
 		<set name="icon" val="BranchSys2.icon.br_wp_habus_knife_i00" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="3" chanceType="ON_HIT" triggeredId="23320" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="3" />
+				<param skillId="23320" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="21254" levels="1" name="Claw of Destruction">
@@ -633,9 +645,15 @@
 		<!-- FIXME: value unconfirmed -->
 		<set name="icon" val="BranchSys2.icon.br_wp_tiatenon_i00" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="3" chanceType="ON_HIT" triggeredId="23321" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="3" />
+				<param skillId="23321" skillLevel="1" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="21255" levels="1" name="Blades of Delusion">
@@ -643,9 +661,15 @@
 		<!-- FIXME: value unconfirmed -->
 		<set name="icon" val="BranchSys2.icon.br_wp_astarot_i00" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="3" chanceType="ON_HIT" triggeredId="23322" triggeredLevel="10" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="3" />
+				<param skillId="23322" skillLevel="10" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="21256" levels="1" name="Blood Brother">
@@ -653,9 +677,15 @@
 		<!-- FIXME: value unconfirmed -->
 		<set name="icon" val="BranchSys2.icon.br_wp_tirbing_i00" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="3" chanceType="ON_HIT" triggeredId="23323" triggeredLevel="10" />
+			<effect name="TriggerSkillByAttack">
+				<param attackerType="L2Character" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param isCritical="false" />
+				<param minDamage="1" chance="3" />
+				<param skillId="23323" skillLevel="10" />
+				<param targetType="ONE" />
+				<param allowWeapons="ALL" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="21257" levels="1" name="Mardil">
@@ -663,9 +693,14 @@
 		<!-- FIXME: value unconfirmed -->
 		<set name="icon" val="BranchSys2.icon.br_wp_wind_of_mardil_i00" />
 		<set name="operateType" val="P" />
-		<set name="targetType" val="SELF" />
 		<for>
-			<effect name="ChanceSkillTrigger" activationChance="3" chanceType="ON_ATTACKED" triggeredId="23324" />
+			<effect name="TriggerSkillByDamage">
+				<param attackerType="L2Playable" minAttackerLevel="1" maxAttackerLevel="100" />
+				<param minDamage="1" />
+				<param chance="3" />
+				<param skillId="23324" skillLevel="1" />
+				<param targetType="SELF" />
+			</effect>
 		</for>
 	</skill>
 	<skill id="21258" levels="1" name="Rocking Horse Mount">
diff --git a/L2J_DataPack_BETA/dist/game/data/xsd/skills.xsd b/L2J_DataPack_BETA/dist/game/data/xsd/skills.xsd
index 6adaa12147..f746964b5b 100644
--- a/L2J_DataPack_BETA/dist/game/data/xsd/skills.xsd
+++ b/L2J_DataPack_BETA/dist/game/data/xsd/skills.xsd
@@ -197,10 +197,13 @@
 				<xs:attribute type="xs:string" name="attackerType" use="optional" />
 				<xs:attribute type="xs:byte" name="minAttackerLevel" use="optional" />
 				<xs:attribute type="xs:byte" name="maxAttackerLevel" use="optional" />
+				<xs:attribute type="xs:boolean" name="isCritical" use="optional" />
+				<xs:attribute type="xs:string" name="minDamage" use="optional" />
+				<xs:attribute type="xs:short" name="castSkillId" use="optional" />
 				<xs:attribute type="xs:byte" name="blockedActions" use="optional" />
-				<xs:attribute type="xs:short" name="minDamage" use="optional" />
-				<xs:attribute type="xs:short" name="skillId" use="optional" />
+				<xs:attribute type="xs:string" name="skillId" use="optional" />
 				<xs:attribute type="xs:string" name="skillLevel" use="optional" />
+				<xs:attribute type="xs:string" name="allowWeapons" use="optional" />
 				<xs:attribute type="xs:string" name="targetType" use="optional" />
 				<xs:attribute type="xs:byte" name="npcCount" use="optional" />
 				<xs:attribute type="xs:string" name="expNeeded" use="optional" />
-- 
GitLab