
// Poison Bag (Flechette used by Cleric) ------------------------------------

class PoisonBag : Actor
{
	Default
	{
		Radius 5;
		Height 5;
		+NOBLOCKMAP +NOGRAVITY
	}

	native void A_PoisonBagInit();

	States
	{
	Spawn:
		PSBG A 18 Bright;
		PSBG B 4 Bright;
		PSBG C 3;
		PSBG C 1 A_PoisonBagInit;
		Stop;
	}
}

// Fire Bomb (Flechette used by Mage) ---------------------------------------

class FireBomb : Actor
{
	Default
	{
		DamageType "Fire";
		+NOGRAVITY
		+FOILINVUL
		RenderStyle "Translucent";
		Alpha 0.6;
		DeathSound "FlechetteExplode";
	}

	States
	{
	Spawn:
		PSBG A 20;
		PSBG AA 10;
		PSBG B 4;
		PSBG C 4 A_Scream;
		XPL1 A 4 Bright A_TimeBomb;
		XPL1 BCDEF 4 Bright;
		Stop;
	}

	void A_TimeBomb()
	{
		AddZ(32, false);
		A_SetRenderStyle(1., STYLE_Add);
		A_Explode();
	}
}

// Throwing Bomb (Flechette used by Fighter) --------------------------------

class ThrowingBomb : Actor
{
	Default
	{
		Health 48;
		Speed 12;
		Radius 8;
		Height 10;
		DamageType "Fire";
		+NOBLOCKMAP +DROPOFF +MISSILE
		BounceType "HexenCompat";
		SeeSound "FlechetteBounce";
		DeathSound "FlechetteExplode";
	}

	native void A_CheckThrowBomb();
	native void A_CheckThrowBomb2();

	States
	{
	Spawn:
		THRW A 4 A_CheckThrowBomb;
		THRW BCDE 3 A_CheckThrowBomb;
		THRW F 3 A_CheckThrowBomb2;
		Loop;
		THRW G 6 A_CheckThrowBomb;
		THRW F 4 A_CheckThrowBomb;
		THRW H 6 A_CheckThrowBomb;
		THRW F 4 A_CheckThrowBomb;
		THRW G 6 A_CheckThrowBomb;
		THRW F 3 A_CheckThrowBomb;
		Wait;
	Death:
		CFCF Q 4 Bright A_NoGravity;
		CFCF R 3 Bright A_Scream;
		CFCF S 4 Bright A_Explode;
		CFCF T 3 Bright;
		CFCF U 4 Bright;
		CFCF W 3 Bright;
		CFCF X 4 Bright;
		CFCF Z 3 Bright;
		Stop;
	}
}

// Poison Bag Artifact (Flechette) ------------------------------------------

class ArtiPoisonBag : Inventory native
{
	Default
	{
		+FLOATBOB
		Inventory.DefMaxAmount;
		Inventory.PickupFlash "PickupFlash";
		+INVENTORY.INVBAR +INVENTORY.FANCYPICKUPSOUND
		Inventory.Icon "ARTIPSBG";
		Inventory.PickupSound "misc/p_pkup";
		Inventory.PickupMessage "$TXT_ARTIPOISONBAG";
		Tag "$TAG_ARTIPOISONBAG";
	}
	States
	{
	Spawn:
		PSBG A -1;
		Stop;
	}
}

// Poison Bag 1 (The Cleric's) ----------------------------------------------

class ArtiPoisonBag1 : ArtiPoisonBag native
{
	Default
	{
		Inventory.Icon "ARTIPSB1";
		Tag "$TAG_ARTIPOISONBAG1";
	}
}

// Poison Bag 2 (The Mage's) ------------------------------------------------

class ArtiPoisonBag2 : ArtiPoisonBag native
{
	Default
	{
		Inventory.Icon "ARTIPSB2";
		Tag "$TAG_ARTIPOISONBAG2";
	}
}

// Poison Bag 3 (The Fighter's) ---------------------------------------------

class ArtiPoisonBag3 : ArtiPoisonBag native
{
	Default
	{
		Inventory.Icon "ARTIPSB3";
		Tag "$TAG_ARTIPOISONBAG3";
	}
}

// Poison Bag 4 (Custom Giver) ----------------------------------------------

class ArtiPoisonBagGiver : ArtiPoisonBag native
{
	Default
	{
		Inventory.Icon "ARTIPSB4";
	}
}

// Poison Bag 5 (Custom Thrower) --------------------------------------------

class ArtiPoisonBagShooter : ArtiPoisonBag native
{
	Default
	{
		Inventory.Icon "ARTIPSB5";
	}
}

// Poison Cloud -------------------------------------------------------------

class PoisonCloud : Actor native
{
	Default
	{
		Radius 20;
		Height 30;
		Mass 0x7fffffff;
		+NOBLOCKMAP +NOGRAVITY +DROPOFF
		+NODAMAGETHRUST
		+DONTSPLASH +FOILINVUL +CANBLAST +BLOODLESSIMPACT +BLOCKEDBYSOLIDACTORS
		RenderStyle "Translucent";
		Alpha 0.6;
		DeathSound "PoisonShroomDeath";
		DamageType "PoisonCloud";
	}

	native void A_PoisonBagDamage();
	native void A_PoisonBagCheck();

	States
	{
	Spawn:
		PSBG D 1;
		PSBG D 1 A_Scream;
		PSBG DEEEFFFGGGHHHII 2 A_PoisonBagDamage;
		PSBG I 2 A_PoisonBagCheck;
		PSBG I 1 A_PoisonBagCheck;
		Goto Spawn + 3;
	Death:
		PSBG HG 7;
		PSBG FD 6;
		Stop;
	}
}

// Poison Shroom ------------------------------------------------------------

class ZPoisonShroom : PoisonBag
{
	Default
	{
		Radius 6;
		Height 20;
		PainChance 255;
		Health 30;
		Mass 0x7fffffff;
		+SHOOTABLE
		+SOLID
		+NOBLOOD
		+NOICEDEATH
		-NOBLOCKMAP
		-NOGRAVITY
		PainSound "PoisonShroomPain";
		DeathSound "PoisonShroomDeath";
	}

	native void A_PoisonShroom();

	States
	{
	Spawn:
		SHRM A 5 A_PoisonShroom;
		Goto Pain+1;
	Pain:
		SHRM A 6;
		SHRM B 8 A_Pain;
		Goto Spawn;
	Death:
		SHRM CD 5;
		SHRM E 5 A_PoisonBagInit;
		SHRM F -1;
		Stop;
	}
}

