//=============================================================================
// NWMutator. The main mutator.
// Updated by: Feralidragon - 31/Mar/2009
//=============================================================================
class NWMutator expands Mutator config(NaliWeaponsII);

#exec AUDIO IMPORT NAME="MH_One" FILE=SOUNDS\MH_One.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MH_Two" FILE=SOUNDS\MH_Two.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MH_Three" FILE=SOUNDS\MH_Three.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_01" FILE=SOUNDS\MHRand_01.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_02" FILE=SOUNDS\MHRand_02.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_03" FILE=SOUNDS\MHRand_03.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_04" FILE=SOUNDS\MHRand_04.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_05" FILE=SOUNDS\MHRand_05.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_06" FILE=SOUNDS\MHRand_06.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_07" FILE=SOUNDS\MHRand_07.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_08" FILE=SOUNDS\MHRand_08.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_09" FILE=SOUNDS\MHRand_09.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_10" FILE=SOUNDS\MHRand_10.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_11" FILE=SOUNDS\MHRand_11.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_12" FILE=SOUNDS\MHRand_12.wav GROUP="MonsterHunt"
#exec AUDIO IMPORT NAME="MHRand_13" FILE=SOUNDS\MHRand_13.wav GROUP="MonsterHunt"

var(Weapons) globalconfig bool enable_WRE;
var(Weapons) globalconfig bool enable_FlameT;
var(Weapons) globalconfig bool enable_BoltR;
var(Weapons) globalconfig bool enable_SBoltR;
var(Weapons) globalconfig bool enable_Graviton;
var(Weapons) globalconfig bool enable_Freezer;
var(Weapons) globalconfig bool enable_Vulcan;
var(Weapons) globalconfig bool enable_TheMiner;
var(Weapons) globalconfig bool enable_MMLauncher;
var(Weapons) globalconfig bool enable_IRPR;
var(Weapons) globalconfig bool enable_Cybot;
var(Weapons) globalconfig bool enable_UltimaProtos;
var(Weapons) globalconfig bool enable_MegaTon;

var(AmmoMultiPlier) globalconfig int ammo_WRE;
var(AmmoMultiPlier) globalconfig int ammo_FlameT;
var(AmmoMultiPlier) globalconfig int ammo_BoltR;
var(AmmoMultiPlier) globalconfig int ammo_SBoltR;
var(AmmoMultiPlier) globalconfig int ammo_Graviton;
var(AmmoMultiPlier) globalconfig int ammo_Freezer;
var(AmmoMultiPlier) globalconfig int ammo_Vulcan;
var(AmmoMultiPlier) globalconfig int ammo_TheMiner;
var(AmmoMultiPlier) globalconfig int ammo_MMLauncher;
var(AmmoMultiPlier) globalconfig int ammo_IRPR;
var(AmmoMultiPlier) globalconfig int ammo_Cybot;

var(Misc) globalconfig bool WRE_replace_Enforcer;
var(Misc) globalconfig bool bMineExplosionChain;
var(Misc) globalconfig bool EnableFTrackerFlames;
var(Misc) globalconfig bool bCoronasCollisionDetail;
var(Misc) globalconfig bool bMineID_InTeamGames;
var(Misc) globalconfig bool bCybotID_InTeamGames;
var(Misc) globalconfig bool bMegaTonID_InTeamGames;
var(Misc) globalconfig bool EnableCorpseOverlayers;
var(Misc) globalconfig bool bMHChargers;
var(Misc) globalconfig bool bWeaponChargers;
var(Misc) globalconfig bool bPickupChargers;
var(Misc) globalconfig bool EnableChargersLightsFX;
var(Misc) globalconfig bool ReplaceOldSkoolWeapons;
var(Misc) globalconfig bool bRXServerConfig;
var(Misc) globalconfig bool EnableRXChargers;
var(Misc) globalconfig int MinesLifeSpan;

var(Pickups) globalconfig bool enable_NeoXUDamage;
var(Pickups) globalconfig bool enable_NeoXInvis;
var(Pickups) globalconfig bool enable_NeoXVial;
var(Pickups) globalconfig bool enable_NeoXMed;
var(Pickups) globalconfig bool enable_NeoXSHealth;

var(MonsterHunt) globalconfig bool EnableMonsterHuntMode;
var(MonsterHunt) globalconfig bool MonsterHuntOnly;
var(MonsterHunt) globalconfig int MaxHealth;
var(MonsterHunt) globalconfig int StartHealth;
var(MonsterHunt) globalconfig bool GiveRandomWeaponOnRespawn;
var(MonsterHunt) globalconfig bool TimedRandomInventory;
var(MonsterHunt) globalconfig int RandomInventoryIntervalSec;
var(MonsterHunt) globalconfig bool bMonsterPinata;
var(MonsterHunt) globalconfig bool bRegenerateAmmo;
var(MonsterHunt) globalconfig bool bRegenerateHealth;
var(MonsterHunt) globalconfig int RegenAmmoPerSec;
var(MonsterHunt) globalconfig int RegenHealthPerSec;
var(MonsterHunt) globalconfig int ModifiersRespawnTimeSec;
var(MonsterHunt) globalconfig bool bEnableModifAtRespawnLoc;
var(MonsterHunt) sound RandMHSnd[13];

var(Misc) globalconfig bool bFlamesFDetail;
var(Misc) globalconfig bool bFlameTFireBall;
var(Misc) globalconfig bool bGravitonFlyHack;
var(Misc) globalconfig bool EnableXMissile;

var(Performance) globalconfig bool bWeaponsDynLight;
var(Performance) globalconfig bool bAmmoDynLight;
var(Performance) globalconfig bool bPickupsDynLight;
var(Performance) globalconfig bool bChargersDynLight;

var(Performance) globalconfig byte WeaponDistDetail;
var(Performance) globalconfig byte AmmoDistDetail;
var(Performance) globalconfig byte PickupsDistDetail;
var(Performance) globalconfig byte ChargersDistDetail;

var(Weapons) globalconfig bool enable_NukeLvlA;
var(Weapons) globalconfig bool enable_NukeLvlB;
var(Weapons) globalconfig bool enable_NukeLvlC;
var(Weapons) globalconfig bool enable_NukeLvlD;
var(Weapons) globalconfig bool enable_NukeLvlE;

var(Misc) globalconfig int MultiMegaRespawnTime;


var class<MHPickups> MHP[6];

var() string ActualPackName;

var float TimeCounter, OneSecondCounter, RandInvCounter, PinataCounter;
var class<Weapon> RandNWeap[8];
var class<Weapon> RandMegaWeap[10];
var byte RandInvStage;
var class<Inventory> RandInvPinata[52];
var byte MegaB, CurrentMega;

