From c0b3c1d39350c6f37d23b8bd0704977ee63aeea1 Mon Sep 17 00:00:00 2001
From: MELERIX <MELERIX@users.noreply.github.com>
Date: Sat, 28 Apr 2012 08:03:42 +0000
Subject: [PATCH] BETA: DP-Part for [L5300].

---
 .../handlers/skillhandlers/FishingSkill.java  | 42 +++++++++++--------
 .../data/stats/items/fishing/fishingRods.xml  |  1 -
 .../game/data/stats/skills/01300-01399.xml    | 26 ++++++++----
 3 files changed, 42 insertions(+), 27 deletions(-)

diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/FishingSkill.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/FishingSkill.java
index e914d7d7c7..4d281f2647 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/FishingSkill.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/FishingSkill.java
@@ -14,11 +14,14 @@
  */
 package handlers.skillhandlers;
 
+import com.l2jserver.gameserver.datatables.FishingRodsData;
+import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.handler.ISkillHandler;
-import com.l2jserver.gameserver.model.L2Fishing;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.fishing.L2Fishing;
+import com.l2jserver.gameserver.model.fishing.L2FishingRod;
 import com.l2jserver.gameserver.model.items.L2Weapon;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
@@ -38,7 +41,9 @@ public class FishingSkill implements ISkillHandler
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
 		if (!(activeChar instanceof L2PcInstance))
+		{
 			return;
+		}
 		
 		L2PcInstance player = (L2PcInstance) activeChar;
 		
@@ -47,12 +52,12 @@ public class FishingSkill implements ISkillHandler
 		{
 			if (skill.getSkillType() == L2SkillType.PUMPING)
 			{
-				//Pumping skill is available only while fishing
+				// Pumping skill is available only while fishing
 				player.sendPacket(SystemMessageId.CAN_USE_PUMPING_ONLY_WHILE_FISHING);
 			}
 			else if (skill.getSkillType() == L2SkillType.REELING)
 			{
-				//Reeling skill is available only while fishing
+				// Reeling skill is available only while fishing
 				player.sendPacket(SystemMessageId.CAN_USE_REELING_ONLY_WHILE_FISHING);
 			}
 			player.sendPacket(ActionFailed.STATIC_PACKET);
@@ -60,35 +65,38 @@ public class FishingSkill implements ISkillHandler
 		}
 		L2Weapon weaponItem = player.getActiveWeaponItem();
 		L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
-		if (weaponInst == null || weaponItem == null)
+		if ((weaponInst == null) || (weaponItem == null))
+		{
 			return;
+		}
 		int SS = 1;
 		int pen = 0;
 		if (weaponInst.getChargedFishshot())
+		{
 			SS = 2;
-		double gradebonus = 1 + weaponItem.getCrystalType() * 0.1;
-		int dmg = (int) (skill.getPower() * gradebonus * SS);
-		if (player.getSkillLevel(1315) <= skill.getLevel() - 2) //1315 - Fish Expertise
-		{//Penalty
+		}
+		L2FishingRod fishingRod = FishingRodsData.getInstance().getFishingRod(weaponItem.getItemId());
+		double gradeBonus = fishingRod.getFishingRodLevel() * 0.1; // TODO: Check this formula (is guessed)
+		final L2Skill expertiseSkill = SkillTable.getInstance().getInfo(1315, player.getSkillLevel(1315));
+		int dmg = (int) ((fishingRod.getFishingRodDamage() + expertiseSkill.getPower() + skill.getPower()) * gradeBonus * SS);
+		// Penalty 5% less damage dealt
+		if (player.getSkillLevel(1315) <= (skill.getLevel() - 2)) // 1315 - Fish Expertise
+		{
 			player.sendPacket(SystemMessageId.REELING_PUMPING_3_LEVELS_HIGHER_THAN_FISHING_PENALTY);
-			pen = 50;
-			int penatlydmg = dmg - pen;
-			if (player.isGM())
-				player.sendMessage("Dmg w/o penalty = " + dmg);
-			dmg = penatlydmg;
+			pen = (int) (dmg * 0.05);
+			dmg = dmg - pen;
 		}
 		if (SS > 1)
 		{
 			weaponInst.setChargedFishshot(false);
 		}
-		if (skill.getSkillType() == L2SkillType.REELING)//Realing
+		if (skill.getSkillType() == L2SkillType.REELING)
 		{
-			fish.useRealing(dmg, pen);
+			fish.useReeling(dmg, pen);
 		}
 		else
-			//Pumping
 		{
-			fish.usePomping(dmg, pen);
+			fish.usePumping(dmg, pen);
 		}
 	}
 	
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/items/fishing/fishingRods.xml b/L2J_DataPack_BETA/dist/game/data/stats/items/fishing/fishingRods.xml
index e3ef6e3a5e..cbbc8a9110 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/items/fishing/fishingRods.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/items/fishing/fishingRods.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- TODO: Needs Support -->
 <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/fishingRods.xsd">
 	<fishingRod fishingRodId="1" fishingRodItemId="6529" fishingRodLevel="20" fishingRodName="Baby Duck Rod" fishingRodDamage="20.0" />
 	<fishingRod fishingRodId="2" fishingRodItemId="6530" fishingRodLevel="40" fishingRodName="Albatross Rod" fishingRodDamage="23.0" />
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/01300-01399.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/01300-01399.xml
index e52ba05edc..9418a397a5 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/01300-01399.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/01300-01399.xml
@@ -354,36 +354,44 @@
 			<using kind="Rod" />
 		</cond>
 	</skill>
