//=======================================================================
//			Copyright (C) Shambler Team 2006
//		    	  Xash weapon system  0.85 release
//=======================================================================
1.
2.
2.1  
2.2 
2.3 w_ 
3. 
3.1 
3.2 
3.3 
4.
4.1   
4.2   
5.
			
//=======================================================================
//			1.
//=======================================================================
     Half-Life      
 .     - 
,       ,
  ,  "weapon_megaplasmagun",  
    .       
   . -     
 ,    ,    
   ,      :
      ,    ,    
.          
  .  ,      
     -     
          
        .
       -      
    .     xash 0.1  
,      xash       
   ,   .   Xash Weapon System  
      .     
 :
1.  ACT,  ,       HL2
2.   ( )
3.   m_iId  -      .
4.       (  , ,   ...)
5.   (w_model + p_model)
6.      v_ .
7.   ,     .
8.     (   ).
    .

//=======================================================================
//			2.
//=======================================================================
        -    v_     w_.
       .     , 
 .    v_ -  ,      .
    .    w_     .
    ACT_  ,    xash.

//========================== 2.1   =============================
    ,   ,      .
Xash weapon system    ,    
.       .
=====ACT======================//===========================================================
ACT_VM_NONE		//	 .    .
ACT_VM_DEPLOY		//	   (    )
ACT_VM_DEPLOY_EMPTY		//	   (    ).
ACT_VM_HOLSTER		//	 ().  .
ACT_VM_HOLSTER_EMPTY	//	   ().
ACT_VM_IDLE1		//	  IDLE.
ACT_VM_IDLE2		//	  IDLE (  ,  ).
ACT_VM_IDLE3		//	  IDLE (  ,  ).
ACT_VM_RANGE_ATTACK1	//	  ().
ACT_VM_RANGE_ATTACK2	//	  (  ,  ).
ACT_VM_RANGE_ATTACK3	//	  (  ,  ).
ACT_VM_MELEE_ATTACK1	//	  (  ).
ACT_VM_MELEE_ATTACK2	//	  (  ,  ).
ACT_VM_MELEE_ATTACK3	//	  (  ,  ).
ACT_VM_SHOOT_EMPTY		//	    . (,     ).
ACT_VM_START_RELOAD		//	     ()
ACT_VM_RELOAD		//	  ()
ACT_VM_RELOAD_EMPTY		//	   (,    ACT_VM_RELOAD ).
ACT_VM_TURNON		//	      (, ).
ACT_VM_TURNOFF		//	     .
ACT_VM_PUMP		//	   (   ).
ACT_VM_PUMP_EMPTY		//	      .
ACT_VM_START_CHARGE		//	   (  ,  ).
			//	 
ACT_VM_CHARGE		//	  (   ).
ACT_VM_OVERLOAD		//	   (   ).
ACT_VM_IDLE_EMPTY		//	,     

    qc ,    . :
$sequence "idle1" "idle1" fps 16 ACT_VM_IDLE1 1
:
$sequence "shoot" "shoot" fps 25 ACT_VM_RANGE_ATTACK1 1
   ,    xash 04  .

//========================== 2.2  ==================================
   Xash Weapon System     . ,   
      pitch -     . :
{ event 5005 5 "weapons/shotgun/shotgun_reload1.wav" }
    .        precache.txt
 :
{ event 5060 5 "models/shellBuck.mdl" }

//========================== 2.3 w_  ===============================
    Half-Life,       ,  xash 
  .       -   .. viewmodel .. , 
    .   - worldmodel,        (  
     thirdperson)       ,   .
        ,      "   ".
     - ,      .
        .      ""  
 .

//=======================================================================
//			3. 
//=======================================================================
          ,  
, ,     .
     ,    ,     
  scripts/weapons     (  .txt)   scripts/precache.txt 
scripts/impulse101.txt.            xash  -
.     xash   hardcoded  (   ).
 weapon_m249  weapon_rpg -            ,  
  .           (   
        ).
//========================== 3.1  ==============================
        .    
    ,    :
WeaponData -        - ,     ,
,  ,  ,   , ...
PrimaryAttack -         .  , ,
  .
SecondaryAttack -   ,    .
SoundData -          ,     
.
"hudsprite" -     ,  .    ,
  ,   ...     ,      
 .
        //  ,     ++.
      ,         ,
    .        "min..max".
        .     - ,  
   .
 ,        ,    
     . 
      .

