/// decorate/projectiles.txt by Kaapeli47

/// Projectiles ///

// Nails

ACTOR Nail : FastProjectile
{
  ProjectileKickback 100
  Radius 9
  Height 9
  MissileHeight 8
  Missiletype "Nailblur"
  Speed 90
  Damage (20 * random(1,4))
  DamageType "Nail"
  Scale 0.75
  +BloodSplatter
  -NOTELEPORT
  +SKYEXPLODE
  SeeSound ""
  DeathSound "weapons/nailimpct"
  Obituary "%o was punctured by %k's Super Nailgun."
  Decal BulletChip
  States
  {
  Spawn:
    NLPJ A 1 Bright A_Playsound("weapons/nailfly",CHAN_VOICE,1,1)
    Loop
  Crash:
  Death:
    PUFF A 3 Bright
    PUFF BCD 2
	Stop
  XDeath:
    NLPJ B 0 A_PlaySound("Weapons/NailHit")
	TNT1 A 1 A_SpawnItemEx("BloodSplatter",0,0,0,random(0,2.5),random(0,2.5),random(0,2.5),random(0,360))
    Stop
  }
}

ACTOR Nailblur
{
  Scale 0.7
  +NOBLOCKMAP
  +NOGRAVITY
  +SHADOW
  +NOTELEPORT
  +CANNOTPUSH
  +NODAMAGETHRUST
  RenderStyle Translucent
  Alpha 0.25
  States
  {
  Spawn:
    NLPJ A 2 Bright
    Stop
  }
}

ACTOR SmallNail : Nail
{
	Radius 3
	Height 3
	Speed 90
	Damage (15 * random(1,4))
	ProjectileKickBack 50
	DamageType "Nail"
	Missiletype "Smallnailblur"
	Scale 0.5
    Obituary "%o was nailed by %k's Nailgun."
}

ACTOR SmallNailblur : Nailblur
{
	Scale 0.5
}

ACTOR ExtremeNail : Nail
{
	ProjectileKickback 200
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		NLPJ B 0 A_PlaySound("Weapons/NailHit")
		NLPJ BCDEFG 2
		Stop
	}
}

ACTOR ExtremeSmallNail : SmallNail
{
	ProjectileKickback 100
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		NLPJ B 0 A_PlaySound("Weapons/NailHit")
		NLPJ BCDEFG 2
		Stop
	}
}

/// Explosives

// Rockets

ACTOR IDMRocket : Rocket replaces Rocket
{
  Radius 9
  Height 6
  Speed 28
  Damage (20 * random(1,10))
  ProjectileKickback 300
  Projectile
  +RANDOMIZE
  +DEHEXPLOSION
  +ROCKETTRAIL
  -NOTELEPORT
  +SKYEXPLODE
  SeeSound "weapons/rocklf"
  DeathSound "weapons/rocklx"
  Obituary "%o was barraged by %k's rocket barrage."
  DamageType "Rocket"
  Decal Scorch
  Decal BigScorch
  States
  {
  Spawn:
    MISL A 1 Bright
    Loop
  Death:
    MISL B 6 Bright A_Explode(128,128)
    MISL C 5 Bright
	MISL D 4 Bright
    Stop
  }
}

ACTOR IDMSmallRocket : IDMRocket
{
  Obituary "%o caught %k's rocket."
  +RANDOMIZE
}

ACTOR ExtremeRocket : IDMRocket
{
	ProjectileKickBack 600
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}

ACTOR ExtremeSmallRocket : IDMSmallRocket
{
	ProjectileKickBack 600
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}


ACTOR IDMMushroom
{
  Damage 30
  DeathSound "weapons/mushlx"
  SeeSound "fatso/attack"
  Obituary "%o tripped %k's grenade."
  DamageType "Rocket"
  Radius 6
  Height 8
  Speed 20
  Projectile 
  +RANDOMIZE
  -NOGRAVITY
  -NOTELEPORT
  RenderStyle Add
  Alpha 1
  Gravity 0.3
  States
  {
  Spawn:
    MANF AB 4 Bright
    Loop
  XDeath:
  Death:
    MISL B 0 A_Scream
    MISL B 6 Bright A_Explode(128,128,0)
    MISL C 5 Bright
	MISL D 4 Bright
	Stop
  }
}


ACTOR ExtremeMushroom : IDMMushroom
{
  +EXTREMEDEATH
  States
  {
  XDeath:
	TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
	Goto Death
  }
}

ACTOR BigRocket : IDMRocket
{
  Radius 13
  Height 9
  Speed 28
  Scale 1.5
  Damage (30 * random(1,10))
  ProjectileKickBack 600
  States
  {
  Spawn:
    SHKM A 1 Bright
    Loop
  Death:
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("IDMMushroom",8,0,random(-180,180),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,75))
    MISL B 6 Bright A_Explode(192,192)
    MISL C 5 Bright
	MISL D 4 Bright
    Stop
  }
}


ACTOR ExtremeBigRocket : BigRocket
{
	+EXTREMEDEATH
	ProjectileKickBack 1200
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}

ACTOR SmallBigRocket : IDMSmallRocket
{
  Radius 23
  Height 15
  Speed 24
  Scale 1.5
  Damage (30 * random(1,10))
  ProjectileKickBack 600
  States
  {
  Spawn:
    SHKM A 1 Bright
    Loop
  Death:
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("IDMMushroom",8,0,random(-180,180),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,75))
    MISL B 6 Bright A_Explode(192,192)
    MISL C 5 Bright
	MISL D 4 Bright
    Stop
  }
}

