 sreV                prefix rhsafrf\addons\rhs_c_weaponsounds Mikero DePbo.dll version RedHammerStudios.0.5.5.6344.r4474  00_coreConfigs\sound_types\cannon.hpp                 00_coreConfigs\sound_types\default.hpp     H          H  00_coreConfigs\sound_types\flamethrower.hpp     	          	  00_coreConfigs\sound_types\interior.hpp     K          K  00_coreConfigs\sound_types\interiorCannon.hpp                 00_coreConfigs\sound_types\katyusha.hpp     V	          V	  00_coreConfigs\sound_types\subsonic.hpp     Y          Y  00_coreConfigs\tail_types\cannon.hpp                 00_coreConfigs\tail_types\default.hpp                   00_coreConfigs\tail_types\interior.hpp                 00_coreConfigs\tail_types\interiorCannon.hpp     {          {  00_coreConfigs\tail_types\subsonic.hpp     1
          1
  01_soundSets\bulletSoundSets.hpp                 01_soundSets\tailSoundSets.hpp     Q          Q  01_soundSets\weaponSoundSets.hpp     1          1  02_soundShaders\tailSoundShaders.hpp     k          k  02_soundShaders\weaponSoundShaders.hpp                 03_functions\beltRattle.sqf     t          t  03_functions\boltSnap.sqf     ^          ^  03_functions\cfgFunctions.h     M          M  03_functions\openBolt.sqf                 03_functions\openBoltHandler.sqf                 04_soundConfigs\cfgDistanceFilters.h                 04_soundConfigs\cfgSound3DProcessors.h                 04_soundConfigs\cfgSoundCurves.h                 04_soundConfigs\cfgSounds.h                 05_weaponConfigs\bulletHits_default.hpp                 05_weaponConfigs\cfgAmmo.h                     05_weaponConfigs\cfgWeapons.h     ]          ]  05_weaponConfigs\c_cannons.hpp                     05_weaponConfigs\c_launchers.hpp                     05_weaponConfigs\c_lmgs.hpp                 05_weaponConfigs\c_mg.hpp                 05_weaponConfigs\c_mps.hpp                 05_weaponConfigs\c_pistols.hpp                     05_weaponConfigs\c_rifles.hpp     <          <  cfgPatches.h     @          @  cfgSoundSets.h     r           r   cfgSoundShaders.h                   config.bin                 sound_config.hpp                 zz_framework.hpp     h          h                       #define WEAPONSOUNDSHADERS_CANNON(WPNNAME,CALIBRENAME,LAYERNAME,FPVOLUME,SHOTVOLUME,FPMAXDIST,CLOSEMAXDIST,MIDMAXDIST,FARMAXDIST,FILEPATH,PREFIX) \
	class PREFIX##_##WPNNAME##_shot_fp_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\fp_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_3,1} \
		}; \
		volume = FPVOLUME; \
		range = FPMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 1 }, \
			{ FPMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_close_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_3,1} \
		}; \
		volume = SHOTVOLUME; \
		range = CLOSEMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 0 }, \
			{ FPMAXDIST, 1 }, \
			{ CLOSEMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_mid_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_3,1} \
		}; \
		volume =  SHOTVOLUME * (1 - (0.20 * forest)); \
		range = MIDMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST , 1}, \
			{ MIDMAXDIST ,0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_far_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_3,1} \
		}; \
		volume =  SHOTVOLUME * (1 - (0.2 * (forest max trees))); \
		range = FARMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST ,0 }, \
			{ MIDMAXDIST , 1 }, \
			{ FARMAXDIST , 1 } \
		}; \
	};




/************************************************************************************************************************************/
/* S O U N D S E T S ****************************************************************************************************************/
/************************************************************************************************************************************/
#define WEAPONSOUNDSET_CANNON(WPNNAME,VOL,VOLUMECURVE,PANNERTYPE,DISTANCEFILTER,PREFIX) \
	class PREFIX##_##WPNNAME##_Shot_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##WPNNAME##_shot_fp_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_close_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_mid_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_far_SoundShader \
		}; \
		occlusionFactor = 0.25; \
		obstructionFactor = 0.18; \
		volumeFactor = VOL; \
		volumeCurve = VOLUMECURVE; \
		sound3DProcessingType = PANNERTYPE; \
		distanceFilter = DISTANCEFILTER; \
		frequencyRandomizer = 0.5; \
		frequencyRandomizerMin = 0.1; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};#define WEAPONSOUNDSHADERS_DEFAULT(WPNNAME,CALIBRENAME,LAYERNAME,FPVOLUME,SHOTVOLUME,FPMAXDIST,CLOSEMAXDIST,MIDMAXDIST,FARMAXDIST,TAILNAME,TAILVOL,TAILCLOSEMAX,INTERIORMAX,FILEPATH,PREFIX) \
	class PREFIX##_##WPNNAME##_shot_fp_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\fp_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_3,1} \
		}; \
		volume = FPVOLUME; \
		range = FPMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 1 }, \
			{ FPMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_urbanLayer_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\layers\##LAYERNAME##\urban_close_1,1}, \
			{##FILEPATH##\shared\layers\##LAYERNAME##\urban_close_2,1}, \
			{##FILEPATH##\shared\layers\##LAYERNAME##\urban_close_3,1} \
		}; \
		volume =  SHOTVOLUME * 0.76 * (1 - interior) * houses; \
		range = 400 ; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ 400 , 0} \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_close_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_3,1} \
		}; \
		volume = SHOTVOLUME; \
		range = CLOSEMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 0 }, \
			{ FPMAXDIST, 0.9 }, \
			{ CLOSEMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_mid_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_3,1} \
		}; \
		volume =  SHOTVOLUME * 0.85 * (1 - interior) * (1 - (0.20 * forest)); \
		range = MIDMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST , 0.95}, \
			{ MIDMAXDIST ,0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_far_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_3,1} \
		}; \
		volume =  SHOTVOLUME * (1 - interior) * (1 - (forest max trees)); \
		range = FARMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST ,0 }, \
			{ MIDMAXDIST , 0.90}, \
			{ FARMAXDIST , 0.85 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_forest_far_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\forest_far_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\forest_far_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\forest_far_3,1} \
		}; \
		volume =  SHOTVOLUME * 0.7 * (1 - interior) * (forest max trees); \
		range = FARMAXDIST; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST ,0 }, \
			{ MIDMAXDIST , 0.6}, \
			{ FARMAXDIST , 0.6 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_Interior_closeMono_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##TAILNAME##\Interior_close_1,1}, \
			{##FILEPATH##\tails\##TAILNAME##\Interior_close_2,1}, \
			{##FILEPATH##\tails\##TAILNAME##\Interior_close_3,1}}; \
		volume =  TAILVOL * 1.5 * interior; \
		range =  CLOSEMAXDIST / 2 ; \
		rangeCurve[] = { \
			{ 1,0 }, \
			{ 3,0 }, \
			{ 7,1 }, \
			{  CLOSEMAXDIST / 2  , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_Interior_far_SoundShader { \
		samples[] = { \
			{##FILEPATH##\shared\layers\##LAYERNAME##\Interior_mid_1,1}, \
			{##FILEPATH##\shared\layers\##LAYERNAME##\Interior_mid_2,1}, \
			{##FILEPATH##\shared\layers\##LAYERNAME##\Interior_mid_3,1}}; \
		volume =  TAILVOL * interior * 0.7; \
		range = INTERIORMAX; \
		rangeCurve[] = { \
			{ 0,    0}, \
			{  CLOSEMAXDIST / 2 ,  1 }, \
			{ CLOSEMAXDIST , 0.3 }, \
			{ INTERIORMAX , 0 } \
		}; \
	};




/************************************************************************************************************************************/
/* S O U N D S E T S ****************************************************************************************************************/
/************************************************************************************************************************************/
#define WEAPONSOUNDSET_DEFAULT(WPNNAME,VOL,VOLUMECURVE,PANNERTYPE,DISTANCEFILTER,PREFIX) \
	class PREFIX##_##WPNNAME##_Shot_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##WPNNAME##_shot_fp_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_close_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_urbanLayer_soundShader, \
			##PREFIX##_##WPNNAME##_shot_mid_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_far_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_forest_far_soundShader, \
			##PREFIX##_##WPNNAME##_Interior_closeMono_SoundShader, \
			##PREFIX##_##WPNNAME##_Interior_far_SoundShader \
		}; \
		occlusionFactor = 0.35; \
		obstructionFactor = 0.18; \
		volumeFactor = VOL; \
		volumeCurve = VOLUMECURVE; \
		sound3DProcessingType = PANNERTYPE; \
		distanceFilter = DISTANCEFILTER; \
		frequencyRandomizer = 0.25; \
		frequencyRandomizerMin = 0.05; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};#define WEAPONSOUNDSHADERS_FLAMETHROWER(WPNNAME,SHOTVOLUME,CLOSEMAXDIST,MIDMAXDIST,FARMAXDIST,FILEPATH,PREFIX) \
	class PREFIX##_##WPNNAME##_shot_close_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\close_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\close_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\close_3,1} \
		}; \
		volume = SHOTVOLUME; \
		range = CLOSEMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 1 }, \
			{ 2, 1 }, \
			{ CLOSEMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_mid_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\mid_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\mid_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\mid_3,1} \
		}; \
		volume =  SHOTVOLUME *  (1 - (0.20 * forest)); \
		range = MIDMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST , 0.8}, \
			{ MIDMAXDIST ,0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_far_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\far_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\far_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\far_3,1} \
		}; \
		volume =  SHOTVOLUME * (1 - (0.3 * (forest max trees))); \
		range = FARMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST ,0 }, \
			{ MIDMAXDIST , 0.75}, \
			{ FARMAXDIST , 0.75 } \
		}; \
	};





