class HellEnergyOrb : Clip {
  Default {
    Inventory.PickupMessage "Absorbed hell energy";
    Inventory.Amount 4;
	scale 0.5;
	+BRIGHT
  }
  states {
    Spawn:
	  IEOB A 3;
	  IEOB B 3;
	  IEOB C 3;
	  IEOB D 3;
	  IEOB E 3;
	  IEOB F 3;
	  IEOB G 3;
  	  IEOB H 3;
	  Loop;
  }
}
class ZombieManImpOrb : ZombieMan {
  Default
  {
	DropItem 'HellEnergyOrb';
  }
}

class ShotgunGuyImpOrb : ShotgunGuy {
  Default
  {
	DropItem 'HellEnergyOrb';
  }
}


class ZombieScientistImpOrb : Actor
{
  Default
  {
    obituary "%o was axe-murdered by a zombie scientist.";
    health 20;
    mass 90;
    speed 8;
    Radius 20;
    Height 52;
    painchance 200;
    seesound "grunt/sight";
    painsound "grunt/pain";
    deathsound "grunt/death";
    activesound "grunt/active";
	DropItem 'HellEnergyOrb';
    MONSTER;
    +FLOORCLIP
  }

  States
  {
   Spawn:
    SCZA AB 10 A_Look();
    loop;
  See:
    SCZA AABBCCDD 4 A_Chase();
    loop;
  Melee:
    SCZA E 8 A_FaceTarget();
    SCZA F 16 A_CustomMeleeAttack (random (2, 6) *5, "KniffHit", "skeleton/swing");
    SCZA E 4;
    goto See;
  Pain:
    SCZA G 3;
    SCZA G 3 A_Pain();
    goto See;
  Death:
    SCZA H 5;
    SCZA I 5 A_Scream();
    SCZA J 5 A_NoBlocking();
    SCZA K 5;
    SCZA L 5;
    SCZA M 5;
    SCZA N -1;
    stop;
  XDeath:
    SCZA O 5;
    SCZA P 5 A_XScream();
    SCZA Q 5 A_NoBlocking();
    SCZA RSTUV 5;
    SCZA W -1;
    stop;
  Raise:
    SCZA MLKJIH 5;
    goto See;
  }
}

class ImpHandFireBall : DoomImpBall
{
  Default
  {
      Speed 20;
	  Damage 4;
  }
}

class ImpHand : Weapon
{
 Default
 {
	 Inventory.PickupSound "DSITEMUP";
	 Inventory.PickupMessage "You feel impish. Remember your alt attack.";
	 Weapon.SlotNumber 1;
	 Weapon.AmmoType2 "Clip";
	 Weapon.AmmoUse2 1;
	 AttackSound "DSCLAW";
 }
 States
 {
 Spawn: 
	IMPH A -1;
	Stop;
 Ready: 
	IMPH A 1 A_WeaponReady;
	Loop;
 Select:
	IMPH A 1 A_Raise;
	Loop;
 Deselect:
	IMPH A 1 A_Lower;
	Loop; 
 Fire:
	IMPH A 2;
	IMPH B 2
	{
		int dmg = 2 * random(5,15);
		if (FindInventory("PowerStrength"))
		{
			dmg *= 10;
		}
		A_CustomPunch(dmg, norandom:true, range: meleeRange + 25, meleesound: "imp/melee", misssound: "skeleton/swing");
	}
	IMPH C 2;
	IMPH D 2;
	IMPH E 2;
	IMPH F 2;
	IMPH G 6 A_ReFire;
	Goto Ready;
 AltFire:
	IMPH A 4;
	IMPH I 2;
	IMPH H 6 A_FireProjectile("ImpHandFireBall", spawnofs_xy:-8);
	IMPH I 12;
	IMPH G 6 A_ReFire;
	Goto Ready;
 }
}