ACTOR ExtremeSmallBigRocket : SmallBigRocket
{
	+EXTREMEDEATH
	ProjectileKickBack 1200
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}


ACTOR HeatSeekerMissile : IDMRocket
{
  Health 1 
  Damage (20*random(1,10))
  Speed 12
  +SHOOTABLE /* This has to be on so that the missile can be shot midair when
				NOBLOCKMAP goes FALSE. */
  +NOBLOOD
  -NOTELEPORT
  +SKYEXPLODE
  +SEEKERMISSILE
  +SCREENSEEKER
  +NOINFIGHTING
  +NORADIUSDMG /* Missiles cannot receive splash damage. This is to prevent two
			   or more Seeker Missiles colliding with each other so easily. */
  SeeSound "weapons/seekermislf"
  Obituary "%o couldn't outrun %k's Seeker Missile."
  Decal Scorch
  Decal BigScorch
  States
  {
  Spawn:
	HMIS A 12 Bright
	TNT1 A 0 A_Playsound("weapons/seekerprime")
	TNT1 A 0 A_ScaleVelocity(1.5)
  Solid:
	TNT1 A 0 A_ChangeFlag(NOBLOCKMAP,0)
	/* After 12 gametics, plays the priming sound, increases its speed by 50%,
	 and becomes vulnerable to attacks by disabling the NOBLOCKMAP flag. */
  SolidLoop:
	HMIS A 8 Bright A_SeekerMissile(0,51.5,SMF_LOOK|SMF_CURSPEED|SMF_PRECISE,256,8)
	Loop
	/* Every 8th gametic the missile will home in on a target, and turns 50
	degrees at maximum to face the target. During the other 7 gametics the
	missile just travels forwards.*/
  }
}

ACTOR ExtremeHeatSeekerMissile : HeatSeekerMissile
{
	ProjectileKickBack 400
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}

ACTOR DevastatorRocket : IDMRocket
{
	Radius 4
	Height 4
	Speed 32
	Scale 0.3
	Damage (10*random(1,10))
	Projectile
	SeeSound "weapons/devlnch"
	DeathSound "weapons/devexpl"
	Obituary "%o got devastated by %k's Devastators."
	-ROCKETTRAIL
	-NOTELEPORT
	+EXTREMEDEATH
	States
	{
	Death:
	  MISL B 6 Bright A_Explode(128,32)
	  MISL C 5 Bright
	  MISL D 4 Bright
      Stop
    }
}

ACTOR ExtremeDevastatorRocket : DevastatorRocket
{
	States
	{
	XDeath:
	  TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
	  Goto Death
    }
}


ACTOR DevastatorMissile : HeatseekerMissile
{
	Radius 4
	Height 4
	Speed 24
	Scale 0.3
	Damage (10*random(1,10))
	Projectile
	SeeSound "weapons/devlnch"
	DeathSound "weapons/devexpl"
	Obituary "%o got devastated by %k's Devastators."
	-ROCKETTRAIL
	+EXTREMEDEATH
	States
	{
	Spawn:
	  HMIS A 12 Bright
	  TNT1 A 0 A_Playsound("weapons/seekerprime")
	  TNT1 A 0 A_ScaleVelocity(1.5)
	Solid:
	  TNT1 A 0 A_ChangeFlag(NOBLOCKMAP,0)
	  // After 12 gametics, plays the priming sound, increases its speed by 50%,
	  // and becomes vulnerable to attacks by disabling the NOBLOCKMAP flag.
    SolidLoop:
	  HMIS A 1 Bright A_SeekerMissile(0,48,SMF_LOOK|SMF_CURSPEED|SMF_PRECISE,256,8)
	  Loop
	Death:
	  MISL B 6 Bright A_Explode(128,32)
	  MISL C 5 Bright
	  MISL D 4 Bright
      Stop
    }
}

ACTOR ExtremeDevastatorMissile : DevastatorMissile
{
	States
	{
	XDeath:
	  TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
	  Goto Death
    }
}

// Grenades

ACTOR IDMGrenade : Grenade
{
  Radius 10
  Height 10
  Speed 30
  Damage (20 * random(1,10))
  Projectile
  ProjectileKickback 300
  -NOGRAVITY
  -NOTELEPORT
  +RANDOMIZE
  +DEHEXPLOSION
  +GRENADETRAIL
  +SKYEXPLODE
  +BOUNCEAUTOOFFFLOORONLY
  -BOUNCEONACTORS
  +ALLOWBOUNCEONACTORS
  BounceType "Hexen"
  BounceFactor 1.0
  WallBounceFactor 1.0
  Gravity 0.30
  SeeSound "weapons/grenlf"
  DeathSound "weapons/grenlx"
  BounceSound "weapons/grbnce"
  Obituary "%o tripped %k's grenade."
  DamageType "Grenade"
  States
  {
  Spawn:
    SGRN A 105 Bright
	SGRN A 0 A_ScaleVelocity(0)
	SGRN A 0 A_ChangeFlag(NOGRAVITY,true)
	MISL B 0 A_Scream
    MISL B 6 Bright A_Explode(128,128)
    MISL C 5 Bright
    MISL D 4 Bright
    Stop
  XDeath:
  Death:
	TNT1 A 0
	SGRN A 0 A_ScaleVelocity(0)
	SGRN A 0 A_ChangeFlag(NOGRAVITY,true)
	MISL B 0 A_Scream
    MISL B 6 Bright A_Explode(128,128)
    MISL C 5 Bright
    MISL D 4 Bright
    Stop
  }
}