/************************************************************************************************************************************/
/* S O U N D S E T S ****************************************************************************************************************/
/************************************************************************************************************************************/
#define WEAPONSOUNDSET_FLAMETHROWER(WPNNAME,VOL,VOLUMECURVE,PANNERTYPE,DISTANCEFILTER,PREFIX) \
	class PREFIX##_##WPNNAME##_Shot_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##WPNNAME##_shot_close_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_mid_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_far_SoundShader \
		}; \
		occlusionFactor = 0.35; \
		obstructionFactor = 0.18; \
		volumeFactor = VOL; \
		volumeCurve = VOLUMECURVE; \
		sound3DProcessingType = PANNERTYPE; \
		distanceFilter = DISTANCEFILTER; \
		frequencyRandomizer = 0.5; \
		frequencyRandomizerMin = 0.1; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};#define WEAPONSOUNDSHADERS_INTERIOR(WPNNAME,INSIDEMAXDIST,CALIBRENAME,LAYERNAME,FPVOLUME,SHOTVOLUME,FPMAXDIST,CLOSEMAXDIST,MIDMAXDIST,FARMAXDIST,TAILNAME,TAILVOL,TAILCLOSEMAX,INTERIORMAX,FILEPATH,PREFIX) \
	class PREFIX##_##WPNNAME##_shot_inside_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\int_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\int_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\int_3,1} \
		}; \
		volume = FPVOLUME; \
		range = INSIDEMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 1 }, \
			{ 1.2, 1 }, \
			{ INSIDEMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_fp_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\fp_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_3,1} \
		}; \
		volume = FPVOLUME; \
		range = FPMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 0 }, \
			{ 1.2, 0 }, \
			{ INSIDEMAXDIST , 1 }, \
			{ FPMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_urbanLayer_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\layers\##LAYERNAME##\urban_close_1,1}, \
			{##FILEPATH##\shared\layers\##LAYERNAME##\urban_close_2,1}, \
			{##FILEPATH##\shared\layers\##LAYERNAME##\urban_close_3,1} \
		}; \
		volume =  SHOTVOLUME * 1.1 * (1 - interior) * houses; \
		range = MIDMAXDIST ; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ MIDMAXDIST , 0} \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_close_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_3,1} \
		}; \
		volume = SHOTVOLUME; \
		range = CLOSEMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 0 }, \
			{ FPMAXDIST, 0.9 }, \
			{ CLOSEMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_mid_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_3,1} \
		}; \
		volume =  SHOTVOLUME * 0.85 * (1 - interior) * (1 - (0.20 * forest)); \
		range = MIDMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST , 0.8}, \
			{ MIDMAXDIST ,0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_far_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_3,1} \
		}; \
		volume =  SHOTVOLUME * (1 - interior) * (1 - (forest max trees)); \
		range = FARMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST ,0 }, \
			{ MIDMAXDIST , 0.75}, \
			{ FARMAXDIST , 0.75 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_forest_far_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\forest_far_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\forest_far_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\forest_far_3,1} \
		}; \
		volume =  SHOTVOLUME * 0.7 * (1 - interior) * (forest max trees); \
		range = FARMAXDIST; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST ,0 }, \
			{ MIDMAXDIST , 0.6}, \
			{ FARMAXDIST , 0.6 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_Interior_closeMono_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##TAILNAME##\Interior_close_1,1}, \
			{##FILEPATH##\tails\##TAILNAME##\Interior_close_2,1}, \
			{##FILEPATH##\tails\##TAILNAME##\Interior_close_3,1}}; \
		volume =  TAILVOL * 1.5 * interior; \
		range =  CLOSEMAXDIST / 2 ; \
		rangeCurve[] = { \
			{ 1,0 }, \
			{ 3,0 }, \
			{ 7,1 }, \
			{  CLOSEMAXDIST / 2  , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_Interior_far_SoundShader { \
		samples[] = { \
			{##FILEPATH##\shared\layers\##LAYERNAME##\Interior_mid_1,1}, \
			{##FILEPATH##\shared\layers\##LAYERNAME##\Interior_mid_2,1}, \
			{##FILEPATH##\shared\layers\##LAYERNAME##\Interior_mid_3,1}}; \
		volume =  TAILVOL * interior * 0.7; \
		range = INTERIORMAX; \
		rangeCurve[] = { \
			{ 0,    0}, \
			{  CLOSEMAXDIST / 2 ,  1 }, \
			{ CLOSEMAXDIST , 0.3 }, \
			{ INTERIORMAX , 0 } \
		}; \
	};




/************************************************************************************************************************************/
/* S O U N D S E T S ****************************************************************************************************************/
/************************************************************************************************************************************/
#define WEAPONSOUNDSET_INTERIOR(WPNNAME,VOL,VOLUMECURVE,PANNERTYPE,DISTANCEFILTER,PREFIX) \
	class PREFIX##_##WPNNAME##_Shot_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##WPNNAME##_shot_inside_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_fp_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_close_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_urbanLayer_soundShader, \
			##PREFIX##_##WPNNAME##_shot_mid_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_far_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_forest_far_soundShader, \
			##PREFIX##_##WPNNAME##_Interior_closeMono_SoundShader, \
			##PREFIX##_##WPNNAME##_Interior_far_SoundShader \
		}; \
		occlusionFactor = 0.35; \
		obstructionFactor = 0.18; \
		volumeFactor = VOL; \
		volumeCurve = VOLUMECURVE; \
		sound3DProcessingType = PANNERTYPE; \
		distanceFilter = DISTANCEFILTER; \
		frequencyRandomizer = 0.5; \
		frequencyRandomizerMin = 0.1; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};#define WEAPONSOUNDSHADERS_INTERIORCANNON(WPNNAME,INSIDEMAXDIST,CALIBRENAME,LAYERNAME,FPVOLUME,SHOTVOLUME,FPMAXDIST,CLOSEMAXDIST,MIDMAXDIST,FARMAXDIST,FILEPATH,PREFIX) \
	class PREFIX##_##WPNNAME##_shot_inside_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\int_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\int_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\int_3,1} \
		}; \
		volume = FPVOLUME; \
		range = INSIDEMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 1 }, \
			{ 1.2, 1 }, \
			{ INSIDEMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_fp_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\fp_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_3,1} \
		}; \
		volume = FPVOLUME; \
		range = FPMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 0 }, \
			{ 1.2, 0 }, \
			{ INSIDEMAXDIST , 1 }, \
			{ FPMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_close_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\close_3,1} \
		}; \
		volume = SHOTVOLUME; \
		range = CLOSEMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 0 }, \
			{ FPMAXDIST, 1 }, \
			{ CLOSEMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_mid_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\mid_3,1} \
		}; \
		volume =  SHOTVOLUME * (1 - (0.20 * forest)); \
		range = MIDMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST , 1}, \
			{ MIDMAXDIST ,   0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_far_soundShader { \
		samples[] = { \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_1,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_2,1}, \
			{##FILEPATH##\shared\calibres\##CALIBRENAME##\far_3,1} \
		}; \
		volume =  SHOTVOLUME * (1 - (0.2 * (forest max trees))); \
		range = FARMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST ,0 }, \
			{ MIDMAXDIST , 1}, \
			{ FARMAXDIST , 1 } \
		}; \
	};




/************************************************************************************************************************************/
/* S O U N D S E T S ****************************************************************************************************************/
/************************************************************************************************************************************/
#define WEAPONSOUNDSET_INTERIORCANNON(WPNNAME,VOL,VOLUMECURVE,PANNERTYPE,DISTANCEFILTER,PREFIX) \
	class PREFIX##_##WPNNAME##_Shot_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##WPNNAME##_shot_inside_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_fp_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_close_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_mid_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_far_SoundShader \
		}; \
		occlusionFactor = 0.25; \
		obstructionFactor = 0.18; \
		volumeFactor = VOL; \
		volumeCurve = VOLUMECURVE; \
		sound3DProcessingType = PANNERTYPE; \
		distanceFilter = DISTANCEFILTER; \
		frequencyRandomizer = 0.5; \
		frequencyRandomizerMin = 0.1; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};#define WEAPONSOUNDSHADERS_KATYUSHA(WPNNAME,FPVOLUME,SHOTVOLUME,FPMAXDIST,MIDMAXDIST,FARMAXDIST,FILEPATH,PREFIX) \
	class PREFIX##_##WPNNAME##_shot_fp_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\fp_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_3,1} \
		}; \
		volume = FPVOLUME; \
		range = FPMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 1 }, \
			{ FPMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_mid_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\mid_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\mid_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\mid_3,1} \
		}; \
		volume =  SHOTVOLUME * (1 - (0.20 * forest)); \
		range = MIDMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ FPMAXDIST , 1}, \
			{ MIDMAXDIST ,0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_far_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\far_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\far_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\far_3,1} \
		}; \
		volume =  SHOTVOLUME * (1 - (0.2 * (forest max trees))); \
		range = FARMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ FPMAXDIST ,  0 }, \
			{ MIDMAXDIST , 0.75}, \
			{ FARMAXDIST , 0.75 } \
		}; \
	};




/************************************************************************************************************************************/
/* S O U N D S E T S ****************************************************************************************************************/
/************************************************************************************************************************************/
#define WEAPONSOUNDSET_KATYUSHA(WPNNAME,VOL,VOLUMECURVE,PANNERTYPE,DISTANCEFILTER,PREFIX) \
	class PREFIX##_##WPNNAME##_Shot_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##WPNNAME##_shot_fp_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_mid_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_far_SoundShader \
		}; \
		occlusionFactor = 0.15; \
		obstructionFactor = 0.18; \
		volumeFactor = VOL; \
		volumeCurve = VOLUMECURVE; \
		sound3DProcessingType = PANNERTYPE; \
		distanceFilter = DISTANCEFILTER; \
		frequencyRandomizer = 0.5; \
		frequencyRandomizerMin = 0.1; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};#define WEAPONSOUNDSHADERS_SUBSONIC(WPNNAME,FPVOLUME,SHOTVOLUME,FPMAXDIST,CLOSEMAXDIST,FARMAXDIST,TAILNAME,TAILVOL,TAILCLOSEMAX,FILEPATH,PREFIX) \
	class PREFIX##_##WPNNAME##_shot_fp_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\fp_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\fp_3,1} \
		}; \
		volume = FPVOLUME; \
		range = FPMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 1 }, \
			{ FPMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_close_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\close_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\close_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\close_3,1} \
		}; \
		volume = SHOTVOLUME; \
		range = CLOSEMAXDIST ; \
		rangeCurve[] = { \
			{ 0, 0 }, \
			{ FPMAXDIST, 0.9 }, \
			{ CLOSEMAXDIST , 0 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_shot_far_soundShader { \
		samples[] = { \
			{##FILEPATH##\specific\##WPNNAME##\far_1,1}, \
			{##FILEPATH##\specific\##WPNNAME##\far_2,1}, \
			{##FILEPATH##\specific\##WPNNAME##\far_3,1} \
		}; \
		volume =  SHOTVOLUME * (1 - interior) * (0.4 - (forest max trees)); \
		range = FARMAXDIST ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ CLOSEMAXDIST , 0.9 }, \
			{ FARMAXDIST , 0.75 } \
		}; \
	}; \
	class PREFIX##_##WPNNAME##_Interior_closeMono_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##TAILNAME##\Interior_close_1,1}, \
			{##FILEPATH##\tails\##TAILNAME##\Interior_close_2,1}, \
			{##FILEPATH##\tails\##TAILNAME##\Interior_close_3,1}}; \
		volume =  TAILVOL * 1.5 * interior; \
		range = CLOSEMAXDIST ; \
		rangeCurve[] = { \
			{ 1,0 }, \
			{ 3,0 }, \
			{ 7,1 }, \
			{ CLOSEMAXDIST , 0 } \
		}; \
	};




/************************************************************************************************************************************/
/* S O U N D S E T S ****************************************************************************************************************/
/************************************************************************************************************************************/
#define WEAPONSOUNDSET_SUBSONIC(WPNNAME,VOL,VOLUMECURVE,PANNERTYPE,DISTANCEFILTER,PREFIX) \
	class PREFIX##_##WPNNAME##_Shot_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##WPNNAME##_shot_fp_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_close_SoundShader, \
			##PREFIX##_##WPNNAME##_shot_far_SoundShader, \
			##PREFIX##_##WPNNAME##_Interior_closeMono_SoundShader \
		}; \
		occlusionFactor = 0.45; \
		obstructionFactor = 0.38; \
		volumeFactor = VOL; \
		volumeCurve = VOLUMECURVE; \
		sound3DProcessingType = PANNERTYPE; \
		distanceFilter = DISTANCEFILTER; \
		frequencyRandomizer = 0.4; \
		frequencyRandomizerMin = 0.1; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};#define TAILSOUNDSHADERS_CANNON(TAILNAME,FOLDERNAME,VOL,CLOSEMAX,FILEPATH,PREFIX) \
	class PREFIX##_##TAILNAME##_Meadows_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_3,1}}; \
		volume =  VOL * (meadows max sea) ; \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Houses_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_3,1}}; \
		volume =  VOL * houses ; \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Forest_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_3,1}}; \
		volume =  VOL * (forest max trees) ; \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	};


#define TAILSOUNDSET_CANNON(TAILNAME,VOL,PREFIX) \
	class PREFIX##_##TAILNAME##_Tail_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##TAILNAME##_Meadows_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Houses_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Forest_close_SoundShader \
		}; \
		volumeFactor = 1 * VOL; \
		volumeCurve = InverseSquare2Curve; \
		occlusionFactor = 0.18; \
		obstructionFactor = 0; \
		sound3DProcessingType = ##PREFIX##_cannonTail_3DProcessingType; \
		soundShadersLimit = 2; \
		distanceFilter = ##PREFIX##_rifleShotDistanceFilter; \
		frequencyRandomizer = 2; \
		frequencyRandomizerMin = 0.2; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};#define TAILSOUNDSHADERS_DEFAULT(TAILNAME,FOLDERNAME,VOL,INTVOL,CLOSEMAX,FARMAX,FILEPATH,PREFIX) \
	class PREFIX##_##TAILNAME##_Meadows_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_3,1}}; \
		volume =  VOL * (meadows max sea) * (1 - (interior * 0.7)); \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Meadows_far_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_far_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_far_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_far_3,1}}; \
		volume =  VOL * (meadows max sea) * (1 - interior); \
		range = FARMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ ##CLOSEMAX##,1 }, \
			{ ##FARMAX##, 1 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Houses_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_3,1}}; \
		volume =  VOL * houses * (1 - (interior * 0.7)); \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Houses_far_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_far_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_far_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_far_3,1}}; \
		volume =  VOL * houses * (1 - interior); \
		range = FARMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ ##CLOSEMAX##,1 }, \
			{ ##FARMAX##, 1 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Forest_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_3,1}}; \
		volume =  VOL * (forest max trees) * (1 - (interior * 0.7)); \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Forest_far_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_far_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_far_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_far_3,1}}; \
		volume =  VOL * (forest max trees) * (1 - interior); \
		range = FARMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ ##CLOSEMAX##,1 }, \
			{ ##FARMAX##, 1 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Interior_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Interior_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Interior_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Interior_close_3,1}}; \
		volume =  INTVOL  * interior; \
		range = 7; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ 3,1 }, \
			{ 7,0 } \
		}; \
		limitation = 1; \
	};



#define TAILSOUNDSET_DEFAULT(TAILNAME,VOL,PREFIX) \
	class PREFIX##_##TAILNAME##_Tail_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##TAILNAME##_Meadows_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Meadows_far_SoundShader, \
			##PREFIX##_##TAILNAME##_Houses_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Houses_far_SoundShader, \
			##PREFIX##_##TAILNAME##_Forest_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Forest_far_SoundShader, \
			##PREFIX##_##TAILNAME##_Interior_close_SoundShader \
		}; \
		volumeFactor = 1 * VOL; \
		volumeCurve = InverseSquare2Curve; \
		occlusionFactor = 0.25; \
		obstructionFactor = 0; \
		sound3DProcessingType = ##PREFIX##_Tail_3DProcessingType; \
		soundShadersLimit = 2; \
		distanceFilter = ##PREFIX##_rifleShotDistanceFilter; \
		frequencyRandomizer = 2; \
		frequencyRandomizerMin = 0.2; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};#define TAILSOUNDSHADERS_INTERIOR(TAILNAME,FOLDERNAME,VOL,INTVOL,CLOSEMAX,FARMAX,FILEPATH,PREFIX) \
	class PREFIX##_##TAILNAME##_Meadows_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_3,1}}; \
		volume =  VOL * (meadows max sea) * (1 - (interior * 0.7)); \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ 1.2, 0 }, \
			{ 1.21, 1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Meadows_far_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_far_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_far_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_far_3,1}}; \
		volume =  VOL * (meadows max sea) * (1 - interior); \
		range = FARMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ ##CLOSEMAX##,1 }, \
			{ ##FARMAX##, 1 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Houses_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_3,1}}; \
		volume =  VOL * houses * (1 - (interior * 0.7)); \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ 2.4, 0 }, \
			{ 3, 1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Houses_far_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_far_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_far_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_far_3,1}}; \
		volume =  VOL * houses * (1 - interior); \
		range = FARMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ ##CLOSEMAX##,1 }, \
			{ ##FARMAX##, 1 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Forest_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_3,1}}; \
		volume =  VOL * (forest max trees) * (1 - (interior * 0.7)); \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ 2.4, 0 }, \
			{ 3, 1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Forest_far_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_far_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_far_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_far_3,1}}; \
		volume =  VOL * (forest max trees) * (1 - interior); \
		range = FARMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ ##CLOSEMAX##,1 }, \
			{ ##FARMAX##, 1 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Interior_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Interior_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Interior_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Interior_close_3,1}}; \
		volume =  INTVOL  * interior; \
		range = 7; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ 3,1 }, \
			{ 7,0 } \
		}; \
		limitation = 1; \
	};



