class Defibrillator : SquareWeapon
{
	Default
	{
		Tag "$TAG_DEFIBRILLATOR";
		Weapon.SelectionOrder 1000;
		Weapon.UpSound "";
		Weapon.ReadySound "";
		Inventory.PickupSound "misc/w_pkup";
		AttackSound "weapons/stun";
		Inventory.PickupMessage "$GOTDEFIBRILLATOR";
		Obituary "$OB_DEFIBRILLATOR";
		+WEAPON.MELEEWEAPON;
		+INVENTORY.ALWAYSPICKUP;
	}
	States
	{
	Spawn:
		DEFG A -1;
		Stop;
	Ready:
		DEFB A 0 A_PlaySound("weapons/stunidle", CHAN_WEAPON, 1, 1)	;
		DEFB A 1 A_WeaponReady();
		Wait;
	Select:
		DEFB A 1 A_Raise();
		DEFB A 0 A_Raise();
		Loop;
	Deselect:
		DEFB A 0 A_StopSound(CHAN_WEAPON);
		DEFB A 1 A_Lower();
		DEFB A 0 A_Lower();
		Goto Deselect+1;
	ResetSprite:
		DEFB A 0;
		Goto Reraise;
	Fire:
		DEFB CEI 1;
		DEFB I 0 A_AlertMonsters();
		DEFB I 0 A_CustomPunch(10, 0, 0, "Nothing", 72.0);
		DEFB I 0 { self.bNoRadiusDmg = true; } // [XA] ???
		DEFB A 0 A_SpawnItemEx("WaterHurter", 0.0, 1.0, 32.0, 0.0, 0.0, 0.0, 0.0, SXF_SETMASTER);
		DEFB J 1 Bright A_Blast(0, 255, 72, 30.0, "StunPuff", "ovolt/melee");
		DEFB IKI 1 Bright;
		DEFB I 0 { self.bNoRadiusDmg = false; }
		DEFB HGFEDCBAAA 1;
		Goto Ready;
	}
}

class StunPuff : SquareActor
{
	Default
	{
		+NOGRAVITY;
		+NOBLOCKMAP;
		+NOCLIP;
		+PUFFONACTORS;
		+BLOODLESSIMPACT;

		Radius 1;
		Height 1;
		RenderStyle 'Add';
	}
	States
	{
	Spawn:
		OVBL EFEFGFG 2 Bright;
		Stop;
	}
}

class WaterHurter : SquareActor
{
	Default
	{
		Projectile;
		Radius 1;
		Height 1;
		Speed 0;
		Damage 0;
		+INVISIBLE;
		+DONTBLAST;
	}
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_JumpIf(waterlevel > 0, "HurtMaster");
	Death:
		BLOB A 35;
		Stop;
	HurtMaster:
		BLOB B 0 A_DamageMaster(25);
		BLOB B 35 A_GiveInventory("Zzzap", 1, AAPTR_MASTER);
		BLOB B 0 A_Die();
		Goto Death;
	}
}

class Zzzap : CustomInventory
{
	Default
	{
		+INVENTORY.ALWAYSPICKUP;
		+INVENTORY.AUTOACTIVATE;
		+INVENTORY.UNDROPPABLE;
	}
	States
	{
	Spawn:
		BLOB A -1;
		Stop;
	Pickup:
		TNT1 A 0 A_SetBlend("ffffff", 2.0, 60);
		TNT1 A 0 A_Quake(6, 10, 0, 16, "ovolt/melee");
		Stop;
	}
}
