示例#1
0
        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);
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
 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;
 }
示例#4
0
        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();
        }
示例#5
0
        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));
            }
        }
示例#6
0
        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();
            }
        }
示例#8
0
        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;
            }
        }
示例#9
0
        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]));
            }
        }
示例#10
0
        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);
                }
            }
        }
示例#11
0
        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"
            });
        }
示例#12
0
        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();
            }
        }
示例#13
0
        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());
        }
示例#14
0
        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;
        }
示例#15
0
 public void addItemEnch4(string value)
 {
     item_skill_ench4 = TSkillTable.getInstance().get(int.Parse(value.Split('-')[0]), int.Parse(value.Split('-')[1]));
 }
示例#16
0
 public void setUnequipSkill(string value)
 {
     unequip_skill = TSkillTable.getInstance().get(int.Parse(value.Split('-')[0]), int.Parse(value.Split('-')[1]));
 }
示例#17
0
        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;
        }
示例#18
0
        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);
        }