OpenNos.GameObject.Character.WeaponLoaded C# (CSharp) Method

WeaponLoaded() public method

public WeaponLoaded ( CharacterSkill ski ) : bool
ski CharacterSkill
return bool
        public bool WeaponLoaded(CharacterSkill ski)
        {
            if (ski != null)
            {
                switch (Class)
                {
                    default:
                        return false;

                    case ClassType.Adventurer:
                        if (ski.Skill.Type == 1)
                        {
                            if (Inventory != null)
                            {
                                WearableInstance wearable = Inventory.LoadBySlotAndType<WearableInstance>((byte)EquipmentType.SecondaryWeapon, InventoryType.Wear);
                                if (wearable != null)
                                {
                                    if (wearable.Ammo > 0)
                                    {
                                        wearable.Ammo--;
                                        return true;
                                    }
                                    else
                                    {
                                        if (Inventory.CountItem(2081) < 1)
                                        {
                                            Session.SendPacket(GenerateMsg(Language.Instance.GetMessageFromKey("NO_AMMO_ADVENTURER"), 10));
                                            return false;
                                        }

                                        Inventory.RemoveItemAmount(2081);
                                        wearable.Ammo = 100;
                                        Session.SendPacket(GenerateSay(Language.Instance.GetMessageFromKey("AMMO_LOADED_ADVENTURER"), 10));
                                        return true;
                                    }
                                }
                                else
                                {
                                    Session.SendPacket(GenerateMsg(Language.Instance.GetMessageFromKey("NO_WEAPON"), 10));
                                    return false;
                                }
                            }
                            else return true;
                        }
                        else return true;

                    case ClassType.Swordman:
                        if (ski.Skill.Type == 1)
                        {
                            if (Inventory != null)
                            {
                                WearableInstance inv = Inventory.LoadBySlotAndType<WearableInstance>((byte)EquipmentType.SecondaryWeapon, InventoryType.Wear);
                                if (inv != null)
                                {
                                    if (inv.Ammo > 0)
                                    {
                                        inv.Ammo--;
                                        return true;
                                    }
                                    else
                                    {
                                        if (Inventory.CountItem(2082) < 1)
                                        {
                                            Session.SendPacket(GenerateMsg(Language.Instance.GetMessageFromKey("NO_AMMO_SWORDSMAN"), 10));
                                            return false;
                                        }

                                        Inventory.RemoveItemAmount(2082);
                                        inv.Ammo = 100;
                                        Session.SendPacket(GenerateSay(Language.Instance.GetMessageFromKey("AMMO_LOADED_SWORDSMAN"), 10));
                                        return true;
                                    }
                                }
                                else
                                {
                                    Session.SendPacket(GenerateMsg(Language.Instance.GetMessageFromKey("NO_WEAPON"), 10));
                                    return false;
                                }
                            }
                            else return true;
                        }
                        else return true;

                    case ClassType.Archer:
                        if (ski.Skill.Type == 1)
                        {
                            if (Inventory != null)
                            {
                                WearableInstance inv = Inventory.LoadBySlotAndType<WearableInstance>((byte)EquipmentType.MainWeapon, InventoryType.Wear);
                                if (inv != null)
                                {
                                    if (inv.Ammo > 0)
                                    {
                                        inv.Ammo--;
                                        return true;
                                    }
                                    else
                                    {
                                        if (Inventory.CountItem(2083) < 1)
                                        {
                                            Session.SendPacket(GenerateMsg(Language.Instance.GetMessageFromKey("NO_AMMO_ARCHER"), 10));
                                            return false;
                                        }

                                        Inventory.RemoveItemAmount(2083);
                                        inv.Ammo = 100;
                                        Session.SendPacket(GenerateSay(Language.Instance.GetMessageFromKey("AMMO_LOADED_ARCHER"), 10));
                                        return true;
                                    }
                                }
                                else
                                {
                                    Session.SendPacket(GenerateMsg(Language.Instance.GetMessageFromKey("NO_WEAPON"), 10));
                                    return false;
                                }
                            }
                            else return true;
                        }
                        else return true;

                    case ClassType.Magician:
                        return true;
                }
            }

            return false;
        }
Character