From c4c6ffcb41aa73dcbf89b37aa901254ff3d77ffb Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Tue, 5 Jan 2016 13:36:39 +0000 Subject: [PATCH] Replacing elemental skill shortcuts. --- .../handlers/effecthandlers/FeohStance.java | 12 +++++++++++- .../l2jmobius/gameserver/model/ShortCuts.java | 19 +++++++++++++++++++ .../model/actor/instance/L2PcInstance.java | 10 ++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/trunk/dist/game/data/scripts/handlers/effecthandlers/FeohStance.java b/trunk/dist/game/data/scripts/handlers/effecthandlers/FeohStance.java index 29bb5007b4..a55542df5c 100644 --- a/trunk/dist/game/data/scripts/handlers/effecthandlers/FeohStance.java +++ b/trunk/dist/game/data/scripts/handlers/effecthandlers/FeohStance.java @@ -14,7 +14,6 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - package handlers.effecthandlers; import java.util.HashSet; @@ -26,6 +25,7 @@ import com.l2jmobius.gameserver.model.conditions.Condition; import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.skills.BuffInfo; import com.l2jmobius.gameserver.model.skills.Skill; +import com.l2jmobius.gameserver.network.serverpackets.ShortCutInit; /** * @author Ofelin @@ -91,6 +91,7 @@ public class FeohStance extends AbstractEffect final int skillLevel = player.getSkillLevel(skillId); player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId + 1, skillLevel), false); + player.replaceShortCuts(skillId, skillId + 1); } break; } @@ -102,6 +103,7 @@ public class FeohStance extends AbstractEffect final int skillLevel = player.getSkillLevel(skillId); player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId + 2, skillLevel), false); + player.replaceShortCuts(skillId, skillId + 2); } break; } @@ -113,6 +115,7 @@ public class FeohStance extends AbstractEffect final int skillLevel = player.getSkillLevel(skillId); player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId + 3, skillLevel), false); + player.replaceShortCuts(skillId, skillId + 3); } break; } @@ -124,11 +127,13 @@ public class FeohStance extends AbstractEffect final int skillLevel = player.getSkillLevel(skillId); player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId + 4, skillLevel), false); + player.replaceShortCuts(skillId, skillId + 4); } break; } } player.sendSkillList(); + player.sendPacket(new ShortCutInit(player)); } @Override @@ -145,6 +150,7 @@ public class FeohStance extends AbstractEffect final int skillLevel = player.getSkillLevel(skillId + 1); player.removeSkill(SkillData.getInstance().getSkill(skillId + 1, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); + player.replaceShortCuts(skillId + 1, skillId); } break; } @@ -156,6 +162,7 @@ public class FeohStance extends AbstractEffect final int skillLevel = player.getSkillLevel(skillId + 2); player.removeSkill(SkillData.getInstance().getSkill(skillId + 2, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); + player.replaceShortCuts(skillId + 2, skillId); } break; } @@ -167,6 +174,7 @@ public class FeohStance extends AbstractEffect final int skillLevel = player.getSkillLevel(skillId + 3); player.removeSkill(SkillData.getInstance().getSkill(skillId + 3, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); + player.replaceShortCuts(skillId + 3, skillId); } break; } @@ -178,10 +186,12 @@ public class FeohStance extends AbstractEffect final int skillLevel = player.getSkillLevel(skillId + 4); player.removeSkill(SkillData.getInstance().getSkill(skillId + 4, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); + player.replaceShortCuts(skillId + 4, skillId); } break; } } player.sendSkillList(); + player.sendPacket(new ShortCutInit(player)); } } diff --git a/trunk/java/com/l2jmobius/gameserver/model/ShortCuts.java b/trunk/java/com/l2jmobius/gameserver/model/ShortCuts.java index 335fa165af..5799240f84 100644 --- a/trunk/java/com/l2jmobius/gameserver/model/ShortCuts.java +++ b/trunk/java/com/l2jmobius/gameserver/model/ShortCuts.java @@ -292,4 +292,23 @@ public class ShortCuts implements IRestorable } } } + + /** + * Replace the shortcut icon with the new skill. + * @param skillId the skill Id to search. + * @param newSkillId the skill Id to replace. + */ + public void replaceShortCuts(int skillId, int newSkillId) + { + // Replace all the shortcuts with the new skill + for (Shortcut sc : _shortCuts.values()) + { + if ((sc.getId() == skillId) && (sc.getType() == ShortcutType.SKILL)) + { + final Shortcut newsc = new Shortcut(sc.getSlot(), sc.getPage(), sc.getType(), newSkillId, sc.getLevel(), 1); + _owner.sendPacket(new ShortCutRegister(newsc)); + _owner.registerShortCut(newsc); + } + } + } } diff --git a/trunk/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java b/trunk/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java index 0438fc77a4..89d2b12647 100644 --- a/trunk/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java +++ b/trunk/java/com/l2jmobius/gameserver/model/actor/instance/L2PcInstance.java @@ -1651,6 +1651,16 @@ public final class L2PcInstance extends L2Playable _shortCuts.updateShortCuts(skillId, skillLevel); } + /** + * Replace the shortcut icon with the new skill. + * @param skillId the skill Id to search. + * @param newSkillId the skill Id to replace. + */ + public void replaceShortCuts(int skillId, int newSkillId) + { + _shortCuts.replaceShortCuts(skillId, newSkillId); + } + /** * Delete the L2ShortCut corresponding to the position (page-slot) from the L2PcInstance _shortCuts. * @param slot