ACTOR ExtremeGrenade : IDMGrenade
{
	+EXTREMEDEATH
	ProjectileKickBack 400
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}


ACTOR IDMGrenadeMushroom : IDMMushroom
{
	DamageType "Rocket"
}

ACTOR ExtremeGrenadeMushroom : IDMGrenadeMushroom
{
  +EXTREMEDEATH
  States
  {
  XDeath:
	TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
	Goto Death
  }
}

ACTOR MushroomGrenade : IDMGrenade
{
  Speed 30
  Obituary "%o tripped %k's grenade."
  DamageType "Grenade"
  Scale 1.5
  States
  {
  Spawn:
	SHGR A 1 Bright
	Loop
  XDeath:
  Death:
    MISL B 0 A_Scream
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("IDMGrenadeMushroom",8,0,random(-180,180),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,75))
    MISL B 6 Bright
    MISL C 5 Bright
	MISL D 4 Bright
	Stop
  }
}

ACTOR ExtremeMushroomGrenade : MushroomGrenade
{
  +EXTREMEDEATH
  States
  {
  XDeath:
	TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
  Death:
    MISL B 0 A_Scream
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("ExtremeGrenadeMushroom",8,0,random(-180,180),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,75))
    MISL C 5 Bright
	MISL D 4 Bright
	Stop
  }
}

ACTOR GRifleGrenade : IDMGrenade
{
  Damage (20*random(1,10))
  Radius 5
  Height 5
  Speed 45
  Obituary "%o was splottered by %k's grenade."
  Bouncetype none
  -GRENADETRAIL
  +ROCKETTRAIL
  States
  {
  Spawn:
    GRND A 2 Bright // A_CustomMissile("GrenadePuff", 3, 0, 0, 1)
	Loop
  XDeath:
  Death:
	TNT1 A 0
	TNT1 A 0 A_ScaleVelocity(0)
	TNT1 A 0 A_ChangeFlag(NOGRAVITY,true)
	MISL B 0 A_Scream
    MISL B 6 Bright A_Explode(128,128)
    MISL C 5 Bright
    MISL D 4 Bright
    Stop
  }
}

ACTOR ExtremeGRifleGrenade : GRifleGrenade
{
  +EXTREMEDEATH
}

ACTOR ClusterGrenade : GRifleGrenade
{
  Damage 5
  Radius 20
  States
  {
  Spawn:
    GRND A 1 Bright A_CustomMissile("GrenadePuff", 3, 0, 0, 1)
	Loop
  XDeath:
  Death:
	SGRN A 0 A_ChangeFlag(NOGRAVITY,true)
	SGRN A 0 A_ScaleVelocity(0)
	TNT1 AAAAAAAAAA 0 A_CustomMissile("IDMSmallGrenade",8,0,random(-180,180),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,45))
	MISL B 0 A_Scream
    MISL B 6 Bright A_Explode(32,128)
    MISL C 5 Bright
	MISL D 4 Bright
	Stop
  }
}

ACTOR GrenadePuff : BulletPuff
{
  +ClientSideOnly
  States
  {
  Spawn:
    PUFF ABCD 4
    Stop
  }
}

ACTOR ExtremeClusterGrenade : ClusterGrenade
{
  +EXTREMEDEATH
  States
  {
  XDeath:
  Death:
	SGRN A 0 A_ChangeFlag(NOGRAVITY,true)
	SGRN A 0 A_ScaleVelocity(0)
	TNT1 AAAAAAAAAA 0 A_CustomMissile("ExtremeSmallGrenade",8,0,random(-180,180),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,45))
	MISL B 0 A_Scream
    MISL B 6 Bright A_Explode(32,128)
    MISL C 5 Bright
	MISL D 4 Bright
	Stop
  }
}

ACTOR IDMSmallGrenade : IDMGrenade
{
  Obituary "%o was splottered by %k's grenade."
  Speed 56
  Seesound none
  WallBounceFactor 1.0
  States
  {
  Spawn:
    SGRN A 63 Bright
	Goto Death
  }
}

ACTOR ExtremeSmallGrenade : IDMSmallGrenade
{
  +EXTREMEDEATH
}


// Plasma

ACTOR IDMPlasmaBall : PlasmaBall replaces PlasmaBall
{
  Speed 30
  Damage (4 * random(1,25))
  +RANDOMIZE
  -NOTELEPORT
  +SKYEXPLODE
  Alpha 1
  Obituary "%o was dissolved by %k's Plasmachine Gun."
  Seesound "weapons/plmgf"
  DamageType "Plasma"
  Decal Plasmascorchlower
  Decal Plasmascorch
  States
  {
  Spawn:
    PLSS AB 4 Bright
    Loop
  Death:
	TNT1 A 0
	PLSE A 0 A_Explode(random(1,5),64,1,1,64)
	PLSE A 4 Bright A_Playsound("weapons/plasmax",0,0.25)
	PLSE BCDE 3 Bright
	Stop
  XDeath:
	PLSE A 4 Bright A_Playsound("weapons/plasmax",0,0.25)
	PLSE BCDE 3 Bright
    Stop
  }
}

