public override void run() { L2Player player = getClient().CurrentPlayer; SortedList <int, TAcquireSkill> seq = player.ActiveSkillTree; if (!seq.ContainsKey(_id)) { player.sendActionFailed(); return; } TAcquireSkill skill = seq[_id]; if (skill.lv != _level) { player.sendActionFailed(); return; } AcquireSkillInfo asi = new AcquireSkillInfo(_id, _level, skill.lv_up_sp, _skillType); switch (_skillType) { case 0: case 1: { if (skill.itemid > 0) { asi._reqs.Add(new int[] { 4, skill.itemid, (int)skill.itemcount, 0 }); } } break; } player.sendPacket(asi); }
public override void run() { L2Player player = getClient().CurrentPlayer; SortedList <int, TAcquireSkill> seq = player.ActiveSkillTree; if (seq == null || !seq.ContainsKey(_id)) { player.sendActionFailed(); return; } TAcquireSkill e = seq[_id]; if (e.lv != _level) { player.sendActionFailed(); return; } if (e.lv_up_sp > player.SP) { player.sendSystemMessage(278); //You do not have enough SP to learn this skill. player.sendActionFailed(); return; } if (e.itemid > 0) { if (!player.hasItem(e.itemid, e.itemcount)) { player.sendSystemMessage(276); //You do not have the necessary materials or prerequisites to learn this skill. player.sendActionFailed(); return; } } if (e.lv_up_sp > 0) { player.SP -= e.lv_up_sp; StatusUpdate su = new StatusUpdate(player.ObjID); su.add(StatusUpdate.SP, player.SP); player.sendPacket(su); } player.Inventory.destroyItem(e.itemid, e.itemcount, true, true); TSkill skill = TSkillTable.getInstance().get(e.id, e.lv); if (skill != null) { player.addSkill(skill, true, true); } else { player.sendMessage("failed to learn null skill"); player.sendActionFailed(); return; } if (_level > 1) { bool upd = false; lock (player._shortcuts) { foreach (L2Shortcut sc in player._shortcuts) { if (sc.Type == L2Shortcut.TYPE_SKILL && sc.Id == _id) { sc.Level = _level; upd = true; } } } if (upd) { player.sendPacket(new ShortCutInit(player)); } } player.ActiveSkillTree.Remove(_id); player.FolkNpc.showAvailRegularSkills(player, true); }