//========================== 3.1.1 WeaponData ==============================
WeaponData
{

"viewmodel"	"models/weapons/v_glock.mdl" //  ,      
"playermodel"	"models/weapons/w_glock.mdl" //  ,         
"anim_prefix"	"onehanded" 		//   .
					//  ,    :
					//crowbar -      
					//trip -   -  -,   2 
					//onehanded -  ,  
					//python -  ,   onehanded     
					//shotgun -   ,   
					//gauss -  ,   
					//mp5 -    
					//rpg -   
					//egon - "",    , 
					//squeak - ,     
					//hive -  ,      
					//bow - ,   

"bucket"		"0"			//  ( 0  5)
"bucket_position"	"2"			//   (  0  5)
"clip_size"	"noclip"			// ,  "noclip"     
"defaultammo"	"1"			//      (random)
"defaultammo2"	"0"                           //      (random)
"primary_ammo"	"nuke"			// 1.   :
					//"9mm" -   ,    5
					//"12mm" -   .  
					//"357" -   python  desert eagle,   
					//"556" -    ,    
					//"762" -     -   1 
					//"buckshot" -   .   .
					//"m203" -    
					//"nuke" -    warhead_launcher
					//"rockets" -     
					//"grenade" -    (  ).
"secondary_ammo" 	"none"			// 2 -  ,      1
"target"		"name"			//   ,      ,
					//   .  ,  
					//  , .
"weight"		"10"			//""     
"item_flags"	"0"			// .       
					//   ,      ;)
					//     1   .			
}
   -  PrimaryAttack  SecondaryAttack .     
,    -  .

//========================== 3.1.2 PrimaryAttack ===========================
PrimaryAttack
{
"action"		"ammo1"	//  .  ,  , 
			//   .   :
			//"ammo1" -    
			//"ammo1." -       .
			//"ammo2" -    
			//"ammo2." -       
			//"laserdot" -       
			//"zoom" -       
			//"flashlight" -    .
			//"switchmode" -     .
			//"swing" -   (  ACT_RANGE   ACT_MELEE)
			//"none" -  
"punchangle"	"0..-2"	// .    .
"nextattack"	"0.5"     //    .    -   
}
 ,          .
    .         .

//========================== 3.1.2 SoundData ===============================
    ,       .
       ,   ,   .
SoundData
{
"firesound"	"weapons/glock/pl_gun3.wav"	// .     
					// ,        
					//     .
					//-      4.
"sfxsound"	"weapons/glock/pl_gun1.wav"	//    .   
					//   "firesound"
"emptysound"	"weapons/cock1.wav"           //  .      .
}

//========================== 3.1.2 "hudsprite" =================================
           .
   :
"hudsprite"
{
"name"		"weapon_s"
"file"		"sprites/items02.spr"	//  .    ,  
"x"		"0"			//       
"y"		"180"			//      
"width"		"170"                         //   
"height"		"45"                          //   
}
    -    ,       
   ,     .     ,   
      .     "  -  "  
 "", "y", "width", "height" .
    :
"weapon"	      -   
"weapon_s"      -    (   "weapon"     ,  
"ammo"          -     
"ammo2"         -     
"crosshair"     -  
"autoaim"       -  
"zoom"          -     
"zoom_autoaim"  -     .
            -   
     . 

//========================== 3.1.3 1 =============================
    - ,        ,
     .
    -       2  4  16.   2+4+16=22. 
       "flags".     ,    0. 
 :

ITEM_FLAG_SELECTONEMPTY	1  //   ,      
ITEM_FLAG_NOAUTORELOAD	2  //      
ITEM_FLAG_NOAUTOSWITCHEMPTY	4  //       ,     
ITEM_FLAG_LIMITINWORLD	8  // -   ( )
ITEM_FLAG_EXHAUSTIBLE	16 //,     ( , ).
ITEM_FLAG_NODUPLICATE	32 //      -   .
ITEM_FLAG_USEAUTOAIM	64 //       5 .

//========================== 3.2  ===============================
     ,   ,    .
     ,      , 
    ,      .
      .
       29,  ,     .
      .
    ,        .
 -               .
     -      
   (     -    ).

//========================== 3.2  ===============================
Xash weapon system  0.85 release  -  .
 ,            
        .
  ACT_VM_DEPLOY_EMPTY  ACT_VM_HOLSTER_EMPTY -      
Xash,      .       .
  ACT_VM_START_RELOAD       -   
       ,  ,     .
      "-".  ACT_VM_RELOAD_EMPTY
     ,       .
  RANGE_ATTACK  MELEE_ATTACK     ,  
 ,    ,   .      IDLE .
           .
     MELEE_ATTACK,    RANGE_ATTACK,
       MELEE .     
,    ,  "9" ,   - "203" ,
                
.   , ,  "action" "swing",      ,
 ,   .  ,  "flashlight", "zoom"  "laserdot"  
   ,       , ,  .
 ,       - ..  , 
      -   ""   .
             - ,
      ,    . ,     -
   ,     . ,   Xash   - 
 ,     .          .

//=======================================================================
//			4.
//=======================================================================
        Xash weapon system ,    
  -  ,    .
         ,   
  - Post    .    Post  -
       .  ,   ,
  
	//GENERIC WEAPON FUNCTIONS
 baseweapons.h.     ( ,       -
)   Default.     .    
  Post .

//========================== 4.1    ===============
      CBasePlayerWeapon.    
   .

void PrimaryPostAttack( void ) -      .
void SecondaryPostAttack( void ) -      .
void PostReload( void ) -    .
void PostIdle( void ) -        m_flTimeUpdate
SetAnimation(  ,  ) -    .   -  fps.
SetAnimation( " ",  ) -    .   -  fps.
IsEmptyReload() -  ,       .

//========================== 4.2    ============
m_iBody -  ,    
m_iSkin -   .

//=======================================================================
//			5.
//=======================================================================
     ,    
 Half-Life "   ,    "    
 - .