ACTOR IDMSmallPlasmaBall : IDMPlasmaBall
{
	Obituary "%o was melted by %k's Plasma Gun."
	Seesound "weapons/plasmaf"
}

ACTOR ExtremePlasmaBall : IDMPlasmaBall
{
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		PLSE A 4 Bright A_Playsound("weapons/plasmax",0,0.25)
		PLSE BCDE 3 Bright
		Goto Death
	}
}

ACTOR ExtremeSmallPlasmaBall : IDMSmallPlasmaBall
{
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}

ACTOR IDMPlasmaBall2 : IDMPlasmaBall
{
  Speed 30
  Damage (2 * random(1,75))
  RenderStyle Add
  ProjectileKickBack 200
  Decal Plasmascorchlower
  Seesound "weapons/plmg2f"
  Deathsound "weapons/plasma2x"
  MaxTargetRange 1
  +SEEKERMISSILE
  States
  {
  Spawn:
    BAL8 AAAABBBB 1 Bright A_SeekerMissile(0,4,SMF_LOOK|SMF_CURSPEED|SMF_PRECISE,255,1)
    Loop
  Death:
	TNT1 A 0
    BAL8 A 0 A_Explode(random(1,5) * 5,64,1,1,64)
    BAL8 B 4 Bright A_Playsound("weapons/plasma2x",0,0.25)
    BAL8 CDE 3 Bright
    Stop
  }
}

ACTOR IDMSmallPlasmaBall2 : IDMPlasmaBall2
{
	Obituary "%o was melted by %k's Plasma Gun."
	Seesound "weapons/plasma2f"
}

ACTOR ExtremePlasmaBall2 : IDMPlasmaBall2
{
	ProjectileKickback 400
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}

ACTOR ExtremeSmallPlasmaBall2 : IDMSmallPlasmaBall2
{
	ProjectileKickback 400
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}


ACTOR PulseBall :  FastProjectile
{
	Radius 13
	Height 8
	Projectile
	ProjectileKickBack 100
	Speed 40
	Damage 20
	RenderStyle Translucent
	+RANDOMIZE
	-NOTELEPORT
	+SKYEXPLODE
	Alpha 1
	Obituary "%o was scorched by %k's Pulse Rifle."
	Seesound "weapons/plsrf"
	DeathSound "weapons/pulsex"
	DamageType "Pulse"
	Decal Arachnotronscorch
	States
	{
	Spawn:
		APLS AB 2 Bright
		TNT1 A 0 A_Jump(128,"SpawnLoop2")
	SpawnLoop:
		APLS BBAA 1 Bright A_Weave(random(10,30),0,random(0,6),0)
		Loop
	SpawnLoop2:
		APLS BBAA 1 Bright A_Weave(random(10,30),0,random(-6,0),0)
		Loop
	Death:
		APBX A 0 A_Explode(random(1,8),64,1,1,64)
		APBX A 4 Bright
		APBX BCDE 3 Bright
		Stop
  }
}

ACTOR ExtremePulseBall : PulseBall
{
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}

ACTOR PulseBall2 : PulseBall
{
	Seesound "weapons/plsrf2"
}


ACTOR ExtremePulseBall2 : Pulseball2
{
	Seesound "weapons/plsrf2"
}


ACTOR LeechBeam : MageWandMissile
{
  Speed 400
  Radius 13
  Height 8
  Damage (5*random(1,6))
  Scale 0.45
  Decal DoomImpScorch
  Damagetype "HitPlasma"
  Deathsound "weapons/bmimpct"
  Projectile
  ProjectileKickBack 50
  Obituary "%o was zapped by %k's Plasma Beam."
  -RIPPER
  -CANNOTPUSH
  -NOTELEPORT
  +SKYEXPLODE
  States
  {
  Spawn:
	TNT1 A 1
	Loop
  Death:
    APBX CDE 3 bright
    Stop
  }
}

ACTOR ExtremeLeechBeam : LeechBeam
{
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		APBX CDE 3 bright
		Stop
	}
}

ACTOR LeechBeam2 : LeechBeam
{
	Projectile
	ProjectileKickBack 100
	MissileType "BeamTrail2"
	+RIPPER
	States
	{
	Death:
      APBX BCDE 3 Bright
      Stop
	}
}

ACTOR ExtremeLeechBeam2 : LeechBeam2
{
	+EXTREMEDEATH
}


ACTOR BeamTrail : MageWandSmoke replaces MageWandSmoke
{
  RenderStyle Add
  MissileHeight 12
  Scale 0.45
  States
  {
  Spawn:
	APBX BCDE 1 Bright
    Stop
  }
}

ACTOR BeamTrail2 : BeamTrail
{
  States
  {
  Spawn:
	APBX BCDE 2 Bright
    Stop
  }
}

ACTOR BlasterShot : ArachnotronPlasma
{
	Speed 45
	Damage (50*random(1,3))
	Seesound "weapons/blasterf"
	Deathsound "weapons/blasterx"
	Obituary "%o was zorched by %k's blaster."
	Damagetype "Blaster"
	States
	{
	Spawn:
	  BLSB AB 5 Bright
	  Loop
	Death:
	  BLSX ABCDE 3 Bright
	  Stop
	}
}

ACTOR ExtremeBlasterShot : BlasterShot
{
	+EXTREMEDEATH
	States
	{
	XDeath:
	  TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
	  BLSX ABCDE 3 Bright
	  Stop
	 }
}

/// BIG PROJECTILES!

// BFG Ball & Tracer

