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

SpecialBuff() публичный Метод

public SpecialBuff ( int skillID ) : void
skillID int
Результат void
        public void SpecialBuff(int skillID)
        {
            try
            {
                Character.Action.UsingSkillID = skillID;
                if (SkillGetSameBuff(Character.Action.UsingSkillID)) return;
                if (Character.Action.Buff.count > 21) return;
                byte slot = SkillBuffGetFreeSlot();
                if (slot == 255) return;

                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++;
                List<int> lis = Character.Spawn;

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

                // if imbue add to current imbue
                if (Data.SkillBase[Character.Action.UsingSkillID].SkillType == Global.s_data.SkillTypes.IMBUE &&
                    !Data.SkillBase[Character.Action.UsingSkillID].Properties1.ContainsKey("hste"))
                {
                    if (Character.Action.ImbueID != 0) return;
                    Character.Action.ImbueID = Character.Action.UsingSkillID;
                }

                Send(lis, Packet.SkillIconPacket(Character.Information.UniqueID, Character.Action.UsingSkillID, Character.Action.Buff.OverID[Character.Action.Buff.slot], false));

                if (Data.SkillBase[Character.Action.UsingSkillID].Properties1.ContainsKey("dura") &&
                    (Data.SkillBase[Character.Action.UsingSkillID].RadiusType == Global.s_data.RadiusTypes.ONETARGET || (Data.SkillBase[Character.Action.UsingSkillID].RadiusType != Global.s_data.RadiusTypes.ONETARGET && Data.SkillBase[Character.Action.UsingSkillID].efrUnk1 != 3)))
                {
                    // Skills with duration and self targeted
                    //Character.Action.CastingSkill = Character.Ids.GetCastingID();

                    //Send(lis, Packet.ActionPacket(1, 0, Character.Action.UsingSkillID, Character.Information.UniqueID, Character.Action.CastingSkill, 0));

                    StartBuffTimer(Data.SkillBase[Character.Action.UsingSkillID].Properties1["dura"], Character.Action.Buff.slot);
                }
                else if (Data.SkillBase[Character.Action.UsingSkillID].Properties1.ContainsKey("onff"))
                {
                    // mana consume/time buffs
                    //Send(lis, Packet.SkillIconPacket(Character.Information.UniqueID, Character.Action.UsingSkillID, Character.Action.Buff.OverID[Character.Action.Buff.slot], false));

                    string series = Data.SkillBase[Character.Action.UsingSkillID].Series.Remove(Data.SkillBase[Character.Action.UsingSkillID].Series.Length - 2);
                    Character.Action.Buff.InfiniteBuffs.Add(series, Character.Action.Buff.slot);
                }
                else if (!Data.SkillBase[Character.Action.UsingSkillID].Properties1.ContainsKey("dura"))
                {
                    // fast buffs
                    //Send(lis, Packet.SkillIconPacket(Character.Information.UniqueID, Character.Action.UsingSkillID, Character.Action.Buff.OverID[Character.Action.Buff.slot], false));

                    SkillBuffEnd(Character.Action.Buff.slot);
                }

                Character.Action.Buff.slot = 255;
            }
            catch (Exception ex)
            {
                Console.WriteLine("SpecialBuff error {0}", ex);
                Systems.Debugger.Write(ex);
            }
        }
Systems