DarkEmu_GameServer.Systems.StartSkill C# (CSharp) Метод

StartSkill() приватный Метод

private StartSkill ( ) : void
Результат void
        void StartSkill()
        {
            try
            {
                if (!Character.Action.sAttack) return;

                #region Arrow for bow
                if (!Character.Action.Skill.P_M)
                {
                    if (Data.ItemBase[Character.Information.Item.wID].Class_C == 6)
                    {
                        if (Character.Information.Item.sID == 0) //arrow yoksa slota
                        {
                            if (!ItemCheckArrow()) //inventorydeki arrowlar kontrol et
                            {
                                Character.Action.sAttack = false;
                                client.Send(Packet.ActionPacket(2, 0x0e)); //hic arrow yoksa hata ver
                                StopSkillTimer();
                                return;
                            }
                        }
                        else  //arrow varsa slotta
                        {
                            Character.Information.Item.sAmount--;
                            client.Send(Packet.Arrow(Character.Information.Item.sAmount));

                            if (Character.Information.Item.sAmount <= 0) // arrow bitti
                            {
                                Character.Information.Item.sID = 0;
                                MsSQL.UpdateData("delete from char_items where itemnumber='item" + 7 + "' AND owner='" + Character.Information.CharacterID + "'");
                                if (!ItemCheckArrow()) //inventorydeki arrowlar kontrol et
                                {
                                    Character.Action.sAttack = false;
                                    client.Send(Packet.ActionPacket(2, 0x0e)); //hic arrow yoksa hata ver
                                    StopSkillTimer();
                                    return;
                                }
                            }
                            else
                            {
                                MsSQL.InsertData("UPDATE char_items SET quantity='" + Math.Abs(Character.Information.Item.sAmount) + "' WHERE itemnumber='" + "item" + 7 + "' AND owner='" + Character.Information.CharacterID + "' AND itemid='" + Character.Information.Item.sID + "'");
                            }

                        }
                    }
                }
                #endregion

                if (Character.Stat.SecondMP < Data.SkillBase[Character.Action.Skill.MainSkill].Mana)
                {
                    Character.Action.sAttack = false;
                    StopSkillTimer();
                    client.Send(Packet.ActionPacket(2, 4));
                    return;
                }
                else
                {
                    Character.Stat.SecondMP -= Data.SkillBase[Character.Action.Skill.MainSkill].Mana;

                    if (Character.Stat.SecondMP < 0) Character.Stat.SecondMP = 1;
                    UpdateMp();

                    Character.Action.Skill.MainCasting = Character.Ids.GetCastingID();
                    List<int> lis = Character.Spawn;

                    Send(lis, Packet.ActionPacket(1, 0, Character.Action.Skill.MainSkill, Character.Information.UniqueID, Character.Action.Skill.MainCasting, Character.Action.Target));

                    if (Data.SkillBase[Character.Action.Skill.MainSkill].isAttackSkill)
                    {

                        if (Character.Action.Skill.Instant == 0)
                            MainSkill_Attack(lis);
                        else
                            StartSkillCastingTimer(Character.Action.Skill.Instant * 1000, lis);
                    }
                    else
                    {
                        Character.Action.sAttack = false;
                        Character.Action.sCasting = false;

                        // todo: here iterate through all target player (not only one object => efr)
                        if (Data.SkillBase[Character.Action.Skill.MainSkill].Properties1.ContainsKey("heal") ||
                            Data.SkillBase[Character.Action.Skill.MainSkill].Properties1.ContainsKey("curl"))
                        {
                            Systems Target = Character.Action.Object as Systems;

                            Target.SpecialBuff(Character.Action.Skill.MainSkill);
                        }
                        Effect.EffectMain(Character.Action.Object, Character.Action.Skill.MainSkill);
                    }
                }
            }
            catch (Exception ex)
            {
                Systems.Debugger.Write(ex);
            }
        }
Systems