ACTOR IDMBFGBall : BFGBall replaces BFGBall
{
  Radius 13
  Height 8
  Speed 20
  Damage (random(1,100) * random(1,100))
  DamageType "BFG"
  ProjectileKickBack 500
  +RANDOMIZE
  +RIPPER
  +EXTREMEDEATH
  -NOTELEPORT
  +SKYEXPLODE
  RenderStyle Add
  Alpha 1
  SeeSound "weapons/bfgblf"
  DeathSound "weapons/bfgx"
  Obituary "%o was disintegrated by %k's BFG Prototype."
  Decal BFGScorch
  Decal BFGLightning
  States
  {
  Spawn:
    BFS1 AB 2 Bright
    Loop
  Death:
    BFE1 A 8 Bright
	BFE1 A 0 A_JumpIfInventory("PowerIDMWeaponLevel2",1,"Level2")
	TNT1 A 0 A_Explode(random(1,50)*random(1,50),160)
	BFE1 B 8 Bright A_BFGSpray("IDMBFGExtra",40,100)
	BFE1 C 8 Bright A_BFGSpray("IDMBFGExtra",40,100)
	BFE1 D 8 Bright A_BFGSpray("IDMBFGExtra",40,100)
	BFE1 E 8 Bright
	BFE1 F 8 Bright
	Stop
  Level2:
	TNT1 A 0 A_Explode(random(1,50)*random(1,50),160)
	BFE1 BBBB 2 Bright A_BFGSpray("IDMBFGExtra",120,100)
	BFE1 CCCC 2 Bright A_BFGSpray("IDMBFGExtra",120,100)
	BFE1 DDDD 2 Bright A_BFGSpray("IDMBFGExtra",120,100)
	BFE1 EEEE 2 Bright A_BFGSpray("IDMBFGExtra",120,100)
	BFE1 FFFF 2 Bright A_BFGSpray("IDMBFGExtra",120,100)
    Stop
  }
}

ACTOR ExtremeBFGBall : IDMBFGBall
{
	ProjectileKickBack 1000
	States
	{
	XDeath:
		TNT1 A 0
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}

ACTOR IDMBFGExtra : BFGExtra replaces BFGExtra
{
  +NOBLOCKMAP
  +NOGRAVITY
  +EXTREMEDEATH
  RenderStyle Add
  Alpha 0.75
  DamageType "BFGSpray"
  Obituary "$OB_MPBFG_SPLASH"
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("PowerQuadDamage",1,"Quad")
	Goto End
  Quad:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("misc/crit")
  End:
	BFE2 A 4 Bright A_PlaySound("weapons/bfgtracer")
	BFE2 ABCD 4 Bright
    Stop
  }
}


// BFG10K

ACTOR IDMBFG10kShot
{
  Radius 11
  Height 8
  Speed 20
  Damage 160
  DamageType BFG10k
  +NOBLOCKMAP
  +NOGRAVITY
  +ACTIVATEIMPACT
  +ACTIVATEPCROSS
  -NOTELEPORT 
  +PUFFONACTORS
  +PUFFGETSOWNER
  +EXTREMEDEATH
  Renderstyle Add
  Alpha 0.75
  SeeSound "weapons/bfg10kx"
  AttackSound "weapons/bfg10kx"
  Obituary "%o was blasted by %k's BFG10000."
  Decal BFGLightning
  States
  {
  Spawn:
    BFE1 A 0 Bright
    BFE1 A 0 Bright A_Detonate
    BFE1 A 3 Bright A_Explode(240,160)
    BFE1 BCDEF 3 Bright
    Stop
  }
}


ACTOR BFG10KBall : BFGBall
{
  Radius 16
  Height 12
  Damage 240
  Speed 40
  Obituary "%o was blasted by %k's BFG10000."
  Damagetype BFG10K
  Scale 1.5
  Decal BFGLightning
  +EXTREMEDEATH
  States
  {
  Spawn:
    BFS1 AB 2 Bright
    Loop
  Death:
    BFE1 A 8 Bright
	TNT1 A 0 A_Detonate
	BFE1 BBBB 2 Bright A_CustomMissile("BFG10KBall2",0,0,random(0,360),CMF_TRACKOWNER,random(-180,180))
	BFE1 C 8 Bright
	BFE1 D 8 Bright
	BFE1 E 8 Bright
	BFE1 F 8 Bright
	Stop
  }
}


ACTOR BFG10KBall2 : BFG10KBall
{
  Radius 11
  Height 8
  Damage 240
  Speed 200
  Scale 1.5
  Decal BFGLightning
  +EXTREMEDEATH
  States
  {
  Spawn:
    BFS1 AB 2 Bright
    Loop
  Death:
    BFE1 A 8 Bright
	TNT1 A 0 A_Detonate
	BFE1 BBBB 2 Bright A_CustomMissile("BFG10KBall3",0,0,random(0,360),CMF_TRACKOWNER,random(-180,180))
	BFE1 C 8 Bright
	BFE1 D 8 Bright
	BFE1 E 8 Bright
	BFE1 F 8 Bright
	Stop
	Stop
  }
}
  

