Replacing elemental skill shortcuts.

This commit is contained in:
MobiusDev
2016-01-05 13:36:39 +00:00
parent 1e116574b8
commit c4c6ffcb41
3 changed files with 40 additions and 1 deletions

View File

@@ -14,7 +14,6 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.HashSet; 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.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.skills.BuffInfo; import com.l2jmobius.gameserver.model.skills.BuffInfo;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.serverpackets.ShortCutInit;
/** /**
* @author Ofelin * @author Ofelin
@@ -91,6 +91,7 @@ public class FeohStance extends AbstractEffect
final int skillLevel = player.getSkillLevel(skillId); final int skillLevel = player.getSkillLevel(skillId);
player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false);
player.addSkill(SkillData.getInstance().getSkill(skillId + 1, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId + 1, skillLevel), false);
player.replaceShortCuts(skillId, skillId + 1);
} }
break; break;
} }
@@ -102,6 +103,7 @@ public class FeohStance extends AbstractEffect
final int skillLevel = player.getSkillLevel(skillId); final int skillLevel = player.getSkillLevel(skillId);
player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false);
player.addSkill(SkillData.getInstance().getSkill(skillId + 2, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId + 2, skillLevel), false);
player.replaceShortCuts(skillId, skillId + 2);
} }
break; break;
} }
@@ -113,6 +115,7 @@ public class FeohStance extends AbstractEffect
final int skillLevel = player.getSkillLevel(skillId); final int skillLevel = player.getSkillLevel(skillId);
player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false);
player.addSkill(SkillData.getInstance().getSkill(skillId + 3, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId + 3, skillLevel), false);
player.replaceShortCuts(skillId, skillId + 3);
} }
break; break;
} }
@@ -124,11 +127,13 @@ public class FeohStance extends AbstractEffect
final int skillLevel = player.getSkillLevel(skillId); final int skillLevel = player.getSkillLevel(skillId);
player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.removeSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false);
player.addSkill(SkillData.getInstance().getSkill(skillId + 4, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId + 4, skillLevel), false);
player.replaceShortCuts(skillId, skillId + 4);
} }
break; break;
} }
} }
player.sendSkillList(); player.sendSkillList();
player.sendPacket(new ShortCutInit(player));
} }
@Override @Override
@@ -145,6 +150,7 @@ public class FeohStance extends AbstractEffect
final int skillLevel = player.getSkillLevel(skillId + 1); final int skillLevel = player.getSkillLevel(skillId + 1);
player.removeSkill(SkillData.getInstance().getSkill(skillId + 1, skillLevel), false); player.removeSkill(SkillData.getInstance().getSkill(skillId + 1, skillLevel), false);
player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false);
player.replaceShortCuts(skillId + 1, skillId);
} }
break; break;
} }
@@ -156,6 +162,7 @@ public class FeohStance extends AbstractEffect
final int skillLevel = player.getSkillLevel(skillId + 2); final int skillLevel = player.getSkillLevel(skillId + 2);
player.removeSkill(SkillData.getInstance().getSkill(skillId + 2, skillLevel), false); player.removeSkill(SkillData.getInstance().getSkill(skillId + 2, skillLevel), false);
player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false);
player.replaceShortCuts(skillId + 2, skillId);
} }
break; break;
} }
@@ -167,6 +174,7 @@ public class FeohStance extends AbstractEffect
final int skillLevel = player.getSkillLevel(skillId + 3); final int skillLevel = player.getSkillLevel(skillId + 3);
player.removeSkill(SkillData.getInstance().getSkill(skillId + 3, skillLevel), false); player.removeSkill(SkillData.getInstance().getSkill(skillId + 3, skillLevel), false);
player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false);
player.replaceShortCuts(skillId + 3, skillId);
} }
break; break;
} }
@@ -178,10 +186,12 @@ public class FeohStance extends AbstractEffect
final int skillLevel = player.getSkillLevel(skillId + 4); final int skillLevel = player.getSkillLevel(skillId + 4);
player.removeSkill(SkillData.getInstance().getSkill(skillId + 4, skillLevel), false); player.removeSkill(SkillData.getInstance().getSkill(skillId + 4, skillLevel), false);
player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false); player.addSkill(SkillData.getInstance().getSkill(skillId, skillLevel), false);
player.replaceShortCuts(skillId + 4, skillId);
} }
break; break;
} }
} }
player.sendSkillList(); player.sendSkillList();
player.sendPacket(new ShortCutInit(player));
} }
} }

View File

@@ -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);
}
}
}
} }

View File

@@ -1651,6 +1651,16 @@ public final class L2PcInstance extends L2Playable
_shortCuts.updateShortCuts(skillId, skillLevel); _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. * Delete the L2ShortCut corresponding to the position (page-slot) from the L2PcInstance _shortCuts.
* @param slot * @param slot