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 2e195d0bf81b19f9c3f9c8cc32969eef8ca87af1..a659ff049903e02d43ec163b3855d91d2fa01dd4 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 3e41deb6c1fb5ca19bb796e355576706762a6537..fff241398621c0c83504b366949c88b8685c517f 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 0ec7c84ed4d309640f5afe3724d7559dbcfd8868..234a0e3edbd8b0d9b559da36f049a3d9fb08ceb5 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 7d4d10c03f087019323dd96837ba7e553116cf88..8b81423f4084e69ffb14a8c688984a87d62a8a2c 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 0f5ddbefe695666738cf1dddf4d19fa54c4b0365..c457ae6a821639e33f49057cca2951482266ee8b 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 20004a3cc5ed6aa509e0e378d2678171ccce4c72..cd5f186c78664f0e76caaa61ec089cab5685db02 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 cfb1e887515abbf0e51efa152627f70e5689b18a..0e525c6bf96e65bce78cb7781f9894f4281dc081 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 373e525bf347d352f7313cd1153c550f63599169..3d3d708caf549ff00543f9845a78fec3f51540e2 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>