 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>Ház>  €>)\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 */ Kíšy�¬Å,Vâ‹Ã´Í[ç$Åä