From 1caafd7cf2b25fb7a97f957d961d59d6effd4f5e Mon Sep 17 00:00:00 2001
From: Zoey76 <zoey_76@msn.com>
Date: Fri, 23 Aug 2013 21:33:19 +0000
Subject: [PATCH] BETA: Datapack part for [L6169]: 	* Fixed SummonCubic
 effect. 	* Fixed parameter name for cubic ID.

---
 .../handlers/effecthandlers/SummonCubic.java  | 29 ++++++++++++-------
 .../game/data/stats/skills/00000-00099.xml    | 14 ++++-----
 .../game/data/stats/skills/00200-00299.xml    |  4 +--
 .../game/data/stats/skills/00400-00499.xml    |  4 +--
 .../game/data/stats/skills/00700-00799.xml    | 10 +++----
 .../game/data/stats/skills/01200-01299.xml    | 12 ++++----
 .../game/data/stats/skills/01300-01399.xml    | 12 ++++----
 .../game/data/stats/skills/04300-04399.xml    |  2 +-
 8 files changed, 48 insertions(+), 39 deletions(-)

diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SummonCubic.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SummonCubic.java
index 2e195d0bf8..a659ff0499 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SummonCubic.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SummonCubic.java
@@ -32,7 +32,8 @@ import com.l2jserver.util.Rnd;
  */
 public class SummonCubic extends L2Effect
 {
-	private final int _npcId;
+	/** Cubic ID. */
+	private final int _cubicId;
 	/** Cubic power. */
 	private final int _cubicPower;
 	/** Cubic duration. */
@@ -47,7 +48,7 @@ public class SummonCubic extends L2Effect
 	public SummonCubic(Env env, EffectTemplate template)
 	{
 		super(env, template);
-		_npcId = template.getParameters().getInteger("npcId", 0);
+		_cubicId = template.getParameters().getInteger("cubicId", -1);
 		// Custom AI data.
 		_cubicPower = template.getParameters().getInteger("cubicPower", 0);
 		_cubicDuration = template.getParameters().getInteger("cubicDuration", 0);
@@ -76,9 +77,9 @@ public class SummonCubic extends L2Effect
 			return false;
 		}
 		
-		if (_npcId <= 0)
+		if (_cubicId < 0)
 		{
-			_log.warning(SummonCubic.class.getSimpleName() + ": Invalid NPC Id:" + _npcId + " in skill Id: " + getSkill().getId());
+			_log.warning(SummonCubic.class.getSimpleName() + ": Invalid Cubic Id:" + _cubicId + " in skill Id: " + getSkill().getId());
 			return false;
 		}
 		
@@ -100,24 +101,32 @@ public class SummonCubic extends L2Effect
 		}
 		
 		// If cubic is already present, it's replaced.
-		final L2CubicInstance cubic = player.getCubicById(_npcId);
+		final L2CubicInstance cubic = player.getCubicById(_cubicId);
 		if (cubic != null)
 		{
 			cubic.stopAction();
 			cubic.cancelDisappear();
-			player.getCubics().remove(cubic);
+			player.getCubics().remove(_cubicId);
 		}
 		else
 		{
 			// If maximum amount is reached, random cubic is removed.
 			final L2Effect cubicMastery = player.getFirstPassiveEffect(L2EffectType.CUBIC_MASTERY);
-			final int cubicCount = (int) (cubicMastery != null ? cubicMastery.calc() : 0);
-			if (player.getCubics().size() > cubicCount)
+			// Players with no mastery can have only one cubic.
+			final int allowedCubicCount = (int) (cubicMastery != null ? cubicMastery.calc() : 1);
+			final int currentCubicCount = player.getCubics().size();
+			// Extra cubics are removed, one by one, randomly.
+			for (int i = 0; i <= (currentCubicCount - allowedCubicCount); i++)
 			{
-				player.getCubics().remove(Rnd.get(player.getCubics().size()));
+				final int removedCubicId = (int) player.getCubics().keySet().toArray()[Rnd.get(currentCubicCount)];
+				final L2CubicInstance removedCubic = player.getCubicById(removedCubicId);
+				removedCubic.stopAction();
+				removedCubic.cancelDisappear();
+				player.getCubics().remove(removedCubic.getId());
 			}
 		}
-		player.addCubic(_npcId, _cubicSkillLevel, _cubicPower, _cubicDelay, _cubicSkillChance, _cubicMaxCount, _cubicDuration, getEffected() != getEffector());
+		// Adding a new cubic.
+		player.addCubic(_cubicId, _cubicSkillLevel, _cubicPower, _cubicDelay, _cubicSkillChance, _cubicMaxCount, _cubicDuration, getEffected() != getEffector());
 		player.broadcastUserInfo();
 		return true;
 	}
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 3e41deb6c1..fff2413986 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
@@ -392,12 +392,12 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="1" cubicDelay="10" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="12" cubicPower="#cubicPower" />
+				<param cubicId="1" cubicDelay="10" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="12" cubicPower="#cubicPower" />
 			</effect>
 		</for>
 		<enchant1for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="1" cubicDelay="10" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="12" cubicPower="#ench1Power" />
