--************************************************************************--
--** QGReloadUtil
--**
--************************************************************************--
QGReloadUtil = ISReloadUtil:derive("QGReloadUtil");

	-- Guns

local SpringfieldXD9 = { type = "SpringfieldXD9",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'SpringfieldXD9Mag',
	clipName = 'Springfield XD-9 Magazine (9mm)',
	clipIcon = 'SpringfieldXD9Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = SpringfieldXD9Mag };
	
local Ber92 = { type = "Ber92",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Ber92Mag',
	clipName = 'Beretta 92 Magazine (9mm)',
	clipIcon = 'Ber92Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Ber92Mag };

local Ber92L32 = { type = "Ber92L32",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Ber93RMag',
	clipName = 'Beretta 93 Magazine (9mm)',
	clipIcon = 'Ber92Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Ber93RMag };
	
local Ber93R = { type = "Ber93R",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Ber93RMag',
	clipName = 'Beretta 93R Magazine (9mm)',
	clipIcon = 'Ber93RMag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Ber93RMag };

local Ber93RSA = { type = "Ber93RSA",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Ber93RMag',
	clipName = 'Beretta 93R Magazine (9mm)',
	clipIcon = 'Ber93RMag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Ber93RMag };
		
local Ber93RL15 = { type = "Ber93RL15",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Ber92Mag',
	clipName = 'Beretta 92 Magazine (9mm)',
	clipIcon = 'Ber92Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Ber2Mag };
	
local Ber93RL15SA = { type = "Ber93RL15SA",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Ber92Mag',
	clipName = 'Beretta 92 Magazine (9mm)',
	clipIcon = 'Ber92Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Ber92Mag };

local RugerSR9 = { type = "RugerSR9",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'RugerSR9Mag',
	clipName = 'Ruger SR9 Magazine (9mm)',
	clipIcon = 'RugerSR9Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = RugerSR9Mag };
	
local Glock17 = { type = "Glock17",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Glock17Mag',
	clipName = 'Glock 17 Magazine (9mm)',
	clipIcon = 'Glock17Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Glock17Mag };
	
local Glock17L33 = { type = "Glock17L33",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Glock17Mag33',
	clipName = 'Glock 33 rounds Magazine (9mm)',
	clipIcon = 'Glock17Mag33',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Glock17Mag33 };
	
local Glock17Sup = { type = "Glock17Sup",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Glock17Mag',
	clipName = 'Glock 17 Magazine (9mm)',
	clipIcon = 'Glock17Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Glock17Mag };
	
local Glock17L33Sup = { type = "Glock17L33Sup",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Glock17Mag33',
	clipName = 'Glock 33 rounds Magazine (9mm)',
	clipIcon = 'Glock17Mag33',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Glock17Mag33 };
	
local Glock18 = { type = "Glock18",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Glock17Mag',
	clipName = 'Glock 17 Magazine (9mm)',
	clipIcon = 'Glock17Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Glock17Mag };
	
local Glock18L33 = { type = "Glock18L33",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Glock17Mag33',
	clipName = 'Glock 33 rounds Magazine (9mm)',
	clipIcon = 'Glock17Mag33',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Glock17Mag33 };
	
local Glock18SA = { type = "Glock18SA",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Glock17Mag',
	clipName = 'Glock 17 Magazine (9mm)',
	clipIcon = 'Glock17Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Glock17Mag };
	
local Glock18L33SA = { type = "Glock18L33SA",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Glock17Mag',
	clipName = 'Glock 33 rounds Magazine (9mm)',
	clipIcon = 'Glock17Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Glock17Mag33 };
	
local Glock19 = { type = "Glock19",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Glock17Mag',
	clipName = 'Glock 17 Magazine (9mm)',
	clipIcon = 'Glock17Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSMGRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Glock17Mag };
	
local Glock19L33 = { type = "Glock19L33",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Glock17Mag33',
	clipName = 'Glock 33 rounds Magazine (9mm)',
	clipIcon = 'Glock17Mag33',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSMGRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Glock17Mag33 };

local Taurus1911 = { type = "Taurus1911",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Taurus1911Mag',
	clipName = 'Taurus 1911 Magazine (9mm)',
	clipIcon = 'Taurus1911Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSMGRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Taurus1911Mag };

local Taurus809 = { type = "Taurus809",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Taurus809Mag',
	clipName = 'Taurus 809 Magazine (9mm)',
	clipIcon = 'Taurus809Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSMGRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Taurus809Mag };	

local ColtDefender = { type = "ColtDefender",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'ColtDefenderMag',
	clipName = 'Colt Defender Magazine (9mm)',
	clipIcon = 'ColtDefenderMag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = ColtDefenderMag };
	
local ColtCommander = { type = "ColtCommander",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'ColtCommanderMag',
	clipName = 'Colt Commander Magazine (9mm)',
	clipIcon = 'ColtCommanderMag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSMGRack',
	containsClip = 1,
	rackTime = 10,
	clipData = ColtCommanderMag };
	
local Colt1911 = { type = "Colt1911",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Colt1911Mag',
	clipName = 'Colt 1911 Magazine (9mm)',
	clipIcon = 'Colt1911Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Colt1911Mag };
	
local Colt1911Sup = { type = "Colt1911Sup",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'Colt1911Mag',
	clipName = 'Colt 1911 Magazine (9mm)',
	clipIcon = 'Colt1911Mag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSmallPistolRack',
	containsClip = 1,
	rackTime = 10,
	clipData = Colt1911Mag };

local BrowningHP = { type = "BrowningHP",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'BrowningHPMag',
	clipName = 'Browning Hi-Power Magazine (9mm)',
	clipIcon = 'BrowningHPMag',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSMGRack',
	containsClip = 1,
	rackTime = 10,
	clipData = BrowningHPMag };

local BrowningHPL15 = { type = "BrowningHPL15",
	moduleName = 'QG',
	reloadClass = 'QGWeaponAutoMF',
	ammoType = 'BrowningHPMag15',
	clipName = 'Browning Hi-Power 15 rounds Magazine (9mm)',
	clipIcon = 'BrowningHPMag15',
	shootSound = '9mmFire',
	clickSound = 'QGSmallPistolEmpty',
	ejectSound = 'QGSmallPistolOut',
	insertSound = 'QGSmallPistolIn',
	rackSound = 'QGSMGRack',
	containsClip = 1,
	rackTime = 10,
	clipData = BrowningHPMag15 };
	
	-- Magazines
	
local SpringfieldXD9Mag = { type = "SpringfieldXD9Mag",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'SpringfieldXD9Mag',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 9,
	reloadTime = 30,
	rackTime = 10};
	
local Ber92Mag = { type = "Ber92Mag",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'Ber92Mag',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 15,
	reloadTime = 30,
	rackTime = 10};

local Ber93RMag = { type = "Ber93RMag",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'Ber93RMag',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 32,
	reloadTime = 30,
	rackTime = 10};
	
local RugerSR9Mag = { type = "RugerSR9Mag",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'RugerSR9Mag',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 17,
	reloadTime = 30,
	rackTime = 10};
	
local Glock17Mag = { type = "Glock17Mag",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'Glock17Mag',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 17,
	reloadTime = 30,
	rackTime = 10};
	
local Glock17Mag33 = { type = "Glock17Mag33",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'Glock17Mag33',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 33,
	reloadTime = 30,
	rackTime = 10};
	
local Taurus1911Mag = { type = "Taurus1911Mag",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'Taurus1911Mag',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 9,
	reloadTime = 30,
	rackTime = 10};

local Taurus809Mag = { type = "Taurus809Mag",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'Taurus809Mag',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 17,
	reloadTime = 30,
	rackTime = 10};
	
local ColtDefenderMag = { type = "ColtDefenderMag",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'ColtDefenderMag',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 9,
	reloadTime = 30,
	rackTime = 10};	
	
local ColtCommanderMag = { type = "ColtCommanderMag",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'ColtCommanderMag',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 9,
	reloadTime = 30,
	rackTime = 10};	

local Colt1911Mag = { type = "Colt1911Mag",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'Colt1911Mag',
	ammoType = '45ACPRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 8,
	reloadTime = 25,
	rackTime = 10};	
	
local BrowningHPMag = { type = "BrowningHPMag",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'BrowningHPMag',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 13,
	reloadTime = 30,
	rackTime = 10};
	
local BrowningHPMag15 = { type = "BrowningHPMag15",
	moduleName = 'QG',
	reloadClass = 'QGMagazine',
	clipType = 'BrowningHPMag15',
	ammoType = '9mmRounds',
	shootSound = 'none',
	clickSound = nil,
	ejectSound = 'QGMagLoad',
	insertSound = 'QGMagLoad',
	rackSound = 'QGMagLoad',
	containsClip = 0,
	maxCapacity = 15,
	reloadTime = 30,
	rackTime = 10};
	

--ReloadUtil
ReloadUtil:addWeaponType(SpringfieldXD9)
ReloadUtil:addWeaponType(Ber92)
ReloadUtil:addWeaponType(Ber92L32)
ReloadUtil:addWeaponType(Ber93R)
ReloadUtil:addWeaponType(Ber93RSA)
ReloadUtil:addWeaponType(Ber93RL15)
ReloadUtil:addWeaponType(Ber93RL15SA)
ReloadUtil:addWeaponType(RugerSR9)
ReloadUtil:addWeaponType(Glock17)
ReloadUtil:addWeaponType(Glock17L33)
ReloadUtil:addWeaponType(Glock17Sup)
ReloadUtil:addWeaponType(Glock17L33Sup)
ReloadUtil:addWeaponType(Glock18)
ReloadUtil:addWeaponType(Glock18L33)
ReloadUtil:addWeaponType(Glock18SA)
ReloadUtil:addWeaponType(Glock18L33SA)
ReloadUtil:addWeaponType(Glock19)
ReloadUtil:addWeaponType(Glock19L33)
ReloadUtil:addWeaponType(Taurus809)
ReloadUtil:addWeaponType(Taurus1911)
ReloadUtil:addWeaponType(ColtDefender)
ReloadUtil:addWeaponType(ColtCommander)
ReloadUtil:addWeaponType(Colt1911)
ReloadUtil:addWeaponType(Colt1911Sup)
ReloadUtil:addWeaponType(BrowningHP)
ReloadUtil:addWeaponType(BrowningHPL15)

ReloadUtil:addMagazineType(SpringfieldXD9Mag)
ReloadUtil:addMagazineType(Ber92Mag)
ReloadUtil:addMagazineType(Ber93RMag)
ReloadUtil:addMagazineType(RugerSR9Mag)
ReloadUtil:addMagazineType(Glock17Mag)
ReloadUtil:addMagazineType(Glock17Mag33)
ReloadUtil:addMagazineType(Taurus809Mag)
ReloadUtil:addMagazineType(Taurus1911Mag)
ReloadUtil:addMagazineType(ColtDefenderMag)
ReloadUtil:addMagazineType(ColtCommanderMag)
ReloadUtil:addMagazineType(Colt1911Mag)
ReloadUtil:addMagazineType(BrowningHPMag)
ReloadUtil:addMagazineType(BrowningHPMag15)
