class SquareFountain : SwitchableDecoration
{
	//args[0] no sound?

	Default
	{
		Height 0;
		+NOBLOCKMAP;
		+NOGRAVITY;
		+INVISIBLE;
		+CLIENTSIDEONLY;
	}
	States
	{
	Spawn:
	Active:
		TNT1 A 1;
		TNT1 A 0 A_JumpIf(args[0] > 0, 2);
		TNT1 A 0 A_PlaySound("ambience/fountain", 5, 0.5, 1);
		TNT1 AAAAAAA 0 A_SpawnItemEx("FountainDroplet", random[SquareEffectRandom](-5,5), random[SquareEffectRandom](-5,5), random[SquareEffectRandom](0,4), random[SquareEffectRandom](-2,2), random[SquareEffectRandom](-2,2), random[SquareEffectRandom](3,10), 0, 1, 192);
		TNT1 AAAAAAA 0 A_SpawnItemEx("TinyDroplet", random[SquareEffectRandom](-5,5), random[SquareEffectRandom](-5,5), 0, random[SquareEffectRandom](-2,2), random[SquareEffectRandom](-2,2), random[SquareEffectRandom](3,10), 0, 1, 192);
		TNT1 A 1;
		Goto Active+3;
	Inactive:
		TNT1 A 0 A_StopSound(5);
		TNT1 A 1;
		Wait;
	}
}

class SquareFountainLine : SwitchableDecoration
{
	//angle is line normal.
	//args[0] no sound?
	//args[1] halfwidth

	Default
	{
		Height 0;
		+NOBLOCKMAP;
		+NOGRAVITY;
		+INVISIBLE;
		+CLIENTSIDEONLY;
	}
	States
	{
	Spawn:
	Active:
		TNT1 A 1;
		TNT1 A 0 A_JumpIf(args[0] > 0, 2);
		TNT1 A 0 A_PlaySound("ambience/fountain", 5, 0.5, 1);
		TNT1 AAAAAAA 0 A_SpawnItemEx("FountainDroplet", 0, random[SquareEffectRandom](-args[1],args[1]), 0, random[SquareEffectRandom](-2,2), random[SquareEffectRandom](-2,2), random[SquareEffectRandom](3,10), 0, 1, 192);
		TNT1 AAAAAAA 0 A_SpawnItemEx("TinyDroplet", 0, random[SquareEffectRandom](-args[1],args[1]), 0, random[SquareEffectRandom](-2,2), random[SquareEffectRandom](-2,2), random[SquareEffectRandom](3,10), 0, 1, 192);
		TNT1 A 1;
		Goto Active+3;
	Inactive:
		TNT1 A 0 A_StopSound(5);
		TNT1 A 1;
		Wait;
	}
}

class FountainDroplet : SquareActor
{
	Default
	{
		Projectile;
		-NOGRAVITY;
		-NOBLOCKMONST;
		+THRUACTORS;
		+DONTSPLASH;
		+DONTBLAST;
		+BOUNCEONWALLS;
		+BOUNCEONCEILINGS;
		+CLIENTSIDEONLY;
		+FORCEXYBILLBOARD;

		Radius 1;
		Height 1;
	}
	States
	{
	Spawn:
		BLOB AAAAAAAAAAAAA 1 A_JumpIf(waterlevel > 0, "Kill");
		BLB2 AABBCCDD 1 A_JumpIf(waterlevel > 0, "Kill");
		Stop;
	Kill:
		SLDG A 0 A_Die();
	Death:
	Crash:
		SLDG A 2 {
			A_Stop();
			self.bNoGravity = true;
			if(waterlevel >= 2) {
				A_SpawnItemEx("Bubble1", 0, 0, 0, 0, 0, random[SquareEffectRandom](-2,-4), 0, 0, 160);
			}
		}
		SLDG BCDE 2;
		Stop;
	}
}

class TinyDroplet : FountainDroplet
{
	States
	{
	Spawn:
		BLB2 ABCD 3;
		Stop;
	}
}

class SquareFountainRed        : SquareFountain { }
class SquareFountainBlack      : SquareFountain { Default { Translation "198:202=59:61"; } }
class SquareFountainBlue       : SquareFountain { Default { Translation "198:202=2:5"; } }
class SquareFountainGreen      : SquareFountain { Default { Translation "198:202=116:119"; } }
class SquareFountainPurple     : SquareFountain { Default { Translation "198:202=36:40"; } }
class SquareFountainWhite      : SquareFountain { Default { Translation "198:202=10:14"; } }
class SquareFountainPaleYellow : SquareFountain { Default { Translation "198:202=241:243"; } }
class SquareFountainYellow     : SquareFountain { Default { Translation "198:202=242:245"; } }
class SquareFountainBrown      : SquareFountain { Default { Translation "198:202=228:231"; } }
class SquareFountainOrange     : SquareFountain { Default { Translation "198:202=144:159"; } }

class SquareFountainLineRed        : SquareFountainLine { }
class SquareFountainLineBlack      : SquareFountainLine { Default { Translation "198:202=59:61"; } }
class SquareFountainLineBlue       : SquareFountainLine { Default { Translation "198:202=2:5"; } }
class SquareFountainLineGreen      : SquareFountainLine { Default { Translation "198:202=116:119"; } }
class SquareFountainLinePurple     : SquareFountainLine { Default { Translation "198:202=36:40"; } }
class SquareFountainLineWhite      : SquareFountainLine { Default { Translation "198:202=10:14"; } }
class SquareFountainLinePaleYellow : SquareFountainLine { Default { Translation "198:202=241:243"; } }
class SquareFountainLineYellow     : SquareFountainLine { Default { Translation "198:202=242:245"; } }
class SquareFountainLineBrown      : SquareFountainLine { Default { Translation "198:202=228:231"; } }
class SquareFountainLineOrange     : SquareFountainLine { Default { Translation "198:202=144:159"; } }