#define TAILSOUNDSET_INTERIOR(TAILNAME,VOL,PREFIX) \
	class PREFIX##_##TAILNAME##_Tail_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##TAILNAME##_Meadows_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Meadows_far_SoundShader, \
			##PREFIX##_##TAILNAME##_Houses_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Houses_far_SoundShader, \
			##PREFIX##_##TAILNAME##_Forest_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Forest_far_SoundShader, \
			##PREFIX##_##TAILNAME##_Interior_close_SoundShader \
		}; \
		volumeFactor = 1 * VOL; \
		volumeCurve = InverseSquare2Curve; \
		occlusionFactor = 0.25; \
		obstructionFactor = 0; \
		sound3DProcessingType = ##PREFIX##_Tail_3DProcessingType; \
		soundShadersLimit = 2; \
		distanceFilter = ##PREFIX##_rifleShotDistanceFilter; \
		frequencyRandomizer = 2; \
		frequencyRandomizerMin = 0.2; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};#define TAILSOUNDSHADERS_INTERIORCANNON(TAILNAME,FOLDERNAME,VOL,CLOSEMAX,FILEPATH,PREFIX) \
	class PREFIX##_##TAILNAME##_Meadows_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_3,1}}; \
		volume =  VOL * (meadows max sea) ; \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ 1.2, 0 }, \
			{ 1.21, 1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Houses_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_3,1}}; \
		volume =  VOL * houses ; \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ 2.4, 0 }, \
			{ 3, 1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Forest_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_3,1}}; \
		volume =  VOL * (forest max trees) ; \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,0 }, \
			{ 2.4, 0 }, \
			{ 3, 1 }, \
			{ ##CLOSEMAX##, 0 } \
		}; \
		limitation = 1; \
	};


#define TAILSOUNDSET_INTERIORCANNON(TAILNAME,VOL,PREFIX) \
	class PREFIX##_##TAILNAME##_Tail_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##TAILNAME##_Meadows_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Houses_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Forest_close_SoundShader \
		}; \
		volumeFactor = 1 * VOL; \
		volumeCurve = InverseSquare2Curve; \
		occlusionFactor = 0.18; \
		obstructionFactor = 0; \
		sound3DProcessingType = ##PREFIX##_cannonTail_3DProcessingType; \
		soundShadersLimit = 2; \
		distanceFilter = ##PREFIX##_rifleShotDistanceFilter; \
		frequencyRandomizer = 2; \
		frequencyRandomizerMin = 0.2; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};#define TAILSOUNDSHADERS_SUBSONIC(TAILNAME,FOLDERNAME,VOL,INTVOL,CLOSEMAX,FILEPATH,PREFIX) \
	class PREFIX##_##TAILNAME##_Meadows_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Meadows_close_3,1}}; \
		volume =  VOL * (meadows max sea) * (1 - (interior * 0.7)); \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ ##CLOSEMAX##, 1 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Houses_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Houses_close_3,1}}; \
		volume =  VOL * houses * (1 - (interior * 0.7)); \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ ##CLOSEMAX##, 1 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Forest_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Forest_close_3,1}}; \
		volume =  VOL * (forest max trees) * (1 - (interior * 0.7)); \
		range = CLOSEMAX ; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ ##CLOSEMAX##, 1 } \
		}; \
		limitation = 1; \
	}; \
	class PREFIX##_##TAILNAME##_Interior_close_SoundShader { \
		samples[] = { \
			{##FILEPATH##\tails\##FOLDERNAME##\Interior_close_1,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Interior_close_2,1}, \
			{##FILEPATH##\tails\##FOLDERNAME##\Interior_close_3,1}}; \
		volume =  INTVOL  * interior; \
		range = 7; \
		rangeCurve[] = { \
			{ 0,1 }, \
			{ 3,1 }, \
			{ 7,0 } \
		}; \
		limitation = 1; \
	};



#define TAILSOUNDSET_SUBSONIC(TAILNAME,VOL,PREFIX) \
	class PREFIX##_##TAILNAME##_Tail_SoundSet { \
		soundShaders[] = { \
			##PREFIX##_##TAILNAME##_Meadows_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Houses_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Forest_close_SoundShader, \
			##PREFIX##_##TAILNAME##_Interior_close_SoundShader \
		}; \
		volumeFactor = 1 * VOL; \
		volumeCurve = InverseSquare2Curve; \
		occlusionFactor = 0.25; \
		obstructionFactor = 0; \
		sound3DProcessingType = ##PREFIX##_Tail_3DProcessingType; \
		soundShadersLimit = 2; \
		distanceFilter = ##PREFIX##_rifleShotDistanceFilter; \
		frequencyRandomizer = 1.2; \
		frequencyRandomizerMin = 0.2; \
		spatial = 1; \
		doppler = 0; \
		loop = 0; \
	};	/* Rifle */
	class RHS_BulletSonicCrack_rifle_SoundSet {
		soundShaders[] = {
			"RHS_BulletSonicCrack_rifle_close_SoundShader",
			"RHS_BulletSonicCrack_rifle_forest_close_SoundShader",
			"RHS_BulletSonicCrack_rifle_mid_SoundShader",
			"RHS_BulletSonicCrack_rifle_forest_mid_SoundShader",
			"RHS_BulletSonicCrack_rifle_far_SoundShader"
		};
		volumeFactor = 1.15;
		volumeCurve = "InverseSquare3Curve";
		spatial = 1;
		doppler = 0;
		loop = 0;
		//sound3DProcessingType = "WeaponMEdiumShot3DProcessingType";
		sound3DProcessingType = "RHS_rifleBulletCrack_3DProcessingType";
		frequencyRandomizer = 1.2;
		frequencyRandomizerMin = 0.2;
	};
	class RHS_bulletSonicCrackTail_rifle_SoundSet {
		soundShaders[] = {
			"RHS_BulletSonicCrack_rifle_tailMeadows_SoundShader",
			"RHS_BulletSonicCrack_rifle_tailForest_SoundShader",
			"RHS_BulletSonicCrack_rifle_tailHouses_SoundShader"
		};
		volumeFactor = 1.15;
		volumeCurve = "InverseSquare2Curve";
		spatial = 1;
		doppler = 0;
		loop = 0;
		soundShadersLimit = 2;
		frequencyRandomizer = 1.5;
		frequencyRandomizerMin = 0.2;
		//sound3DProcessingType = "SonicCrackTail3DProcessingType";
		sound3DProcessingType = "RHS_Tail_3DProcessingType";
		distanceFilter = "RHS_rifleShotDistanceFilter";
	};
	class RHS_bulletFlyBy_rifle_SoundSet {
		soundShaders[] = {"RHS_BulletFlyBy_rifle_SoundShader"};
		volumeFactor = 1.25;
		volumeCurve = "InverseSquare1Curve";
		frequencyRandomizer = 2;
		frequencyRandomizerMin = 0.3;
		spatial = 1;
		doppler = 0;
		loop = 0;
	};
	
	/* Shell */
	class RHS_BulletSonicCrack_shell_SoundSet {
		soundShaders[] = {
			"RHS_BulletSonicCrack_shell_close_SoundShader",
			"RHS_BulletSonicCrack_shell_far_SoundShader"
		};
		volumeFactor = 1.5;
		volumeCurve = "InverseSquare2Curve";
		spatial = 1;
		doppler = 0;
		loop = 0;
		sound3DProcessingType = "WeaponMEdiumShot3DProcessingType";
		frequencyRandomizer = 0.8;
		frequencyRandomizerMin = 0.1;
	};
	class RHS_bulletSonicCrackTail_shell_SoundSet {
		soundShaders[] = {
			"RHS_BulletSonicCrack_shell_tailMeadows_SoundShader",
			"RHS_BulletSonicCrack_shell_tailForest_SoundShader",
			"RHS_BulletSonicCrack_shell_tailHouses_SoundShader"
		};
		volumeFactor = 1.5;
		volumeCurve = "InverseSquare2Curve";
		spatial = 1;
		doppler = 0;
		loop = 0;
		soundShadersLimit = 2;
		frequencyRandomizer = 1;
		frequencyRandomizerMin = 0.2;
		sound3DProcessingType = "RHS_Tail_3DProcessingType";
		distanceFilter = "RHS_rifleShotDistanceFilter";
	};
	class RHS_bulletFlyBy_shell_SoundSet {
		soundShaders[] = {"RHS_BulletFlyBy_shell_SoundShader"};
		volumeFactor = 1.45;
		volumeCurve = "InverseSquare2Curve";
		frequencyRandomizer = 2;
		frequencyRandomizerMin = 0.3;
		spatial = 1;
		doppler = 0;
		loop = 0;
	};TAILSOUNDSET_DEFAULT(rifle_small,1.55,PREFIX)
TAILSOUNDSET_DEFAULT(rifle_med,1.55,PREFIX)
TAILSOUNDSET_INTERIOR(int_rifle_med,1.55,PREFIX)
TAILSOUNDSET_DEFAULT(pistol1_old,1.38,PREFIX)

TAILSOUNDSET_DEFAULT(rifle2,1.55,PREFIX)

/* Cannons */
TAILSOUNDSET_INTERIORCANNON(int_cannon_large,1.05,PREFIX)
TAILSOUNDSET_INTERIORCANNON(cannon_large,1.05,PREFIX)

TAILSOUNDSET_INTERIORCANNON(int_cannon_med,1.00,PREFIX)
TAILSOUNDSET_INTERIORCANNON(cannon_med,1.00,PREFIX)

TAILSOUNDSET_INTERIORCANNON(cannon_20mm,1.00,PREFIX)

// Subsonic
TAILSOUNDSET_SUBSONIC(sd_subsonic,1.55,PREFIX)#define BASEVOLRIFLE 1.55
#define BASEVOLPISTOL 1.55
#define BASEVOLTANK 1.68
#define BASEVOLCURVE "InverseSquare2Curve"
#define BASE3D "RHS_Shot_light_3DProcessingType"
#define MED3D "RHS_Shot_medium_3DProcessingType"
#define BASEFILTER "RHS_rifleShotDistanceFilter"

///////////////////////




///////////////////////


/* MGs */
WEAPONSOUNDSET_DEFAULT(pk,BASEVOLRIFLE,BASEVOLCURVE,BASE3D,BASEFILTER,PREFIX)

/* LMGs */


/* Rifles and Carbines */
WEAPONSOUNDSET_DEFAULT(dragunov,BASEVOLRIFLE,BASEVOLCURVE,BASE3D,BASEFILTER,PREFIX)
WEAPONSOUNDSET_DEFAULT(ak74,BASEVOLRIFLE,BASEVOLCURVE,BASE3D,BASEFILTER,PREFIX)
WEAPONSOUNDSET_DEFAULT(ak47,BASEVOLRIFLE,BASEVOLCURVE,BASE3D,BASEFILTER,PREFIX)


/* MPs */
WEAPONSOUNDSET_DEFAULT(pp2000,BASEVOLRIFLE,BASEVOLCURVE,BASE3D,BASEFILTER,PREFIX)//TailName,FOLDERNAME,TVol,INTVOL,TCDistTFarDist, FILEPATH,PREFIX

TAILSOUNDSHADERS_DEFAULT(rifle_small,rifle_small,1.15,1.15,250,3000,FILEPATH,PREFIX)
TAILSOUNDSHADERS_DEFAULT(rifle_med,rifle_med,1.15,1.15,250,3000,FILEPATH,PREFIX)
TAILSOUNDSHADERS_INTERIOR(int_rifle_med,rifle_med,1.15,1.15,250,3200,FILEPATH,PREFIX)
TAILSOUNDSHADERS_DEFAULT(rifle2,rifle2,1.10,1.15,250,3000,FILEPATH,PREFIX)
TAILSOUNDSHADERS_DEFAULT(pistol1_old,pistol1_old,1.15,1.15,250,2600,FILEPATH,PREFIX)


//TailName, FOLDERNAME,TVol,TDist,  FILEPATH,PREFIX
/* Cannon Tails */
TAILSOUNDSHADERS_INTERIORCANNON(int_cannon_large,cannon_large,1.15,5100,FILEPATH,PREFIX)
TAILSOUNDSHADERS_CANNON(cannon_large,cannon_large,1.15,5100,FILEPATH,PREFIX)

TAILSOUNDSHADERS_INTERIORCANNON(int_cannon_med,cannon_med,1.15,4700,FILEPATH,PREFIX)
TAILSOUNDSHADERS_CANNON(cannon_med,cannon_med,1.15,4700,FILEPATH,PREFIX)

TAILSOUNDSHADERS_CANNON(cannon_20mm,cannon_20mm,1.15,4200,FILEPATH,PREFIX)

/* Subsonic */
// (TAILNAME,FOLDERNAME,VOL,INTVOL,CLOSEMAX,FILEPATH,PREFIX)
TAILSOUNDSHADERS_SUBSONIC(sd_subsonic,sd_subsonic,1.10,1.10,400,FILEPATH,PREFIX)//WPNNAME,CALIBRENAME,LAYERNAME,FPVOLUME,SHOTVOLUME,FPMAXDIST,CLOSEMAXDIST,MIDMAXDIST,FARMAXDIST,TAILNAME,TAILVOL,TAILCLOSEMAX,INTERIORMAX,FILEPATH,PREFIX)\

//MGs
WEAPONSOUNDSHADERS_DEFAULT(pk,762mm_mmg,rifle,1.0,1,17,130,750,3300,rifle_small,1,150,1200,FILEPATH,PREFIX)


//LMGs
WEAPONSOUNDSHADERS_DEFAULT(dragunov,rifle,rifle,1.0,1,17,130,750,3300,rifle2,1,150,1200,FILEPATH,PREFIX)


//Rifles and Carbines
WEAPONSOUNDSHADERS_DEFAULT(ak74,545mm,rifle,1.0,1,17,130,750,3000,rifle_small,1,150,1200,FILEPATH,PREFIX)
WEAPONSOUNDSHADERS_DEFAULT(ak47,762mm_mmg,rifle,1.0,1,17,130,750,3300,rifle_small,1,150,1200,FILEPATH,PREFIX)

//MPs
WEAPONSOUNDSHADERS_DEFAULT(pp2000,9mm,pistol,1.0,1,17,130,750,2800,rifle_small,1,150,1200,FILEPATH,PREFIX)
params [
	"_unit",
	"_weapon",
	"_soundArray",
	"_bulletsLeft"
];
private _camPos = positionCameraToWorld [0,0,0];
if ((_camPos distance _unit) <= 30) then {
	if((_unit ammo _weapon) >= _bulletsLeft) then {
		private _sound = selectRandom _soundArray;
		if (((vehicle _unit == vehicle player) || (_unit == player)) && (cameraView != "EXTERNAL")) then {
			playSound _sound;
		} else {
			[_unit,_sound] spawn {
				params ["_unit","_sound"];
				private _dummy = "#particleSource" createVehicleLocal (eyePos _unit);
				_dummy say3d [_sound,65,1];
				sleep 1.5;
				deleteVehicle _dummy;
			};
		};
	};
};params [
	"_unit",
	"_weapon",
	"_sound"
];
if (_unit == cameraOn) exitWith {};
private _camPos = positionCameraToWorld [0,0,0];
if ((_camPos distance _unit) <= 30) then {
	if((_unit ammo _weapon) > 0) then {
		private _lastShot = _unit getVariable ["RHS_lastShot", 0];
		if ((time - _lastShot) >= 0.18) then {	
			[_unit,_sound] spawn {
				params ["_unit","_sound"];
				private _dummy = "#particleSource" createVehicleLocal (eyePos _unit);
				_dummy say3d [_sound,100,1];
				sleep 1.5;
				deleteVehicle _dummy;
			};
		};
		_unit setVariable ["RHS_lastShot", time, false];
	};
};#define FILEMACRO(PREFIX,SCRIPTPATH) \
class CfgFunctions { \
	class PREFIX## { \
		tag = ##PREFIX##; \
		class functions { \
			class boltSnap { \
				file = ##SCRIPTPATH##\03_functions\boltSnap.sqf; \
				description = "Handles the sound of the initial forward-snapping of weapons that operate from an open bolt"; \
			}; \
			class beltRattle { \
				file = ##SCRIPTPATH##\03_functions\beltRattle.sqf; \
				description = "Handles the belt rattling sounds."; \
			}; \
			class openBolt { \
				file = ##SCRIPTPATH##\03_functions\openBolt.sqf; \
				description = ""; \
			}; \
		}; \
	}; \
};