ACTOR BFG10KBall3 : BFG10KBall
{
  Damage 240
  Speed 200
  Scale 1.5
  Decal BFGLightning
  +EXTREMEDEATH
  States
  {
  Spawn:
    BFS1 AB 2 Bright
    Loop
  Death:
    BFE1 A 8 Bright
	TNT1 A 0 A_Detonate
	BFE1 BBB 2 Bright A_CustomMissile("BFG10KBall4",0,0,random(0,360),CMF_TRACKOWNER,random(-180,180))
	BFE1 B 2 Bright
	BFE1 C 8 Bright
	BFE1 D 8 Bright
	BFE1 E 8 Bright
	BFE1 F 8 Bright
	Stop
	Stop
  }
}


ACTOR BFG10KBall4 : BFG10KBall
{
  Damage 240
  Speed 200
  Scale 1.5
  Decal BFGLightning
  +EXTREMEDEATH
  States
  {
  Spawn:
    BFS1 AB 2 Bright
    Loop
  Death:
    BFE1 A 8 Bright
	TNT1 A 0 A_Detonate
	BFE1 BBB 2 Bright A_CustomMissile("BFG10KBall5",0,0,random(0,360),CMF_TRACKOWNER,random(-180,180))
	BFE1 B 2 Bright
	BFE1 C 8 Bright
	BFE1 D 8 Bright
	BFE1 E 8 Bright
	BFE1 F 8 Bright
	Stop
	Stop
  }
}


ACTOR BFG10KBall5 : BFG10KBall
{
  Damage 240
  Speed 200
  Scale 1.5
  Decal BFGLightning
  +EXTREMEDEATH
  States
  {
  Spawn:
    BFS1 AB 2 Bright
    Loop
  Death:
	TNT1 A 0 A_Jump(8,"Death2")
    BFE1 A 4 Bright
	TNT1 A 0 A_Detonate
	BFE1 B 4 Bright A_CustomMissile("BFG10KBall6",0,0,random(0,360),CMF_TRACKOWNER,random(-180,180))
	BFE1 C 4 Bright
	BFE1 D 4 Bright
	BFE1 E 4 Bright
	BFE1 F 4 Bright
	Stop
  Death2:
    BFE1 A 4 Bright
	TNT1 A 0 A_Detonate
	BFE1 B 4 Bright
	BFE1 C 4 Bright
	BFE1 D 4 Bright
	BFE1 E 4 Bright
	BFE1 F 4 Bright
	Stop
  }
}
  

ACTOR BFG10KBall6 : BFG10KBall
{
  Damage 240
  Speed 200
  Scale 1.5
  Decal BFGLightning
  +EXTREMEDEATH
  States
  {
  Spawn:
    BFS1 AB 2 Bright
    Loop
  Death:
	TNT1 A 0 A_Jump(8,"Death2")
    BFE1 A 4 Bright
	TNT1 A 0 A_Detonate
	BFE1 B 4 Bright A_CustomMissile("BFG10KBall5",0,0,random(0,360),CMF_TRACKOWNER,random(-180,180))
	BFE1 C 4 Bright
	BFE1 D 4 Bright
	BFE1 E 4 Bright
	BFE1 F 4 Bright
	Stop
  Death2:
    BFE1 A 4 Bright
	TNT1 A 0 A_Detonate
	BFE1 B 4 Bright
	BFE1 C 4 Bright
	BFE1 D 4 Bright
	BFE1 E 4 Bright
	BFE1 F 4 Bright
	Stop
  }
}


// Hellstorm

ACTOR HellstormRocket1 : IDMRocket
{
	Speed 25
	Obituary "%o was sent to hell by %k's HellStorm Cannon!"
	DeathSound "weapons/hstx"
	DamageType "Hellstorm"
	-NOTELEPORT
	+EXTREMEDEATH
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Scalevelocity(frandom(0.5,2.0))
    SpawnLoop:
		MISL A 1 Bright A_Weave(random(1,5),random(1,4),random(1,2),random(1,2))
		Loop
	Death:
		MISL B 6 Bright A_Explode(200,128)
		MISL C 5 Bright
		MISL D 4 Bright
		Stop
	}
}

ACTOR HellstormRocket2 : HellstormRocket1
{
	Obituary "%o was sent to hell by %k's HellStorm Cannon!"
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Scalevelocity(frandom(0.5,2.0))
	SpawnLoop:
		MISL A 1 Bright A_Weave(random(-5,-1),random(-4,-1),random(1,2),random(1,2))
		Loop
	}
}

ACTOR HellstormTracer : HellstormRocket1
{
	Speed 15
	Damage 20
	SeeSound "skeleton/attack"
	DeathSound "weapons/hstx"
	DamageType "Hellstorm"
	Obituary "%o was sent to hell by %k's HellStorm Cannon!"
	+SEEKERMISSILE
	-NOTELEPORT
	-ROCKETTRAIL
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Scalevelocity(frandom(0.5,2.0))
    SpawnLoop:
		FATB AB 2 Bright
		Loop
	Death:
		FBXP A 6 Bright
		FBXP B 5 Bright
		FBXP C 4 Bright
		Stop
	}
}

ACTOR HellstormFatShot : FatShot
{
	Speed 25
	Damage 16
	SeeSound "imp/attack"
	DeathSound "imp/shotx"
	DamageType "Hellstorm"
	Obituary "%o was sent to hell by %k's HellStorm Cannon!"
	+EXTREMEDEATH
	-NOTELEPORT
	States
	{
	Spawn:
	  TNT1 A 0
	  TNT1 A 0 A_Scalevelocity(frandom(0.5,2.0))
    SpawnLoop:
	  MANF AB 4 Bright
	  Loop
	Death:
      MISL B 6 Bright
      MISL C 5 Bright
      MISL D 4 Bright
	  Stop
	}
}