+				<param cubicId="1" cubicDelay="10" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="12" cubicPower="#ench1Power" />
 			</effect>
 		</enchant1for>
 	</skill>
@@ -724,12 +724,12 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="2" cubicDelay="15" cubicDuration="900" cubicMaxCount="20" cubicSkillChance="8" cubicPower="#cubicPower" />
+				<param cubicId="2" cubicDelay="15" cubicDuration="900" cubicMaxCount="20" cubicSkillChance="8" cubicPower="#cubicPower" />
 			</effect>
 		</for>
 		<enchant1for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="2" cubicDelay="15" cubicDuration="900" cubicMaxCount="20" cubicSkillChance="8" cubicPower="#ench1Power" />
+				<param cubicId="2" cubicDelay="15" cubicDuration="900" cubicMaxCount="20" cubicSkillChance="8" cubicPower="#ench1Power" />
 			</effect>
 		</enchant1for>
 	</skill>
@@ -975,13 +975,13 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="5" cubicDelay="8" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" cubicPower="#cubicPower" />
+				<param cubicId="5" cubicDelay="8" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" cubicPower="#cubicPower" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</for>
 		<enchant1for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="5" cubicDelay="8" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" cubicPower="#ench1Power" />
+				<param cubicId="5" cubicDelay="8" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" cubicPower="#ench1Power" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</enchant1for>
@@ -1562,7 +1562,7 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="3" cubicDelay="13" cubicDuration="900" cubicMaxCount="20" cubicSkillChance="0" />
+				<param cubicId="3" cubicDelay="13" cubicDuration="900" cubicMaxCount="20" cubicSkillChance="0" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</for>
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 0ec7c84ed4..234a0e3edb 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
@@ -2067,12 +2067,12 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="4" cubicDelay="20" cubicDuration="900" cubicMaxCount="15" cubicSkillChance="20" cubicPower="#cubicPower" />
+				<param cubicId="4" cubicDelay="20" cubicDuration="900" cubicMaxCount="15" cubicSkillChance="20" cubicPower="#cubicPower" />
 			</effect>
 		</for>
 		<enchant1for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="4" cubicDelay="20" cubicDuration="900" cubicMaxCount="15" cubicSkillChance="20" cubicPower="#ench1Power" />
+				<param cubicId="4" cubicDelay="20" cubicDuration="900" cubicMaxCount="15" cubicSkillChance="20" cubicPower="#ench1Power" />
 			</effect>
 		</enchant1for>
 	</skill>
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 7d4d10c03f..8b81423f40 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
@@ -1692,13 +1692,13 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="9" cubicDelay="8" cubicDuration="900" cubicMaxCount="300" cubicSkillChance="50" cubicPower="#cubicPower" />
+				<param cubicId="9" cubicDelay="8" cubicDuration="900" cubicMaxCount="300" cubicSkillChance="50" cubicPower="#cubicPower" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</for>
 		<enchant1for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="9" cubicDelay="8" cubicDuration="900" cubicMaxCount="300" cubicSkillChance="50" cubicPower="#ench1Power" />
+				<param cubicId="9" cubicDelay="8" cubicDuration="900" cubicMaxCount="300" cubicSkillChance="50" cubicPower="#ench1Power" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</enchant1for>
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 0f5ddbefe6..c457ae6a82 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
@@ -1957,7 +1957,7 @@
 		<set name="targetType" val="SELF" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="10" cubicDelay="10" cubicDuration="900" cubicMaxCount="50" cubicSkillChance="30" cubicPower="2106" />
+				<param cubicId="10" cubicDelay="10" cubicDuration="900" cubicMaxCount="50" cubicSkillChance="30" cubicPower="2106" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</for>
@@ -1977,7 +1977,7 @@
 		<set name="targetType" val="SELF" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="11" cubicDelay="10" cubicDuration="900" cubicMaxCount="50" cubicSkillChance="30" cubicPower="2106" />
+				<param cubicId="11" cubicDelay="10" cubicDuration="900" cubicMaxCount="50" cubicSkillChance="30" cubicPower="2106" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</for>
@@ -1997,7 +1997,7 @@
 		<set name="targetType" val="SELF" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="12" cubicDelay="10" cubicDuration="900" cubicMaxCount="50" cubicSkillChance="30" cubicPower="2106" />