/*************************************************************************************/
FILEMACRO(PREFIX,SCRIPTPATH)
#undef FILEMACRO
/*************************************************************************************/
/* Handles the simulation of weapons that fire from an open bolt. There is a slight delay between pulling the trigger and the actual shot and you can hear the bolt moving forward.
/* Probably ToDo: Implementation via unscheduled environment */


// Actual Script, to be called via addAction 
if ((inputAction "Action") > 0) exitWith {}; // Prevents that the shot is triggered via the invisible action menu entry
params [
	"_unit"
];
if (cameraOn != _unit) exitWith {};
if (_unit getVariable ["RHS_openBoltFiring",false]) exitWith {};
_unit setVariable ["RHS_openBoltFiring", true];

// Get weapon properties
private _currentWeapon = currentWeapon _unit;
private _mode = (weaponState _unit) select 2;
private _reloadTime     = getNumber 	(configFile/"CfgWeapons"/_currentWeapon/_mode/"reloadTime");

// Get values from config
private _soundName    	= getText       (configFile/"CfgWeapons"/_currentWeapon/"RHS_boltSnapSound");
private _delay			= getNumber     (configFile/"CfgWeapons"/_currentWeapon/"RHS_boltSnapDelay");

// Play the sound of the bolt snapping forward, wait a bit and then set of the actual shot
playSound _soundName;
sleep _delay;
_unit forceWeaponFire [_currentWeapon,_mode];

// Wait until the next shot can be fired, then check if the player wants to full auto (keeping the button pressed) and go full-auto if so
sleep _reloadTime;     
if (_mode != "Single") then {
	while {(inputAction "defaultAction" > 0) && {alive _unit} && {(needReload _unit) != 1}} do { 
		_unit setWeaponReloadingTime [_unit, _currentWeapon, 0];
		
		_unit forceWeaponFire [_currentWeapon,_mode];
		sleep _reloadTime;     
	};
};
_unit setVariable ["RHS_openBoltFiring", false];



// Add the eventhandler and disable the original function
params ["_unit"];
if (_unit getVariable ["RHS_needsBoltSnapHandler",true]) then {
	_unit addAction ["", {
		params ["_unit"]; [_unit] spawn RHS_fnc_openBolt;
	 }, "", 0, false, false, "DefaultAction","((vehicle _target) == _target) && {(getText (configFile/'CfgWeapons'/(currentWeapon _target)/'RHS_boltSnapSound')) != ''} && {(_target ammo (currentWeapon _target)) > 0} && {!(weaponLowered _target)}"];
	 _unit setVariable ["RHS_needsBoltSnapHandler",false];
};




// Testing

params ["player"];
if (player getVariable ["RHS_needsBoltSnapHandler",true]) then {
	player addAction ["", {
		params ["player"]; [player] spawn RHS_fnc_openBolt;
	 }, "", 0, false, false, "DefaultAction","((vehicle _target) == _target) && {(getText (configFile/'CfgWeapons'/(currentWeapon _target)/'RHS_boltSnapSound')) != ''} && {(_target ammo (currentWeapon _target)) > 0} && {!(weaponLowered _target)}"];
	 player setVariable ["RHS_needsBoltSnapHandler",false];
};



#define FILEMACRO(PREFIX,FILEPATH) \
class cfgDistanceFilters { \
	class PREFIX##_defaultDistanceFilter { \
		type = "lowPassFilter"; \
		minCutoffFrequency = 150; \
		qFactor = 1.3; \
		innerRange = 10; \
		range = 2600; \
		powerFactor = 32; \
	}; \
	class PREFIX##_rifleShotDistanceFilter { \
		type = "lowPassFilter"; \
		minCutoffFrequency = 200; \
		qFactor = 1.3; \
		innerRange = 10; \
		range = 2000; \
		powerFactor = 32; \
	}; \
};

/*************************************************************************************/
FILEMACRO(PREFIX,FILEPATH)
#undef FILEMACRO
/*************************************************************************************/
 #define FILEMACRO(PREFIX,FILEPATH) \
class CfgSound3DProcessors{ \
	class PREFIX##_Default_3DProcessingType { \
		type = panner; \
		innerRange = 10; \
		rangeCurve = "LinearCurve"; \
		range = 1800; \
	}; \
	class PREFIX##_Shot_light_3DProcessingType { \
		type = panner; \
		innerRange = 1; \
		range = 25; \
		rangeCurve = "InverseSquare2Curve"; \
	}; \
	class PREFIX##_Shot_medium_3DProcessingType { \
		type = panner; \
		innerRange = 1; \
		range = 32; \
		rangeCurve = "InverseSquare2Curve"; \
	}; \
	class PREFIX##_rifleBulletCrack_3DProcessingType { \
		type = "panner"; \
		innerRange = 1; \
		range = 7; \
		rangeCurve = "LinearCurve"; \
	}; \
	class PREFIX##_Shot_internalMG_3DProcessingType { \
		type = panner; \
		innerRange = 2; \
		range = 26; \
		rangeCurve = "InverseSquare2Curve"; \
	}; \
	class PREFIX##_Shot_internalCannon_3DProcessingType { \
		type = panner; \
		innerRange = 5; \
		range = 50; \
		rangeCurve = "InverseSquare2Curve"; \
	}; \
	class PREFIX##_Tail_3DProcessingType { \
		type = panner; \
		innerRange = 10; \
		range = 990; \
		rangeCurve = "InverseSquare3Curve"; \
	}; \
	class PREFIX##_cannonTail_3DProcessingType { \
		type = panner; \
		innerRange = 20; \
		range = 1290; \
		rangeCurve = "InverseSquare3Curve"; \
	}; \
	class PREFIX##_katyusha_3DProcessingType { \
		type = panner; \
		innerRange = 20; \
		range = 400; \
		rangeCurve = "InverseSquare3Curve"; \
	}; \
};

/*************************************************************************************/
FILEMACRO(PREFIX,FILEPATH)
#undef FILEMACRO
/*************************************************************************************/

#define FILEMACRO(PREFIX,FILEPATH) \
class CfgSoundCurves { \
	class PREFIX##_soundCurve { \
		points[] = { \
			{ 0.0,1 }, \
			{ 1.0,0 } \
		}; \
	}; \
	class PREFIX##_tailSoundCurve { \
		points[] = { \
			{ 0.0,1  }, \
			{ 0.2,0.85}, \
			{ 0.5,0.4}, \
			{ 0.8,0.1}, \
			{ 1.0,0  } \
		}; \
	}; \
	class PREFIX##_rifleSoundCurve { \
		points[] = { \
			{ 0.0,1 }, \
			{ 0.001,0.92 }, \
			{ 0.005,0.84 }, \
			{ 0.1,0.5875 }, \
			{ 0.2,0.4196 }, \
			{ 0.4,0.2633 }, \
			{ 0.6,0.1015 }, \
			{ 0.8,0.0568 }, \
			{ 0.9,0.0368 }, \
			{ 1.0,0 }}; \
	}; \
	class PREFIX##_cannon_largeSoundcurve \
	{ \
		points[] = { \
			{0.0,1.0000}, \
			{0.1,0.7832}, \
			{0.2,0.5707}, \
			{0.3,0.4309}, \
			{0.4,0.3028}, \
			{0.5,0.2503}, \
			{0.6,0.1543}, \
			{0.7,0.0995}, \
			{0.8,0.0626}, \
			{0.9,0.0413}, \
			{1.0,0.0110}}; \
	}; \
	class PREFIX##_cannon_smallSoundcurve \
	{ \
		points[] = { \
			{0.0,1.0000}, \
			{0.1,0.7032}, \
			{0.2,0.5007}, \
			{0.3,0.3009}, \
			{0.4,0.2028}, \
			{0.5,0.1403}, \
			{0.6,0.1043}, \
			{0.7,0.0495}, \
			{0.8,0.0126}, \
			{0.9,0.0083}, \
			{1.0,0.0050}}; \
	}; \
	class PREFIX##_MGSoundCurve { \
		points[] = { \
			{0.0,1}, \
			{0.05,0.645}, \
			{0.1,0.4394}, \
			{0.15,0.3215}, \
			{0.2,0.245}, \
			{0.25,0.2025}, \
			{0.3,0.165}, \
			{0.35,0.1372}, \
			{0.4,0.1061}, \
			{0.45,0.0997}, \
			{0.5,0.0696}, \
			{0.6,0.0405}, \
			{0.7,0.0294}, \
			{0.8,0.019}, \
			{0.9,0.010}, \
			{1.0,0}}; \
	}; \
};

