actor G2_Rain 31200 {
	+CLIENTSIDEONLY
	+NOGRAVITY
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0,8000)
		See:
			TNT1 A 10
			TNT1 A 0
		Rainy:
			TNT1 A 0
			TNT1 A 0 A_CheckSight("See")
			TNT1 A 2 A_SpawnItemEx("G2_Rainparticle",random(-args[0]-(args[1]*255),args[0]+(args[1]*255)),random(-args[0]-(args[1]*255),args[0]+(args[1]*255)),args[2],0,0,-22,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
			loop
		See2:
			TNT1 A 10
		Snow:
			TNT1 A 0 A_CheckSight("See2")
			TNT1 A 8 A_SpawnItemEx("G2_SnowParticle",random(-args[0]-(args[1]*255),args[0]+(args[1]*255)),random(-args[0]-(args[1]*255),args[0]+(args[1]*255)),args[2],random(-1,1),random(-1,1),-4,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
			loop
		Off:
			TNT1 A 35
			loop
	}
}

actor G2_Droplets 31202 {
	+CLIENTSIDEONLY
	+NOGRAVITY

	States {
		Spawn:
			TNT1 A 88 A_SpawnItemEx("G2_Droplet", 0, 0, 0, 0, 0, -4, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
			loop
	}
}

actor G2_Rainparticle {
	+CLIENTSIDEONLY
	+MISSILE
	+THRUACTORS
	-NOGRAVITY
	height 2
	radius 2
	XScale 0.4
	yscale 1.95
	renderstyle translucent
	alpha 0.3
	States {
		Spawn:
			RAIN A 1 A_FadeOut(0.01)
			loop
		Death:
			RAIN B 0 A_SetScale(0.25, 0.4)
			RAIN B 0 A_CheckSight("Remove")
			RAIN B 0 A_JumpIf(waterlevel > 0, "Remove")
			RAIN B 0 A_CheckFloor("Floor")
			stop
		Remove:
			RAIN B 0
			stop
		Floor:
			RAIN BC 1 A_FadeOut(0.25)
			RAIN D 10
		FadeOut:
			RAIN D 1 A_FadeOut(0.002)
			loop
	}
}

actor G2_Droplet : G2_Rainparticle {
	alpha 0.3
	xscale 0.2
	yscale 1.25
	States {
		Death:
			RAIN B 0
			RAIN B 0 A_PlaySound("droplet")
			RAIN B 0 A_SetScale(0.3, 0.2)
			RAIN B 0 A_CheckSight("Remove")
			RAIN B 0 A_JumpIf(waterlevel > 0, "Remove")
			RAIN B 0 A_CheckFloor("Floor")
			Goto Floor
		Remove:
			RAIN B 0
			stop
		Floor:
			RAIN A 1
			RAIN BC 1 A_FadeOut(0.025)
			RAIN D 10
		FadeOut:
			RAIN D 1 A_FadeOut(0.002)
			loop
	}
}