Adding Empty Reload Animations


 links to other VDC articles. Please help improve this article by adding links
 links to other VDC articles. Please help improve this article by adding links  that are relevant to the context within the existing text.
 that are relevant to the context within the existing text. January 2024

You can help by
 adding links to this article from other relevant articles.
 adding links to this article from other relevant articles.  January 2024
Adding empty reloads
Adding empty reloads to all weapons is super easy
all you have to do is make the following change inside basecombatweapon_shared.cpp on Line 2070
replace the following line
bool CBaseCombatWeapon::Reload( void )
{
	return DefaultReload( GetMaxClip1(), GetMaxClip2(), ACT_VM_RELOAD );
}
With The Following
bool CBaseCombatWeapon::Reload( void )
{
	return DefaultReload( GetMaxClip1(), GetMaxClip2(), Clip1() == 0 ? ACT_VM_RELOAD_EMPTY : ACT_VM_RELOAD );
}
This will give you the ability to call ACT_VM_RELOAD_EMPTY animations on you weapons
Limit ACT_VM_RELOAD_EMPTY To Specific Weapons
if you do not want all of your weapons to have ACT_VM_RELOAD_EMPTY animations you can do the following
Inside of weapon_parse.h on Line 100
you will see the following line
weapon_parse.h
char					szAmmo2[MAX_WEAPON_AMMO_NAME];			// "secondary" ammo type
UNDERNEATH THAT LINE ADD THE FOLLOWING
bool					bEmptyReload;							// Empty Reload
Now go to weapon_parse.cpp
Inside of the FileWeaponInfo_t::FileWeaponInfo_t() Constructor add the following bool and set it to true
bEmptyReload = true
And inside the void FileWeaponInfo_t::Parse( KeyValues *pKeyValuesData, const char *szWeaponName ) Function
add the following to the top of the function
weapon_parse.cpp
bEmptyReload = pKeyValuesData->GetBool("empty_reload", true);
now go back to basecombatweapon_shared.cpp
and replace the Reload function with this
bool CBaseCombatWeapon::Reload( void )
{
	if (GetWpnData().bEmptyReload == false)
	{
		return DefaultReload(GetMaxClip1(), GetMaxClip2(), ACT_VM_RELOAD);
	}
	else
	{
		return DefaultReload(GetMaxClip1(), GetMaxClip2(), Clip1() == 0 ? ACT_VM_RELOAD_EMPTY : ACT_VM_RELOAD);
	}
}
now you can specify what weapon has or doesn't have the empty reload animation
example weapon.txt file
// Pistol
WeaponData
{
	// Weapon data is loaded by both the Game and Client DLLs.
	"printname"	"#HL2_Pistol"
	"viewmodel"			"models/weapons/v_pistol.mdl"
	"playermodel"		"models/weapons/w_pistol.mdl"
	"anim_prefix"		"pistol"
	"bucket"			"1"
	"bucket_position"	"0"
	"clip_size"			"18"
	"primary_ammo"		"Pistol"
	"secondary_ammo"	"None"
	"weight"			"2"
	"item_flags"			"0"
	"damage"			"8"
	// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
	SoundData
	{
		"reload"		"Weapon_Pistol.Reload"
		"reload_npc"	"Weapon_Pistol.NPC_Reload"
		"empty"			"Weapon_Pistol.Empty"
		"single_shot"	"Weapon_Pistol.Single"
		"single_shot_npc"	"Weapon_Pistol.NPC_Single"
		"special1"		"Weapon_Pistol.Special1"
		"special2"		"Weapon_Pistol.Special2"
		"burst"			"Weapon_Pistol.Burst"
	}
	// Weapon Sprite data is loaded by the Client DLL.
	TextureData
	{
		"weapon"
		{
				"font"		"WeaponIcons"
				"character"	"d"
		}
		"weapon_s"
		{	
				"font"		"WeaponIconsSelected"
				"character"	"d"
		}
		"ammo"
		{
				"font"		"WeaponIcons"
				"character"	"p"
		}
		"crosshair"
		{
				"font"		"Crosshairs"
				"character"	"Q"
		}
		"autoaim"
		{
				"file"		"sprites/crosshairs"
				"x"			"0"
				"y"			"48"
				"width"		"24"
				"height"	"24"
		}
	}
}add the following line to the top of the file to turn off the empty reload for the weapon
"empty_reload"		"0"and that should be it
 Note:By Default all weapons have the empty reload set to
Note:By Default all weapons have the empty reload set to true!
 categories. Please help out by
 categories. Please help out by  adding categories.
 adding categories. January 2024