// --------------------------------------------------------------------------
//
// Mauler
//
// --------------------------------------------------------------------------

ACTOR EriMauler : HellPlayerWeapon //replaces Chaingun
{
	Game Doom
	Scale 0.8
	Weapon.SelectionOrder 400
	Weapon.AmmoUse 8
	Weapon.AmmoGive 20
	Weapon.AmmoType "NailAmmo"
	Weapon.SisterWeapon "EriMaulerPowered"
	Inventory.PickupMessage "$GOTMAULER"
	Tag "$TAG_MAULER"
	States
	{
	Ready:
		HMAG A 1 A_WeaponReady
		Loop
	Deselect:
		HMAG A 1 A_Lower
		Loop
	Select:
		HMAG A 1 A_Raise
		Loop
	Fire:
		HMAF A 3 Bright A_GunFlash
		HMAF B 0 Bright A_PlaySound("weapons/maulerfire", CHAN_WEAPON)
		HMAF B 0 Bright A_PlaySound("weapons/maulerfire1", CHAN_AUTO)
		HMAF B 0 Bright A_FireCustomMissile( "MicroNail", frandom( -8.0,-4.0), 0,-4.5, 3, 1, frandom( 0.0, 2.0) )
		HMAF B 0 Bright A_FireCustomMissile( "MicroNail", frandom( -4.0, 0.0), 0,-1.5, 3, 1, frandom( 0.0, 2.0) )
		HMAF B 0 Bright A_FireCustomMissile( "MicroNail", frandom(  0.0, 4.0), 0, 1.5, 3, 1, frandom( 0.0, 2.0) )
		HMAF B 0 Bright A_FireCustomMissile( "MicroNail", frandom(  4.0, 8.0), 0, 4.5, 3, 1, frandom( 0.0, 2.0) )
		HMAF B 0 Bright A_FireCustomMissile("MaulerNail", frandom(-12.0,-6.0), 0,-6.0, 0, 1, frandom(-0.5, 0.5) )
		HMAF B 0 Bright A_FireCustomMissile("MaulerNail", frandom( -6.0,-2.0), 0,-3.0, 0, 1, frandom(-0.5, 0.5) )
		HMAF B 0 Bright A_FireCustomMissile("MaulerNail", frandom( -2.0, 2.0), 0, 0.0, 0, 1, frandom(-0.5, 0.5) )
		HMAF B 0 Bright A_FireCustomMissile("MaulerNail", frandom(  2.0, 6.0), 0, 3.0, 0, 1, frandom(-0.5, 0.5) )
		HMAF B 0 Bright A_FireCustomMissile("MaulerNail", frandom(  6.0,12.0), 0, 6.0, 0, 1, frandom(-0.5, 0.5) )
		HMAF B 0 Bright A_FireCustomMissile( "MicroNail", frandom( -8.0,-4.0), 0,-4.5,-3, 1, frandom( 0.0,-2.0) )
		HMAF B 0 Bright A_FireCustomMissile( "MicroNail", frandom( -4.0, 0.0), 0,-1.5,-3, 1, frandom( 0.0,-2.0) )
		HMAF B 0 Bright A_FireCustomMissile( "MicroNail", frandom(  0.0, 4.0), 0, 1.5,-3, 1, frandom( 0.0,-2.0) )
		HMAF B 3 Bright A_FireCustomMissile( "MicroNail", frandom(  4.0, 8.0), 1, 4.5,-3, 1, frandom( 0.0,-2.0) )
		HMAF C 3 Bright
		HMAF D 3
		HMAF E 3 A_PlaySound("weapons/maulersteam", CHAN_AUTO)
		HMAF FGHI 3 
		HMAG A 7
		Goto Ready
	AltFire:
      MAUG L 3 Bright A_GunFlash
		HMAF B 0 Bright A_PlaySound("weapons/maulerfire", CHAN_WEAPON)
		HMAF B 0 Bright A_PlaySound("weapons/maulerfire1", CHAN_AUTO)
		HMAF K 0 Bright A_PlaySound("weapons/maulerpowfire", CHAN_AUTO)
	  MAUG M 3 Bright A_PlayWeaponSound("weapons/blastf")
	  MAUG M 0 Bright A_FireCustomMissile("MaulerShrapnel1",Frandom(-7,7),1,0,0,0,Frandom(-4,7))
      MAUG MMMMMMMMMMMMMMMMMMM 0 Bright A_FireCustomMissile("MaulerShrapnel1",Frandom(-7,7),0,0,0,0,Frandom(-4,7))
	  MAUG NOP 3 Bright
	  MAUG A 12
      MAUG A 0 A_ReFire
      Goto Ready
	Flash:
		TNT1 A 3 Bright A_Light1
		TNT1 A 3 Bright A_Light2
		TNT1 A 3 Bright A_Light1
		Goto LightDone
	Spawn:
		HEMA A -1
		Stop
	}
}
ACTOR EriMaulerPowered : EriMauler
{
	Weapon.SisterWeapon "EriMauler"
	+WEAPON.POWERED_UP
	States
	{
	Fire:
		HMAF J 3 Bright A_GunFlash
		HMAF K 0 Bright A_PlaySound("weapons/maulerfire", CHAN_WEAPON)
		HMAF K 0 Bright A_PlaySound("weapons/maulerpowfire", CHAN_AUTO)
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom( -8.0,-4.0), 0,-4.5, 3, 1, frandom( 0.0, 2.0) )
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom( -4.0, 0.0), 0,-1.5, 3, 1, frandom( 0.0, 2.0) )
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom(  0.0, 4.0), 0, 1.5, 3, 1, frandom( 0.0, 2.0) )
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom(  4.0, 8.0), 0, 4.5, 3, 1, frandom( 0.0, 2.0) )
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom(-12.0,-6.0), 0,-6.0, 0, 1, frandom(-0.5, 0.5) )
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom( -6.0,-2.0), 0,-3.0, 0, 1, frandom(-0.5, 0.5) )
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom( -2.0, 2.0), 0, 0.0, 0, 1, frandom(-0.5, 0.5) )
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom(  2.0, 6.0), 0, 3.0, 0, 1, frandom(-0.5, 0.5) )
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom(  6.0,12.0), 0, 6.0, 0, 1, frandom(-0.5, 0.5) )
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom( -8.0,-4.0), 0,-4.5,-3, 1, frandom( 0.0,-2.0) )
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom( -4.0, 0.0), 0,-1.5,-3, 1, frandom( 0.0,-2.0) )
		HMAF K 0 Bright A_FireCustomMissile("MaulerPowBomb", frandom(  0.0, 4.0), 0, 1.5,-3, 1, frandom( 0.0,-2.0) )
		HMAF K 3 Bright A_FireCustomMissile("MaulerPowBomb", frandom(  4.0, 8.0), 1, 4.5,-3, 1, frandom( 0.0,-2.0) )
		HMAF L 3 Bright
		HMAF M 3
		HMAF N 3 A_PlaySound("weapons/maulersteam", CHAN_AUTO)
		HMAF OGHI 3 
		HMAG A 4
		Goto Ready
	AltFire:
      MAUG L 3 Bright A_GunFlash
		HMAF B 0 Bright A_PlaySound("weapons/maulerfire", CHAN_WEAPON)
		HMAF B 0 Bright A_PlaySound("weapons/maulerfire1", CHAN_AUTO)
		HMAF K 0 Bright A_PlaySound("weapons/maulerpowfire", CHAN_AUTO)
	  MAUG M 3 Bright A_PlayWeaponSound("weapons/blastf")
	  MAUG M 0 Bright A_FireCustomMissile("MaulerShrapnel1",Frandom(-7,7),1,0,0,0,Frandom(-4,7))
      MAUG MMMMMMMMMMMMMMMMMMM 0 Bright A_FireCustomMissile("MaulerShrapnel1",Frandom(-7,7),0,0,0,0,Frandom(-4,7))
	  MAUG NOP 3 Bright
	  MAUG A 12
      MAUG A 0 A_ReFire
      Goto Ready
	}
}

