class PaintCannon : SquareWeapon
{
	Default
	{
		Weapon.SelectionOrder 450;
		Weapon.AmmoUse 1;
		Weapon.AmmoGive 50;
		Weapon.AmmoType "PaintAmmo";
		Tag "$TAG_PAINTCANNON";
		Inventory.PickupMessage "$GOTPAINTCANNON";
		Obituary "$OB_PAINTCANNON";
	}
	States
	{
	Spawn:
		PCNN A -1;
		Stop;
	Ready:
		PCAN A 1 A_WeaponReady();
		Loop;
	Deselect:
		PCAN A 1 A_Lower();
		PCAN A 0 A_Lower();
		Loop;
	Select:
		PCAN A 1 A_Raise();
		PCAN A 0 A_Raise();
		Loop;
	ResetSprite:
		PCAN A 0;
		Goto Reraise;
	Fire:
		PCAN A 1 Offset(0,35);
		PCAN A 1 Offset(0,38);
		PCAN A 1 Offset(0,42);
	Hold:
		PCAN A 0 A_GunFlash();
		PCAN A 0 A_PlaySound("weapons/cannon", CHAN_WEAPON);
		PCAN B 0 A_FireProjectile("PaintCannonBall",0,1,0,-3);
		PCAN B 1 Bright Offset(0,45);
		PCAN B 1 Bright Offset(0,47);
		PCAN C 1 Bright Offset(0,46);
		PCAN A 0 A_GunFlash();
		PCAN A 0 A_PlaySound("weapons/cannon", CHAN_WEAPON);
		PCAN B 0 A_FireProjectile("PaintCannonBall",0,0,-7,-3);
		PCAN B 0 A_FireProjectile("PaintCannonBall",0,1,7,-3);
		PCAN D 1 Bright Offset(0,45);
		PCAN D 1 Bright Offset(0,47);
		PCAN E 1 Bright Offset(0,46);
		PCAN E 0 A_Refire();
		PCAN A 1 Offset(0,45);
		PCAN A 1 Offset(0,44);
		PCAN A 1 Offset(0,42);
		PCAN A 1 Offset(0,39);
		PCAN A 1 Offset(0,35);
		PCAN A 1 Offset(0,34);
		PCAN A 1 Offset(0,33);
		PCAN A 1 Offset(0,32);
		Goto Ready;
	}
}

class PaintCannonBall : SquareActor
{
	Default
	{
		Projectile;
		+FORCEXYBILLBOARD;
		+BLOODSPLATTER;

		Speed 40;
		Radius 4;
		Height 4;
		DamageFunction (10);
		DeathSound "weapons/painthit";
		Translation "192:207=64:79";
		DamageType 'Bullet';
		Obituary "$OB_PAINTCANNON";
		Decal 'PaintSplat_Blue';
	}
	States
	{
	Spawn:
		TNT1 A 2; // Blank for a tick for presentation purposes.
		BLOB A -1;
		Stop;
	Death:
		BLOB BCDEFG 2;
		Stop;
	}
}
