//**************** WEATHER ZONE BOUNDARY **********************
//Boundary object for weather zones
Actor WeatherSpot 30000
{
  //$Category Environment
  //$Title "Weather Spot"
	+NOBLOCKMAP
	gravity 0
	states
	{
	Spawn:
		TNT1 A -1
		Loop
	}
	
}


//**************** RAIN **********************

//Basic rain spawner
Actor RainSpawner
{
	+Missile
	+NoClip
	+NoGravity
	+NoBlockMap
	+CLIENTSIDEONLY
	RenderStyle Translucent
	Alpha 0
 	states
 	{
 	Spawn:
		RAIN A 0 A_JumpIf(z >= ceilingz,1)
		RAIN A 1 A_SpawnItemEx ("RainDrop", 0, 0, 0, random(0,1), random(0,1), -random(0,5), random(0,255), 0) 
 		Stop
	}

}

//Heavy rain spawner
Actor HardRainSpawner
{
	+Missile
	+NoClip
	+NoGravity
	+NoBlockMap
	+CLIENTSIDEONLY
	RenderStyle Translucent
	Alpha 0
 	states
 	{
 	Spawn:
		RAIN A 0 A_JumpIf(z >= ceilingz,1)
		RAIN A 1 A_SpawnItemEx ("RainDrop", 0, 0, 0, random(0,1), random(0,1), -random(5,20), random(0,255), 0) 
 		Stop
	}

}

//Simple rain drop
Actor RainDrop
{

	+NOBLOCKMAP 
	+DROPOFF
	+MISSILE 
	+NOTELEPORT
	+DontSplash
	+BRIGHT // Added +BRIGHT to see rain in dark sectors better
	+CLIENTSIDEONLY
	RenderStyle Add
	Alpha .5 // Default Alpha is .5
	xscale 0.25
	states
	{
	Spawn:
		RAIN A 1 A_JumpIf(waterlevel >= 1, "Death")
		Loop
	Death:
		TNT1 A 1
		Stop
	}

}


//**************** SNOW **********************

//Basic snow spawner
Actor SnowSpawner
{
	+Missile
	+NoClip
	+NoGravity
	+NoBlockMap
	+CLIENTSIDEONLY
	RenderStyle Translucent
	Alpha 0
 	states
 	{
 	Spawn:
		RAIN A 0 A_JumpIf(z >= ceilingz,1)
		RAIN A 1 A_SpawnItemEx ("SnowFlake", 0, 0, 0, random(0,5), random(0,5), -random(0,2), random(0,255), 0) 
 		Stop
	}

}

//Hard snow spawner
Actor HardSnowSpawner
{
	+Missile
	+NoClip
	+NoGravity
	+NoBlockMap
	+CLIENTSIDEONLY
	RenderStyle Translucent
	Alpha 0
 	states
 	{
 	Spawn:
		RAIN A 0 A_JumpIf(z >= ceilingz,1)
		RAIN A 1 A_SpawnItemEx ("HeavySnowFlake", 0, 0, 0, random(0,3), random(0,3), -random(5,10), random(0,255), 0) 
 		Stop
	}

}

//Light, drifting snow flake
Actor SnowFlake
{

	+NOBLOCKMAP 
	+DROPOFF 
	+MISSILE 
	+NOTELEPORT
	+DontSplash
	+CLIENTSIDEONLY
	RenderStyle Translucent
	Alpha 0.9
	gravity 0.02
	scale 0.5
	states
	{
	Spawn:
		SNOW A 1 A_JumpIf(waterlevel >= 1, "Death")
		Loop
	Death:
		TNT1 A 1
		Stop
	}

}

//Heavy, wet snow flake
Actor HeavySnowFlake
{

	+NOBLOCKMAP 
	+DROPOFF 
	+MISSILE 
	+NOTELEPORT
	+DontSplash
	+CLIENTSIDEONLY
	RenderStyle Translucent
	Alpha 0.9
	gravity 0.1
	scale 0.5
	states
	{
	Spawn:
		SNOW A 1 A_JumpIf(waterlevel >= 1, "Death")
		Loop
	Death:
		TNT1 A 1
		Stop
	}

}


//**************** CONTROL OBJECTS **********************

//Weather toggle effect
Actor Action_WeatherToggle : CustomInventory 
{ 
   Inventory.Amount 1 
   Inventory.MaxAmount 1 
   -INVBAR
   +UNDROPPABLE

   States 
   { 
       Use:
	   TNT1 A 0 A_JumpIfInventory("Flag_NoWeather",1,1)
	   Goto StopEffects
	   TNT1 A 0 A_Print("Weather effects ON")
	   TNT1 A 1 A_TakeInventory("Flag_NoWeather",999)
	   Fail
	   StopEffects:
	   TNT1 A 0 A_Print("Weather effects OFF")
	   TNT1 A 1 A_GiveInventory("Flag_NoWeather",1)
	   Fail
   } 
}

Actor Flag_NoWeather : Inventory 
{ 
   Inventory.Amount 1 
   Inventory.MaxAmount 1 
   -INVBAR
}