/*************************************************************************************/
FILEMACRO(PREFIX,FILEPATH)
#undef FILEMACRO
/*************************************************************************************/#define FILEMACRO(PREFIX,FILEPATH) \
class CfgSounds { \
	sounds[] = {}; \
	/**/ \
	class PREFIX##_boltSnap_pk { \
		name = ##PREFIX##_boltSnap_pk; \
		sound[] = {##FILEPATH##\specific\pk\boltSnap, 1.63, 1, 110}; \
		titles[] = {}; \
	}; \
	/**/ \
	class PREFIX##_rattle_pk_1 { \
		name = PREFIX##_rattle_pk_1; \
		sound[] = {##FILEPATH##\specific\pk\rattle_1, 1.39, 1, 76}; \
		titles[] = {}; \
	}; \
	class PREFIX##_rattle_pk_2 { \
		name = PREFIX##_rattle_pk_2; \
		sound[] = {##FILEPATH##\specific\pk\rattle_2, 1.39, 1, 76}; \
		titles[] = {}; \
	}; \
	class PREFIX##_rattle_pk_3 { \
		name = PREFIX##_rattle_pk_3; \
		sound[] = {##FILEPATH##\specific\pk\rattle_3, 1.39, 1, 76}; \
		titles[] = {}; \
	}; \
	class PREFIX##_rattle_pk_4 { \
		name = PREFIX##_rattle_pk_4; \
		sound[] = {##FILEPATH##\specific\pk\rattle_4, 1.39, 1, 76}; \
		titles[] = {}; \
	}; \
	class PREFIX##_rattle_pk_5 { \
		name = PREFIX##_rattle_pk_5; \
		sound[] = {##FILEPATH##\specific\pk\rattle_5, 1.39, 1, 76}; \
		titles[] = {}; \
	}; \
	class PREFIX##_rattle_pk_6 { \
		name = PREFIX##_rattle_pk_6; \
		sound[] = {##FILEPATH##\specific\pk\rattle_6, 1.39, 1, 76}; \
		titles[] = {}; \
	}; \
};

