/** \~russian  .
 *
 *        ,    
 * .
 *
 * @note      .
 *
 ** \~english Represents item prototype.
 *
 * @note All fields are read-only.
 *
 ** \~
 * @ingroup Server
 * @ingroup Client
 */
class ProtoItem
{
public:
    /**
     * \~russian @name  
     * \~english @name General fields
     * \~ @weight 300
     */
    //@{

    /** \~russian  .
     *
     * . @link ItemFlags Item flags@endlink.
     */
    const uint Flags;
	
	uint HolodiskNum;
	
	uint16 RadioChannel;
	
	/** \~russian   (. @link RadioFlags Radio flags@endlink) */
	uint16 RadioFlags;
	
	uint8 RadioBroadcastSend;
	
	uint8 RadioBroadcastRecv;

    /** (?) */
    const uint8 DistanceLight;

    /** (?) */
    const uint IntensityLight;

    /** (?) */
    const uint Weight;
	
	/** \~russian     */
	uint8 IndicatorStart;
	
	/** \~russian     */
	uint8 IndicatorMax;

    /** \~russian    ( ) */
    const uint PicMap;

    /** \~russian    ( ) */
    const uint PicInv;

    /** (?) */
    const uint8 Sound;

    /** (?) */
    const uint Cost;

    /** (?) */
    const uint8 Material;

    /** \~russian ,   .
     *
     * . @ref Slots.
     *
     */
    uint8 Slot;

    //@}

    /**
     * \~russian @name 
     * \~english @name Armor
     * \~ @weight 290
     */
    //@{

    /** (?) */
    const uint8 Armor_CrTypeMale;

    /** (?) */
    const uint8 Armor_CrTypeFemale;

    //@}

    /**
     * \~russian @name 
     * \~english @name Container
     * \~ @weight 280
     */
    //@{

    /** \~russian         . */
    bool Container_IsGroundLevel();

    //@}

    /**
     * \~russian @name 
     * \~english @name Drugs
     * \~ @weight 270
     */
    //@{
    //@}

    /**
     * \~russian @name 
     * \~english @name Weapons
     * \~ @weight 260
     */
    //@{

    /** \~russian  . */
    const bool Weapon_IsUnarmed;

    /** \~russian     (  #Weapon_IsUnarmed == @c true). */
    const uint8 Weapon_UnarmedCriticalBonus;

    /** \~russian   (  #Weapon_IsUnarmed == @c true). */
    const bool Weapon_UnarmedArmorPiercing;

    /** \~russian      . */
    const uint8 Weapon_MinStrength;

    /** \~russian   . */
    const uint8 Weapon_Perk;

    /** \~russian   . */
    const uint8 Weapon_Anim1;

    /** \~russian  . */
    const uint16 Weapon_VolumeHolder;

    /** \~russian  . */
    const uint Weapon_Caliber;

    /** \~russian  . */
    const uint8 Weapon_CriticalFailture;

    /** \~russian PID  -. */
    const uint16 Weapon_DefAmmo;

    /** \~russian ,   . */
    const uint8 Weapon_Skill_F;

    /** \~russian ,   . */
    const uint8 Weapon_Skill_S;

    /** \~russian ,   . */
    const uint8 Weapon_Skill_T;

    /** \~russian  . */
    const uint8 Weapon_DmgType_F;

    /** \~russian  . */
    const uint8 Weapon_DmgType_S;

    /** \~russian  . */
    const uint8 Weapon_DmgType_T;

    /** \~russian   . */
    const uint8 Weapon_Anim2_F;

    /** \~russian   . */
    const uint8 Weapon_Anim2_S;

    /** \~russian   . */
    const uint8 Weapon_Anim2_T;

    /** \~russian  . */
    const uint16 Weapon_DmgMin_F;

    /** \~russian  . */
    const uint16 Weapon_DmgMin_S;

    /** \~russian  . */
    const uint16 Weapon_DmgMin_T;

    /** \~russian  . */
    const uint16 Weapon_DmgMax_F;

    /** \~russian  . */
    const uint16 Weapon_DmgMax_S;

    /** \~russian  . */
    const uint16 Weapon_DmgMax_T;

    /** \~russian  . */
    const uint16 Weapon_MaxDist_F;

    /** \~russian  . */
    const uint16 Weapon_MaxDist_S;

    /** \~russian  . */
    const uint16 Weapon_MaxDist_T;

    /** \~russian    . */
    const uint16 Weapon_Effect_F;

    /** \~russian    . */
    const uint16 Weapon_Effect_S;

    /** \~russian    . */
    const uint16 Weapon_Effect_T;

    /** \~russian    . */
    const uint16 Weapon_Round_F;

    /** \~russian    . */
    const uint16 Weapon_Round_S;

    /** \~russian    . */
    const uint16 Weapon_Round_T;

    /** \~russian    . */
    const uint8 Weapon_ApCost_F;

    /** \~russian    . */
    const uint8 Weapon_ApCost_S;

    /** \~russian    . */
    const uint8 Weapon_ApCost_T;

    /** \~russian    . */
    const uint8 Weapon_SoundId_F;

    /** \~russian    . */
    const uint8 Weapon_SoundId_S;

    /** \~russian    . */
    const uint8 Weapon_SoundId_T;

    /** \~russian      (, ). */
    const bool Weapon_Remove_F;

    /** \~russian      (, ). */
    const bool Weapon_Remove_S;

    /** \~russian      (, ). */
    const bool Weapon_Remove_T;

    /** \~russin     . */
    const bool Weapon_Aim_F;

    /** \~russin     . */
    const bool Weapon_Aim_S;

    /** \~russin     . */
    const bool Weapon_Aim_T;
	
	uint8 Weapon_CurrentUse

   /** \~russian       .
     *
     * @param  use    .    :
     *              - Primary use  0;
     *              - Secondary use  1;
     *              - Third use  2.
     */
    void Weapon_SetUse(uint8 use);

    //@}

    /**
     * \~russian @name 
     * \~english @name Ammunition
     * \~ @weight 250
     */
    //@{

    /** \~russian C    . */
    const uint Ammo_StartCount;

    /** \~russian  . */
    const uint Ammo_Caliber;

    /** \~russian  Armor Class. */
    const int Ammo_AcMod;

    /** \~russian  Damage Resistance. */
    const int Ammo_DrMod;

    /** \~russian  Damage Multiplier. */
    const uint Ammo_DmgMult;

    /** \~russian  Damage Divider. */
    const uint Ammo_DmgDiv;

    //@}

    /** @name Misc2 */
    //@{


    /** \~russian    Item::Val1  ,   . */
    const uint Misc2_StartVal1;

    /** \~russian    Item::Val2  ,   . */
    const uint Misc2_StartVal2;

    /** \~russian    Item::Val3  ,   . */
    const uint Misc2_StartVal3;

    //@}

    /** \~russian   .
     *
     * . @link ItemsTypes Items types@endlink.
     *
     * @return  .     0.
     */
    uint8 GetType();

    /** \~russian  ID  .
     *
     * .  @b ITEMPID.H.
     *
     * @return ID  .     0.
     */
    uint16 GetProtoId();

    /** \~russian   .
     *
     * @see Item::IsGrouped()
     *
     */
    bool IsGrouped();

    /** \~russian   .
     *
     * @see Item::IsWeared()
     *
     */
    bool IsWeared();
}
