// Super map ----------------------------------------------------------------

Class SuperMap : MapRevealer
{
	Default
	{
		+COUNTITEM
		+INVENTORY.ALWAYSPICKUP
		+FLOATBOB
		Inventory.MaxAmount 0;
		Inventory.PickupMessage "$TXT_ITEMSUPERMAP";
	}
	States
	{
	Spawn:
		SPMP A -1;
		Stop;
	}
}


// Invisibility -------------------------------------------------------------

Class ArtiInvisibility : PowerupGiver
{
	Default
	{
		+COUNTITEM
		+FLOATBOB
		Inventory.PickupFlash "PickupFlash";
		RenderStyle "Translucent";
		Alpha 0.4;
		Inventory.RespawnTics 4230;
		Inventory.Icon "ARTIINVS";
		Powerup.Type "PowerGhost";
		Inventory.PickupMessage "$TXT_ARTIINVISIBILITY";
		Tag "$TAG_ARTIINVISIBILITY";
	}
	States
	{
	Spawn:
		INVS A 350 Bright;
		Loop;
	}
}

 
// Tome of power ------------------------------------------------------------

Class ArtiTomeOfPower : PowerupGiver
{
	Default
	{
		+COUNTITEM
		+FLOATBOB
		Inventory.PickupFlash "PickupFlash";
		Inventory.Icon "ARTIPWBK";
		Powerup.Type "PowerWeaponlevel2";
		Inventory.PickupMessage "$TXT_ARTITOMEOFPOWER";
		Tag "$TAG_ARTITOMEOFPOWER";
	}
	States
	{
	Spawn:
		PWBK A 350;
		Loop;
	}
	
	override bool Use (bool pickup)
	{
		Playerinfo p = Owner.player;
		if (p && p.morphTics && (p.MorphStyle & MRF_UNDOBYTOMEOFPOWER))
		{ // Attempt to undo chicken
			if (!p.mo.UndoPlayerMorph (p, MRF_UNDOBYTOMEOFPOWER))
			{ // Failed
				if (!(p.MorphStyle & MRF_FAILNOTELEFRAG))
				{
					Owner.DamageMobj (null, null, TELEFRAG_DAMAGE, 'Telefrag');
				}
			}
			else
			{ // Succeeded
				Owner.A_StartSound ("*evillaugh", CHAN_VOICE);
			}
			return true;
		}
		else
		{
			return Super.Use (pickup);
		}
	}
	
}


// Time bomb ----------------------------------------------------------------

Class ActivatedTimeBomb : Actor
{
	Default
	{
		+NOGRAVITY
		RenderStyle "Translucent";
		Alpha 0.4;
		DeathSound "misc/timebomb";
	}
		
	States
	{
	Spawn:
		FBMB ABCD 10;
		FBMB E 6 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();
	}
}


Class ArtiTimeBomb : Inventory
{
	Default
	{
		+COUNTITEM
		+FLOATBOB
		Inventory.PickupFlash "PickupFlash";
		+INVENTORY.INVBAR
		+INVENTORY.FANCYPICKUPSOUND
		Inventory.Icon "ARTIFBMB";
		Inventory.PickupSound "misc/p_pkup";
		Inventory.PickupMessage "$TXT_ARTIFIREBOMB";
		Tag "$TAG_ARTIFIREBOMB";
		Inventory.DefMaxAmount;
	}
	States
	{
	Spawn:
		FBMB E 350;
		Loop;
	}
	
	override bool Use (bool pickup)
	{
		Actor mo = Spawn("ActivatedTimeBomb", Owner.Vec3Angle(24., Owner.angle, - Owner.Floorclip), ALLOW_REPLACE);
		if (mo != null) mo.target = Owner;
		return true;
	}
	
}