/*************************************************************************************/
FILEMACRO(PREFIX,FILEPATH)
#undef FILEMACRO
/*************************************************************************************/
// Default
soundDefault1[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_1",2.30,1,130};
soundDefault2[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_2",2.30,1,130};
soundDefault3[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_3",2.30,1,130};
soundDefault4[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_4",2.30,1,130};
soundDefault5[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_5",2.30,1,130};
soundDefault6[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_6",2.30,1,130};
soundDefault7[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_7",2.30,1,130};
soundDefault8[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_8",2.30,1,130};
hitDefault[] = {"soundDefault1",0.125,"soundDefault2",0.125,"soundDefault3",0.125,"soundDefault4",0.125,"soundDefault5",0.125,"soundDefault6",0.125,"soundDefault7",0.125,"soundDefault8",0.125};


// Concrete
soundConcrete1[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_1",2.30,1,130};
soundConcrete2[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_2",2.30,1,130};
soundConcrete3[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_3",2.30,1,130};
soundConcrete4[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_4",2.30,1,130};
soundConcrete5[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_5",2.30,1,130};
soundConcrete6[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_6",2.30,1,130};
soundConcrete7[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_7",2.30,1,130};
soundConcrete8[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\concrete_8",2.30,1,130};
hitConcrete[] = {"soundConcrete1",0.125,"soundConcrete2",0.125,"soundConcrete3",0.125,"soundConcrete4",0.125,"soundConcrete5",0.125,"soundConcrete6",0.125,"soundConcrete7",0.125,"soundConcrete8",0.125};

// Metal
soundMetal1[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Metal_1",2.44,1,180};
soundMetal2[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Metal_2",2.44,1,180};
soundMetal3[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Metal_3",2.44,1,180};
soundMetal4[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Metal_4",2.44,1,180};
soundMetal5[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Metal_5",2.44,1,180};
soundMetal6[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Metal_6",2.44,1,180};
soundMetal7[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Metal_7",2.44,1,180};
hitMetal[] = {"soundMetal1",0.142,"soundMetal2",0.142,"soundMetal3",0.142,"soundMetal4",0.142,"soundMetal5",0.142,"soundMetal6",0.142,"soundMetal7",0.142};
hitMetalplate[] = {"soundMetal1",0.142,"soundMetal2",0.142,"soundMetal3",0.142,"soundMetal4",0.142,"soundMetal5",0.142,"soundMetal6",0.142,"soundMetal7",0.142};
hitMetalInt[] = {"soundMetal1",0.142,"soundMetal2",0.142,"soundMetal3",0.142,"soundMetal4",0.142,"soundMetal5",0.142,"soundMetal6",0.142,"soundMetal7",0.142};
hitArmor[] = {"soundMetal1",0.142,"soundMetal2",0.142,"soundMetal3",0.142,"soundMetal4",0.142,"soundMetal5",0.142,"soundMetal6",0.142,"soundMetal7",0.142};
hitArmorInt[] = {"soundMetal1",0.142,"soundMetal2",0.142,"soundMetal3",0.142,"soundMetal4",0.142,"soundMetal5",0.142,"soundMetal6",0.142,"soundMetal7",0.142};

// Soft Ground
soundGroundSoft1[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\soft_ground_1",2.32,1,65};
soundGroundSoft2[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\soft_ground_2",2.32,1,65};
soundGroundSoft3[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\soft_ground_3",2.32,1,65};
soundGroundSoft4[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\soft_ground_4",2.32,1,65};
soundGroundSoft5[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\soft_ground_5",2.32,1,65};
soundGroundSoft6[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\soft_ground_6",2.32,1,65};
soundGroundSoft7[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\soft_ground_7",2.32,1,65};
hitGroundSoft[] = {"soundGroundSoft1",0.142,"soundGroundSoft2",0.142,"soundGroundSoft3",0.142,"soundGroundSoft4",0.142,"soundGroundSoft5",0.142,"soundGroundSoft6",0.142,"soundGroundSoft7",0.142};

// Hard Ground
soundGroundHard1[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Hard_ground_1",2.32,1,130};
soundGroundHard2[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Hard_ground_2",2.32,1,130};
soundGroundHard3[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Hard_ground_3",2.32,1,130};
soundGroundHard4[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Hard_ground_4",2.32,1,130};
soundGroundHard5[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Hard_ground_5",2.32,1,130};
soundGroundHard6[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Hard_ground_6",2.32,1,130};
soundGroundHard7[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Hard_ground_7",2.32,1,130};
soundGroundHard8[] = {"RHS\assets_s\weapons\sounds_s\sounds\shared\bulletHits\rifle\Hard_ground_7",2.32,1,130};
hitGroundHard[] = {"soundGroundHard1",0.125,"soundGroundHard2",0.125,"soundGroundHard3",0.125,"soundGroundHard4",0.125,"soundGroundHard5",0.125,"soundGroundHard6",0.125,"soundGroundHard7",0.125,"soundGroundHard8",0.125};

class Mode_SemiAuto;
class Mode_Burst;
class Mode_FullAuto;

class CfgWeapons {
	class Default;
	class Rifle;
	class Rifle_Base_F : Rifle {
		class Eventhandlers;
	};
	class Rifle_Short_Base_F: Rifle_Base_F {};
	class Pistol;
	class Pistol_Base_F : Pistol {};
	class Rifle_Long_Base_F : Rifle_Base_F {};
	class UGL_F;
	class EBR_base_F;
	class srifle_EBR_F : EBR_base_F {};
	class Launcher;
	class Launcher_Base_F : Launcher{};
	
	class LMG_Mk200_F: Rifle_Long_Base_F {};
	class arifle_MX_Base_F: Rifle_Base_F {};
	
	class SMG_02_base_F : Rifle_Short_Base_F {
		class Single;
		class FullAuto;
		class WeaponSlotsInfo;
		class GunParticles;
	};
	
	#include "c_pistols.hpp"
	#include "c_mps.hpp"
	#include "c_rifles.hpp"
	#include "c_lmgs.hpp"
	#include "c_mg.hpp"
	#include "c_cannons.hpp"
	#include "c_launchers.hpp"
};

class rhs_weap_rpk_base: Rifle_Long_Base_F {
	class Single: Mode_SemiAuto {
		sounds[] = {"Standardsound","SilencedSound"};
		class StandardSound {
			PACKAGE(ak74,rifle_small,PREFIX)
		};
		class SilencedSound {
			PACKAGE(sd_AK74,sd_Rifle1,PREFIX)
		};
	};
	class Manual: Mode_FullAuto {
		sounds[] = {"Standardsound","SilencedSound"};
		class StandardSound {
			PACKAGE(ak74,rifle_small,PREFIX)
		};
		class SilencedSound {
			PACKAGE(sd_AK74,sd_Rifle1,PREFIX)
		};
	};
};class rhs_pkp_base: Rifle_Long_Base_F {
	WW2_boltSnapSound = "RHS_boltSnap_pk";
	WW2_boltSnapDelay = 0.10;
	class FullAuto: Mode_FullAuto {
		sounds[] = {"StandardSound"};
		class StandardSound {
			PACKAGE(pk,rifle_med,PREFIX)
		};
	};
	class Eventhandlers: Eventhandlers {
		#define EHMACRO(PREFIX) \
		class PREFIX##_pk_firedSoundHandler { \
			fired = "_this params ['_unit','_weapon']; private _soundArray = ['RHS_rattle_pk_1','RHS_rattle_pk_2','RHS_rattle_pk_3','RHS_rattle_pk_4','RHS_rattle_pk_5','RHS_rattle_pk_6'];[_unit,_weapon,_soundArray,3] call RHS_fnc_beltRattle; private _sound = 'RHS_boltSnap_pk';[_unit,_weapon,_sound] call RHS_fnc_boltSnap"; \
		};
		EHMACRO(PREFIX)
		#undef EHMACRO
	};
};class pdw2000_base_F;

class hgun_PDW2000_F : pdw2000_base_F {
	class Single;
	class FullAuto;
};

class rhs_weap_pp2000: hgun_PDW2000_F {
	class Single : Single {
		sounds[] = {"StandardSound"};
		class StandardSound {
			PACKAGE(pp2000,rifle_small,PREFIX)
		};
	};
	class FullAuto : FullAuto {
		class StandardSound {
			PACKAGE(pp2000,rifle_small,PREFIX)
		};
	};
};// AK 74
class rhs_weap_ak74m_Base_F: Rifle_Base_F {
	class Single: Mode_SemiAuto {
		sounds[] = {"Standardsound","SilencedSound"};
		class StandardSound {
			PACKAGE(ak74,rifle_small,PREFIX)
		};
		class SilencedSound {
			PACKAGE(sd_AK74,sd_Rifle1,PREFIX)
		};
	};
	class FullAuto: Mode_FullAuto {
		sounds[] = {"Standardsound","SilencedSound"};
		class StandardSound {
			PACKAGE(ak74,rifle_small,PREFIX)
		};
		class SilencedSound {
			PACKAGE(sd_AK74,sd_Rifle1,PREFIX)
		};
	};
};

class rhs_weap_ak74m : rhs_weap_ak74m_Base_F {};

// AKM
class rhs_weap_akm : rhs_weap_ak74m {
	class Single: Mode_SemiAuto {
		sounds[] = {"StandardSound","SilencedSound"};
	 	class StandardSound {
			PACKAGE(ak47,rifle_med,PREFIX)
		};
		class SilencedSound {
			PACKAGE(sd_AKM,sd_MMG1,PREFIX)
		};
	};
	class FullAuto: Mode_FullAuto {
		sounds[] = {"StandardSound","SilencedSound"};
	 	class StandardSound {
			PACKAGE(ak47,rifle_med,PREFIX)
		};
		class SilencedSound {
			PACKAGE(sd_AKM,sd_MMG1,PREFIX)
		};
	};
};
class rhs_weap_ak103_base : rhs_weap_akm {
	class Burst: Mode_Burst {
		sounds[] = {"StandardSound","SilencedSound"};
	 	class StandardSound {
			PACKAGE(ak47,rifle_med,PREFIX)
		};
		class SilencedSound {
			PACKAGE(sd_AKM,sd_MMG1,PREFIX)
		};
	};
};


// SVD
class rhs_weap_svd : rhs_weap_ak74m {
	class Single: Mode_SemiAuto {
		sounds[] = {"StandardSound","SilencedSound"};
	 	class StandardSound {
			PACKAGE(dragunov,rifle2,PREFIX)
		};
		class SilencedSound {
			PACKAGE(sd_SVD,sd_mmg1,PREFIX)
		};
	};
};

class rhs_weap_svdp : rhs_weap_svd {
	class Single: Mode_SemiAuto {
		sounds[] = {"StandardSound","SilencedSound"};
	 	class StandardSound {
			PACKAGE(dragunov,rifle2,PREFIX)
		};
		class SilencedSound {
			PACKAGE(sd_SVD,sd_mmg1,PREFIX)
		};
	};
};class CfgPatches {
	class ADDONPATCH {
		units[] = {};
		weapons[] = {};
		requiredVersion = 0.1;
		requiredAddons[] = {
			"A3_Weapons_F",
			"A3_Sounds_f",
			"RHS_sounds",
			"RHS_weapon_sounds"
		};
		authors[] = {"LAxemann"};
		author = $STR_RHS_AUTHOR_FULL;
		url = "http://www.rhsmods.org/";
	};
};class CfgSoundSets {
	#include "01_soundSets\weaponSoundSets.hpp"
	#include "01_soundSets\tailSoundSets.hpp"
};class CfgSoundShaders {
	#include "02_soundShaders\weaponSoundShaders.hpp"
	#include "02_soundShaders\tailSoundShaders.hpp"
}; raP           CfgPatches     CfgSound3DProcessors    CfgSoundCurves    cfgDistanceFilters 	   CfgSoundShaders 
   CfgSoundSets    CfgSounds     CfgFunctions &  Mode_SemiAuto Mode_Burst Mode_FullAuto  CfgWeapons       rhs_c_weaponsounds      units  weapons  requiredVersion =requiredAddons  A3_Weapons_F  A3_Sounds_f  RHS_sounds  RHS_weapon_sounds authors  LAxemann  author $STR_RHS_AUTHOR_FULL  url http://www.rhsmods.org/    	 RHS_Default_3DProcessingType 2   RHS_Shot_light_3DProcessingType |   RHS_Shot_medium_3DProcessingType    RHS_rifleBulletCrack_3DProcessingType     RHS_Shot_internalMG_3DProcessingType j   RHS_Shot_internalCannon_3DProcessingType    RHS_Tail_3DProcessingType    RHS_cannonTail_3DProcessingType `   RHS_katyusha_3DProcessingType       type panner innerRange 
    rangeCurve LinearCurve range   |    type panner innerRange    range     rangeCurve InverseSquare2Curve     type panner innerRange    range      rangeCurve InverseSquare2Curve      type panner innerRange    range     rangeCurve LinearCurve j    type panner innerRange    range     rangeCurve InverseSquare2Curve     type panner innerRange    range 2    rangeCurve InverseSquare2Curve     type panner innerRange 
   range    rangeCurve InverseSquare3Curve `    type panner innerRange    range 
   rangeCurve InverseSquare3Curve     type panner innerRange    range    rangeCurve InverseSquare3Curve     RHS_soundCurve    RHS_tailSoundCurve    RHS_rifleSoundCurve    RHS_cannon_largeSoundcurve    RHS_cannon_smallSoundcurve 1   RHS_MGSoundCurve   	   points          ?       points        L>Y?   ?>L?=  ?       points 
       o:k?
ף;=
W?=ff?L>>>Bφ>?;=L?h=fff?=  ?       points       ?=H?L>e?>>>>   ?R'>? >333?=L?n4=fff?0*)=  ?X94<1   points       ?=4?L>- ?>>>ΪO>   ?Ϊ>?==333?J=L?;pN<fff?<  ?
ף;   points        L=%?=	>>>L>Hz>  >)\O>>(>33>(~>>J=ff>/=   ?r=?T%=333?E<L?㥛<fff?
#<  ?    	    RHS_defaultDistanceFilter 	   RHS_rifleShotDistanceFilter J
  
    type lowPassFilter minCutoffFrequency    qFactor ff?innerRange 
   range (
  powerFactor     J
    type lowPassFilter minCutoffFrequency    qFactor ff?innerRange 
   range   powerFactor     
   ^ RHS_pk_shot_fp_soundShader    RHS_pk_shot_urbanLayer_soundShader    RHS_pk_shot_close_soundShader    RHS_pk_shot_mid_soundShader ^   RHS_pk_shot_far_soundShader    RHS_pk_shot_forest_far_soundShader \!   RHS_pk_Interior_closeMono_SoundShader "   RHS_pk_Interior_far_SoundShader k$   RHS_dragunov_shot_fp_soundShader %   RHS_dragunov_shot_urbanLayer_soundShader '   RHS_dragunov_shot_close_soundShader j(   RHS_dragunov_shot_mid_soundShader )   RHS_dragunov_shot_far_soundShader  +   RHS_dragunov_shot_forest_far_soundShader ,   RHS_dragunov_Interior_closeMono_SoundShader #.   RHS_dragunov_Interior_far_SoundShader /   RHS_ak74_shot_fp_soundShader 0   RHS_ak74_shot_urbanLayer_soundShader 2   RHS_ak74_shot_close_soundShader ~3   RHS_ak74_shot_mid_soundShader 4   RHS_ak74_shot_far_soundShader 46   RHS_ak74_shot_forest_far_soundShader 7   RHS_ak74_Interior_closeMono_SoundShader 79   RHS_ak74_Interior_far_SoundShader :   RHS_ak47_shot_fp_soundShader !<   RHS_ak47_shot_urbanLayer_soundShader ;=   RHS_ak47_shot_close_soundShader >   RHS_ak47_shot_mid_soundShader ?   RHS_ak47_shot_far_soundShader oA   RHS_ak47_shot_forest_far_soundShader B   RHS_ak47_Interior_closeMono_SoundShader D   RHS_ak47_Interior_far_SoundShader F   RHS_pp2000_shot_fp_soundShader tG   RHS_pp2000_shot_urbanLayer_soundShader H   RHS_pp2000_shot_close_soundShader I   RHS_pp2000_shot_mid_soundShader >K   RHS_pp2000_shot_far_soundShader L   RHS_pp2000_shot_forest_far_soundShader N   RHS_pp2000_Interior_closeMono_SoundShader O   RHS_pp2000_Interior_far_SoundShader Q   RHS_rifle_small_Meadows_close_SoundShader R   RHS_rifle_small_Meadows_far_SoundShader T   RHS_rifle_small_Houses_close_SoundShader U   RHS_rifle_small_Houses_far_SoundShader W   RHS_rifle_small_Forest_close_SoundShader X   RHS_rifle_small_Forest_far_SoundShader Z   RHS_rifle_small_Interior_close_SoundShader [   RHS_rifle_med_Meadows_close_SoundShader \   RHS_rifle_med_Meadows_far_SoundShader |^   RHS_rifle_med_Houses_close_SoundShader _   RHS_rifle_med_Houses_far_SoundShader la   RHS_rifle_med_Forest_close_SoundShader b   RHS_rifle_med_Forest_far_SoundShader Zd   RHS_rifle_med_Interior_close_SoundShader e   RHS_int_rifle_med_Meadows_close_SoundShader Cg   RHS_int_rifle_med_Meadows_far_SoundShader h   RHS_int_rifle_med_Houses_close_SoundShader Yj   RHS_int_rifle_med_Houses_far_SoundShader k   RHS_int_rifle_med_Forest_close_SoundShader Sm   RHS_int_rifle_med_Forest_far_SoundShader n   RHS_int_rifle_med_Interior_close_SoundShader ep   RHS_rifle2_Meadows_close_SoundShader q   RHS_rifle2_Meadows_far_SoundShader Is   RHS_rifle2_Houses_close_SoundShader t   RHS_rifle2_Houses_far_SoundShader 'v   RHS_rifle2_Forest_close_SoundShader w   RHS_rifle2_Forest_far_SoundShader y   RHS_rifle2_Interior_close_SoundShader vz   RHS_pistol1_old_Meadows_close_SoundShader {   RHS_pistol1_old_Meadows_far_SoundShader `}   RHS_pistol1_old_Houses_close_SoundShader ~   RHS_pistol1_old_Houses_far_SoundShader \   RHS_pistol1_old_Forest_close_SoundShader ҁ   RHS_pistol1_old_Forest_far_SoundShader V   RHS_pistol1_old_Interior_close_SoundShader ؄   RHS_int_cannon_large_Meadows_close_SoundShader K   RHS_int_cannon_large_Houses_close_SoundShader Ӈ   RHS_int_cannon_large_Forest_close_SoundShader M   RHS_cannon_large_Meadows_close_SoundShader ӊ   RHS_cannon_large_Houses_close_SoundShader C   RHS_cannon_large_Forest_close_SoundShader    RHS_int_cannon_med_Meadows_close_SoundShader    RHS_int_cannon_med_Houses_close_SoundShader    RHS_int_cannon_med_Forest_close_SoundShader 	   RHS_cannon_med_Meadows_close_SoundShader    RHS_cannon_med_Houses_close_SoundShader    RHS_cannon_med_Forest_close_SoundShader O   RHS_cannon_20mm_Meadows_close_SoundShader    RHS_cannon_20mm_Houses_close_SoundShader $   RHS_cannon_20mm_Forest_close_SoundShader    RHS_sd_subsonic_Meadows_close_SoundShader    RHS_sd_subsonic_Houses_close_SoundShader t   RHS_sd_subsonic_Forest_close_SoundShader    RHS_sd_subsonic_Interior_close_SoundShader p     samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pk\fp_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pk\fp_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pk\fp_3    volume   ?range    rangeCurve                  samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_3     volume 1 * 0.76 * (1 - interior) * houses range   rangeCurve                 samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\close_3    volume    range    rangeCurve            fff?       ^   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\mid_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\mid_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\mid_3     volume 1 * 0.85 * (1 - interior) * (1 - (0.20 * forest)) range   rangeCurve            33s?         samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\far_3     volume 1 * (1 - interior) * (1 - (forest max trees)) range   rangeCurve                  fff?  Y?\!   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\forest_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\forest_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\forest_far_3     volume 1 * 0.7 * (1 - interior) * (forest max trees) range   rangeCurve                  ?  ?"   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_3     volume 1 * 1.5 * interior  range 130 / 2 rangeCurve                      130/2     k$   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_3     volume 1 * interior * 0.7 range   rangeCurve          130/2       >      %   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\dragunov\fp_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\dragunov\fp_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\dragunov\fp_3    volume   ?range    rangeCurve               '   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_3     volume 1 * 0.76 * (1 - interior) * houses range   rangeCurve              j(   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\close_3    volume    range    rangeCurve            fff?       )   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\mid_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\mid_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\mid_3     volume 1 * 0.85 * (1 - interior) * (1 - (0.20 * forest)) range   rangeCurve            33s?       +   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\far_3     volume 1 * (1 - interior) * (1 - (forest max trees)) range   rangeCurve                  fff?  Y?,   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\forest_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\forest_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\rifle\forest_far_3     volume 1 * 0.7 * (1 - interior) * (forest max trees) range   rangeCurve                  ?  ?#.   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Interior_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Interior_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Interior_close_3     volume 1 * 1.5 * interior  range 130 / 2 rangeCurve                      130/2     /   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_3     volume 1 * interior * 0.7 range   rangeCurve          130/2       >      0   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\ak74\fp_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\ak74\fp_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\ak74\fp_3    volume   ?range    rangeCurve               2   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_3     volume 1 * 0.76 * (1 - interior) * houses range   rangeCurve              ~3   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\close_3    volume    range    rangeCurve            fff?       4   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\mid_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\mid_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\mid_3     volume 1 * 0.85 * (1 - interior) * (1 - (0.20 * forest)) range   rangeCurve            33s?      46   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\far_3     volume 1 * (1 - interior) * (1 - (forest max trees)) range   rangeCurve                  fff?  Y?7   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\forest_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\forest_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\545mm\forest_far_3     volume 1 * 0.7 * (1 - interior) * (forest max trees) range   rangeCurve                  ?  ?79   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_3     volume 1 * 1.5 * interior  range 130 / 2 rangeCurve                      130/2     :   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_3     volume 1 * interior * 0.7 range   rangeCurve          130/2       >      !<   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\ak47\fp_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\ak47\fp_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\ak47\fp_3    volume   ?range    rangeCurve               ;=   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\urban_close_3     volume 1 * 0.76 * (1 - interior) * houses range   rangeCurve              >   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\close_3    volume    range    rangeCurve            fff?       ?   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\mid_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\mid_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\mid_3     volume 1 * 0.85 * (1 - interior) * (1 - (0.20 * forest)) range   rangeCurve            33s?      oA   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\far_3     volume 1 * (1 - interior) * (1 - (forest max trees)) range   rangeCurve                  fff?  Y?B   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\forest_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\forest_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\762mm_mmg\forest_far_3     volume 1 * 0.7 * (1 - interior) * (forest max trees) range   rangeCurve                  ?  ?D   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_3     volume 1 * 1.5 * interior  range 130 / 2 rangeCurve                      130/2     F   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\rifle\Interior_mid_3     volume 1 * interior * 0.7 range   rangeCurve          130/2       >      tG   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pp2000\fp_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pp2000\fp_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pp2000\fp_3    volume   ?range    rangeCurve               H   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\pistol\urban_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\pistol\urban_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\pistol\urban_close_3     volume 1 * 0.76 * (1 - interior) * houses range   rangeCurve              I   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\close_3    volume    range    rangeCurve            fff?       >K   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\mid_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\mid_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\mid_3     volume 1 * 0.85 * (1 - interior) * (1 - (0.20 * forest)) range   rangeCurve            33s?      L   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\far_3     volume 1 * (1 - interior) * (1 - (forest max trees)) range 
  rangeCurve                  fff?
  Y?N   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\forest_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\forest_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\calibres\9mm\forest_far_3     volume 1 * 0.7 * (1 - interior) * (forest max trees) range 
  rangeCurve                  ?
  ?O   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_3     volume 1 * 1.5 * interior  range 130 / 2 rangeCurve                      130/2     Q   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\pistol\Interior_mid_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\pistol\Interior_mid_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\shared\layers\pistol\Interior_mid_3     volume 1 * interior * 0.7 range   rangeCurve          130/2       >      R   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Meadows_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Meadows_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Meadows_close_3     volume 1.15 * (meadows max sea) * (1 - (interior * 0.7)) range    rangeCurve               limitation    T   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Meadows_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Meadows_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Meadows_far_3     volume 1.15 * (meadows max sea) * (1 - interior) range   rangeCurve                    limitation    U   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Houses_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Houses_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Houses_close_3     volume 1.15 * houses * (1 - (interior * 0.7)) range    rangeCurve               limitation    W   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Houses_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Houses_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Houses_far_3     volume 1.15 * houses * (1 - interior) range   rangeCurve                    limitation    X   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Forest_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Forest_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Forest_close_3     volume 1.15 * (forest max trees) * (1 - (interior * 0.7)) range    rangeCurve               limitation    Z   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Forest_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Forest_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Forest_far_3     volume 1.15 * (forest max trees) * (1 - interior) range   rangeCurve                    limitation    [   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_small\Interior_close_3     volume 1.15 * interior range    rangeCurve                     limitation    \   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_close_3     volume 1.15 * (meadows max sea) * (1 - (interior * 0.7)) range    rangeCurve               limitation    |^   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_far_3     volume 1.15 * (meadows max sea) * (1 - interior) range   rangeCurve                    limitation    _   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_close_3     volume 1.15 * houses * (1 - (interior * 0.7)) range    rangeCurve               limitation    la   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_far_3     volume 1.15 * houses * (1 - interior) range   rangeCurve                    limitation    b   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_close_3     volume 1.15 * (forest max trees) * (1 - (interior * 0.7)) range    rangeCurve               limitation    Zd   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_far_3     volume 1.15 * (forest max trees) * (1 - interior) range   rangeCurve                    limitation    e   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Interior_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Interior_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Interior_close_3     volume 1.15 * interior range    rangeCurve                     limitation    Cg   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_close_3     volume 1.15 * (meadows max sea) * (1 - (interior * 0.7)) range    rangeCurve         ?    H?          limitation    h   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Meadows_far_3     volume 1.15 * (meadows max sea) * (1 - interior) range   rangeCurve                    limitation    Yj   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_close_3     volume 1.15 * houses * (1 - (interior * 0.7)) range    rangeCurve         @                 limitation    k   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Houses_far_3     volume 1.15 * houses * (1 - interior) range   rangeCurve                    limitation    Sm   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_close_3     volume 1.15 * (forest max trees) * (1 - (interior * 0.7)) range    rangeCurve         @                 limitation    n   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Forest_far_3     volume 1.15 * (forest max trees) * (1 - interior) range   rangeCurve                    limitation    ep   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Interior_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Interior_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle_med\Interior_close_3     volume 1.15 * interior range    rangeCurve                     limitation    q   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Meadows_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Meadows_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Meadows_close_3     volume 1.10 * (meadows max sea) * (1 - (interior * 0.7)) range    rangeCurve               limitation    Is   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Meadows_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Meadows_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Meadows_far_3     volume 1.10 * (meadows max sea) * (1 - interior) range   rangeCurve                    limitation    t   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Houses_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Houses_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Houses_close_3     volume 1.10 * houses * (1 - (interior * 0.7)) range    rangeCurve               limitation    'v   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Houses_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Houses_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Houses_far_3     volume 1.10 * houses * (1 - interior) range   rangeCurve                    limitation    w   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Forest_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Forest_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Forest_close_3     volume 1.10 * (forest max trees) * (1 - (interior * 0.7)) range    rangeCurve               limitation    y   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Forest_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Forest_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Forest_far_3     volume 1.10 * (forest max trees) * (1 - interior) range   rangeCurve                    limitation    vz   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Interior_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Interior_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\rifle2\Interior_close_3     volume 1.15 * interior range    rangeCurve                     limitation    {   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Meadows_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Meadows_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Meadows_close_3     volume 1.15 * (meadows max sea) * (1 - (interior * 0.7)) range    rangeCurve               limitation    `}   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Meadows_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Meadows_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Meadows_far_3     volume 1.15 * (meadows max sea) * (1 - interior) range (
  rangeCurve               (
     limitation    ~   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Houses_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Houses_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Houses_close_3     volume 1.15 * houses * (1 - (interior * 0.7)) range    rangeCurve               limitation    \   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Houses_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Houses_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Houses_far_3     volume 1.15 * houses * (1 - interior) range (
  rangeCurve               (
     limitation    ҁ   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Forest_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Forest_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Forest_close_3     volume 1.15 * (forest max trees) * (1 - (interior * 0.7)) range    rangeCurve               limitation    V   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Forest_far_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Forest_far_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Forest_far_3     volume 1.15 * (forest max trees) * (1 - interior) range (
  rangeCurve               (
     limitation    ؄   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Interior_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Interior_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\pistol1_old\Interior_close_3     volume 1.15 * interior range    rangeCurve                     limitation    K   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Meadows_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Meadows_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Meadows_close_3     volume 1.15 * (meadows max sea) range   rangeCurve         ?    H?         limitation    Ӈ   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Houses_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Houses_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Houses_close_3     volume 1.15 * houses range   rangeCurve         @                limitation    M   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Forest_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Forest_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Forest_close_3     volume 1.15 * (forest max trees) range   rangeCurve         @                limitation    ӊ   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Meadows_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Meadows_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Meadows_close_3     volume 1.15 * (meadows max sea) range   rangeCurve              limitation    C   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Houses_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Houses_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Houses_close_3     volume 1.15 * houses range   rangeCurve              limitation       samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Forest_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Forest_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_large\Forest_close_3     volume 1.15 * (forest max trees) range   rangeCurve              limitation       samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Meadows_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Meadows_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Meadows_close_3     volume 1.15 * (meadows max sea) range \  rangeCurve         ?    H?   \      limitation       samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Houses_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Houses_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Houses_close_3     volume 1.15 * houses range \  rangeCurve         @          \      limitation    	   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Forest_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Forest_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Forest_close_3     volume 1.15 * (forest max trees) range \  rangeCurve         @          \      limitation       samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Meadows_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Meadows_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Meadows_close_3     volume 1.15 * (meadows max sea) range \  rangeCurve        \      limitation       samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Houses_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Houses_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Houses_close_3     volume 1.15 * houses range \  rangeCurve        \      limitation    O   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Forest_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Forest_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_med\Forest_close_3     volume 1.15 * (forest max trees) range \  rangeCurve        \      limitation       samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_20mm\Meadows_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_20mm\Meadows_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_20mm\Meadows_close_3     volume 1.15 * (meadows max sea) range h  rangeCurve        h      limitation    $   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_20mm\Houses_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_20mm\Houses_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_20mm\Houses_close_3     volume 1.15 * houses range h  rangeCurve        h      limitation       samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_20mm\Forest_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_20mm\Forest_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\cannon_20mm\Forest_close_3     volume 1.15 * (forest max trees) range h  rangeCurve        h      limitation       samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Meadows_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Meadows_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Meadows_close_3     volume 1.10 * (meadows max sea) * (1 - (interior * 0.7)) range   rangeCurve             limitation    t   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Houses_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Houses_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Houses_close_3     volume 1.10 * houses * (1 - (interior * 0.7)) range   rangeCurve             limitation       samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Forest_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Forest_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Forest_close_3     volume 1.10 * (forest max trees) * (1 - (interior * 0.7)) range   rangeCurve             limitation    p   samples  rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Interior_close_1     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Interior_close_2     rhsafrf\addons\rhs_s_weaponsounds\sounds\tails\sd_subsonic\Interior_close_3     volume 1.10 * interior range    rangeCurve                     limitation        RHS_pk_Shot_SoundSet    RHS_dragunov_Shot_SoundSet =   RHS_ak74_Shot_SoundSet    RHS_ak47_Shot_SoundSet    RHS_pp2000_Shot_SoundSet M   RHS_rifle_small_Tail_SoundSet    RHS_rifle_med_Tail_SoundSet #   RHS_int_rifle_med_Tail_SoundSet    RHS_pistol1_old_Tail_SoundSet    RHS_rifle2_Tail_SoundSet    RHS_int_cannon_large_Tail_SoundSet ػ   RHS_cannon_large_Tail_SoundSet    RHS_int_cannon_med_Tail_SoundSet    RHS_cannon_med_Tail_SoundSet x   RHS_cannon_20mm_Tail_SoundSet L   RHS_sd_subsonic_Tail_SoundSet #      soundShaders  RHS_pk_shot_fp_SoundShader  RHS_pk_shot_close_SoundShader  RHS_pk_shot_urbanLayer_soundShader  RHS_pk_shot_mid_SoundShader  RHS_pk_shot_far_SoundShader  RHS_pk_shot_forest_far_soundShader  RHS_pk_Interior_closeMono_SoundShader  RHS_pk_Interior_far_SoundShader occlusionFactor 33>obstructionFactor Q8>volumeFactor ff? volumeCurve InverseSquare2Curve  sound3DProcessingType RHS_Shot_light_3DProcessingType  distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer   >frequencyRandomizerMin L=spatial    doppler     loop     =   soundShaders  RHS_dragunov_shot_fp_SoundShader  RHS_dragunov_shot_close_SoundShader  RHS_dragunov_shot_urbanLayer_soundShader  RHS_dragunov_shot_mid_SoundShader  RHS_dragunov_shot_far_SoundShader  RHS_dragunov_shot_forest_far_soundShader  RHS_dragunov_Interior_closeMono_SoundShader  RHS_dragunov_Interior_far_SoundShader occlusionFactor 33>obstructionFactor Q8>volumeFactor ff? volumeCurve InverseSquare2Curve  sound3DProcessingType RHS_Shot_light_3DProcessingType  distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer   >frequencyRandomizerMin L=spatial    doppler     loop        soundShaders  RHS_ak74_shot_fp_SoundShader  RHS_ak74_shot_close_SoundShader  RHS_ak74_shot_urbanLayer_soundShader  RHS_ak74_shot_mid_SoundShader  RHS_ak74_shot_far_SoundShader  RHS_ak74_shot_forest_far_soundShader  RHS_ak74_Interior_closeMono_SoundShader  RHS_ak74_Interior_far_SoundShader occlusionFactor 33>obstructionFactor Q8>volumeFactor ff? volumeCurve InverseSquare2Curve  sound3DProcessingType RHS_Shot_light_3DProcessingType  distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer   >frequencyRandomizerMin L=spatial    doppler     loop        soundShaders  RHS_ak47_shot_fp_SoundShader  RHS_ak47_shot_close_SoundShader  RHS_ak47_shot_urbanLayer_soundShader  RHS_ak47_shot_mid_SoundShader  RHS_ak47_shot_far_SoundShader  RHS_ak47_shot_forest_far_soundShader  RHS_ak47_Interior_closeMono_SoundShader  RHS_ak47_Interior_far_SoundShader occlusionFactor 33>obstructionFactor Q8>volumeFactor ff? volumeCurve InverseSquare2Curve  sound3DProcessingType RHS_Shot_light_3DProcessingType  distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer   >frequencyRandomizerMin L=spatial    doppler     loop     M   soundShaders  RHS_pp2000_shot_fp_SoundShader  RHS_pp2000_shot_close_SoundShader  RHS_pp2000_shot_urbanLayer_soundShader  RHS_pp2000_shot_mid_SoundShader  RHS_pp2000_shot_far_SoundShader  RHS_pp2000_shot_forest_far_soundShader  RHS_pp2000_Interior_closeMono_SoundShader  RHS_pp2000_Interior_far_SoundShader occlusionFactor 33>obstructionFactor Q8>volumeFactor ff? volumeCurve InverseSquare2Curve  sound3DProcessingType RHS_Shot_light_3DProcessingType  distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer   >frequencyRandomizerMin L=spatial    doppler     loop        soundShaders  RHS_rifle_small_Meadows_close_SoundShader  RHS_rifle_small_Meadows_far_SoundShader  RHS_rifle_small_Houses_close_SoundShader  RHS_rifle_small_Houses_far_SoundShader  RHS_rifle_small_Forest_close_SoundShader  RHS_rifle_small_Forest_far_SoundShader  RHS_rifle_small_Interior_close_SoundShader  volumeFactor 1 * 1.55  volumeCurve InverseSquare2Curve occlusionFactor   >obstructionFactor      sound3DProcessingType RHS_Tail_3DProcessingType soundShadersLimit     distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer    frequencyRandomizerMin L>spatial    doppler     loop     #   soundShaders  RHS_rifle_med_Meadows_close_SoundShader  RHS_rifle_med_Meadows_far_SoundShader  RHS_rifle_med_Houses_close_SoundShader  RHS_rifle_med_Houses_far_SoundShader  RHS_rifle_med_Forest_close_SoundShader  RHS_rifle_med_Forest_far_SoundShader  RHS_rifle_med_Interior_close_SoundShader  volumeFactor 1 * 1.55  volumeCurve InverseSquare2Curve occlusionFactor   >obstructionFactor      sound3DProcessingType RHS_Tail_3DProcessingType soundShadersLimit     distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer    frequencyRandomizerMin L>spatial    doppler     loop        soundShaders  RHS_int_rifle_med_Meadows_close_SoundShader  RHS_int_rifle_med_Meadows_far_SoundShader  RHS_int_rifle_med_Houses_close_SoundShader  RHS_int_rifle_med_Houses_far_SoundShader  RHS_int_rifle_med_Forest_close_SoundShader  RHS_int_rifle_med_Forest_far_SoundShader  RHS_int_rifle_med_Interior_close_SoundShader  volumeFactor 1 * 1.55  volumeCurve InverseSquare2Curve occlusionFactor   >obstructionFactor      sound3DProcessingType RHS_Tail_3DProcessingType soundShadersLimit     distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer    frequencyRandomizerMin L>spatial    doppler     loop        soundShaders  RHS_pistol1_old_Meadows_close_SoundShader  RHS_pistol1_old_Meadows_far_SoundShader  RHS_pistol1_old_Houses_close_SoundShader  RHS_pistol1_old_Houses_far_SoundShader  RHS_pistol1_old_Forest_close_SoundShader  RHS_pistol1_old_Forest_far_SoundShader  RHS_pistol1_old_Interior_close_SoundShader  volumeFactor 1 * 1.38  volumeCurve InverseSquare2Curve occlusionFactor   >obstructionFactor      sound3DProcessingType RHS_Tail_3DProcessingType soundShadersLimit     distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer    frequencyRandomizerMin L>spatial    doppler     loop        soundShaders  RHS_rifle2_Meadows_close_SoundShader  RHS_rifle2_Meadows_far_SoundShader  RHS_rifle2_Houses_close_SoundShader  RHS_rifle2_Houses_far_SoundShader  RHS_rifle2_Forest_close_SoundShader  RHS_rifle2_Forest_far_SoundShader  RHS_rifle2_Interior_close_SoundShader  volumeFactor 1 * 1.55  volumeCurve InverseSquare2Curve occlusionFactor   >obstructionFactor      sound3DProcessingType RHS_Tail_3DProcessingType soundShadersLimit     distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer    frequencyRandomizerMin L>spatial    doppler     loop     ػ   soundShaders  RHS_int_cannon_large_Meadows_close_SoundShader  RHS_int_cannon_large_Houses_close_SoundShader  RHS_int_cannon_large_Forest_close_SoundShader  volumeFactor 1 * 1.05  volumeCurve InverseSquare2Curve occlusionFactor Q8>obstructionFactor      sound3DProcessingType RHS_cannonTail_3DProcessingType soundShadersLimit     distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer    frequencyRandomizerMin L>spatial    doppler     loop        soundShaders  RHS_cannon_large_Meadows_close_SoundShader  RHS_cannon_large_Houses_close_SoundShader  RHS_cannon_large_Forest_close_SoundShader  volumeFactor 1 * 1.05  volumeCurve InverseSquare2Curve occlusionFactor Q8>obstructionFactor      sound3DProcessingType RHS_cannonTail_3DProcessingType soundShadersLimit     distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer    frequencyRandomizerMin L>spatial    doppler     loop        soundShaders  RHS_int_cannon_med_Meadows_close_SoundShader  RHS_int_cannon_med_Houses_close_SoundShader  RHS_int_cannon_med_Forest_close_SoundShader  volumeFactor 1 * 1.00  volumeCurve InverseSquare2Curve occlusionFactor Q8>obstructionFactor      sound3DProcessingType RHS_cannonTail_3DProcessingType soundShadersLimit     distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer    frequencyRandomizerMin L>spatial    doppler     loop     x   soundShaders  RHS_cannon_med_Meadows_close_SoundShader  RHS_cannon_med_Houses_close_SoundShader  RHS_cannon_med_Forest_close_SoundShader  volumeFactor 1 * 1.00  volumeCurve InverseSquare2Curve occlusionFactor Q8>obstructionFactor      sound3DProcessingType RHS_cannonTail_3DProcessingType soundShadersLimit     distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer    frequencyRandomizerMin L>spatial    doppler     loop     L   soundShaders  RHS_cannon_20mm_Meadows_close_SoundShader  RHS_cannon_20mm_Houses_close_SoundShader  RHS_cannon_20mm_Forest_close_SoundShader  volumeFactor 1 * 1.00  volumeCurve InverseSquare2Curve occlusionFactor Q8>obstructionFactor      sound3DProcessingType RHS_cannonTail_3DProcessingType soundShadersLimit     distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer    frequencyRandomizerMin L>spatial    doppler     loop     #   soundShaders  RHS_sd_subsonic_Meadows_close_SoundShader  RHS_sd_subsonic_Houses_close_SoundShader  RHS_sd_subsonic_Forest_close_SoundShader  RHS_sd_subsonic_Interior_close_SoundShader  volumeFactor 1 * 1.55  volumeCurve InverseSquare2Curve occlusionFactor   >obstructionFactor      sound3DProcessingType RHS_Tail_3DProcessingType soundShadersLimit     distanceFilter RHS_rifleShotDistanceFilter frequencyRandomizer ?frequencyRandomizerMin L>spatial    doppler     loop         sounds   RHS_boltSnap_pk    RHS_rattle_pk_1 >   RHS_rattle_pk_2    RHS_rattle_pk_3 6   RHS_rattle_pk_4    RHS_rattle_pk_5 .   RHS_rattle_pk_6   &    name RHS_boltSnap_pk sound  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pk\boltSnap ף?   n   titles  >    name RHS_rattle_pk_1 sound  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pk\rattle_1 ?   L   titles      name RHS_rattle_pk_2 sound  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pk\rattle_2 ?   L   titles  6    name RHS_rattle_pk_3 sound  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pk\rattle_3 ?   L   titles      name RHS_rattle_pk_4 sound  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pk\rattle_4 ?   L   titles  .    name RHS_rattle_pk_5 sound  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pk\rattle_5 ?   L   titles      name RHS_rattle_pk_6 sound  rhsafrf\addons\rhs_s_weaponsounds\sounds\specific\pk\rattle_6 ?   L   titles  &    RHS 5      tag RHS  functions T      boltSnap    beltRattle 9   openBolt       file rhsafrf\addons\rhs_c_weaponsounds\03_functions\boltSnap.sqf  description Handles the sound of the initial forward-snapping of weapons that operate from an open bolt 9    file rhsafrf\addons\rhs_c_weaponsounds\03_functions\beltRattle.sqf  description Handles the belt rattling sounds.     file rhsafrf\addons\rhs_c_weaponsounds\03_functions\openBolt.sqf  description     Default Rifle  Rifle_Base_F    Rifle_Short_Base_F   Pistol  Pistol_Base_F 	   Rifle_Long_Base_F   UGL_F EBR_base_F  srifle_EBR_F '  Launcher  Launcher_Base_F 7   LMG_Mk200_F E   arifle_MX_Base_F \   SMG_02_base_F n  pdw2000_base_F  hgun_PDW2000_F    rhs_weap_pp2000    rhs_weap_ak74m_Base_F    rhs_weap_ak74m    rhs_weap_akm 8   rhs_weap_ak103_base N   rhs_weap_svd \   rhs_weap_svdp q   rhs_weap_rpk_base    rhs_pkp_base     Rifle Eventhandlers   Rifle_Base_F  	  Pistol    Rifle_Base_F  '  EBR_base_F  7  Launcher  E  Rifle_Long_Base_F  \  Rifle_Base_F  n  Rifle_Short_Base_F Single FullAuto WeaponSlotsInfo GunParticles   pdw2000_base_F Single FullAuto   hgun_PDW2000_F  Single    FullAuto     Single sounds  StandardSound  StandardSound B     soundSetShot  RHS_pp2000_Shot_SoundSet  RHS_rifle_small_Tail_SoundSet   FullAuto  StandardSound      soundSetShot  RHS_pp2000_Shot_SoundSet  RHS_rifle_small_Tail_SoundSet   Rifle_Base_F  Single +   FullAuto $    Mode_SemiAuto sounds  Standardsound  SilencedSound  StandardSound    SilencedSound   $   soundSetShot  RHS_ak74_Shot_SoundSet  RHS_rifle_small_Tail_SoundSet    soundSetShot  RHS_sd_AK74_Shot_SoundSet  RHS_sd_Rifle1_Tail_SoundSet $  Mode_FullAuto sounds  Standardsound  SilencedSound  StandardSound    SilencedSound      soundSetShot  RHS_ak74_Shot_SoundSet  RHS_rifle_small_Tail_SoundSet    soundSetShot  RHS_sd_AK74_Shot_SoundSet  RHS_sd_Rifle1_Tail_SoundSet   rhs_weap_ak74m_Base_F  8  rhs_weap_ak74m  Single f   FullAuto Z  N  Mode_SemiAuto sounds  StandardSound  SilencedSound  StandardSound    SilencedSound   Z   soundSetShot  RHS_ak47_Shot_SoundSet  RHS_rifle_med_Tail_SoundSet    soundSetShot  RHS_sd_AKM_Shot_SoundSet  RHS_sd_MMG1_Tail_SoundSet Z  Mode_FullAuto sounds  StandardSound  SilencedSound  StandardSound    SilencedSound   N   soundSetShot  RHS_ak47_Shot_SoundSet  RHS_rifle_med_Tail_SoundSet    soundSetShot  RHS_sd_AKM_Shot_SoundSet  RHS_sd_MMG1_Tail_SoundSet N  rhs_weap_akm  Burst k  \  Mode_Burst sounds  StandardSound  SilencedSound  StandardSound    SilencedSound   \   soundSetShot  RHS_ak47_Shot_SoundSet  RHS_rifle_med_Tail_SoundSet    soundSetShot  RHS_sd_AKM_Shot_SoundSet  RHS_sd_MMG1_Tail_SoundSet \  rhs_weap_ak74m  Single |  q  Mode_SemiAuto sounds  StandardSound  SilencedSound  StandardSound    SilencedSound '  q   soundSetShot  RHS_dragunov_Shot_SoundSet  RHS_rifle2_Tail_SoundSet '   soundSetShot  RHS_sd_SVD_Shot_SoundSet  RHS_sd_mmg1_Tail_SoundSet q  rhs_weap_svd  Single     Mode_SemiAuto sounds  StandardSound  SilencedSound  StandardSound    SilencedSound :     soundSetShot  RHS_dragunov_Shot_SoundSet  RHS_rifle2_Tail_SoundSet :   soundSetShot  RHS_sd_SVD_Shot_SoundSet  RHS_sd_mmg1_Tail_SoundSet   Rifle_Long_Base_F  Single    Manual     Mode_SemiAuto sounds  Standardsound  SilencedSound  StandardSound    SilencedSound _     soundSetShot  RHS_ak74_Shot_SoundSet  RHS_rifle_small_Tail_SoundSet _   soundSetShot  RHS_sd_AK74_Shot_SoundSet  RHS_sd_Rifle1_Tail_SoundSet   Mode_FullAuto sounds  Standardsound  SilencedSound  StandardSound    SilencedSound X     soundSetShot  RHS_ak74_Shot_SoundSet  RHS_rifle_small_Tail_SoundSet X   soundSetShot  RHS_sd_AK74_Shot_SoundSet  RHS_sd_Rifle1_Tail_SoundSet   Rifle_Long_Base_F  WW2_boltSnapSound RHS_boltSnap_pk WW2_boltSnapDelay = FullAuto    Eventhandlers     Mode_FullAuto sounds  StandardSound  StandardSound W     soundSetShot  RHS_pk_Shot_SoundSet  RHS_rifle_med_Tail_SoundSet   Eventhandlers  RHS_pk_firedSoundHandler       fired _this params ['_unit','_weapon']; private _soundArray = ['RHS_rattle_pk_1','RHS_rattle_pk_2','RHS_rattle_pk_3','RHS_rattle_pk_4','RHS_rattle_pk_5','RHS_rattle_pk_6'];[_unit,_weapon,_soundArray,3] call RHS_fnc_beltRattle; private _sound = 'RHS_boltSnap_pk';[_unit,_weapon,_sound] call RHS_fnc_boltSnap       // SoundTypes
#include "00_coreConfigs\sound_types\default.hpp"
#include "00_coreConfigs\sound_types\subsonic.hpp"
#include "00_coreConfigs\sound_types\interior.hpp"
#include "00_coreConfigs\sound_types\interiorCannon.hpp"
#include "00_coreConfigs\sound_types\cannon.hpp"
#include "00_coreConfigs\sound_types\flamethrower.hpp"
#include "00_coreConfigs\sound_types\katyusha.hpp"

// Create tail template and define tails
#include "00_coreConfigs\tail_types\default.hpp"
#include "00_coreConfigs\tail_types\subsonic.hpp"
#include "00_coreConfigs\tail_types\interior.hpp"
#include "00_coreConfigs\tail_types\interiorCannon.hpp"
#include "00_coreConfigs\tail_types\cannon.hpp"





#include "04_soundConfigs\cfgSound3DProcessors.h"
#include "04_soundConfigs\cfgSoundCurves.h"
#include "04_soundConfigs\cfgDistanceFilters.h"
#include "cfgSoundShaders.h"
#include "cfgSoundSets.h"
#include "04_soundConfigs\cfgSounds.h"#define PREFIX RHS
#define ADDONPATCH rhs_c_weaponsounds
#define FILEPATH rhsafrf\addons\rhs_s_weaponsounds\sounds
#define SCRIPTPATH rhsafrf\addons\rhs_c_weaponsounds






/* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */
// Smoother Weapon config
#define PACKAGE(WPNNAME,TAILNAME,PREFIX) soundSetShot[] = {##PREFIX##_##WPNNAME##_Shot_SoundSet,##PREFIX##_##TAILNAME##_Tail_SoundSet};

// Includes
#include "cfgPatches.h"

#include "sound_config.hpp"

#include "03_functions\cfgFunctions.h"
#include "05_weaponConfigs\cfgAmmo.h"
#include "05_weaponConfigs\cfgWeapons.h"

//
/* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ /* DO NOT EDIT */ Ky,Vô[$