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

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

private SkillBuff ( ) : void
Результат void
        void SkillBuff()
        {
            try
            {
                if (SkillGetSameBuff(Character.Action.UsingSkillID))
                    return;

                if (Character.Speed.DefaultSpeed != Character.Speed.RunSpeed && Data.SkillBase[Character.Action.UsingSkillID].Properties1.ContainsKey("hste"))
                    return;
                else if (Character.Speed.DefaultSpeed + Character.Speed.Updateded[20] != Character.Speed.RunSpeed && Data.SkillBase[Character.Action.UsingSkillID].Properties1.ContainsKey("hste") && Character.Information.Berserking)
                    return;

                if (Data.SkillBase[Character.Action.UsingSkillID].Name.Contains("SKILL_OP") && Character.Information.GM == 0) return;
                if (Data.SkillBase[Character.Action.UsingSkillID].Name.Contains("TRADE")) return;

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

                if (Character.Action.ImbueID != 0 &&
                    Data.SkillBase[Character.Action.UsingSkillID].SkillType == Global.s_data.SkillTypes.IMBUE &&
                    !Data.SkillBase[Character.Action.UsingSkillID].Properties1.ContainsKey("hste"))
                    return;

                if (Character.Action.Buff.count > 21) return;
                byte slot = SkillBuffGetFreeSlot();
                if (slot == 255) return;
                if (Character.Stat.SecondMP < Data.SkillBase[Character.Action.UsingSkillID].Mana) { client.Send(Packet.ActionPacket(2, 4)); Character.Action.Cast = false; return; }
                else
                {
                    Character.Stat.SecondMP -= Data.SkillBase[Character.Action.UsingSkillID].Mana;

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

                    Character.Action.CastingSkill = Character.Ids.GetCastingID();

                    if (Data.SkillBase[Character.Action.UsingSkillID].RadiusType == Global.s_data.RadiusTypes.ONETARGET)
                    {
                        Character.Action.Buff.SkillID[slot] = Character.Action.UsingSkillID;
                        Character.Action.Buff.OverID[slot] = Character.Ids.GetBuffID();

                        Character.Action.Buff.slot = slot;
                        Character.Action.Buff.count++;

                        foreach (KeyValuePair<string, int> p in Data.SkillBase[Character.Action.UsingSkillID].Properties1)
                        {
                            if (SkillAdd_Properties(this, p.Key, true, slot))
                            {
                                Character.Action.Cast = false;
                                return;
                            };
                        }
                    }

                    List<int> lis = Character.Spawn;
                    Send(Packet.ActionPacket(1, 0, Character.Action.UsingSkillID, Character.Information.UniqueID, Character.Action.CastingSkill, 0));

                    Character.Action.Cast = true;
                    Effect.EffectMain(Character.Action.Object, Character.Action.UsingSkillID);
                    StartCastingTimer(Data.SkillBase[Character.Action.UsingSkillID].CastingTime, lis);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Skill buff {0}", ex);
            }
        }
Systems