
class ZRedBlood : Actor
{
	int clock;

	GlobalLevelHandler Event;

	override void PostBeginPlay()
	{
		int plimit = d3d_perfbloodlimit;
		if(plimit>0) {
			Event = GlobalLevelHandler(EventHandler.Find("GlobalLevelHandler"));
			if(Event) Event.QueueListActor(Event.bloodlist,self,plimit);
		}

		Super.PostBeginPlay();
	}

	override void Tick()
	{
		if(clock==0) {
			for (int i = 0; i < MAXPLAYERS; i++)
			{
            			if (playeringame[i] && players[i].mo)
            			{
					Actor a = self;
					PlayerPawn p = players[i].mo;
					double distance = a.distance3DSquared(p);

					if ( distance<=20*20 ) {
						p.A_GiveInventory("GiveBootsSmearedWithRedBlood",1);
					}
            			}
			}
		}
		clock++;
		if(clock==5) clock=0;

        	Super.Tick();
	}

}

class ZGreenBlood : Actor
{
	int clock;

	GlobalLevelHandler Event;

	override void PostBeginPlay()
	{
		int plimit = d3d_perfbloodlimit;
		if(plimit>0) {
			Event = GlobalLevelHandler(EventHandler.Find("GlobalLevelHandler"));
			if(Event) Event.QueueListActor(Event.bloodlist,self,plimit);
		}

		Super.PostBeginPlay();
	}

	override void Tick()
	{
		if(clock==0) {
			for (int i = 0; i < MAXPLAYERS; i++)
			{
            			if (playeringame[i] && players[i].mo)
            			{
					Actor a = self;
					PlayerPawn p = players[i].mo;
					double distance = a.distance3DSquared(p);

					if ( distance<=20*20 ) {
						p.A_GiveInventory("GiveBootsSmearedWithGreenBlood",1);
						p.A_GiveInventory("GiveDukeAcidDamagePickup",1);
					}
            			}
			}
		}
		clock++;
		if(clock==5) clock=0;

        	Super.Tick();
	}

}

class ZIceBlood : Actor
{
	int clock;

	GlobalLevelHandler Event;

	override void PostBeginPlay()
	{
		int plimit = d3d_perfbloodlimit;
		if(plimit>0) {
			Event = GlobalLevelHandler(EventHandler.Find("GlobalLevelHandler"));
			if(Event) Event.QueueListActor(Event.bloodlist,self,plimit);
		}

		Super.PostBeginPlay();
	}

	override void Tick()
	{
		if(clock==0) {
			for (int i = 0; i < MAXPLAYERS; i++)
			{
            			if (playeringame[i] && players[i].mo)
            			{
					Actor a = self;
					PlayerPawn p = players[i].mo;
					double distance = a.distance3DSquared(p);

					if ( distance<=20*20 ) {
						p.A_GiveInventory("GiveBootsSmearedWithIceBlood",1);
					}
            			}
			}
		}
		clock++;
		if(clock==5) clock=0;

        	Super.Tick();
	}

}

class ZFire : Actor
{
	int clock;

	override void Tick()
	{
		if(clock==0) {
			for (int i = 0; i < MAXPLAYERS; i++)
			{
            			if (playeringame[i] && players[i].mo)
            			{
					Actor a = self;
					PlayerPawn p = players[i].mo;
					double distance = a.distance3DSquared(p);

					if ( distance<=20*20 ) {
						p.A_GiveInventory("GiveDukeFireDamagePickup",1);
					}
            			}
			}
		}
		clock++;
		if(clock==5) clock=0;

        	Super.Tick();   
	}

}

class ZFireBurning : ZFire
{
	GlobalLevelHandler Event;

	override void PostBeginPlay()
	{
		int plimit = d3d_perffirelimit;
		if(plimit>0) {
			Event = GlobalLevelHandler(EventHandler.Find("GlobalLevelHandler"));
			if(Event) Event.QueueListActor(Event.firelist,self,plimit);
		}

		Super.PostBeginPlay();
	}
}

class ZDukeLavaPool : Actor
{
	int clock;

	override void Tick()
	{
		if(clock==0) {
			Actor a = self;
			a.A_RadiusGive("GiveDukeDamagePickupLava", 45, RGF_PLAYERS|RGF_MONSTERS, 1);
		}
		clock++;
		if(clock==5) clock=0;

        	Super.Tick();
	}

}