private void petCast(L2Player player, int npcId, int id, int lv, int maxLv = 1) { if (player.Summon == null || !(player.Summon is L2Pet)) { player.sendActionFailed(); return; } //if (player.Summon.Template.NpcId != npcId) //{ // player.sendActionFailed(); // return; //} TSkill skill = TSkillTable.getInstance().get(id, lv); if (skill != null) { player.Summon.ChangeTarget(player.CurrentTarget); int result = player.Summon.castSkill(skill); Console.WriteLine("pet cast result " + result); } else { CLogger.error("pet " + npcId + " used null skill " + id + "-" + lv); } }
protected internal override void use(L2Player admin, string alias) { //setskill [skill_id] [skill_lvl] -- дает скилл [skill_id] уровня [skill_lvl] выбранному чару int id = int.Parse(alias.Split(' ')[1]); int lvl = int.Parse(alias.Split(' ')[2]); TSkill skill = TSkillTable.getInstance().get(id, lvl); if (skill == null) { admin.sendMessage("Skill " + id + "/" + lvl + " is missing."); } else { L2Player target; if (admin.CurrentTarget != null && admin.CurrentTarget is L2Player) { target = (L2Player)admin.CurrentTarget; } else { target = admin; } target.addSkill(skill, true, true); admin.sendMessage(target.Name + " has received skill " + id + "/" + lvl); } }
public heal_cubic(int id, byte lv, int skillId, int skilllv, int duration = 900) { this.id = id; this.level = lv; this.skill1 = TSkillTable.getInstance().get(skillId, skilllv); this.delay = 13; this.duration = duration; this.max_count = 20; }
public BuffForQuestReward(L2Citizen npc, L2Character target, int skillId) { this.npc = npc; this.cha = target; this.skillId = skillId; skill = TSkillTable.getInstance().get(skillId); cha.broadcastPacket(new MagicSkillUse(npc, cha, skill, skill.skill_hit_time)); new Thread(Run).Start(); }
private void calcEffect(L2Character character) { if (EffectID != -1) { TSkill skill = TSkillTable.getInstance().get(EffectID, EffectLv); if (skill == null) { CLogger.error("ItemHandler: item " + id + " with null effect " + EffectID + "/" + EffectLv); return; } character.addAbnormal(skill, character, true, false); character.broadcastPacket(new MagicSkillUse(character, character, skill, 100)); } }
private void ShowEtcSkillList(L2Player talker, int type) { TAcquireSkillsEntry skills = TSkillTable.getInstance().getPledgeSkills(); SortedList <int, TAcquireSkill> avail = new SortedList <int, TAcquireSkill>(); int nextLvl = 800; foreach (TAcquireSkill e in skills.skills) { if (e.get_lv > talker.Clan.Level) { if (nextLvl > e.get_lv) { nextLvl = e.get_lv; } continue; } if (avail.ContainsKey(e.id)) { continue; } if (talker.Clan.MainSkill.ContainsKey(e.id)) { if (talker.Clan.MainSkill[e.id] >= e.lv) { continue; } if (!avail.ContainsKey(e.id)) { avail.Add(e.id, e); break; } } else { avail.Add(e.id, e); } } talker.ActiveSkillTree = avail; talker.sendPacket(new AcquireSkillList(AcquireSkillList.ESTT_CLAN, talker)); }
public virtual void onTransformStart(L2Player player) { player.TransformID = id; player.MountType = MoveMode; player.MountedTemplate = NpcTable.getInstance().getNpcTemplate(npcId); player.broadcastUserInfo(); if (_skills != null && _skills.Count > 0) { foreach (int[] s in _skills) { TSkill sk = TSkillTable.getInstance().get(s[0], s[1]); if (sk != null) { player.addSkill(sk, false, false); } } player.updateSkillList(); } }
public void addMultiSkills(string value) { if (multiSkills == null) { multiSkills = new List <TSkill>(); } foreach (string v in value.Split(';')) { TSkill sk = TSkillTable.getInstance().get(int.Parse(v.Split('-')[0]), int.Parse(v.Split('-')[1])); if (sk != null) { multiSkills.Add(sk); } } if (multiSkills.Count == 0) { multiSkills = null; } }
public override void onActionClicked(L2Player player, playable.L2Summon pet, int id) { string value = null; switch (id) { case 1013: value = "DeBuff1"; break; case 1014: value = "DeBuff2"; break; case 1015: value = "Heal"; break; default: if (id == getValueInt("buff_action3")) { value = "buff3"; } else if (id == getValueInt("buff_action4")) { value = "buff4"; } else if (id == getValueInt("buff_action5")) { value = "buff5"; } break; } if (value != null) { int[] skill = getValueSkill(value); pet.castSkill(TSkillTable.getInstance().get(skill[0], skill[1])); } }
private void calcSkill(L2Character character) { if (SkillID != -1) { TSkill skill = TSkillTable.getInstance().get(SkillID, SkillLv); if (skill == null) { CLogger.error("ItemHandler: item " + id + " with null skill " + SkillID + "/" + SkillLv); return; } if (character is L2Player) { ((L2Player)character).castSkill(skill, false, false); } else { character.castSkill(skill); } } }
public CubicController() { //heal_cubic byte lv = 1; for (byte a = 1; a <= 16; a++) { if (lv == 8) { lv = 101; } register(new heal_cubic(3, lv, 4051, a)); lv++; } //nub heal register(new heal_cubic(3, 20, 4051, 20, 3600)); register(new smart_cubic() { id = 10, delay = 10, max_count = 50, power = 2106, skill1 = TSkillTable.getInstance().get(4165, 9), skill1rate = 25, skill2 = TSkillTable.getInstance().get(4053, 8), skill2rate = 25, skill3 = TSkillTable.getInstance().get(5579, 1), skill3rate = 50, skill3target = "master" }); register(new smart_cubic() { id = 11, delay = 10, max_count = 50, power = 2106, skill1 = TSkillTable.getInstance().get(5115, 4), skill1rate = 40, skill2 = TSkillTable.getInstance().get(4049, 8), skill2rate = 15, skill3 = TSkillTable.getInstance().get(5579, 1), skill3rate = 45, skill3target = "master" }); register(new smart_cubic() { id = 12, delay = 13, max_count = 50, power = 2106, skill1 = TSkillTable.getInstance().get(4165, 9), skill1rate = 20, skill2 = TSkillTable.getInstance().get(4051, 1), skill2rate = 30, skill2target = "heal", skill3 = TSkillTable.getInstance().get(5579, 1), skill3rate = 50, skill3target = "master" }); register(new smart_cubic() { id = 13, delay = 13, max_count = 50, power = 2106, skill1 = TSkillTable.getInstance().get(4049, 8), skill1rate = 25, skill2 = TSkillTable.getInstance().get(4166, 9), skill2rate = 25, skill3 = TSkillTable.getInstance().get(5579, 1), skill3rate = 50, skill3target = "master" }); register(new smart_cubic() { id = 14, delay = 13, max_count = 50, power = 2106, skill1 = TSkillTable.getInstance().get(4049, 8), skill1rate = 30, skill2 = TSkillTable.getInstance().get(4052, 6), skill2rate = 20, skill3 = TSkillTable.getInstance().get(5579, 1), skill3rate = 50, skill3target = "master" }); }
public void Validate(L2Player owner) { byte set1sum = 0, set2sum = 0, set3sum = 0; foreach (L2Item item in owner.Inventory.Items.Values) { if (item._isEquipped == 0 || item.Template.Type != ItemTemplate.L2ItemType.armor) { continue; } switch (item.Template.Bodypart) { case ItemTemplate.L2ItemBodypart.chest: case ItemTemplate.L2ItemBodypart.onepiece: { if (armorId == item.Template.ItemID) { set1sum++; if (item.Enchant >= 6) { set3sum++; } break; } } break; case ItemTemplate.L2ItemBodypart.legs: { if (legs != null) { foreach (int id in legs) { if (id == item.Template.ItemID) { set1sum++; if (item.Enchant >= 6) { set3sum++; } break; } } } } break; case ItemTemplate.L2ItemBodypart.head: { if (helms != null) { foreach (int id in helms) { if (id == item.Template.ItemID) { set1sum++; if (item.Enchant >= 6) { set3sum++; } break; } } } } break; case ItemTemplate.L2ItemBodypart.gloves: { if (gloves != null) { foreach (int id in gloves) { if (id == item.Template.ItemID) { set1sum++; if (item.Enchant >= 6) { set3sum++; } break; } } } } break; case ItemTemplate.L2ItemBodypart.feet: { if (boots != null) { foreach (int id in boots) { if (id == item.Template.ItemID) { set1sum++; if (item.Enchant >= 6) { set3sum++; } break; } } } } break; case ItemTemplate.L2ItemBodypart.lhand: { if (shields != null) { foreach (int id in shields) { if (id == item.Template.ItemID) { set2sum = 1; // if (item.Enchant >= 6) // set3sum++; break; } } } } break; } } byte cnt = count(); Console.WriteLine("set validation: cnt " + cnt + ", s1 " + set1sum + ", s2 " + set2sum + ", s3 " + set3sum); if (cnt == set1sum) // весь сет { owner.addSkill(TSkillTable.getInstance().get(set1Id, set1Lvl), false, false); if (set2sum == 1) //со щитом { owner.addSkill(TSkillTable.getInstance().get(set2Id, set2Lvl), false, false); } if (set3sum == cnt) //весь сет +6 { owner.addSkill(TSkillTable.getInstance().get(set3Id, set3Lvl), false, false); } owner.updateSkillList(); } }
protected internal override void use(L2Player admin, string alias) { if (!(admin.CurrentTarget is L2Player)) { admin.sendMessage("target is not a player."); return; } L2Player target = admin.CurrentTarget as L2Player; TAcquireSkillsEntry skills = TSkillTable.getInstance().getAllRegularSkills(target.ActiveClass.ClassId.Id); SortedList <int, TAcquireSkill> avail = new SortedList <int, TAcquireSkill>(); Dictionary <int, int> updDel = new Dictionary <int, int>(); int nextLvl = 800; foreach (TAcquireSkill e in skills.skills) { if (e.get_lv > target.Level) { if (nextLvl > e.get_lv) { nextLvl = e.get_lv; } continue; } if (avail.ContainsKey(e.id)) { continue; } if (target._skills.ContainsKey(e.id)) { TSkill skill = target._skills[e.id]; if (skill.level >= e.lv) { continue; } if (!avail.ContainsKey(e.id)) { avail.Add(e.id, e); updDel.Add(e.id, e.lv); break; } } else { avail.Add(e.id, e); } } //foreach (int a in updDel.Keys) // target.removeSkill(a, true, false); //updDel.Clear(); foreach (TAcquireSkill sk in avail.Values) { TSkill skill = TSkillTable.getInstance().get(sk.id, sk.lv); if (skill != null) { target.addSkill(skill, false, false); } else { target.sendMessage("no skill #" + sk.id + "-" + sk.lv); } } target.ActiveSkillTree = avail; target.sendPacket(new AcquireSkillList(0, target)); target.updateSkillList(); target.sendMessage("gor all skills [" + skills.skills.Count + "][" + avail.Count + "] for lv" + target.Level + ", class @" + target.ActiveClass.ClassId.Id.ToString()); }
public void showAvailRegularSkills(L2Player player, bool backward) { SortedList <int, TAcquireSkill> list; if (player.ActiveSkillTree != null) { list = player.ActiveSkillTree; } else { list = new SortedList <int, TAcquireSkill>(); } int nextLvl = 800; foreach (TAcquireSkill e in TSkillTable.getInstance().getAllRegularSkills(player.ActiveClass.ClassId.Id).skills) { if (e.get_lv > player.Level) { if (nextLvl > e.get_lv) { nextLvl = e.get_lv; } continue; } if (list.ContainsKey(e.id)) { continue; } if (player._skills.ContainsKey(e.id)) { TSkill skill = player._skills[e.id]; if (skill.level >= e.lv) { continue; } if (!list.ContainsKey(e.id)) { list.Add(e.id, e); break; } } else { list.Add(e.id, e); } } if (list.Count == 0) { if (backward) { list.Clear(); player.ActiveSkillTree = list; player.sendPacket(new AcquireSkillList(AcquireSkillList.ESTT_NORMAL, player)); } if (nextLvl != 800) { //You do not have any further skills to learn. Come back when you have reached Level $s1. player.sendPacket(new SystemMessage(607).addNumber(nextLvl)); } else { //There are no other skills to learn. player.sendSystemMessage(750); } player.sendActionFailed(); return; } player.ActiveSkillTree = list; player.sendPacket(new AcquireSkillList(AcquireSkillList.ESTT_NORMAL, player)); player.FolkNpc = this; }
public void addItemEnch4(string value) { item_skill_ench4 = TSkillTable.getInstance().get(int.Parse(value.Split('-')[0]), int.Parse(value.Split('-')[1])); }
public void setUnequipSkill(string value) { unequip_skill = TSkillTable.getInstance().get(int.Parse(value.Split('-')[0]), int.Parse(value.Split('-')[1])); }
private short useBuff(int reply, L2Player player) { int id = 0, lvl = 1; switch (reply) // id * 65536 + level { case 285540353: //Ускорение Ур.1 id = 4357; break; case 285540354: //Ускорение Ур.2 id = 4357; lvl = 2; break; case 284557313: //Легкая Походка Ур.1 id = 4342; break; case 284557314: //Легкая Походка Lv.2 id = 4342; lvl = 2; break; case 284622849: //Легкость Ур.1 id = 4343; break; case 284622851: //Легкость Lv.3 id = 4343; lvl = 3; break; case 284688385: //Щит Ур.1 id = 4344; break; case 284688387: //Щит Ур. 3 id = 4344; lvl = 3; break; case 284819457: //Ментальный Щит Ур.1 id = 4346; break; case 284819460: //Ментальный Щит Ур.4 id = 4346; lvl = 4; break; case 284753921: //Могущество Ур.1 id = 4345; break; case 284753923: //Могущество Ур.3 id = 4345; lvl = 3; break; case 284884994: //Благословение Тела Ур.2 id = 4347; lvl = 2; break; case 284884998: //Благословенное Тело Ур.6 id = 4347; lvl = 6; break; case 285016065: //Магический Барьер Ур.1 id = 4349; break; case 285016066: //Магический Барьер Ур.2 id = 4349; lvl = 2; break; case 285081601: //Сопротивление Оглушению Ур.1 id = 4350; break; case 285081604: //Сопротивление Оглушению Ур.4 id = 4350; lvl = 4; break; case 284950530: //Благословение Души Ур.2 id = 4348; lvl = 2; break; case 284950534: //Благословенная Душа Ур.6 id = 4348; lvl = 6; break; case 285147138: //Концентрация Ур.2 id = 4351; lvl = 2; break; case 285147142: //Концентрация Ур.6 id = 4351; lvl = 6; break; case 285212673: //Дух Берсерка Ур.1 id = 4352; break; case 285212674: //Дух Берсерка Ур.2 id = 4352; lvl = 2; break; case 285278210: //Благословленный Щит Ур.2 id = 4353; lvl = 2; break; case 285278214: //Благословенный Щит Ур.6 id = 4353; lvl = 6; break; case 285605889: //Наведение Ур.1 id = 4358; break; case 285605891: //Наведение Ур.3 id = 4358; lvl = 3; break; case 285343745: //Ярость Вампира Ур. 1 id = 4354; break; case 285343748: //Ярость Вампира Ур.4 id = 4354; lvl = 4; break; case 285409281: //Проницательность Ур.1 id = 4355; break; case 285409283: //Проницательность Ур.3 id = 4355; lvl = 3; break; case 285474817: //Благо Ур.1 id = 4356; break; case 285474819: //Благо Ур.3 id = 4356; lvl = 3; break; case 285671425: //Фокусировка Ур.1 id = 4359; break; case 285671427: //Фокусировка Ур.3 id = 4359; lvl = 3; break; case 285736961: //Шепот Смерти Ур.1 id = 4360; break; case 285736963: //Шепот Смерти Ур.3 id = 4360; lvl = 3; break; } if (id == 0) { CLogger.error("hideout manager has invalid buff request " + reply); return(1); } TSkill skill = TSkillTable.getInstance().get(id, lvl); if (skill == null) { CLogger.error("hideout manager has null buff skill " + id + "-" + lvl); return(1); } this.ChangeTarget(player); return((short)this.castSkill(skill)); // CurMP -= (skill.MpConsume1 + skill.MpConsume2); // player.addEffect(this, skill, player, true, false); // return 5; }
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); }