-	<skill id="1313" levels="27" name="Pumping">
-		<table name="#power"> 24 37 50 62 70 76 82 88 94 100 104 107 110 113 116 119 121 124 127 130 133 136 139 142 145 149 155 </table>
+		<skill id="1313" levels="27" name="Pumping">
+		<!-- Confirmed CT2.5 -->
+		<table name="#power"> 0.66 0.9375 1.26 1.55 1.7 1.85 2 2.15 2.3 2.45 2.6 2.75 2.9 3.05 3.2 3.35 3.5 3.65 3.8 3.95 4.1 4.25 4.4 4.55 4.7 4.85 5 </table>
+		<set name="magicLvl" val="1" />
 		<set name="mpConsume" val="2" />
+		<set name="operateType" val="A1" />
 		<set name="power" val="#power" />
-		<set name="target" val="TARGET_SELF" />
 		<set name="reuseDelay" val="2000" />
 		<set name="skillType" val="PUMPING" />
-		<set name="operateType" val="A1" />
+		<set name="target" val="TARGET_SELF" />
 		<!-- TODO: Missing condition for "op_fishing_pumping" -->
 		<cond msgId="113" addName="1">
 			<using kind="Rod" />
 		</cond>
 	</skill>
 	<skill id="1314" levels="27" name="Reeling">
-		<table name="#power"> 24 37 50 62 70 76 82 88 94 100 104 107 110 113 116 119 121 124 127 130 133 136 139 142 145 149 155 </table>
+		<!-- Confirmed CT2.5 -->
+		<table name="#power"> 0.66 0.9375 1.26 1.55 1.7 1.85 2 2.15 2.3 2.45 2.6 2.75 2.9 3.05 3.2 3.35 3.5 3.65 3.8 3.95 4.1 4.25 4.4 4.55 4.7 4.85 5 </table>
+		<set name="magicLvl" val="1" />
 		<set name="mpConsume" val="2" />
+		<set name="operateType" val="A1" />
 		<set name="power" val="#power" />
-		<set name="target" val="TARGET_SELF" />
 		<set name="reuseDelay" val="2000" />
 		<set name="skillType" val="REELING" />
-		<set name="operateType" val="A1" />
+		<set name="target" val="TARGET_SELF" />
 		<!-- TODO: Missing condition for "op_fishing_reeling" -->
 		<cond msgId="113" addName="1">
 			<using kind="Rod" />
 		</cond>
 	</skill>
 	<skill id="1315" levels="27" name="Fishing Expertise">
-		<set name="target" val="TARGET_SELF" />
-		<set name="skillType" val="NOTDONE" />
+		<!-- TODO: Require Support -->
+		<table name="#power"> 0.66 0.9375 1.26 1.55 1.7 1.85 2 2.15 2.3 2.45 2.6 2.75 2.9 3.05 3.2 3.35 3.5 3.65 3.8 3.95 4.1 4.25 4.4 4.55 4.7 4.85 5 </table>
+		<set name="magicLvl" val="1" />
 		<set name="operateType" val="P" />
+		<set name="power" val="#power" />
+		<set name="skillType" val="BUFF" />
+		<set name="target" val="TARGET_SELF" />
 	</skill>
 	<skill id="1316" levels="1" name="Fishing Expertise: C Grade">
 		<!-- Confirmed CT2.5 -->
-- 
GitLab