ACTOR HellstormSkull : HellstormFatShot
{
	Damage 32
	Seesound "skull/melee"
	Obituary "%o was sent to hell by %k's HellStorm Cannon!"
	States
	{
	Spawn:
	  TNT1 A 0
	  TNT1 A 0 A_Scalevelocity(frandom(0.5,2.0))
	SpawnLoop:
	  SKUL CD 4 Bright
	  Loop
	Death:
	  SKUL F 5 Bright A_Explode(50,128)
	  SKUL GHIJK 5 Bright
	  Stop
	}
}

ACTOR HellstormImpBall : DoomImpBall
{
  DamageType "Hellstorm"
  Speed 15
  Damage 6
  +RANDOMIZE
  +EXTREMEDEATH
  -NOTELEPORT
  SeeSound "imp/attack"
  DeathSound "imp/shotx"
  Obituary "%o was sent to hell by %k's HellStorm Cannon!"
  States
  {
  Spawn:
	TNT1 A 0 A_Scalevelocity(frandom(0.5,2.0))
  SpawnLoop:
    BAL1 AB 4 Bright
    Loop
  Death:
    BAL1 CDE 4 Bright
    Stop
  }
}

ACTOR HellstormCacoBall : CacodemonBall
{
  DamageType "Hellstorm"
  Speed 20
  Damage 10
  SeeSound "caco/attack"
  DeathSound "caco/shotx"
  Obituary "%o was sent to hell by %k's HellStorm Cannon!"
  -NOTELEPORT
  +EXTREMEDEATH
  +RANDOMIZE
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_Scalevelocity(frandom(0.5,2.0))
  SpawnLoop:
    BAL2 AB 4 Bright
    Loop
  Death:
    BAL2 CDE 4 Bright
   Stop
  }
}

ACTOR HellstormBaronBall : Baronball
{
  DamageType "Hellstorm"
  Speed 25
  Damage 16
  SeeSound "baron/attack"
  DeathSound "baron/shotx"
  Decal "BaronScorch"
  Obituary "%o was sent to hell by %k's HellStorm Cannon!"
  -NOTELEPORT
  +EXTREMEDEATH
  +RANDOMIZE
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_Scalevelocity(frandom(0.5,2.0))
  SpawnLoop:
    BAL7 AB 4 Bright
    Loop
  Death:
    BAL7 C 6 Bright
	BAL7 DE 6 Bright
    Stop
  }
}

ACTOR IDMHolyMissile : Holymissile replaces Holymissile
{
	Game Doom
	DamageType "Holy"
	Obituary "%o was cleansed by %k's Wraithverge."
	-NOTELEPORT
	States
	{
	Spawn:
		// Here we go yet again...
		SPIR P 3 Bright
		SPIR P 6 Bright A_SpawnItemEx("HolyMissilePuff")
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,112.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-112.5,CMF_TRACKOWNER)
		SPIR P 6 Bright A_SpawnItemEx("HolyMissilePuff")
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,112.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-112.5,CMF_TRACKOWNER)
		SPIR P 6 Bright A_SpawnItemEx("HolyMissilePuff")
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,112.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-112.5,CMF_TRACKOWNER)
		SPIR P 6 Bright A_SpawnItemEx("HolyMissilePuff")
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,112.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-112.5,CMF_TRACKOWNER)
		SPIR P 6 Bright A_SpawnItemEx("HolyMissilePuff")
	Death:
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,112.5,CMF_TRACKOWNER)
		SPIR P 1 Bright A_CustomMissile("IDMHolySpirit",0,0,-112.5,CMF_TRACKOWNER)
		Stop
	XDeath:
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,112.5,CMF_TRACKOWNER)
		SPIR P 1 Bright A_CustomMissile("IDMHolySpirit",0,0,-112.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,112.5,CMF_TRACKOWNER)
		SPIR P 1 Bright A_CustomMissile("IDMHolySpirit",0,0,-112.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,112.5,CMF_TRACKOWNER)
		SPIR P 1 Bright A_CustomMissile("IDMHolySpirit",0,0,-112.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,-67.5,CMF_TRACKOWNER)
		SPIR P 0 Bright A_CustomMissile("IDMHolySpirit",0,0,112.5,CMF_TRACKOWNER)
		SPIR P 1 Bright A_CustomMissile("IDMHolySpirit",0,0,-112.5,CMF_TRACKOWNER)
		Stop
	}
}

ACTOR IDMHolySpirit : Holyspirit replaces Holyspirit
{
  Health 105
  Speed 16
  Radius 10
  Height 6
  Damage 3
  Projectile
  +RIPPER
  +SEEKERMISSILE
  +SKYEXPLODE
  +NOEXPLODEFLOOR
  +CANBLAST
  +EXTREMEDEATH
  RenderStyle Translucent
  Alpha 0.4
  DeathSound "SpiritDie"
  Obituary "%o was cleansed by %k's Wraithverge."
  DamageType "Holy"
  States
  {
  Spawn:
    SPIR A 1 A_CHolyCheckScream
	SPIR A 1 A_CHolyCheckScream
	SPIR A 1 A_CHolyCheckScream
	SPIR B 1 A_CHolyCheckScream
	SPIR B 1 A_CHolyCheckScream
	SPIR B 1 A_CHolyCheckScream
    Loop
  Death:
    SPIR D 4
    SPIR E 4 A_Scream
    SPIR FGHI 4
    Stop
  }
}

