private void ApplyCooldown()
        {
            if (AbInfo.ConstantInfo.ToggleEntry == 0)
            {
                if (AbInfo.ConstantInfo.Origin == AbilityOrigin.AO_ITEM)
                {
                    if (_itemCooldownGroup > 0)
                    {
                        _abInterface.SetItemGroupCooldown(_itemCooldownGroup, AbInfo.Cooldown);
                    }
                    else
                    {
                        _abInterface.SetItemCooldown(AbInfo.Entry, AbInfo.Cooldown);
                    }
                }

                else
                {
                    _abInterface.SetCooldown(AbInfo.ConstantInfo.CooldownEntry != 0 ? AbInfo.ConstantInfo.CooldownEntry : AbInfo.Entry, AbInfo.Cooldown * 1000);
                }
            }

            // Morale cooldown if applicable
            if (AbInfo.SpecialCost < 0)
            {
                Player plr = _caster as Player;

                if (plr != null)
                {
                    plr.ResetMorale();

                    PacketOut Out = new PacketOut((byte)Opcodes.F_SET_ABILITY_TIMER, 12);
                    Out.WriteUInt16(0);
                    Out.WriteUInt16(0x200);
                    Out.WriteUInt32((uint)(AbInfo.Cooldown * 1000));
                    Out.WriteUInt32(0);
                    plr.SendPacket(Out);
                }
            }
        }