public virtual void LoadWeapon(Mobile from, Item projectile)
        {
            if (projectile == null)
            {
                return;
            }

            // restrict allowed projectiles
            if (!CheckAllowedProjectile(projectile))
            {
                from.SendMessage("That cannot be loaded into this weapon");
                return;
            }

            if (m_Projectile != null && !m_Projectile.Deleted)
            {
                from.SendMessage("{0} unloaded", m_Projectile.Name);
                from.AddToBackpack(m_Projectile);
            }

            if (projectile.Amount > 1)
            {
                projectile.Amount--;
                Projectile = projectile.Dupe(1);
            }
            else
            {
                Projectile = projectile;
            }

            if (m_Projectile != null)
            {
                m_Projectile.Internalize();

                from.SendMessage("{0} loaded", m_Projectile.Name);
            }
        }