DamageType Holy
{
	NoArmor
	Factor 1.0
}


ACTOR FreezeBall : FastProjectile
{
  Radius 13
  Height 8
  Speed 80
  Damage (40 * random(1,5))
  Projectile
  RenderStyle Add
  Alpha 0.75
  SeeSound "weapons/freezeshot"
  DeathSound "weapons/freezehit"
  Obituary "%o got frozen solid by %k's Freeze Cannon."
  DamageType Ice
  +RANDOMIZE
  States
  {
  Spawn:
    FBLS A 1 bright A_SpawnItem("FreezeBallTrail")
    loop
  Death:
	TNT1 A 0
    FBLS BCDE 4 bright
    stop
  }
}

ACTOR FreezeBallTrail
{
  Radius 13
  Height 8
  Damage 0
  Projectile
  +RANDOMIZE
  RenderStyle Add
  Alpha 0.75
  SeeSound "weapons/iceshot"
  DeathSound "weapons/icehit"
  Obituary "%o got frozen solid by %k's Freeze Cannon."
  States
  {
  Spawn:
    FRTR ABC 6 bright A_FadeOut(0.2)
    loop
  Death:
    FRTR ABC 4 bright
    stop
  }
}

ACTOR UnmakerRay : FastProjectile
{
  Radius 13
  Height 8
  Speed 500
  Damage (200*random(1,5))
  MissileType "UnmakerTrail"
  MissileHeight 7
  RenderStyle Add
  Alpha 0.75
  -NOTELEPORT
  +SKYEXPLODE
  +RIPPER
  +EXTREMEDEATH
  SeeSound "weapons/unmakerfire"
  DeathSound "weapons/unmakerhit"
  Obituary "%o was vaporized by %k's Unmaker."
  States
  {
  Spawn:
	IPLS AB 1 Bright
	Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_Explode(100*random(1,10),64)
	IPLE ABCDE 4 Bright
	Stop
  }
}

ACTOR UnmakerTrail
{
  +NOBLOCKMAP
  +NOGRAVITY
  +SHADOW
  +NOTELEPORT
  +CANNOTPUSH
  +NODAMAGETHRUST
  RenderStyle Translucent
  Alpha 0.75
  States
  {
  Spawn:
    IPLS AAAAA 4 Bright A_Fadeout(0.1)
	PLS2 AAAAA 4 Bright A_Fadeout(0.1)
    Stop
  }
}

ACTOR IDMMageStaffFX2 : MageStaffFX2 replaces MageStaffFX2
{
  Speed 17
  Height 8
  Damage 4
  Projectile
  +SEEKERMISSILE
  +SCREENSEEKER
  +EXTREMEDEATH
  Damagetype "Fire"
  DeathSound "MageStaffExplode"
  Obituary "%o was wiped off the face of the universe by %k's Bloodscourge."
  States
  {
  Spawn:
    MSP2 ABCD 2 Bright A_MStaffTrack
    Loop
  Death:
    MSP2 E 3 Bright A_SetTranslucent(1,1)
    MSP2 F 4 Bright A_Explode(80,192,0)
    MSP2 GH 4 Bright
    MSP2 I 4 Bright
    Stop
  }
}

ACTOR IDMMaceFX1 : MaceFX1 replaces MaceFX1
{
  Speed 24
  Damage 20
  Projectile
  ProjectileKickback 400
  Gravity 0.25
  +THRUGHOST
  -NOTELEPORT
  -BOUNCEONWALLS
  +EXTREMEDEATH
  +NOGRAVITY
  BounceType "Classic"
  BounceCount 2
  BounceSound "weapons/macebounce"
  Deathsound "weapons/macehit"
  SeeSound "weapons/maceshoot"
  DamageType "Mace"
  Obituary "%o was bounced by %k's firemace."
  States
  {
  Spawn:
	FX02 BA 4
	TNT1 A 0 A_ChangeFlag(NOGRAVITY,false)
  SpawnLoop:
	FX02 BA 4
    Loop
  Death:
	TNT1 A 0
	SGRN A 0 A_ScaleVelocity(0)
	SGRN A 0 A_ChangeFlag(NOGRAVITY,true)
	MISL B 0 A_Scream
    FX02 F 4 Bright
    FX02 GHIJ 4 Bright
    Stop
  }
}

ACTOR IDMMaceFX2 : MaceFX2 replaces MaceFX2
{
  Speed 10
  Damage 60
  Gravity 0.25
  DamageType "Mace"
  ProjectileKickback 400
  -NOGRAVITY
  -NOTELEPORT
  +EXTREMEDEATH
  SeeSound ""
}

ACTOR IDMMaceFX3 : MaceFX3 replaces MaceFX3
{
  Speed 7
  Damage 40
  DamageType "Mace"
  ProjectileKickback 400
  -NOGRAVITY
  -NOTELEPORT
  +EXTREMEDEATH
  Gravity 0.25
}

ACTOR IDMMaceFX4 : MaceFX4 replaces MaceFX4
{
  Speed 14
  Damage 180
  Gravity 0.25
  Projectile
  ProjectileKickback 800
  -NOGRAVITY
  +EXTREMEDEATH
  +TELESTOMP
  +THRUGHOST
  -NOTELEPORT
  BounceType "HereticCompat"
  SeeSound ""
  Obituary "$OB_MPPMACE"
}