class SquareCubeTree : SquareActor
{
	Default
	{
		Radius 32;
		Height 108;
		ProjectilePassHeight -16;
		+SOLID;
		+FORCEYBILLBOARD;
	}
	States
	{
	Spawn:
		TRE2 A -1;
		Stop;
	}
}

class SquareLargeTree : SquareActor
{
	Default
	{
		Radius 24;
		Height 108;
		ProjectilePassHeight -16;
		+SOLID;
		+FORCEYBILLBOARD;
	}
	States
	{
	Spawn:
		TRE2 B -1;
		Stop;
	}
}

class SquarePalmTree : SquareActor
{
	Default
	{
		Radius 16;
		Height 72;
		ProjectilePassHeight -16;
		+SOLID;
		+FORCEYBILLBOARD;
	}
	States
	{
	Spawn:
		TRE1 A -1;
		Stop;
	}
}

class Hedge : SquareActor
{
	Default
	{
		+CLIENTSIDEONLY;
	}
	States
	{
	Spawn:
		HEDG A 0;
		HEDG A 0 A_JumpIf(args[0]==2, 4);
		HEDG A 0 A_JumpIf(args[0]==1, 2);
		HEDG A -1;
		Stop;
		HEDG B -1;
		Stop;
		HEDG C -1;
		Stop;
	}
}

class HedgeTall : SquareActor
{
	Default
	{
		+CLIENTSIDEONLY;
		+FORCEYBILLBOARD;
	}
	States
	{
	Spawn:
		HEDG B -1;
		Stop;
	}
}

class HedgeTallWide : SquareActor
{
	Default
	{
		+CLIENTSIDEONLY;
		+FORCEYBILLBOARD;
	}
	States
	{
	Spawn:
		HEDG C -1;
		Stop;
	}
}

class HedgeBerries : SquareActor
{
	Default
	{
		+CLIENTSIDEONLY;
		+FORCEYBILLBOARD;
	}
	States
	{
	Spawn:
		HEDG D 0;
		HEDG D 0 A_JumpIf(args[0]==2, 4);
		HEDG D 0 A_JumpIf(args[0]==1, 2);
		HEDG D -1;
		Stop;
		HEDG E -1;
		Stop;
		HEDG F -1;
		Stop;
	}
}

class HedgeBerriesTall : SquareActor
{
	Default
	{
		+CLIENTSIDEONLY;
		+FORCEYBILLBOARD;
	}
	States
	{
	Spawn:
		HEDG E -1;
		Stop;
	}
}

class HedgeBerriesTallWide : SquareActor
{
	Default
	{
		+CLIENTSIDEONLY;
		+FORCEYBILLBOARD;
	}
	States
	{
	Spawn:
		HEDG F -1;
		Stop;
	}
}

class CircleBush : SquareActor
{
	Default
	{
		+CLIENTSIDEONLY;
		+FORCEYBILLBOARD;
	}
	States
	{
	Spawn:
		CBSH A 0;
		CBSH A 0 A_JumpIf(args[0]==1, 2);
		CBSH A -1;
		Stop;
		CBSH B -1;
		Stop;
	}
}

class CircleBushTall : SquareActor
{
	Default
	{
		+CLIENTSIDEONLY;
		+FORCEYBILLBOARD;
	}
	States
	{
	Spawn:
		CBSH B -1;
		Stop;
	}
}

class FireHydrant : SquareActor
{
	Default
	{
		Radius 16;
		Height 32;
		+SOLID;
	}
	States
	{
	Spawn:
		FHYD A -1;
		Stop;
	}
}

class SquareMushroom : SquareActor
{
	Default
	{
		+CLIENTSIDEONLY;
		+FORCEXYBILLBOARD;
	}
}

class SquareMushroomSmall : SquareMushroom
{
	States
	{
	Spawn:
		MUSH A -1;
		Stop;
	}
}

class SquareMushroomMedium : SquareMushroom
{
	States
	{
	Spawn:
		MUSH B -1;
		Stop;
	}
}

class SquareMushroomLarge : SquareMushroom
{
	States
	{
	Spawn:
		MUSH C -1;
		Stop;
	}
}

class SquareMushroomHuge : SquareMushroom
{
	States
	{
	Spawn:
		MUSH D -1;
		Stop;
	}
}

class SquareMushroomTrio : SquareMushroom
{
	States
	{
	Spawn:
		MUSH E -1;
		Stop;
	}
}

class SquareCyanMushroomSmall : SquareMushroom
{
	States
	{
	Spawn:
		MUSB A -1;
		Stop;
	}
}

