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

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

private SkillMain ( byte type, PacketReader Reader ) : void
type byte
Reader PacketReader
Результат void
        void SkillMain(byte type, PacketReader Reader)
        {
            try
            {
                if (!SkillGetOpened(Character.Action.UsingSkillID)) return;
                client.Send(Packet.ActionState(1, 1));
                //Console.WriteLine("Skill id: {0}", Data.SkillBase[Character.Action.UsingSkillID].Series); // Dev Mode
                switch (type)
                {
                    case 1:
                        if (Character.Action.sAttack) return;
                        if (Character.Action.sCasting) return;
                        if (Character.Action.nAttack) StopAttackTimer();

                        if (!Base.Skill.CheckWeapon(Character.Information.Item.wID, Character.Action.UsingSkillID))
                        {
                            client.Send(Packet.IngameMessages(SERVER_ACTION_DATA, IngameMessages.UIIT_SKILL_USE_FAIL_WRONGWEAPON));
                            client.Send(Packet.IngameMessages2(SERVER_ACTIONSTATE, IngameMessages.UIIT_SKILL_USE_FAIL_WRONGWEAPON));
                            return;
                        }

                        Character.Action.Target = Reader.Int32();
                        Character.Action.Skill.MainSkill = Character.Action.UsingSkillID;
                        Character.Action.UsingSkillID = 0;
                        Character.Action.Object = GetObjects(Character.Action.Target);

                        if (Data.SkillBase[Character.Action.Skill.MainSkill].isAttackSkill)
                        {
                            Character.Action.Skill = Base.Skill.Info(Character.Action.Skill.MainSkill, Character);
                            if (!Character.Action.Skill.canUse || Character.Action.Target == Character.Information.UniqueID) return;

                            obj o = null;
                            if (Character.Action.Object != null && Character.Action.Object.GetType().ToString() == "DarkEmu_GameServer.obj")
                            {
                                o = Character.Action.Object as obj;
                                if (o.Agro == null) o.Agro = new List<_agro>();
                                if (Character.Action.Skill.OzelEffect == 5 && o.State != 4) return;
                                if (o.State == 4 && Character.Action.Skill.OzelEffect != 5) return;
                            }

                            if (o == null && Character.Action.Object != null && Character.Action.Object.GetType().ToString() == "DarkEmu_GameServer.Systems")
                            {
                                if (!Character.Information.PvP || Character.State.Die) return;
                                Systems sys = Character.Action.Object as Systems;
                                if (Character.Action.Skill.OzelEffect == 5 && sys.Character.State.LastState != 5) return;
                                if (sys.Character.State.LastState == 4 && Character.Action.Skill.OzelEffect != 5) return;
                            }

                            Character.Action.sAttack = true;
                            ActionSkillAttack();

                            Reader.Close();
                        }
                        else
                        {
                            Character.Action.sAttack = true;
                            ActionSkill();
                        }
                        break;
                    case 0:
                        SkillBuff();
                        break;
                    case 2:
                        MovementSkill(Reader);
                        break;
                    default:
                        Console.WriteLine("Skillmain type: {0}", type);
                        break;
                }
            }
            catch (Exception ex)
            {
                Systems.Debugger.Write(ex);
            }
        }
Systems