ACTOR MaulerNail : QNail
{
	Obituary "$OB_MPMAULER"
}
ACTOR MicroNail : Nail
{
	Damage 2
	Scale 0.5
	SeeSound ""
	Obituary "$OB_MPMAULER"
	MissileType "MicroNailTrail"
	States
	{
	XDeath:
		TNT1 A 0 A_PlaySound("weapons/nailgunblood")
	SpawnSubNail:
		TNT1 A 1 A_SpawnItemEx("SubMicroNail",0,0,0,user_xvel,user_yvel,user_zvel,angle,SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM | SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
		Stop
	}
}
ACTOR SubMicroNail : SubNail
{
	Damage 2
	Scale 0.5
	Obituary "$OB_MPMAULER"
	MissileType "MicroNailTrail"
}

ACTOR MicroNailTrail : NailTrail
{ 
	Scale 0.33
}

ACTOR MaulerPowBomb : FastProjectile
{
	Radius 4
	Height 8
	Speed 40
	Damage 5
	Projectile
	+FORCERADIUSDMG
	+BLOODSPLATTER
	Scale 0.75
	Obituary "$OB_MPMAULERPOW"
	Decal "PlasmaScorchLower"
	DamageType "Explosive"
	States
	{
	Spawn:
		MPOW A 0
		MPOW A 0 A_Jump(256, 1, 2, 3, 4)
	Fly:
		MPOW A 1 Bright A_SpawnItemEx("MaulerPowTrail1", 0, 0, 0, 0, -1, 0, SXF_CLIENTSIDE)
		MPOW A 1 Bright A_SpawnItemEx("MaulerPowTrail2", 0, 0, 0, 0, -1, 0, SXF_CLIENTSIDE)
		MPOW A 1 Bright A_SpawnItemEx("MaulerPowTrail3", 0, 0, 0, 0, -1, 0, SXF_CLIENTSIDE)
		MPOW A 1 Bright A_SpawnItemEx("MaulerPowTrail4", 0, 0, 0, 0, -1, 0, SXF_CLIENTSIDE)
		Loop
	Death:
		MPOW B 0 Bright A_SetTranslucent(1.0, 1)
		MPOW B 3 Bright A_PlaySound("weapons/maulerpowhit")
		MPOW C 3 Bright A_Explode(10, 32, 1, 0, 32)
		MPOW DEF 3 Bright
		Stop
	}
}
ACTOR MaulerPowTrail1 : EriTrail
{ 
	Alpha 0.75
	Scale 0.75
	RenderStyle Add
	States
	{
	Spawn:
		MPT1 A 0
		Goto Fade
	Fade:
		"####" IABCDE 1 Bright
		Stop
	}
}
ACTOR MaulerPowTrail2 : MaulerPowTrail1
{
	States
	{
	Spawn:
		MPT2 A 0
		Goto Fade
	}
}
ACTOR MaulerPowTrail3 : MaulerPowTrail1
{
	States
	{
	Spawn:
		MPT3 A 0
		Goto Fade
	}
}
ACTOR MaulerPowTrail4 : MaulerPowTrail1
{
	States
	{
	Spawn:
		MPT4 A 0
		Goto Fade
	}
}


ACTOR MaulerShrapnel1 : NailShot1
{
   Radius 4
   Height 8 
   Damage 2
   Damagetype ripper
   BounceType "Hexen"
   BounceFactor 1.0
   WallBounceFactor 1.0
   BounceCount 5
   DeathSound "none"
   BounceSound "weapons/rico"
   +RIPPER
   +NOBOSSRIP
   +THRUGHOST
   +FORCEXYBILLBOARD
   States
   {
   Spawn:
      MFRG A 0
      MFRG ABCDEFGH 1 Bright
	  MFRG I 1 Bright A_LowGravity
	  MFRG JKLMNOPQRST 1 Bright 
	  stop
   }
}

ACTOR MaulerShrapnel2 : MaulerShrapnel1
{
   Damage 4
   States
   {
   Spawn:
      FRG2 A 0
      FRG2 ABCDEFGH 1 Bright
	  FRG2 I 1 Bright A_LowGravity
	  FRG2 JKLMNOPQRST 1 Bright 
	  stop
   }
}

ACTOR MaulerFrag : MaulerShrapnel1
{
   Radius 3
   Height 6 
   Damage 1
   Obituary "%o couldn't dodge by %k's shrapnel."
   States
   {
   Spawn:
      NFRG AAAAAAA 2 bright A_SpawnItemEx("NailPuff",0,0,0,0,0,0,0,8)
	  NFRG BBBBBBB 2 bright A_SpawnItemEx("NailPuff",0,0,0,0,0,0,0,8)
	  NFRG CCCCCCC 2 bright A_SpawnItemEx("NailPuff",0,0,0,0,0,0,0,8)
	  NFRG DDDDDDD 2 bright A_SpawnItemEx("NailPuff",0,0,0,0,0,0,0,8)
	  NFRG EEEEEEE 2 bright A_SpawnItemEx("NailPuff",0,0,0,0,0,0,0,8)
      stop
   Death:
      NFRG FGH 2 bright
      stop
   Xdeath:
      stop
   }
}

ACTOR MaulerNade : Rocket
{
   Radius 8
   Height 16
   Speed 28
   BounceType "Hexen"
   BounceFactor 0.75
   WallBounceFactor 0.75
   BounceCount 5
   DeathSound "weapons/blastx"
   Bouncesound "weapons/bounc1"
   Obituary "%o was 'naded by %k."
   +DONTFALL
   +THRUGHOST
   +FORCEXYBILLBOARD   
   +EXPLODEONWATER
   +LOWGRAVITY
   +GRENADETRAIL
   -NOGRAVITY
   -ROCKETTRAIL
   -DEHEXPLOSION
   States
   {
   Spawn:
      MNAD A 1 Bright
      loop
   Death:
      NADE E 3 Bright A_SetTranslucent (0.85,1)
	  NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),0,0,0)
      NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),30,0,0)
      NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),60,0,0)
      NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),90,0,0)
      NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),120,0,0)
      NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),150,0,0)
	  NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),180,0,0)
      NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),210,0,0)
      NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),240,0,0)
      NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),270,0,0)
      NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),300,0,0)
      NADE EE 0 Bright A_SpawnItemEx("MaulerFrag",0,0,0,40,0,Frandom(-30,30),330,0,0)
	  NADE F 3 Bright A_Explode(96,96)
      NADE GHIJ 3 Bright 
      stop
   }
}