function PostBeginPlay()
{
	local NavigationPoint NP;
	local int NumPoints, NavPoint, j, PointCount, PSSeq;
	local Inventory I;
	local Actor AxisXNeg, AxisXPos, AxisYNeg, AxisYPos, AxisZNeg, AxisZPos;
	local byte HoleCoef, NodeN;
	local vector HitLocationA, HitNormalA, HitLocationB, HitNormalB, HitLocationC, HitNormalC, HitLocationD, HitNormalD;
	local vector HitLocationE, HitNormalE, HitLocationF, HitNormalF, FinalLocation, FinalNormal;
	local NeoXChargerA nxc;
	local ChargerLightConeA cc;
	local Inventory W, NewW;
	local int Pn[5];
	local byte MegaWeaponsAmount;
	local MultiMegaWeaponPos mmwp;
	local PlayerStart Pst;

	SetTimer(0.1, True);

	//If enabled, spawn modifiers at playerstart locations
	if (bEnableModifAtRespawnLoc && ((Level.Game.IsA('MonsterHunt') && Default.EnableMonsterHuntMode && Default.MonsterHuntOnly) || (Default.EnableMonsterHuntMode && !Default.MonsterHuntOnly)))
	{
		ForEach AllActors(Class'PlayerStart', Pst)
		{
			if (PSSeq == 0)
				Spawn(Class'DamageN',,, Pst.Location, Pst.Rotation.Yaw * rot(0,1,0));
			else if (PSSeq == 1)
				Spawn(Class'Fast',,, Pst.Location, Pst.Rotation.Yaw * rot(0,1,0));
			else if (PSSeq == 2)
				Spawn(Class'HealthN',,, Pst.Location, Pst.Rotation.Yaw * rot(0,1,0));
			else if (PSSeq == 3)
				Spawn(Class'Kick',,, Pst.Location, Pst.Rotation.Yaw * rot(0,1,0));
			else if (PSSeq == 4)
				Spawn(Class'Splasher',,, Pst.Location, Pst.Rotation.Yaw * rot(0,1,0));
			else if (PSSeq == 5)
				Spawn(Class'Infinity',,, Pst.Location, Pst.Rotation.Yaw * rot(0,1,0));

			PSSeq++;

			if (PSSeq >= 6)
				PSSeq = 0;
		}
	}


	//Set RandInvPinata values
	//*******************************************************
	if (enable_NeoXVial)
	{
		RandInvPinata[0] = Class'NeoXVial';
		RandInvPinata[4] = Class'NeoXVial';
		RandInvPinata[8] = Class'NeoXVial';
		RandInvPinata[12] = Class'NeoXVial';
		RandInvPinata[16] = Class'NeoXVial';
	}
	else
	{
		RandInvPinata[0] = Class'HealthVial';
		RandInvPinata[4] = Class'HealthVial';
		RandInvPinata[8] = Class'HealthVial';
		RandInvPinata[12] = Class'HealthVial';
		RandInvPinata[16] = Class'HealthVial';
	}

	if (enable_NeoXMed)
	{
		RandInvPinata[1] = Class'NeoXMed';
		RandInvPinata[5] = Class'NeoXMed';
		RandInvPinata[9] = Class'NeoXMed';
		RandInvPinata[13] = Class'NeoXMed';
		RandInvPinata[17] = Class'NeoXMed';
	}
	else
	{
		RandInvPinata[1] = Class'MedBox';
		RandInvPinata[5] = Class'MedBox';
		RandInvPinata[9] = Class'MedBox';
		RandInvPinata[13] = Class'MedBox';
		RandInvPinata[17] = Class'MedBox';
	}

	if (enable_WRE)
		RandInvPinata[2] = Class'WREAmmo';
	else
		RandInvPinata[2] = Class'EClip';

	if (enable_FlameT)
		RandInvPinata[3] = Class'FlameAmmo';
	else
		RandInvPinata[3] = Class'BioAmmo';

	if (enable_BoltR)
		RandInvPinata[6] = Class'BoltAmmo';
	else
		RandInvPinata[6] = Class'ShockCore';

	if (enable_SBoltR)
		RandInvPinata[7] = Class'SuperBoltAmmo';
	else if (enable_BoltR)
		RandInvPinata[7] = Class'BoltAmmo';
	else
		RandInvPinata[7] = Class'ShockCore';

	if (enable_Graviton)
		RandInvPinata[10] = Class'GravitonAmmo';
	else
		RandInvPinata[10] = Class'PAmmo';

	if (enable_Freezer)
		RandInvPinata[11] = Class'FreezerAmmo';
	else
		RandInvPinata[11] = Class'BladeHopper';

	if (enable_Vulcan)
		RandInvPinata[14] = Class'VulcanAmmo';
	else
		RandInvPinata[14] = Class'MiniAmmo';

	if (enable_TheMiner)
		RandInvPinata[15] = Class'TheMinerAmmo';
	else
		RandInvPinata[15] = Class'FlakAmmo';

	if (enable_MMLauncher)
		RandInvPinata[18] = Class'MultiMAmmo';
	else
		RandInvPinata[18] = Class'RocketPack';

	if (enable_IRPR)
		RandInvPinata[19] = Class'IRPRAmmo';
	else
		RandInvPinata[19] = Class'BulletBox';

	if (enable_Cybot)
		RandInvPinata[20] = Class'CybotAmmo';
	else if (enable_NeoXVial)
		RandInvPinata[20] = Class'NeoXVial';
	else
		RandInvPinata[20] = Class'HealthVial';

	RandInvPinata[21] = Class'DamageN';
	RandInvPinata[22] = Class'Fast';
	RandInvPinata[23] = Class'HealthN';
	RandInvPinata[24] = Class'Kick';
	RandInvPinata[25] = Class'Splasher';
	RandInvPinata[26] = Class'Infinity';
	RandInvPinata[27] = Class'DamageN';
	RandInvPinata[28] = Class'Fast';
	RandInvPinata[29] = Class'HealthN';
	RandInvPinata[30] = Class'Kick';
	RandInvPinata[31] = Class'Splasher';
	RandInvPinata[32] = Class'Infinity';

	if (enable_NeoXSHealth)
		RandInvPinata[33] = Class'NeoXSuperHealth';
	else
		RandInvPinata[33] = Class'HealthPack';

	if (enable_NeoXUDamage)
		RandInvPinata[34] = Class'NeoXUDamage';
	else
		RandInvPinata[34] = Class'UDamage';

	RandInvPinata[35] = Class'UT_ShieldBelt';
	RandInvPinata[36] = Class'UT_Jumpboots';


	if (enable_Cybot)
	{
		RandInvPinata[37] = Class'CybotLauncher';
		RandInvPinata[42] = Class'CybotLauncher';
		RandInvPinata[47] = Class'CybotLauncher';
	}
	else
	{
		RandInvPinata[37] = Class'WarHeadLauncher';
		RandInvPinata[42] = Class'WarHeadLauncher';
		RandInvPinata[47] = Class'WarHeadLauncher';
	}

	if (enable_MegaTon)
	{
		RandInvPinata[38] = Class'MegaTon';
		RandInvPinata[43] = Class'MegaTon';
		RandInvPinata[48] = Class'MegaTon';
	}
	else if (enable_Cybot)
	{
		RandInvPinata[38] = Class'CybotLauncher';
		RandInvPinata[43] = Class'CybotLauncher';
		RandInvPinata[48] = Class'CybotLauncher';
	}
	else
	{
		RandInvPinata[38] = Class'WarHeadLauncher';
		RandInvPinata[43] = Class'WarHeadLauncher';
		RandInvPinata[48] = Class'WarHeadLauncher';
	}

	if (enable_UltimaProtos)
	{
		RandInvPinata[39] = Class'UltimaProtos';
		RandInvPinata[44] = Class'UltimaProtos';
		RandInvPinata[49] = Class'UltimaProtos';
	}
	else if (enable_SBoltR)
	{
		RandInvPinata[39] = Class'SuperBoltRifle';
		RandInvPinata[44] = Class'SuperBoltRifle';
		RandInvPinata[49] = Class'SuperBoltRifle';
	}
	else
	{
		RandInvPinata[39] = Class'WarHeadLauncher';
		RandInvPinata[44] = Class'WarHeadLauncher';
		RandInvPinata[49] = Class'WarHeadLauncher';
	}

	if (enable_SBoltR)
	{
		RandInvPinata[40] = Class'SuperBoltRifle';
		RandInvPinata[45] = Class'SuperBoltRifle';
		RandInvPinata[50] = Class'SuperBoltRifle';
	}
	else
	{
		RandInvPinata[40] = Class'WarHeadLauncher';
		RandInvPinata[45] = Class'WarHeadLauncher';
		RandInvPinata[50] = Class'WarHeadLauncher';
	}

	RandInvPinata[41] = Class'WarHeadLauncher';
	RandInvPinata[46] = Class'WarHeadLauncher';
	RandInvPinata[51] = Class'WarHeadLauncher';


	//*******************************************************

if ((Level.Game.IsA('MonsterHunt') && Default.EnableMonsterHuntMode && Default.MonsterHuntOnly) || (Default.EnableMonsterHuntMode && !Default.MonsterHuntOnly))
{
    //Calculate number of navigation points.
    for (NP = Level.NavigationPointList; NP != None; NP = NP.NextNavigationPoint)
    {
        if (NP.IsA('PathNode'))
            NumPoints++;
    }

    for (j=0; j<6; j++)
    {

    PointCount = 0;

    If (NumPoints > 12)
    {

    NavPoint = Rand(NumPoints);
	if (NavPoint == Pn[0])
		NavPoint = Rand(NumPoints);
	if (NavPoint == Pn[1])
		NavPoint = Rand(NumPoints);
	if (NavPoint == Pn[2])
		NavPoint = Rand(NumPoints);
	if (NavPoint == Pn[3])
		NavPoint = Rand(NumPoints);
	if (NavPoint == Pn[4])
		NavPoint = Rand(NumPoints);

	Pn[NodeN] = NavPoint;
	NodeN++;
		
    for (NP = Level.NavigationPointList; NP != None; NP = NP.NextNavigationPoint)
    {
        if ( NP.IsA('PathNode'))
        {

            if (PointCount == NavPoint)
            {
                //Spawn it here.
                Spawn(MHP[j],,, NP.Location);
		break;
            }
        }

	PointCount++;
    }
    }
    }


	//Set random weapons
	if (GiveRandomWeaponOnRespawn)
	{
		if (enable_FlameT)
			RandNWeap[0] = Class'FlameTracker';
		else
			RandNWeap[0] = Class'UT_BioRifle';

		if (enable_BoltR)
			RandNWeap[1] = Class'BoltRifle';
		else
			RandNWeap[1] = Class'ShockRifle';

		if (enable_Graviton)
			RandNWeap[2] = Class'Graviton';
		else
			RandNWeap[2] = Class'PulseGun';


		if (enable_Freezer)
			RandNWeap[3] = Class'Freezer';
		else
			RandNWeap[3] = Class'Ripper';

		if (enable_Vulcan)
			RandNWeap[4] = Class'Vulcan';
		else
			RandNWeap[4] = Class'Minigun2';

		if (enable_TheMiner)
			RandNWeap[5] = Class'TheMiner';
		else
			RandNWeap[5] = Class'UT_FlakCannon';

		if (enable_MMLauncher)
			RandNWeap[6] = Class'MultiMissile';
		else
			RandNWeap[6] = Class'UT_Eightball';

		if (enable_IRPR)
			RandNWeap[7] = Class'IRPR';
		else
			RandNWeap[7] = Class'SniperRifle';
	}
}

		//Mega Weapons Atributes
		CurrentMega = 1;
		RandMegaWeap[0] = Class'WarHeadLauncher';
		MegaB++;

		if (enable_Cybot)
		{
			RandMegaWeap[MegaB] = Class'CybotLauncher';
			MegaB++;
		}
		
		if (enable_SBoltR)
		{
			RandMegaWeap[MegaB] = Class'SuperBoltRifle';
			MegaB++;
		}

		if (enable_MegaTon)
		{
			RandMegaWeap[MegaB] = Class'MegaTon';
			MegaB++;
		}

		if (enable_UltimaProtos)
		{
			RandMegaWeap[MegaB] = Class'UltimaProtos';
			MegaB++;
		}

		if (enable_NukeLvlA)
		{
			RandMegaWeap[MegaB] = Class'NuclearLauncherLvlA';
			MegaB++;
		}

		if (enable_NukeLvlB)
		{
			RandMegaWeap[MegaB] = Class'NuclearLauncherLvlB';
			MegaB++;
		}

		if (enable_NukeLvlC)
		{
			RandMegaWeap[MegaB] = Class'NuclearLauncherLvlC';
			MegaB++;
		}

		if (enable_NukeLvlD)
		{
			RandMegaWeap[MegaB] = Class'NuclearLauncherLvlD';
			MegaB++;
		}
		
		if (enable_NukeLvlE)
		{
			RandMegaWeap[MegaB] = Class'NuclearLauncherLvlE';
			MegaB++;
		}


	if (enable_Cybot)
		MegaWeaponsAmount++;
	if (enable_SBoltR)
		MegaWeaponsAmount++;
	if (enable_UltimaProtos)
		MegaWeaponsAmount++;
	if (enable_MegaTon)
		MegaWeaponsAmount++;
	if (enable_NukeLvlA)
		MegaWeaponsAmount++;
	if (enable_NukeLvlB)
		MegaWeaponsAmount++;
	if (enable_NukeLvlC)
		MegaWeaponsAmount++;
	if (enable_NukeLvlD)
		MegaWeaponsAmount++;
	if (enable_NukeLvlE)
		MegaWeaponsAmount++;
		

	ForEach AllActors(Class'Inventory', W)
	{
		if ( ((W.IsA('AutoMag') && ReplaceOldSkoolWeapons) || W.IsA('Enforcer')) && enable_WRE && Pawn(W.Owner)==None)
		{
			NewW = Spawn(Class'WRE',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if (W.IsA('MiniAmmo') && !W.IsA('EClip') && enable_Vulcan && Pawn(W.Owner)==None)
		{
			NewW = Spawn(Class'VulcanAmmo',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ((W.IsA('HealthPack') || W.IsA('SuperHealth')) && !W.IsA('NeoXSuperHealth') && enable_NeoXSHealth)
		{
			NewW = Spawn(Class'NeoXSuperHealth',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( ((W.IsA('Rifle') && ReplaceOldSkoolWeapons) || W.IsA('SniperRifle')) && enable_IRPR)
		{
			NewW = Spawn(Class'IRPR',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if (W.IsA('WarHeadLauncher') && !bRXServerConfig && MegaWeaponsAmount > 1)
		{
			mmwp = Spawn(Class'MultiMegaWeaponPos',,, W.Location, W.Rotation);

			if (enable_Cybot)
				mmwp.MEgaW = Spawn(Class'CybotLauncher',,, mmwp.Location, mmwp.Rotation);
			else if (enable_SBoltR)
				mmwp.MEgaW = Spawn(Class'SuperBoltRifle',,, mmwp.Location, mmwp.Rotation);
			else if (enable_MegaTon)
				mmwp.MEgaW = Spawn(Class'MegaTon',,, mmwp.Location, mmwp.Rotation);
			else if (enable_UltimaProtos)
				mmwp.MEgaW = Spawn(Class'UltimaProtos',,, mmwp.Location, mmwp.Rotation);
			else if (enable_NukeLvlA)
				mmwp.MEgaW = Spawn(Class'NuclearLauncherLvlA',,, mmwp.Location, mmwp.Rotation);
			else if (enable_NukeLvlB)
				mmwp.MEgaW = Spawn(Class'NuclearLauncherLvlB',,, mmwp.Location, mmwp.Rotation);
			else if (enable_NukeLvlC)
				mmwp.MEgaW = Spawn(Class'NuclearLauncherLvlC',,, mmwp.Location, mmwp.Rotation);
			else if (enable_NukeLvlD)
				mmwp.MEgaW = Spawn(Class'NuclearLauncherLvlD',,, mmwp.Location, mmwp.Rotation);
			else if (enable_NukeLvlE)
				mmwp.MEgaW = Spawn(Class'NuclearLauncherLvlE',,, mmwp.Location, mmwp.Rotation);

			if (W.bRotatingPickup || W.bFixedRotationDir)
			{
				mmwp.bFixedRotationDir = True;
				mmwp.MegaW.bFixedRotationDir = True;
				mmwp.MegaW.bRotatingPickup = True;
			}
			W.Destroy();
		}
		else if (W.IsA('WarHeadLauncher') && !bRXServerConfig && MegaWeaponsAmount == 1)
		{
			if (enable_Cybot)
				NewW = Spawn(Class'CybotLauncher',,, W.Location, W.Rotation);
			else if (enable_SBoltR)
				NewW = Spawn(Class'SuperBoltRifle',,, W.Location, W.Rotation);
			else if (enable_MegaTon)
				NewW = Spawn(Class'MegaTon',,, W.Location, W.Rotation);
			else if (enable_UltimaProtos)
				NewW = Spawn(Class'UltimaProtos',,, W.Location, W.Rotation);
			else if (enable_NukeLvlA)
				NewW = Spawn(Class'NuclearLauncherLvlA',,, W.Location, W.Rotation);
			else if (enable_NukeLvlB)
				NewW = Spawn(Class'NuclearLauncherLvlB',,, W.Location, W.Rotation);
			else if (enable_NukeLvlC)
				NewW = Spawn(Class'NuclearLauncherLvlC',,, W.Location, W.Rotation);
			else if (enable_NukeLvlD)
				NewW = Spawn(Class'NuclearLauncherLvlD',,, W.Location, W.Rotation);
			else if (enable_NukeLvlE)
				NewW = Spawn(Class'NuclearLauncherLvlE',,, W.Location, W.Rotation);

			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if (W.IsA('WarHeadAmmo') && !bRXServerConfig)
		{
			if (enable_Cybot)
				NewW = Spawn(Class'CybotAmmo',,, W.Location, W.Rotation);
			else if (enable_SBoltR)
				NewW = Spawn(Class'SuperBoltAmmo',,, W.Location, W.Rotation);
			else if (enable_NukeLvlA)
				NewW = Spawn(Class'NukeAmmoA',,, W.Location, W.Rotation);
			else if (enable_NukeLvlB)
				NewW = Spawn(Class'NukeAmmoB',,, W.Location, W.Rotation);
			else if (enable_NukeLvlC)
				NewW = Spawn(Class'NukeAmmoC',,, W.Location, W.Rotation);
			else if (enable_NukeLvlD)
				NewW = Spawn(Class'NukeAmmoD',,, W.Location, W.Rotation);
			else if (enable_NukeLvlE)
				NewW = Spawn(Class'NukeAmmoE',,, W.Location, W.Rotation);

			if (NewW != None)
			{
				NewW.bRotatingPickup = W.bRotatingPickup;
				NewW.bFixedRotationDir = W.bFixedRotationDir;
				W.Destroy();
			}
		}
		else if (W.IsA('UT_BioRifle') && enable_FlameT)
		{
			NewW = Spawn(Class'FlameTracker',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if (W.IsA('ShockRifle') && enable_BoltR && !W.IsA('SuperShockRifle'))
		{
			NewW = Spawn(Class'BoltRifle',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if (W.IsA('SuperShockRifle') && enable_SBoltR)
		{
			NewW = Spawn(Class'SuperBoltRifleInf',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( W.IsA('PulseGun') && enable_Graviton)
		{
			NewW = Spawn(Class'Graviton',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if (W.IsA('Ripper') && enable_Freezer)
		{
			NewW = Spawn(Class'Freezer',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if (W.IsA('Minigun2') && enable_Vulcan)
		{
			NewW = Spawn(Class'Vulcan',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if (W.IsA('UT_FlakCannon') && enable_TheMiner)
		{
			NewW = Spawn(Class'TheMiner',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( W.IsA('UT_Eightball') && enable_MMLauncher)
		{
			NewW = Spawn(Class'MultiMissile',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( ((W.IsA('Shellbox') && ReplaceOldSkoolWeapons) || W.IsA('EClip')) && enable_WRE)
		{
			NewW = Spawn(Class'WREAmmo',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( ((W.IsA('Sludge') && ReplaceOldSkoolWeapons) || W.IsA('BioAmmo')) && enable_FlameT)
		{
			NewW = Spawn(Class'FlameAmmo',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( ((W.IsA('ASMDAmmo') && ReplaceOldSkoolWeapons) || W.IsA('ShockCore')) && enable_BoltR)
		{
			NewW = Spawn(Class'BoltAmmo',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( W.IsA('PAmmo') && enable_Graviton)
		{
			NewW = Spawn(Class'GravitonAmmo',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( ((W.IsA('RazorAmmo') && ReplaceOldSkoolWeapons) || W.IsA('BladeHopper')) && enable_Freezer)
		{
			NewW = Spawn(Class'FreezerAmmo',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( ((W.IsA('StingerAmmo') && ReplaceOldSkoolWeapons) /*|| W.IsA('MiniAmmo')*/) && enable_Vulcan)
		{
			NewW = Spawn(Class'VulcanAmmo',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( ((W.IsA('FlakBox') && ReplaceOldSkoolWeapons) || W.IsA('FlakAmmo')) && enable_TheMiner)
		{
			NewW = Spawn(Class'TheMinerAmmo',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( ((W.IsA('RocketCan') && ReplaceOldSkoolWeapons) || W.IsA('RocketPack')) && enable_MMLauncher)
		{
			NewW = Spawn(Class'MultiMAmmo',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if ( W.IsA('BulletBox') && enable_IRPR)
		{
			NewW = Spawn(Class'IRPRAmmo',,, W.Location, W.Rotation);
			NewW.bRotatingPickup = W.bRotatingPickup;
			NewW.bFixedRotationDir = W.bFixedRotationDir;
			W.Destroy();
		}
		else if (W.IsA('MHPickups'))
			W.RespawnTime = FMax(0.5, ModifiersRespawnTimeSec);

		if (ReplaceOldSkoolWeapons)
		{
			if (W.IsA('GESBioRifle') && enable_FlameT)
			{
				NewW = Spawn(Class'FlameTracker',,, W.Location, W.Rotation);
				NewW.bRotatingPickup = W.bRotatingPickup;
				NewW.bFixedRotationDir = W.bFixedRotationDir;
				W.Destroy();
			}
			else if (W.IsA('ASMD') && enable_BoltR)
			{
				NewW = Spawn(Class'BoltRifle',,, W.Location, W.Rotation);
				NewW.bRotatingPickup = W.bRotatingPickup;
				NewW.bFixedRotationDir = W.bFixedRotationDir;
				W.Destroy();
			}
			else if (W.IsA('RazorJack') && enable_Freezer)
			{
				NewW = Spawn(Class'Freezer',,, W.Location, W.Rotation);
				NewW.bRotatingPickup = W.bRotatingPickup;
				NewW.bFixedRotationDir = W.bFixedRotationDir;
				W.Destroy();
			}
			else if ((W.IsA('Minigun') || W.IsA('Stinger')) && enable_Vulcan)
			{
				NewW = Spawn(Class'Vulcan',,, W.Location, W.Rotation);
				NewW.bRotatingPickup = W.bRotatingPickup;
				NewW.bFixedRotationDir = W.bFixedRotationDir;
				W.Destroy();
			}
			else if (W.IsA('FlakCannon') && enable_TheMiner)
			{
				NewW = Spawn(Class'TheMiner',,, W.Location, W.Rotation);
				NewW.bRotatingPickup = W.bRotatingPickup;
				NewW.bFixedRotationDir = W.bFixedRotationDir;
				W.Destroy();
			}
			else if (W.IsA('Eightball') && enable_MMLauncher)
			{
				NewW = Spawn(Class'MultiMissile',,, W.Location, W.Rotation);
				NewW.bRotatingPickup = W.bRotatingPickup;
				NewW.bFixedRotationDir = W.bFixedRotationDir;
				W.Destroy();
			}
			else if (W.IsA('RifleAmmo') && enable_IRPR)
			{
				NewW = Spawn(Class'IRPRAmmo',,, W.Location, W.Rotation);
				NewW.bRotatingPickup = W.bRotatingPickup;
				NewW.bFixedRotationDir = W.bFixedRotationDir;
				W.Destroy();
			}
		}
	}



	//Intelligent placement of the weapon chargers
	if (Default.bWeaponChargers || Default.bPickupChargers)
	{
		ForEach AllActors(Class'Inventory', I)
		{
			HoleCoef = 0;

			AxisXNeg = Trace(HitLocationA, HitNormalA, I.Location + vect(-128,0,0), I.Location, False);
			AxisXPos = Trace(HitLocationB, HitNormalB, I.Location + vect(128,0,0), I.Location, False);
			AxisYNeg = Trace(HitLocationC, HitNormalC, I.Location + vect(0,-128,0), I.Location, False);
			AxisYPos = Trace(HitLocationD, HitNormalD, I.Location + vect(0,128,0), I.Location, False);
			AxisZNeg = Trace(HitLocationE, HitNormalE, I.Location + vect(0,0,-128), I.Location, False);
			AxisZPos = Trace(HitLocationF, HitNormalF, I.Location + vect(0,0,128), I.Location, False);

			if (AxisXNeg != None)
				HoleCoef++;
			if (AxisXPos != None)
				HoleCoef++;
			if (AxisYNeg != None)
				HoleCoef++;
			if (AxisYPos != None)
				HoleCoef++;

			if (HoleCoef == 3)
			{
				If (AxisXNeg == None)
				{
					FinalLocation = HitLocationB;
					FinalNormal = HitNormalB;
				}
				Else If (AxisXPos == None)
				{
					FinalLocation = HitLocationA;
					FinalNormal = HitNormalA;
				}
				Else If (AxisYNeg == None)
				{
					FinalLocation = HitLocationD;
					FinalNormal = HitNormalD;
				}
				Else If (AxisYPos == None)
				{
					FinalLocation = HitLocationE;
					FinalNormal = HitNormalE;
				}
			}
			else if (HoleCoef == 1 && AxisZPos == None && AxisZNeg == None)
			{
				If (AxisXNeg == None)
				{
					FinalLocation = HitLocationB;
					FinalNormal = HitNormalB;
				}
				Else If (AxisXPos == None)
				{
					FinalLocation = HitLocationA;
					FinalNormal = HitNormalA;
				}
				Else If (AxisYNeg == None)
				{
					FinalLocation = HitLocationD;
					FinalNormal = HitNormalD;
				}
				Else If (AxisYPos == None)
				{
					FinalLocation = HitLocationE;
					FinalNormal = HitNormalE;
				}
			}
			else if (AxisZPos != None && AxisZNeg == None)
			{
				FinalLocation = HitLocationF;
				FinalNormal = HitNormalF;
			}
			else if (AxisZNeg != None)
			{
				FinalLocation = HitLocationE;
				FinalNormal = HitNormalE;
			}

			if (HoleCoef > 0 || AxisZPos != None || AxisZNeg != None)
			{
				if (I.IsA('Weapon') && !I.IsA('Konglauncher') && !I.IsA('SuperShockRifle') && !I.IsA('WarHeadLauncher') && !I.IsA('NaliWeapons') && Default.bWeaponChargers)
				{
					nxc = Spawn(Class'NeoXChargerB',,, FinalLocation, rotator(FinalNormal));
					Spawn(Class'ChargerLightB',,, FinalLocation, rotator(FinalNormal));

					if (enable_Graviton && I.IsA('PulseGun'))
						I.SetLocation(FinalLocation + 50 * FinalNormal);
					else
						I.SetLocation(FinalLocation + 35 * FinalNormal);
					if (bChargersDynLight)
						Spawn(Class'Light_Yellow',,, FinalLocation + 40 * FinalNormal);
					I.bRotatingPickup = True;
					I.bFixedRotationDir = True;
					SpawnLightFX( FinalLocation, FinalNormal, 1, 1);
				}
				else if (I.IsA('NaliWeapons') && Default.bWeaponChargers)	
				{
					if (!NaliWeapons(I).bMegaWeapon)
					{
						nxc = Spawn(Class'NeoXChargerB',,, FinalLocation, rotator(FinalNormal));
						Spawn(Class'ChargerLightB',,, FinalLocation, rotator(FinalNormal));

						if (I.IsA('Graviton'))
							I.SetLocation(FinalLocation + 50 * FinalNormal);
						else
							I.SetLocation(FinalLocation + 35 * FinalNormal);
						if (bChargersDynLight)
							Spawn(Class'Light_Yellow',,, FinalLocation + 40 * FinalNormal);
						I.bRotatingPickup = True;
						I.bFixedRotationDir = True;
						SpawnLightFX( FinalLocation, FinalNormal, 1, 1);
					}
					else
					{
						nxc = Spawn(Class'NeoXChargerB',,, FinalLocation, rotator(FinalNormal));
						cc = Spawn(Class'ChargerLightB',,, FinalLocation, rotator(FinalNormal));
						nxc.Texture = Texture'FastLMap';
						cc.MultiSkins[1] = Texture'FastLightCone';
						I.SetLocation(FinalLocation + 40 * FinalNormal);
						if (bChargersDynLight)
							Spawn(Class'Light_Red',,, FinalLocation + 40 * FinalNormal);
						I.bRotatingPickup = True;
						I.bFixedRotationDir = True;
						SpawnLightFX( FinalLocation, FinalNormal, 1, 2);
					}
				}
				else if ((I.IsA('Konglauncher') || I.IsA('WarHeadLauncher')) && Default.bWeaponChargers && Default.EnableRXChargers)
				{
					nxc = Spawn(Class'NeoXChargerB',,, FinalLocation, rotator(FinalNormal));
					cc = Spawn(Class'ChargerLightB',,, FinalLocation, rotator(FinalNormal));
					nxc.Texture = Texture'FastLMap';
					cc.MultiSkins[1] = Texture'FastLightCone';
					I.SetLocation(FinalLocation + 40 * FinalNormal);
					if (bChargersDynLight)
						Spawn(Class'Light_Red',,, FinalLocation + 40 * FinalNormal);
					I.bRotatingPickup = True;
					I.bFixedRotationDir = True;
					SpawnLightFX( FinalLocation, FinalNormal, 1, 2);
				}
				else if (I.IsA('SuperShockRifle') && Default.bWeaponChargers)
				{
					nxc = Spawn(Class'NeoXChargerB',,, FinalLocation, rotator(FinalNormal));
					cc = Spawn(Class'ChargerLightB',,, FinalLocation, rotator(FinalNormal));
					nxc.Texture = Texture'FastLMap';
					cc.MultiSkins[1] = Texture'FastLightCone';
					I.SetLocation(FinalLocation + 40 * FinalNormal);
					if (bChargersDynLight)
						Spawn(Class'Light_Red',,, FinalLocation + 40 * FinalNormal);
					I.bRotatingPickup = True;
					I.bFixedRotationDir = True;
					SpawnLightFX( FinalLocation, FinalNormal, 1, 2);
				}
				else if ((I.IsA('UDamage') || I.IsA('Amplifier')) && Default.bPickupChargers)
				{
					nxc = Spawn(Class'NeoXChargerC',,, FinalLocation, rotator(FinalNormal));
					cc = Spawn(Class'ChargerLightC',,, FinalLocation, rotator(FinalNormal));
					nxc.Texture = Texture'DamageLMap';
					cc.MultiSkins[1] = Texture'DamageLightCone';
			
					if (I.IsA('NeoXUDamage') || enable_NeoXUDamage)
						I.SetLocation(FinalLocation + 50 * FinalNormal);
					else
						I.SetLocation(FinalLocation + 40 * FinalNormal);
					if (bChargersDynLight)
						Spawn(Class'Light_Purple',,, FinalLocation + 40 * FinalNormal);
					I.bRotatingPickup = True;
					I.bFixedRotationDir = True;
					SpawnLightFX( FinalLocation, FinalNormal, 2, 5);
				}
				else if ((I.IsA('UT_Invisibility') || I.IsA('Invisibility')) && Default.bPickupChargers)
				{
					nxc = Spawn(Class'NeoXChargerC',,, FinalLocation, rotator(FinalNormal));
					cc = Spawn(Class'ChargerLightC',,, FinalLocation, rotator(FinalNormal));
					nxc.Texture = Texture'InfLMap';
					cc.MultiSkins[1] = Texture'InfLightCone';
					I.SetLocation(FinalLocation + 40 * FinalNormal);
					if (bChargersDynLight)
						Spawn(Class'Light_White',,, FinalLocation + 40 * FinalNormal);
					I.bRotatingPickup = True;
					I.bFixedRotationDir = True;
					SpawnLightFX( FinalLocation, FinalNormal, 2, 0);
				}
				else if ((I.IsA('UT_JumpBoots') || I.IsA('JumpBoots')) && Default.bPickupChargers)
				{
					nxc = Spawn(Class'NeoXChargerC',,, FinalLocation, rotator(FinalNormal));
					cc = Spawn(Class'ChargerLightC',,, FinalLocation, rotator(FinalNormal));
					nxc.Texture = Texture'KickLMap';
					cc.MultiSkins[1] = Texture'KickLightCone';
					I.SetLocation(FinalLocation + 40 * FinalNormal);
					if (bChargersDynLight)
						Spawn(Class'Light_Green',,, FinalLocation + 40 * FinalNormal);
					I.bRotatingPickup = True;
					I.bFixedRotationDir = True;
					SpawnLightFX( FinalLocation, FinalNormal, 2, 4);
				}
				else if (I.IsA('HealthPack') && Default.bPickupChargers)
				{
					nxc = Spawn(Class'NeoXChargerC',,, FinalLocation, rotator(FinalNormal));
					cc = Spawn(Class'ChargerLightC',,, FinalLocation, rotator(FinalNormal));

					if (enable_NeoXSHealth)
					{
						nxc.Texture = Texture'FastLMap';
						cc.MultiSkins[1] = Texture'FastLightCone';
						if (bChargersDynLight)
							Spawn(Class'Light_Red',,, FinalLocation + 40 * FinalNormal);
						SpawnLightFX( FinalLocation, FinalNormal, 2, 2);
					}
					else
					{
						nxc.Texture = Texture'HealthLMap';
						cc.MultiSkins[1] = Texture'HealthLightCone';
						if (bChargersDynLight)
							Spawn(Class'Light_Blue',,, FinalLocation + 40 * FinalNormal);
						SpawnLightFX( FinalLocation, FinalNormal, 2, 3);
					}
					I.SetLocation(FinalLocation + 42 * FinalNormal);
					I.bRotatingPickup = True;
					I.bFixedRotationDir = True;

				}
				else if ((I.IsA('ShieldBelt') || I.IsA('Armor') || I.IsA('Armor2') || I.IsA('ThighPads') || I.IsA('UT_ShieldBelt') || I.IsA('Suit'))  && Default.bPickupChargers)
				{
					nxc = Spawn(Class'NeoXChargerC',,, FinalLocation, rotator(FinalNormal));
					cc = Spawn(Class'ChargerLightC',,, FinalLocation, rotator(FinalNormal));
					I.SetLocation(FinalLocation + 45 * FinalNormal);
					if (bChargersDynLight)
						Spawn(Class'Light_Yellow',,, FinalLocation + 40 * FinalNormal);
					I.bRotatingPickup = True;
					I.bFixedRotationDir = True;
					SpawnLightFX( FinalLocation, FinalNormal, 2, 1);
				}
			}
		}
	}

}


function SpawnLightFX( vector FLocation, vector FNormal, byte ChargeID, byte LightID)
{
local vector X, Y, Z;

//LightID: 0-WHite, 1-Yellow, 2-Red, 3-Blue, 4-Green, 5-Purple
//ChargeID: 1-WeaponCharger, 2-PickupCharger


	if (Default.EnableChargersLightsFX)
	{
		GetAxes(rotator(FNormal), X, Y, Z);

		if (ChargeID == 1)
		{
			if (LightID == 0)
			{
				Spawn(Class'LightSprite_White',,, FLocation + 7*X + 17*Y + 17*Z);
				Spawn(Class'LightSprite_White',,, FLocation + 7*X - 17*Y + 17*Z);
				Spawn(Class'LightSprite_White',,, FLocation + 7*X + 17*Y - 17*Z);
				Spawn(Class'LightSprite_White',,, FLocation + 7*X - 17*Y - 17*Z);
			}
			else if (LightID == 1)
			{
				Spawn(Class'LightSprite_Yellow',,, FLocation + 7*X + 17*Y + 17*Z);
				Spawn(Class'LightSprite_Yellow',,, FLocation + 7*X - 17*Y + 17*Z);
				Spawn(Class'LightSprite_Yellow',,, FLocation + 7*X + 17*Y - 17*Z);
				Spawn(Class'LightSprite_Yellow',,, FLocation + 7*X - 17*Y - 17*Z);
			}
			else if (LightID == 2)
			{
				Spawn(Class'LightSprite_Red',,, FLocation + 7*X + 17*Y + 17*Z);
				Spawn(Class'LightSprite_Red',,, FLocation + 7*X - 17*Y + 17*Z);
				Spawn(Class'LightSprite_Red',,, FLocation + 7*X + 17*Y - 17*Z);
				Spawn(Class'LightSprite_Red',,, FLocation + 7*X - 17*Y - 17*Z);
			}
			else if (LightID == 3)
			{
				Spawn(Class'LightSprite_Blue',,, FLocation + 7*X + 17*Y + 17*Z);
				Spawn(Class'LightSprite_Blue',,, FLocation + 7*X - 17*Y + 17*Z);
				Spawn(Class'LightSprite_Blue',,, FLocation + 7*X + 17*Y - 17*Z);
				Spawn(Class'LightSprite_Blue',,, FLocation + 7*X - 17*Y - 17*Z);
			}
			else if (LightID == 4)
			{
				Spawn(Class'LightSprite_Green',,, FLocation + 7*X + 17*Y + 17*Z);
				Spawn(Class'LightSprite_Green',,, FLocation + 7*X - 17*Y + 17*Z);
				Spawn(Class'LightSprite_Green',,, FLocation + 7*X + 17*Y - 17*Z);
				Spawn(Class'LightSprite_Green',,, FLocation + 7*X - 17*Y - 17*Z);
			}
			else
			{
				Spawn(Class'LightSprite_Purple',,, FLocation + 7*X + 17*Y + 17*Z);
				Spawn(Class'LightSprite_Purple',,, FLocation + 7*X - 17*Y + 17*Z);
				Spawn(Class'LightSprite_Purple',,, FLocation + 7*X + 17*Y - 17*Z);
				Spawn(Class'LightSprite_Purple',,, FLocation + 7*X - 17*Y - 17*Z);
			}
		}
		else if (ChargeID == 2)
		{
			if (LightID == 0)
			{
				Spawn(Class'LightSprite_White',,, FLocation + 10*X + 24*Z);
				Spawn(Class'LightSprite_White',,, FLocation + 10*X - 24*Z);
				Spawn(Class'LightSprite_White',,, FLocation + 10*X + 20*Y + 12*Z);
				Spawn(Class'LightSprite_White',,, FLocation + 10*X - 20*Y + 12*Z);
				Spawn(Class'LightSprite_White',,, FLocation + 10*X + 20*Y - 12*Z);
				Spawn(Class'LightSprite_White',,, FLocation + 10*X - 20*Y - 12*Z);
			}
			else if (LightID == 1)
			{
				Spawn(Class'LightSprite_Yellow',,, FLocation + 10*X + 24*Z);
				Spawn(Class'LightSprite_Yellow',,, FLocation + 10*X - 24*Z);
				Spawn(Class'LightSprite_Yellow',,, FLocation + 10*X + 20*Y + 12*Z);
				Spawn(Class'LightSprite_Yellow',,, FLocation + 10*X - 20*Y + 12*Z);
				Spawn(Class'LightSprite_Yellow',,, FLocation + 10*X + 20*Y - 12*Z);
				Spawn(Class'LightSprite_Yellow',,, FLocation + 10*X - 20*Y - 12*Z);
			}
			else if (LightID == 2)
			{
				Spawn(Class'LightSprite_Red',,, FLocation + 10*X + 24*Z);
				Spawn(Class'LightSprite_Red',,, FLocation + 10*X - 24*Z);
				Spawn(Class'LightSprite_Red',,, FLocation + 10*X + 20*Y + 12*Z);
				Spawn(Class'LightSprite_Red',,, FLocation + 10*X - 20*Y + 12*Z);
				Spawn(Class'LightSprite_Red',,, FLocation + 10*X + 20*Y - 12*Z);
				Spawn(Class'LightSprite_Red',,, FLocation + 10*X - 20*Y - 12*Z);
			}
			else if (LightID == 3)
			{
				Spawn(Class'LightSprite_Blue',,, FLocation + 10*X + 24*Z);
				Spawn(Class'LightSprite_Blue',,, FLocation + 10*X - 24*Z);
				Spawn(Class'LightSprite_Blue',,, FLocation + 10*X + 20*Y + 12*Z);
				Spawn(Class'LightSprite_Blue',,, FLocation + 10*X - 20*Y + 12*Z);
				Spawn(Class'LightSprite_Blue',,, FLocation + 10*X + 20*Y - 12*Z);
				Spawn(Class'LightSprite_Blue',,, FLocation + 10*X - 20*Y - 12*Z);
			}
			else if (LightID == 4)
			{
				Spawn(Class'LightSprite_Green',,, FLocation + 10*X + 24*Z);
				Spawn(Class'LightSprite_Green',,, FLocation + 10*X - 24*Z);
				Spawn(Class'LightSprite_Green',,, FLocation + 10*X + 20*Y + 12*Z);
				Spawn(Class'LightSprite_Green',,, FLocation + 10*X - 20*Y + 12*Z);
				Spawn(Class'LightSprite_Green',,, FLocation + 10*X + 20*Y - 12*Z);
				Spawn(Class'LightSprite_Green',,, FLocation + 10*X - 20*Y - 12*Z);
			}
			else
			{
				Spawn(Class'LightSprite_Purple',,, FLocation + 10*X + 24*Z);
				Spawn(Class'LightSprite_Purple',,, FLocation + 10*X - 24*Z);
				Spawn(Class'LightSprite_Purple',,, FLocation + 10*X + 20*Y + 12*Z);
				Spawn(Class'LightSprite_Purple',,, FLocation + 10*X - 20*Y + 12*Z);
				Spawn(Class'LightSprite_Purple',,, FLocation + 10*X + 20*Y - 12*Z);
				Spawn(Class'LightSprite_Purple',,, FLocation + 10*X - 20*Y - 12*Z);
			}
		}
	}
}


function bool CheckReplacement (Actor Other, out byte bSuperRelevant)
{
	//Pickup replacement
	if ( Other.IsA('UDamage') && !Other.IsA('NeoXUDamage') && enable_NeoXUDamage)
	{
		ReplaceWith(Other,ActualPackName $ ".NeoXUDamage");
		return False;
	}
	else if ( (Other.IsA('UT_Invisibility') || Other.IsA('Invisibility')) && !Other.IsA('NeoXInvisibility') && !Other.IsA('UT_Stealth') && enable_NeoXInvis)
	{
		ReplaceWith(Other,ActualPackName $ ".NeoXInvisibility");
		return False;
	}
	else if ( Other.IsA('UT_Stealth') && enable_NeoXInvis)
	{
		ReplaceWith(Other,ActualPackName $ ".NeoXStealth");
		return False;
	}
	else if ( Other.IsA('HealthVial') && !Other.IsA('NeoXVial') && enable_NeoXVial)
	{
		ReplaceWith(Other,ActualPackName $ ".NeoXVial");
		return False;
	}
	else if ( Other.IsA('MedBox') && !Other.IsA('NeoXMed') && enable_NeoXMed)
	{
		ReplaceWith(Other,ActualPackName $ ".NeoXMed");
		return False;
	}


return True;
}



function Timer()
{
local Pawn P;
local Weapon newWeapon;
local int RandInvDrop;

	For ( P=Level.PawnList; P!=None; P=P.nextPawn )
	{
	
		if (Level.Game.IsA('DeathMatchPlus'))
		{
			if ((P.IsA('PlayerPawn') || P.IsA('Bot')) && !P.IsA('Spectator') && P.bLensFlare && P.Health <= 0)
				P.bLensFlare = False;

			If (PlayerPawn(P) != None)
			{
				if ( PlayerPawn(P).IsA('Spectator') || PlayerPawn(P).Health <= 0 ||
				(DeathMatchPlus(Level.Game).bRequireReady && (DeathMatchPlus(Level.Game).CountDown > 0)) )
					return;
			}

			if (DeathMatchPlus(Level.Game).bRequireReady && DeathMatchPlus(Level.Game).CountDown > 0)
				return;

			newWeapon = None;
		
			if (P.FindInventoryType(Class'MegaTonDecoder') == None && enable_MegaTon && ((P.IsA('PlayerPawn') || P.IsA('Bot')) && !P.IsA('Spectator')))
			{
				newWeapon = Spawn(Class'MegaTonDecoder');
		
				if (newWeapon != None)
				{
					newWeapon.Instigator = P;
					newWeapon.BecomeItem();
					P.AddInventory(newWeapon);
					newWeapon.GiveAmmo(P);
					newWeapon.SetSwitchPriority(P);
					newWeapon.WeaponSet(P);
					MegaTonDecoder(newWeapon).bCanThrow = False;
				}
			}

			newWeapon = None;
		
			if (P.FindInventoryType(Class'Enforcer') != None && WRE_replace_Enforcer && ((P.IsA('PlayerPawn') || P.IsA('Bot')) && !P.IsA('Spectator')))
			{
				newWeapon = Weapon(P.FindInventoryType(Class'Enforcer'));
				newWeapon.Destroy();
				newWeapon = None;
				newWeapon = Spawn(Class'WRE');
		
				if (newWeapon != None)
				{
					newWeapon.bTossedOut = false;
					newWeapon.Instigator = P;
					newWeapon.RespawnTime = 0.0;
					newWeapon.bHeldItem = true;
					newWeapon.BecomeItem();
					P.AddInventory(newWeapon);
					newWeapon.GiveAmmo(P);
					newWeapon.SetSwitchPriority(P);
					newWeapon.WeaponSet(P);
					WRE(newWeapon).GiveModifier(WRE(newWeapon));
				}
			}

			newWeapon = None;
			
			if ((Level.Game.IsA('MonsterHunt') && Default.EnableMonsterHuntMode && Default.MonsterHuntOnly) || (Default.EnableMonsterHuntMode && !Default.MonsterHuntOnly))
			{

			if (P.IsA('ScriptedPawn') && !P.bLensFlare && bMonsterPinata)
			{
				P.bLensFlare = True;
				
				if (P.Health <= 200 && FRand() <= 0.2)
					GivePinata( P, 0);
				else if (P.Health > 200 && P.Health <= 500 && FRand() <= 0.3)
					GivePinata( P, 1);
				else if (P.Health > 500 && P.Health <= 1000 && FRand() <= 0.5)
					GivePinata( P, 2);
				else if (P.Health > 1000)
					GivePinata( P, 3);
			}


			if (!P.bLensFlare && ((P.IsA('PlayerPawn') || P.IsA('Bot')) && !P.IsA('Spectator')))
			{

				if (GiveRandomWeaponOnRespawn)
				{
					newWeapon = Spawn(RandNWeap[Min(7,Rand(8))]);
		
					if (newWeapon != None)
					{
						newWeapon.bTossedOut = false;
						newWeapon.Instigator = P;
						newWeapon.RespawnTime = 0.0;
						newWeapon.bHeldItem = true;
						newWeapon.BecomeItem();
						P.AddInventory(newWeapon);
						newWeapon.GiveAmmo(P);
						newWeapon.SetSwitchPriority(P);
						newWeapon.WeaponSet(P);

						P.ClientMessage(newWeapon.Default.PickupMessage, 'CriticalEvent');
				
						if (newWeapon.IsA('NaliWeapons'))
							NaliWeapons(newWeapon).GiveModifier(NaliWeapons(newWeapon));
					}
				}

				P.Health = StartHealth;
				P.bLensFlare = True;

			}
				

			}
		}
	}
}

function GivePinata( Pawn PinataMon, byte MonsterType)
{
	if (MonsterType == 0)
		PinataMon.DropWhenKilled = RandInvPinata[Min(19, Rand(20))];
	else if (MonsterType == 1) 
		PinataMon.DropWhenKilled = RandInvPinata[Min(32, Rand(18) + 14)];
	else if (MonsterType == 2) 
		PinataMon.DropWhenKilled = RandInvPinata[Min(36, Rand(16) + 21)];
	else if (MonsterType == 3) 
		PinataMon.DropWhenKilled = RandInvPinata[Min(51, Rand(19) + 33)];
}


function Tick( float DeltaTime)
{
local MultiMegaWeaponPos MMW;
local Weapon Weap;
local Pawn P, WinnerP;
local int PlayersRandCount, RandPlayer;
local int RandomizeInv;
local Inventory GiveInv;
local byte ji;
local Weapon newWeapon;

	OneSecondCounter += DeltaTime;

	if (OneSecondCounter > 1)
		OneSecondCounter = 0;

	TimeCounter += DeltaTime;

	if (TimeCounter >= MultiMegaRespawnTime)
	{
		CurrentMega++;

		if (CurrentMega > (MegaB-1))
			CurrentMega = 1;

		ForEach AllActors(Class'MultiMegaWeaponPos', MMW)
		{
			Weap = Spawn(RandMegaWeap[CurrentMega],,, MMW.Location, MMW.Rotation);

			if (Weap != None)
			{
				MMW.MegaW.Destroy();
				Weap.bFixedRotationDir = MMW.bFixedRotationDir;
				Weap.bRotatingPickup = MMW.bFixedRotationDir;
				Level.Game.PlaySpawnEffect(Weap);
				MMW.MegaW = Weap;
			}
		}

		TimeCounter = 0;
	}


	if ((Level.Game.IsA('MonsterHunt') && Default.EnableMonsterHuntMode && Default.MonsterHuntOnly) || (Default.EnableMonsterHuntMode && !Default.MonsterHuntOnly))
	{

	if (bRegenerateAmmo)
	{
		For ( P=Level.PawnList; P!=None; P=P.nextPawn )
		{
			if (OneSecondCounter == 0 && (P.IsA('PlayerPawn') || P.IsA('Bot')) && !P.IsA('Spectator') && P.Health > 0)
			{
			For ( GiveInv=P.Inventory; GiveInv!=None; GiveInv=GiveInv.Inventory )
    			{
				if (Ammo(GiveInv)!=None && !Ammo(GiveInv).IsA('WarHeadAmmo') && !Ammo(GiveInv).IsA('StrangeAmmo') && NaliAmmo(GiveInv)==None)
					Ammo(GiveInv).AmmoAmount = Min(Ammo(GiveInv).MaxAmmo, Ammo(GiveInv).AmmoAmount + RegenAmmoPerSec);
				else if (NaliAmmo(GiveInv)!=None)
				{
					if (!NaliAmmo(GiveInv).bMegaAmmo)
						Ammo(GiveInv).AmmoAmount = Min(Ammo(GiveInv).MaxAmmo, Ammo(GiveInv).AmmoAmount + RegenAmmoPerSec);
				}
			}
			}
		}
	}


	if (bRegenerateHealth)
	{
		For ( P=Level.PawnList; P!=None; P=P.nextPawn )
		{
			if (OneSecondCounter == 0 && (P.IsA('PlayerPawn') || P.IsA('Bot')) && !P.IsA('Spectator') && P.Health > 0)
				P.Health = Min(MaxHealth, P.Health + RegenHealthPerSec);
		}
	}

	if (TimedRandomInventory)
	{
		RandInvCounter += DeltaTime;

		if (RandInvCounter >= RandomInventoryIntervalSec && RandInvStage < 3)
		{
			if (RandInvStage == 0 && OneSecondCounter == 0)
			{
				BroadcastMessage("3", False, 'CriticalEvent');
				For ( P=Level.PawnList; P!=None; P=P.nextPawn )
				{
					if (P.IsA('PlayerPawn'))
						PlayerPawn(P).ClientPlaySound(Sound'MH_Three');
				}
				RandInvStage++;
			}
			else if (RandInvStage == 1 && OneSecondCounter == 0)
			{
				BroadcastMessage("2", False, 'CriticalEvent');
				For ( P=Level.PawnList; P!=None; P=P.nextPawn )
				{
					if (P.IsA('PlayerPawn'))
						PlayerPawn(P).ClientPlaySound(Sound'MH_Two');
				}
				RandInvStage++;
			}
			else if (RandInvStage == 2 && OneSecondCounter == 0)
			{
				BroadcastMessage("1", False, 'CriticalEvent');
				For ( P=Level.PawnList; P!=None; P=P.nextPawn )
				{
					if (P.IsA('PlayerPawn'))
						PlayerPawn(P).ClientPlaySound(Sound'MH_One');
				}
				RandInvStage++;
			}
		}
		else if (RandInvCounter >= RandomInventoryIntervalSec && RandInvStage >= 3 && OneSecondCounter == 0)
		{
			RandInvCounter = 0;
			RandInvStage = 0;

			For ( P=Level.PawnList; P!=None; P=P.nextPawn )
			{
				if ((P.IsA('PlayerPawn') || P.IsA('Bot')) && !P.IsA('Spectator'))
					PlayersRandCount++;
	
				if (P.IsA('PlayerPawn'))
					PlayerPawn(P).ClientPlaySound(RandMHSnd[Min(12,Rand(13))]);
			}

			RandPlayer = Rand(PlayersRandCount) + 1;
			PlayersRandCount = 0;

			For ( P=Level.PawnList; P!=None; P=P.nextPawn )
			{
				if ((P.IsA('PlayerPawn') || P.IsA('Bot')) && !P.IsA('Spectator'))
					PlayersRandCount++;

				if (PlayersRandCount == RandPlayer)
				{
					WinnerP = P;
					break;
				}
			}

			if (PlayersRandCount == 0 || (DeathMatchPlus(Level.Game).bRequireReady && DeathMatchPlus(Level.Game).CountDown > 0))
			{
				BroadcastMessage("No one won sh*t!", False, 'CriticalEvent');
				return;
			}

			RandomizeInv = Min(4, Rand(5));

			if (RandomizeInv == 0)
			{
				if (enable_NeoXUDamage)
				{
					GiveInv = Spawn(Class'NeoXUDamage');
					GiveInv.RespawnTime = 0.0;
					GiveInv.bHeldItem = true;
					GiveInv.Instigator = P;
    					GiveInv.BecomeItem();
    					P.AddInventory(GiveInv);
					UDamage(GiveInv).GotoState('Activated');
					P.PlaySound(UDamage(GiveInv).ActivateSound);
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won a Neo X UDamage!", False, 'CriticalEvent');
				}
				else
				{
					GiveInv = Spawn(Class'UDamage');
					GiveInv.RespawnTime = 0.0;
					GiveInv.bHeldItem = true;
					GiveInv.Instigator = P;
    					GiveInv.BecomeItem();
    					P.AddInventory(GiveInv);
					UDamage(GiveInv).GotoState('Activated');
					P.PlaySound(UDamage(GiveInv).ActivateSound);
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won a UDamage!", False, 'CriticalEvent');
				}
			}
			else if (RandomizeInv == 1)
			{
				P.Health = Min(MaxHealth, P.Health + 600);
				BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won +600 Health!", False, 'CriticalEvent');
			}
			else if (RandomizeInv == 2)
			{
				For ( GiveInv=P.Inventory; GiveInv!=None; GiveInv=GiveInv.Inventory )
    				{
					if (Ammo(GiveInv)!=None && !Ammo(GiveInv).IsA('WarHeadAmmo') && !Ammo(GiveInv).IsA('StrangeAmmo') && NaliAmmo(GiveInv)==None)
						Ammo(GiveInv).AmmoAmount = Ammo(GiveInv).MaxAmmo;
					else if (NaliAmmo(GiveInv)!=None)
					{
						if (!NaliAmmo(GiveInv).bMegaAmmo)
							Ammo(GiveInv).AmmoAmount = Ammo(GiveInv).MaxAmmo;
					}
				}
				
				BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won Full Ammunition!", False, 'CriticalEvent');
			}
			else if (RandomizeInv == 3)
			{
				For (ji=0; ji<8; ji++)
				{
					newWeapon = None;

					if (P.FindInventoryType(RandNWeap[ji]) == None)
					{
						newWeapon = Spawn(RandNWeap[ji]);
		
						if (newWeapon != None)
						{
							newWeapon.bTossedOut = false;
							newWeapon.Instigator = P;
							newWeapon.RespawnTime = 0.0;
							newWeapon.bHeldItem = true;
							newWeapon.BecomeItem();
							P.AddInventory(newWeapon);
							newWeapon.GiveAmmo(P);
							newWeapon.SetSwitchPriority(P);
							newWeapon.WeaponSet(P);
				
						if (newWeapon.IsA('NaliWeapons'))
							NaliWeapons(newWeapon).GiveModifier(NaliWeapons(newWeapon));
						}
					}
				}
			
				BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won Full Weaponry!", False, 'CriticalEvent');
			}
			else if (RandomizeInv == 4)
			{
				RandomizeInv = Min(MegaB-1, Rand(MegaB));

				if (P.FindInventoryType(RandMegaWeap[RandomizeInv]) == None)
				{
					newWeapon = Spawn(RandMegaWeap[RandomizeInv]);
		
					if (newWeapon != None)
					{
						newWeapon.bTossedOut = false;
						newWeapon.Instigator = P;
						newWeapon.RespawnTime = 0.0;
						newWeapon.bHeldItem = true;
						newWeapon.BecomeItem();
						P.AddInventory(newWeapon);
						newWeapon.GiveAmmo(P);
						newWeapon.SetSwitchPriority(P);
						newWeapon.WeaponSet(P);
					}
				}
				else
				{
					newWeapon = Weapon(P.FindInventoryType(RandMegaWeap[RandomizeInv]));

					if (newWeapon.IsA('CybotLauncher'))
						newWeapon.AmmoType.AmmoAmount = Min(newWeapon.AmmoType.MaxAmmo, newWeapon.AmmoType.AmmoAmount + 3);
					if (newWeapon.IsA('SuperBoltRifle'))
						newWeapon.AmmoType.AmmoAmount = Min(newWeapon.AmmoType.MaxAmmo, newWeapon.AmmoType.AmmoAmount + 5);
					else
						newWeapon.AmmoType.AmmoAmount = Min(newWeapon.AmmoType.MaxAmmo, newWeapon.AmmoType.AmmoAmount + 1);
				}

				if (newWeapon.IsA('CybotLauncher'))
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won a Cybot Launcher!", False, 'CriticalEvent');
				else if (newWeapon.IsA('MegaTon'))
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won a MegaTon!", False, 'CriticalEvent');
				else if (newWeapon.IsA('UltimaProtos'))
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won an UltimaProtos!", False, 'CriticalEvent');
				else if (newWeapon.IsA('SuperBoltRifle'))
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won an Enhanced Bolt Rifle!", False, 'CriticalEvent');
				else if (newWeapon.IsA('NuclearLauncherLvlA'))
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won a Nuclear Launcher Level 1 - Class SL!", False, 'CriticalEvent');
				else if (newWeapon.IsA('NuclearLauncherLvlB'))
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won a Nuclear Launcher Level 2 - Class L!", False, 'CriticalEvent');
				else if (newWeapon.IsA('NuclearLauncherLvlC'))
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won a Nuclear Launcher Level 3 - Class MW!", False, 'CriticalEvent');
				else if (newWeapon.IsA('NuclearLauncherLvlD'))
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won a Nuclear Launcher Level 4 - Class H!", False, 'CriticalEvent');
				else if (newWeapon.IsA('NuclearLauncherLvlE'))
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won a Nuclear Launcher Level 5 - Class SH!", False, 'CriticalEvent');
				else
					BroadcastMessage(P.PlayerReplicationInfo.PlayerName $ " won a Redeemer!", False, 'CriticalEvent');
			}
		}
	}
	}
}



defaultproperties
{
	enable_WRE=True
	enable_FlameT=True
	enable_BoltR=True
	enable_SBoltR=True
	enable_Graviton=True
	enable_Freezer=True
	enable_Vulcan=True
	enable_TheMiner=True
	enable_MMLauncher=True
	enable_IRPR=True
	enable_Cybot=True
	enable_UltimaProtos=False
	enable_MegaTon=False
	ammo_WRE=5
	ammo_FlameT=5
	ammo_BoltR=5
	ammo_SBoltR=1
	ammo_Graviton=5
	ammo_Freezer=5
	ammo_Vulcan=5
	ammo_TheMiner=5
	ammo_MMLauncher=5
	ammo_IRPR=5
	ammo_Cybot=1
	WRE_replace_Enforcer=True
	bMineExplosionChain=False
	EnableFTrackerFlames=True
	bCoronasCollisionDetail=False
	bMineID_InTeamGames=True
	bCybotID_InTeamGames=True
	bMegaTonID_InTeamGames=True
	EnableCorpseOverlayers=True
	bMHChargers=True
	bWeaponChargers=True
	bPickupChargers=True
	EnableChargersLightsFX=True
	ReplaceOldSkoolWeapons=True
	bRXServerConfig=False
	EnableRXChargers=False
	MinesLifeSpan=0
	EnableMonsterHuntMode=True
	MonsterHuntOnly=True
	MaxHealth=1500
	StartHealth=500
	GiveRandomWeaponOnRespawn=True
	TimedRandomInventory=True
	RandomInventoryIntervalSec=60
	bMonsterPinata=True
	bRegenerateAmmo=True
	bRegenerateHealth=True
	RegenAmmoPerSec=3
	RegenHealthPerSec=5
	ModifiersRespawnTimeSec=10
	bEnableModifAtRespawnLoc=False
	MHP(0)=Class'DamageN'
	MHP(1)=Class'Fast'
	MHP(2)=Class'HealthN'
	MHP(3)=Class'Infinity'
	MHP(4)=Class'Kick'
	MHP(5)=Class'Splasher'
	enable_NeoXUDamage=True
	enable_NeoXInvis=True
	enable_NeoXVial=True
	enable_NeoXMed=True
	enable_NeoXSHealth=True
	RandMHSnd(0)=MHRand_01
	RandMHSnd(1)=MHRand_02
	RandMHSnd(2)=MHRand_03
	RandMHSnd(3)=MHRand_04
	RandMHSnd(4)=MHRand_05
	RandMHSnd(5)=MHRand_06
	RandMHSnd(6)=MHRand_07
	RandMHSnd(7)=MHRand_08
	RandMHSnd(8)=MHRand_09
	RandMHSnd(9)=MHRand_10
	RandMHSnd(10)=MHRand_11
	RandMHSnd(11)=MHRand_12
	RandMHSnd(12)=MHRand_13
	bFlamesFDetail=True
	bFlameTFireBall=True
	bGravitonFlyHack=False
	EnableXMissile=True
	bWeaponsDynLight=False
	bAmmoDynLight=False
	bPickupsDynLight=False
	bChargersDynLight=False
	WeaponDistDetail=32
	AmmoDistDetail=32
	PickupsDistDetail=32
	ChargersDistDetail=32
	enable_NukeLvlA=True
	enable_NukeLvlB=True
	enable_NukeLvlC=True
	enable_NukeLvlD=False
	enable_NukeLvlE=False
	MultiMegaRespawnTime=180
	ActualPackName="NaliWeaponsII"
}