class GoonadeThrowCheck : Inventory { Default { Inventory.MaxAmount 5; } }

class GoonadeProjectile : SquareActor
{
	const BLOB_COUNT = 20;

	Default
	{
		Radius 4;
		Height 8;
		Damage 1;
		Gravity 0.8;
		Speed 25;
		BounceSound "weapons/goonbounce";
		DeathSound "weapons/goonhit";
		Obituary "$OB_GOONADES";
		Projectile;
		-NOGRAVITY;
		+BOUNCEONWALLS;
		+BOUNCEONCEILINGS;
		+FORCEXYBILLBOARD;
		+STRIFEDAMAGE;
	}
	States
	{
	Spawn:
		GNAD ABCDEFGHIJ 3;
		Loop;
	Death:
		TNT1 A 25 SQ_GoonadeShatter();
		Stop;
	}

	void SQ_GoonadeShatter()
	{
		A_RadiusThrust(80);
		A_SpawnItem("GooSpawner");
		A_SpawnItem("GooPuff2");
		A_SpawnItem("GlassMibSpawnerGoonade");
		for(int i = 0; i < BLOB_COUNT; i++) {
			A_SpawnItemEx("GoonadeProjectileOozeBlob", 0, 0, 0, random(-6, 6), random(-6, 6), random(4, 6), 0, SXF_TRANSFERPOINTERS);
		}
	}
}

class GlassMibSpawnerGoonade : GlassMibSpawner
{
	Default
	{
		BloodColor "dd dd dd";
		Args 16, 2;
	}
}

class GooPuff : PaintPuff3
{
	Default
	{
		RenderStyle 'Add';
	}
}

class GooPuff2 : GooPuff
{
	Default
	{
		Scale 2;
	}
}

class GooPuffRed : GooPuff { Default { Translation "17:22=192:197"; } }
class GooPuff2Red : GooPuffRed { Default { Scale 2; } }

class GoonadeProjectileOozeBlob : SquareActor
{
	Default
	{
		Translation "198:207=117:117", "0:0=119:119";
		RenderStyle 'Add';
		Radius 4;
		Height 8;
		DamageFunction (8*random(1,4));
		DamageType 'Goo';
		Gravity 0.8;
		Projectile;
		-NOGRAVITY;
		+DONTBLAST;
		+BOUNCEONWALLS;
		+BOUNCEONCEILINGS;
		+FORCEXYBILLBOARD;
		+FORCEPAIN;
	}
	States
	{
	Spawn:
		BLOB A 3;
		Loop;
	Crash:
	Death:
		TNT1 A 0 A_SpawnItem("GooPuff");
		TNT1 A 0 A_SpawnItemEx("GoonadeProjectileOozeBlobPuddle", flags: SXF_TRANSFERPOINTERS);
		Stop;
	}
}

class GoonadeProjectileOozeBlobPuddle : SquareActor
{
	Default
	{
		Translation "198:207=117:117", "0:0=119:119";
		RenderStyle "Add";
		Radius 12;
		Height 8;
		DamageFunction (8*random(1,4));
		DamageType 'Goo';
		Gravity 1.0;
		Speed 0;
		XScale 2.0;
		Projectile;
		-NOGRAVITY;
		+DONTBLAST;
		+FORCEXYBILLBOARD;
		+FORCEPAIN;
	}
	States
	{
	Spawn:
		BLDP A 525;
	Death:
		BLDP A 0 A_SpawnItemEx("GooVapor", frandom(-2.0,2.0), frandom(-2.0,2.0), 4.0, 0, 0, 1, 0, 0, 20);
		BLDP A 1 A_FadeOut(0.05);
		Loop;
	}
}

class GoonadeSpeed1 : GoonadeProjectile
{
	Default
	{
		Damage 2;
		Speed 15;
	}
}

class GoonadeSpeed2 : GoonadeProjectile
{
	Default
	{
		Damage 4;
		Speed 20;
	}
}

class GoonadeSpeed3 : GoonadeProjectile
{
	Default
	{
		Damage 6;
		Speed 25;
	}
}

class GoonadeSpeed4 : GoonadeProjectile
{
	Default
	{
		Damage 8;
		Speed 30;
	}
}

class GoonadeSpeed5 : GoonadeProjectile
{
	Default
	{
		Damage 10;
		Speed 35;
	}
}