class SquareCyanMushroomMedium : SquareMushroom
{
	States
	{
	Spawn:
		MUSB B -1;
		Stop;
	}
}

class SquareCyanMushroomLarge : SquareMushroom
{
	States
	{
	Spawn:
		MUSB C -1;
		Stop;
	}
}

class SquareCyanMushroomHuge : SquareMushroom
{
	States
	{
	Spawn:
		MUSB D -1;
		Stop;
	}
}

class SquareCyanMushroomTrio : SquareMushroom
{
	States
	{
	Spawn:
		MUSB E -1;
		Stop;
	}
}

class Telescope : SquareActor
{
	Default
	{
		Radius 10;
		Height 64;
		+SOLID;
		+USESPECIAL;
	}
	States
	{
	Spawn:
		TELE A -1;
		Stop;
	}
}

class SquareGrassTuftSmall : SquareActor
{
	Default
	{
		+CLIENTSIDEONLY;
		+FORCEYBILLBOARD;
	}
	States
	{
	Spawn:
		GTUF A -1;
		Stop;
	}
}

class SquareGrassTuftLarge : SquareGrassTuftSmall
{
	States
	{
	Spawn:
		GTUF B -1;
		Stop;
	}
}

class SquareGrassTuftFlowers : SquareGrassTuftSmall
{
	States
	{
	Spawn:
		GTUF C -1;
		Stop;
	}
}

class SquareCeilingMushroomSmall : SquareMushroom
{
	Default
	{
		+SPAWNCEILING;
		+NOGRAVITY;
	}
	States
	{
	Spawn:
		MUSC A -1;
		Stop;
	}
}

class SquareCeilingMushroomMedium : SquareCeilingMushroomSmall
{
	States
	{
	Spawn:
		MUSC B -1;
		Stop;
	}
}

class SquareCeilingMushroomLarge : SquareCeilingMushroomSmall
{
	States
	{
	Spawn:
		MUSC C -1;
		Stop;
	}
}

class SquareCeilingMushroomHuge : SquareCeilingMushroomSmall
{
	States
	{
	Spawn:
		MUSC D -1;
		Stop;
	}
}

class SquareCeilingMushroomTrio : SquareCeilingMushroomSmall
{
	States
	{
	Spawn:
		MUSC E -1;
		Stop;
	}
}

class SquareBlueTuftSmall : SquareGrassTuftSmall
{
	States
	{
	Spawn:
		BTUF A -1;
		Stop;
	}
}

class SquareBlueTuftLarge : SquareGrassTuftSmall
{
	States
	{
	Spawn:
		BTUF B -1;
		Stop;
	}
}

class SquareBlueTuftGlow1 : SquareGrassTuftSmall
{
	States
	{
	Spawn:
		BTUF C -1;
		Stop;
	}
}

class SquareBlueTuftGlow2 : SquareGrassTuftSmall
{
	States
	{
	Spawn:
		BTUF D -1;
		Stop;
	}
}

class SquareCeilingTuftGlow1 : SquareGrassTuftSmall
{
	Default
	{
		+SPAWNCEILING;
		+NOGRAVITY;
	}
	States
	{
	Spawn:
		BTUF E -1;
		Stop;
	}
}

class SquareCeilingTuftGlow2 : SquareGrassTuftSmall
{
	Default
	{
		+SPAWNCEILING;
		+NOGRAVITY;
	}
	States
	{
	Spawn:
		BTUF F -1;
		Stop;
	}
}

class CrystalGrowthShootable : SquareActor
{
	Default
	{
		+SOLID;
		+SHOOTABLE;
		+NOBLOOD;
		+DONTGIB;
		+NOICEDEATH;
		+NOTAUTOAIMED;
		Mass 0x7fffffff;
		Health 1;
	}
}

class CrystalGrowthHanging : CrystalGrowthShootable
{
	Default
	{
		+SPAWNCEILING;
		+NOGRAVITY;
	}
}

class CrystalGrowthFloating : CrystalGrowthShootable
{
	Default
	{
		+NOGRAVITY;
		+FLOATBOB;
		+FORCEYBILLBOARD;
	}
}

class CrystalGrowthSmall : CrystalGrowthShootable
{
	Default
	{
		+FORCEYBILLBOARD;
		Radius 8;
		Height 8;
	}
	States
	{
	Spawn:
		MCYS A -1;
		Stop;
	Death:
		MCYS A 0 A_PlaySound("effects/glass/tink");
		MCYS A 1 A_SpawnItem("CrystalFragmentSpawnerSmall");
		Stop;
	}
}