+				<param cubicId="12" cubicDelay="10" cubicDuration="900" cubicMaxCount="50" cubicSkillChance="30" cubicPower="2106" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</for>
@@ -2017,7 +2017,7 @@
 		<set name="targetType" val="SELF" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="13" cubicDelay="10" cubicDuration="900" cubicMaxCount="50" cubicSkillChance="30" cubicPower="2106" />
+				<param cubicId="13" cubicDelay="10" cubicDuration="900" cubicMaxCount="50" cubicSkillChance="30" cubicPower="2106" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</for>
@@ -2037,7 +2037,7 @@
 		<set name="targetType" val="SELF" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="14" cubicDelay="10" cubicDuration="900" cubicMaxCount="50" cubicSkillChance="30" cubicPower="2106" />
+				<param cubicId="14" cubicDelay="10" cubicDuration="900" cubicMaxCount="50" cubicSkillChance="30" cubicPower="2106" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</for>
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/01200-01299.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/01200-01299.xml
index 20004a3cc5..cd5f186c78 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/01200-01299.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/01200-01299.xml
@@ -2641,12 +2641,12 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="6" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="12" cubicPower="#cubicPower" />
+				<param cubicId="6" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="12" cubicPower="#cubicPower" />
 			</effect>
 		</for>
 		<enchant1for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="6" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="12" cubicPower="#ench1Power" />
+				<param cubicId="6" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="12" cubicPower="#ench1Power" />
 			</effect>
 		</enchant1for>
 	</skill>
@@ -2673,12 +2673,12 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="7" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="30" cubicPower="#cubicPower" />
+				<param cubicId="7" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="30" cubicPower="#cubicPower" />
 			</effect>
 		</for>
 		<enchant1for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="7" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="30" cubicPower="#ench1Power" />
+				<param cubicId="7" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="30" cubicPower="#ench1Power" />
 			</effect>
 		</enchant1for>
 	</skill>
@@ -2705,12 +2705,12 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="8" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="12" cubicPower="#cubicPower" />
+				<param cubicId="8" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="12" cubicPower="#cubicPower" />
 			</effect>
 		</for>
 		<enchant1for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="8" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="12" cubicPower="#ench1Power" />
+				<param cubicId="8" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="12" cubicPower="#ench1Power" />
 			</effect>
 		</enchant1for>
 	</skill>
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 cfb1e88751..0e525c6bf9 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
@@ -657,12 +657,12 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="1" cubicDelay="10" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="12" cubicPower="#cubicPower" />
+				<param cubicId="1" cubicDelay="10" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="12" cubicPower="#cubicPower" />
 			</effect>
 		</for>
 		<enchant1for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="1" cubicDelay="10" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="12" cubicPower="#ench1Power" />
+				<param cubicId="1" cubicDelay="10" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="12" cubicPower="#ench1Power" />
 			</effect>
 		</enchant1for>
 	</skill>
@@ -690,12 +690,12 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="7" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="30" cubicPower="#cubicPower" />
+				<param cubicId="7" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="30" cubicPower="#cubicPower" />
 			</effect>
 		</for>
 		<enchant1for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="7" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="30" cubicPower="#ench1Power" />
+				<param cubicId="7" cubicDelay="30" cubicDuration="900" cubicMaxCount="10" cubicSkillChance="30" cubicPower="#ench1Power" />
 			</effect>
 		</enchant1for>
 	</skill>
@@ -723,13 +723,13 @@
 		<enchant1 name="magicLvl" val="#enchMagicLvl" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="5" cubicDelay="8" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" cubicPower="#cubicPower" />
+				<param cubicId="5" cubicDelay="8" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" cubicPower="#cubicPower" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</for>
 		<enchant1for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="5" cubicDelay="8" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" cubicPower="#ench1Power" />
+				<param cubicId="5" cubicDelay="8" cubicDuration="900" cubicMaxCount="30" cubicSkillChance="30" cubicPower="#ench1Power" />
 				<param cubicSkill1Chance="33" cubicSkill2Chance="33" cubicSkill3Chance="33" />
 			</effect>
 		</enchant1for>
diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/04300-04399.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/04300-04399.xml
index 373e525bf3..3d3d708caf 100644
--- a/L2J_DataPack_BETA/dist/game/data/stats/skills/04300-04399.xml
+++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/04300-04399.xml
@@ -562,7 +562,7 @@
 		<set name="targetType" val="SELF" />
 		<for>
 			<effect name="SummonCubic" noicon="1" val="0">
-				<param npcId="3" cubicDelay="13" cubicDuration="3600" cubicMaxCount="20" />
+				<param cubicId="3" cubicDelay="13" cubicDuration="3600" cubicMaxCount="20" />
 				<param cubicSkill1Chance="13" cubicSkill2Chance="33" cubicSkill3Chance="53" />
 			</effect>
 		</for>
-- 
GitLab