From 8172ae64ab4e99300ad4a2209e0adcfae4176887 Mon Sep 17 00:00:00 2001
From: Zoey76 <zoey_76@msn.com>
Date: Fri, 14 Sep 2012 03:57:47 +0000
Subject: [PATCH] BETA: Runes implementation: 	* Implemented skills 	
 * Rune of Experience Points(22039). 		* Rune of SP(22040). 	
 * Rune of Crystal Form Level(22041). 		* Rune of Crystal Form(26048).
 		* Rune of Experience Points(26046). 		* Rune of
 SP(26047). 		* Rune of Crystal Form(26048). 	* Implemented Effect
 CrystalGradeModify.

---
 .../scripts/handlers/EffectMasterHandler.java |  2 +
 .../effecthandlers/CrystalGradeModify.java    | 67 +++++++++++++++++++
 .../game/data/stats/skills/22000-22099.xml    | 30 +++++++--
 .../game/data/stats/skills/26000-26099.xml    | 30 +++++++--
 4 files changed, 117 insertions(+), 12 deletions(-)
 create mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CrystalGradeModify.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 cd162fde4e..f6b9bb269c 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -34,6 +34,7 @@ import handlers.effecthandlers.CpDamPercent;
 import handlers.effecthandlers.CpHeal;
 import handlers.effecthandlers.CpHealOverTime;
 import handlers.effecthandlers.CpHealPercent;
+import handlers.effecthandlers.CrystalGradeModify;
 import handlers.effecthandlers.DamOverTime;
 import handlers.effecthandlers.Debuff;
 import handlers.effecthandlers.Disarm;
@@ -124,6 +125,7 @@ public final class EffectMasterHandler
 		CpHeal.class,
 		CpHealOverTime.class,
 		CpHealPercent.class,
+		CrystalGradeModify.class,
 		CpDamPercent.class,
 		DamOverTime.class,
 		Debuff.class,
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CrystalGradeModify.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CrystalGradeModify.java
new file mode 100644
index 0000000000..73dbf4975e
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CrystalGradeModify.java
@@ -0,0 +1,67 @@
+/*
+ * This program 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.
+ * 
+ * This program 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.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.effects.EffectTemplate;
+import com.l2jserver.gameserver.model.effects.L2Effect;
+import com.l2jserver.gameserver.model.effects.L2EffectType;
+import com.l2jserver.gameserver.model.stats.Env;
+
+/**
+ * Crystal Grade Modify effect implementation.
+ * @author Zoey76
+ */
+public class CrystalGradeModify extends L2Effect
+{
+	public CrystalGradeModify(Env env, EffectTemplate template)
+	{
+		super(env, template);
+	}
+	
+	@Override
+	public L2EffectType getEffectType()
+	{
+		return L2EffectType.BUFF;
+	}
+	
+	@Override
+	public boolean onStart()
+	{
+		final L2PcInstance player = getEffected().getActingPlayer();
+		if (player != null)
+		{
+			player.setExpertisePenaltyBonus((int) calc());
+			return true;
+		}
+		return false;
+	}
+	
+	@Override
+	public void onExit()
+	{
+		final L2PcInstance player = getEffected().getActingPlayer();
+		if (player != null)
+		{
+			player.setExpertisePenaltyBonus(0);
+		}
+	}
+	
+	@Override
+	public boolean onActionTime()
+	{
+		return false;
+	}
+}
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml
index 6b28225577..5d2cabb4e8 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml
@@ -629,19 +629,37 @@
 		<set name="operateType" val="A1" />
 	</skill>
 	<skill id="22039" levels="2" name="Rune of Experience Points">
-		<set name="target" val="TARGET_NONE" />
-		<set name="skillType" val="NOTDONE" />
+		<!-- Confirmed CT2.5 -->
+		<table name="#bonusExp"> 30 50 </table>
+		<set name="magicLvl" val="1" />
 		<set name="operateType" val="P" />
+		<set name="skillType" val="BUFF" />
+		<set name="target" val="TARGET_SELF" />
+		<for>
+			<add order="0x40" stat="bonusExp" val="#bonusExp" />
+		</for>
 	</skill>
 	<skill id="22040" levels="2" name="Rune of SP">
-		<set name="target" val="TARGET_NONE" />
-		<set name="skillType" val="NOTDONE" />
+		<!-- Confirmed CT2.5 -->
+		<table name="#bonusSp"> 30 50 </table>
+		<set name="magicLvl" val="1" />
 		<set name="operateType" val="P" />
+		<set name="skillType" val="BUFF" />
+		<set name="target" val="TARGET_SELF" />
+		<for>
+			<add order="0x40" stat="bonusSp" val="#bonusSp" />
+		</for>
 	</skill>
 	<skill id="22041" levels="2" name="Rune of Crystal Form Level">
-		<set name="target" val="TARGET_NONE" />
-		<set name="skillType" val="NOTDONE" />
+		<!-- Confirmed CT2.5 -->
+		<table name="#bonus"> 3 5 </table>
+		<set name="magicLvl" val="1" />
 		<set name="operateType" val="P" />
+		<set name="skillType" val="BUFF" />
+		<set name="target" val="TARGET_SELF" />
+		<for>
+			<effect name="CrystalGradeModify" abnormalTime="-1" val="#bonus" />
+		</for>
 	</skill>
 	<skill id="22042" levels="1" name="High Grade Potion of Will">
 		<set name="isMagic" val="2" /> <!-- Static Skill -->
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml
index 58565c4b89..29d5a7c6a7 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml
@@ -566,19 +566,37 @@
 		</for>
 	</skill>
 	<skill id="26046" levels="5" name="Rune of Experience Points">
-		<set name="target" val="TARGET_NONE" />
-		<set name="skillType" val="NOTDONE" />
+		<!-- Confirmed CT2.5 -->
+		<table name="#bonusExp"> 10 20 30 40 50 </table>
+		<set name="magicLvl" val="1" />
 		<set name="operateType" val="P" />
+		<set name="skillType" val="BUFF" />
+		<set name="target" val="TARGET_SELF" />
+		<for>
+			<add order="0x40" stat="bonusExp" val="#bonusExp" />
+		</for>
 	</skill>
 	<skill id="26047" levels="5" name="Rune of SP">
-		<set name="target" val="TARGET_NONE" />
-		<set name="skillType" val="NOTDONE" />
+		<!-- Confirmed CT2.5 -->
+		<table name="#bonusSp"> 10 20 30 40 50 </table>
+		<set name="magicLvl" val="1" />
 		<set name="operateType" val="P" />
+		<set name="skillType" val="BUFF" />
+		<set name="target" val="TARGET_SELF" />
+		<for>
+			<add order="0x40" stat="bonusSp" val="#bonusSp" />
+		</for>
 	</skill>
 	<skill id="26048" levels="5" name="Rune of Crystal Form">
-		<set name="target" val="TARGET_NONE" />
-		<set name="skillType" val="NOTDONE" />
+		<!-- Confirmed CT2.5 -->
+		<table name="#bonus"> 1 2 3 4 5 </table>
+		<set name="magicLvl" val="1" />
 		<set name="operateType" val="P" />
+		<set name="skillType" val="BUFF" />
+		<set name="target" val="TARGET_SELF" />
+		<for>
+			<effect name="CrystalGradeModify" abnormalTime="-1" val="#bonus" />
+		</for>
 	</skill>
 	<skill id="26049" levels="1" name="Rune of Feather">
 		<set name="target" val="TARGET_NONE" />
-- 
GitLab