ACTOR MaulerMissile : Rocket
{
   Radius 8
   Height 16
   Speed 20
   Damage 10
   BounceType "Hexen"
   BounceFactor 1.0
   WallBounceFactor 1.0
   BounceCount 6
   DeathSound "weapons/blastx"
   Bouncesound "weapons/bounc1"
   Obituary "%o was 'naded by %k."
   +THRUGHOST
   +FORCEXYBILLBOARD   
   +EXPLODEONWATER   
   +GRENADETRAIL
   +SEEKERMISSILE
   -ROCKETTRAIL
   -DEHEXPLOSION
   +USEBOUNCESTATE
   States
   {
   Spawn:
      MMIS A 1 Bright
      loop
   Fly:
      MMIS A 1 Bright A_SeekerMissile(0,0,SMF_LOOK)
      loop
   Bounce:
      MMIS A 1 Bright
      MMIS A 0 Bright A_SeekerMissile(360,360,SMF_LOOK)
	  goto Fly
   Death:
      MMIS B 3 Bright A_SetTranslucent(0.85,1)
	  MMIS C 3 Bright A_Explode(64,64)
      MMIS DEF 3 Bright 
      stop
   }
}

ACTOR NailPuff
{   
   Radius 0
   Height 1
   +NOGRAVITY
   +NOBLOCKMAP
   +FORCEXYBILLBOARD
   ALPHA 0.85
   States
   {
   Spawn:
      NULL A 3 Bright
      NFRG EFGH 3 Bright
      Stop 
   }
}