class CrystalGrowthMedium : CrystalGrowthShootable
{
	Default
	{
		Radius 12;
		Height 28;
	}
	States
	{
	Spawn:
		MCYS B -1;
		Stop;
	Death:
		MCYS B 0 A_PlaySound("effects/crystal/shatter");
		MCYS B 1 A_SpawnItem("CrystalFragmentSpawnerMedium");
		Stop;
	}
}

class CrystalGrowthLarge : CrystalGrowthShootable
{
	Default
	{
		Health 16;
		Radius 24;
		Height 56;
	}
	States
	{
	Spawn:
		MCYS C -1;
		Stop;
	Death:
		MCYS C 0 A_PlaySound("effects/crystal/shatter");
		MCYS CCCC 1 A_SpawnItem("CrystalFragmentSpawnerMedium", random[SquareGibRandom](4,12), random[SquareGibRandom](4,12), random[SquareGibRandom](4,12));
		Stop;
	}
}

class CrystalGrowthFloatingSmall : CrystalGrowthFloating
{
	Default
	{
		Radius 8;
		Height 16;
	}
	States
	{
	Spawn:
		MCYS D -1;
		Stop;
	Death:
		MCYS D 0 A_PlaySound("effects/glass/tink");
		MCYS D 1 A_SpawnItem("CrystalFragmentSpawnerSmall");
		Stop;
	}
}

class CrystalGrowthFloatingMedium : CrystalGrowthFloating
{
	Default
	{
		Radius 12;
		Height 32;
	}
	States
	{
	Spawn:
		MCYS E -1;
		Stop;
	Death:
		MCYS E 0 A_PlaySound("effects/crystal/shatter");
		MCYS E 1 A_SpawnItem("CrystalFragmentSpawnerMedium");
		Stop;
	}
}

class CrystalGrowthFloatingLarge : CrystalGrowthFloating
{
	Default
	{
		Health 16;
		Radius 24;
		Height 56;
	}
	States
	{
	Spawn:
		MCYS F -1;
		Stop;
	Death:
		MCYS F 0 A_PlaySound("effects/crystal/shatter");
		MCYS FFFF 1 A_SpawnItem("CrystalFragmentSpawnerMedium", random[SquareGibRandom](4,12), random[SquareGibRandom](4,12), random[SquareGibRandom](4,12));
		Stop;
	}
}

class CrystalShardFloatingSmall : CrystalGrowthFloating
{
	Default
	{
		+CLIENTSIDEONLY;
		-SOLID;
		-SHOOTABLE;
		Radius 8;
		Height 32;
	}
	States
	{
	Spawn:
		MCYS G -1;
		Stop;
	}
}

class CrystalShardFloatingLarge : CrystalGrowthFloating
{
	Default
	{
		+CLIENTSIDEONLY;
		-SOLID;
		-SHOOTABLE;
		Radius 8;
		Height 64;
	}
	States
	{
	Spawn:
		MCYS H -1;
		Stop;
	}
}

class CrystalGrowthCeilingSmall : CrystalGrowthHanging
{
	Default
	{
		+FORCEYBILLBOARD;
		Radius 8;
		Height 8;
	}
	States
	{
	Spawn:
		MCYS I -1;
		Stop;
	Death:
		MCYS I 0 A_PlaySound("effects/glass/tink");
		MCYS I 1 A_SpawnItem("CrystalFragmentSpawnerSmall");
		Stop;
	}
}

class CrystalGrowthCeilingMedium : CrystalGrowthHanging
{
	Default
	{
		Radius 12;
		Height 28;
	}
	States
	{
	Spawn:
		MCYS J -1;
		Stop;
	Death:
		MCYS J 0 A_PlaySound("effects/crystal/shatter");
		MCYS J 1 A_SpawnItem("CrystalFragmentSpawnerMedium");
		Stop;
	}
}

class CrystalGrowthCeilingLarge : CrystalGrowthHanging
{
	Default
	{
		Health 16;
		Radius 24;
		Height 56;
	}
	States
	{
	Spawn:
		MCYS K -1;
		Stop;
	Death:
		MCYS K 0 A_PlaySound("effects/crystal/shatter");
		MCYS KKK 0 A_SpawnItem("CrystalFragmentSpawnerMedium", random[SquareGibRandom](4,12), random[SquareGibRandom](4,12), random[SquareGibRandom](4,12));
		MCYS K 1 A_SpawnItem("CrystalFragmentSpawnerMedium", random[SquareGibRandom](4,12), random[SquareGibRandom](4,12), random[SquareGibRandom](4,12));
		Stop;
	}
}
