// --------------------------------------------------------------------------
//
// Immolator
//
// --------------------------------------------------------------------------

ACTOR EriImmolator : HellPlayerWeapon //replaces Pistol
{
	Game Doom
	Scale 0.8
	Weapon.SelectionOrder 1900
	Weapon.AmmoUse1 1
	Weapon.AmmoUse2 6
	Weapon.AmmoGive 0
	Weapon.AmmoType1 "FlameAmmo"
	Weapon.AmmoType2 "FlameAmmo"
	Weapon.SisterWeapon "EriImmolatorPowered"
	Inventory.Pickupmessage "$GOTIMMOLATOR"
	Tag "$TAG_IMMOLATOR"
	+WEAPON.WIMPY_WEAPON
	States
	{
	Ready:
		HIMG AABBCCDDCCBB 1 A_WeaponReady
		Loop
	Deselect:
		HIMG A 0 A_StopSound(CHAN_WEAPON)
	DeselectLoop:
		HIMG AABBCCDDCCBB 1 A_Lower
		Loop
	Select:
		HIMG AABBCCDDCCBB 1 A_Raise
		Wait
	Fire:
		HIMF A 2 Bright A_GunFlash
		HIMF A 0 Bright A_FireCustomMissile("ImmolatorFireball")
		HIMF B 2 Bright A_PlaySound("weapons/immolatorfire", CHAN_WEAPON)
		HIMF CDEFGH 2 Bright
		HIMF IJ 2 Bright A_ReFire
		Goto Ready
	Flash:
		TNT1 A 2 Bright A_Light1
		TNT1 A 2 Bright A_Light2
		TNT1 A 2 Bright A_Light1
		Goto LightDone
	AltFire:
		IMMG A 2 Bright 
		IMMG F 0 A_GunFlash
		IMMG F 0 A_PlayWeaponSound("weapons/bigfir")
		IMMG F 3 Bright
		IMMG G 3 Bright A_FireCustomMissile("FireShot1",0,1,0,0)
		IMMG HIJKLMNOA 3 Bright
		Goto Ready
 	Spawn:
		HEIM A -1
		Stop
	}
}
ACTOR EriImmolatorPowered : EriImmolator
{
	Weapon.SisterWeapon "EriImmolator"
	+WEAPON.POWERED_UP
	States
	{
	Fire:
		HIMF A 2 Bright A_PlaySound("weapons/immolatorpow1", CHAN_BODY)
		HIMF A 0 Bright A_PlaySound("weapons/immolatorpow2", CHAN_WEAPON, 1.0, 1)
	Hold:
		HIMF B 0 Bright A_GunFlash
		HIMF B 2 Bright A_FireCustomMissile("ImmolatorFirestream", 0, 1, 0, -5)
		HIMF CD 2 Bright
		HIMF E 0 Bright A_Refire
		HIMF E 0 Bright A_PlaySound("weapons/immolatorpow3", CHAN_BODY)
		HIMF E 0 Bright A_StopSound(CHAN_WEAPON)
		HIMF EFGHIJ 2 Bright
		Goto Ready
	AltFire:
		IMMG A 2 Bright 
		IMMG F 0 A_GunFlash
		HIMF A 2 Bright A_PlaySound("weapons/immolatorpow1", CHAN_BODY)
		HIMF A 0 Bright A_PlaySound("weapons/immolatorpow2", CHAN_WEAPON, 1.0, 1)
		IMMG F 0 A_PlayWeaponSound("weapons/bigfir")
		IMMG F 3 Bright
		IMMG G 3 Bright A_FireCustomMissile("FireShot1",0,1,0,0)
		IMMG HIJKLMNOA 3 Bright
		Goto Ready
	}
}

ACTOR FireShot1 : FastProjectile 
{
   Radius 3
   Height 3
   Speed 256
   Damage 16
   PROJECTILE
   RENDERSTYLE ADD
   DeathSound "weapons/firex4"
   DamageType fire
   MissileType "Firetrail"
   MissileHeight 3
   +NODAMAGETHRUST
   +THRUGHOST
   +FORCEXYBILLBOARD
   +SEEKERMISSILE
   States
   {
   Spawn:
      NULL A 1 Bright
      Loop
   Death:
      IMFX D 3 Bright A_Explode(5,32,1,0,16)
	  IMFX D 0 Bright A_FireCrackle
	  IMFX E 3 Bright A_Explode(5,32,1,0,16)
	  IMFX E 0 Bright A_Fire
	  IMFX F 3 Bright A_Explode(4,32,1,0,16)
	  IMFX F 0 Bright A_Fire
	  IMFX G 3 Bright A_Explode(3,32,1,0,16)
	  IMFX G 0 Bright A_Fire
	  IMFX H 3 Bright A_Explode(4,32,1,0,16)
	  IMFX H 0 Bright A_Fire
	  IMFX I 3 Bright A_Explode(3,32,1,0,16)
	  IMFX I 0 Bright A_Fire
	  IMFX J 3 Bright A_Explode(4,32,1,0,16)
	  IMFX J 0 Bright A_Fire
	  IMFX K 3 Bright A_Explode(3,24,1,0,12)
	  IMFX K 0 Bright A_Fire
	  IMFX L 3 Bright A_Explode(4,24,1,0,12)
	  IMFX L 0 Bright A_Fire
	  IMFX F 3 Bright A_Explode(3,32,1,0,16)
	  IMFX F 0 Bright A_Fire
	  IMFX G 3 Bright A_Explode(4,32,1,0,16)
	  IMFX G 0 Bright A_Fire
	  IMFX H 3 Bright A_Explode(3,32,1,0,16)
	  IMFX H 0 Bright A_Fire
	  IMFX I 3 Bright A_Explode(4,32,1,0,16)
	  IMFX I 0 Bright A_Fire
	  IMFX J 3 Bright A_Explode(3,32,1,0,16)
	  IMFX J 0 Bright A_Fire
	  IMFX K 3 Bright A_Explode(4,24,1,0,12)
	  IMFX K 0 Bright A_Fire
	  IMFX L 3 Bright A_Explode(3,24,1,0,12)
	  IMFX L 0 Bright A_Fire
	  IMFX F 3 Bright A_Explode(4,32,1,0,16)
	  IMFX F 0 Bright A_Fire
	  IMFX G 3 Bright A_Explode(3,32,1,0,16)
	  IMFX G 0 Bright A_Fire
	  IMFX H 3 Bright A_Explode(4,32,1,0,16)
	  IMFX H 0 Bright A_Fire
	  IMFX I 3 Bright A_Explode(3,32,1,0,16)
	  IMFX I 0 Bright A_Fire
	  IMFX J 3 Bright A_Explode(4,32,1,0,16)
	  IMFX J 0 Bright A_Fire
	  IMFX K 3 Bright A_Explode(3,24,1,0,12)
	  IMFX K 0 Bright A_Fire
	  IMFX L 3 Bright A_Explode(4,24,1,0,12)
	  IMFX L 0 Bright A_Fire
	  IMFX M 3 Bright A_Explode(2,24,1,0,12)
	  IMFX M 0 Bright A_Fire
	  IMFX N 3 Bright A_Explode(2,24,1,0,12)
	  IMFX N 0 Bright A_Fire
	  IMFX O 3 Bright A_Explode(2,24,1,0,12)
	  IMFX O 0 Bright A_Fire
	  IMFX P 3 Bright A_Explode(2,24,1,0,12)
	  IMFX P 0 Bright A_Fire
      stop
   }
}

ACTOR FireShot2 : PlasmaBall
{   
   Radius 3
   Height 6
   Damage 1
   Speed 28
   DamageType fire
   +THRUGHOST
   +FORCEXYBILLBOARD
   SeeSound "weapons/bigbrn"
   States
   {
   Spawn:
      IMFX QRSTUVW 3 Bright A_Explode(1,32,0,0,32)
      stop
   Death:
      IMFX STUVW 3 Bright A_Explode(1,32,0,0,32)
      stop
   }
}

ACTOR Firetrail : CFlameFloor 
{   
   States
   {
   Spawn:
      IMFX ABC 5 bright 
	  stop
   }
}

ACTOR ImmolatorFireball
{
	Height 13
	Radius 8
    Speed 20
    Damage (5 * random(1,3))
    Alpha 0.85
    Projectile
	Renderstyle Add
	+SEEKERMISSILE
	+PAINLESS
	+FORCERADIUSDMG
    Decal "PlasmaScorchLower"
	Obituary "$OB_MPIMMOLATOR"
	DamageType "FireBurn"
	Args 2
    States
    {
    Spawn:
        HFBL A 1 Bright A_SpawnItemEx("ImmolatorTrail",0,0,0,0,frandom(-0.05,0.25),frandom(-0.25,0.25),0,SXF_CLIENTSIDE,0)
        Loop
    Death:
		HPUF A 3 Bright A_PlaySound("weapons/immolatorout", CHAN_VOICE)
		HPUF BCDEFG 3 Bright
        Stop
	XDeath:
		HFLM A 0 Bright A_PlaySound("weapons/immolatorhit", CHAN_VOICE)
		HFLM A 0 Bright A_SeekerMissile(90,90,SMF_LOOK,255,0)
		HFLM A 0 Bright A_Stop
		HFLM A 0 Bright A_Warp(AAPTR_TRACER, 8, 0, 24, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE) HFLM A 3 Bright A_PlaySound("weapons/immolatorburn", CHAN_WEAPON, 0.75, 1)
		HFLM B 0 Bright A_Warp(AAPTR_TRACER, 8, 0, 24, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE) HFLM B 3 Bright A_SetScale(0.5)
	Burning:
		HFLM C 0 Bright A_Warp(AAPTR_TRACER, 8, 0, 24, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE) HFLM C 3 Bright A_Explode(2, 32, XF_HURTSOURCE, 0, 16)
		HFLM D 0 Bright A_Warp(AAPTR_TRACER, 8, 0, 24, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE) HFLM D 3 Bright A_Explode(2, 32, XF_HURTSOURCE, 0, 16)
		HFLM E 0 Bright A_Warp(AAPTR_TRACER, 8, 0, 24, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE) HFLM E 3 Bright A_Explode(2, 32, XF_HURTSOURCE, 0, 16)
		HFLM F 0 Bright A_Warp(AAPTR_TRACER, 8, 0, 24, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE) HFLM F 3 Bright A_Explode(2, 32, XF_HURTSOURCE, 0, 16)
		HFLM G 0 Bright A_Warp(AAPTR_TRACER, 8, 0, 24, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE) HFLM G 3 Bright A_Explode(2, 32, XF_HURTSOURCE, 0, 16)
		HFLM H 0 Bright A_Warp(AAPTR_TRACER, 8, 0, 24, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE) HFLM H 3 Bright A_Explode(2, 32, XF_HURTSOURCE, 0, 16)
		HFLM I 0 Bright A_Warp(AAPTR_TRACER, 8, 0, 24, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE) HFLM I 3 Bright A_Explode(2, 32, XF_HURTSOURCE, 0, 16)
		HFLM I 0 Bright A_CountdownArg (0, "Burnout")
		Loop
	Burnout:
		HFLM J 3 Bright A_PlaySound("weapons/immolatorout", CHAN_WEAPON)
		HFLM KLM 3 Bright
		Stop
    }
}
ACTOR ImmolatorFirestream : ImmolatorFireball
{
	Obituary "$OB_MPIMMOLATORPOW"
	Scale 0.5
	States
	{
	Spawn:
		HFLM AAABBBCCCIIIJJJKKKLLLMMM 1 Bright A_SpawnItemEx("ImmolatorTrail2",0,0,0,0,frandom(-0.05,0.25),frandom(-0.25,0.25),0,SXF_CLIENTSIDE,0)
		Stop
    Death:
		HFLM K 3 Bright A_PlaySound("weapons/immolatorout", CHAN_VOICE)
		HFLM LM 3 Bright
        Stop
	}
}

ACTOR ImmolatorTrail : EriTrail
{ 
	Renderstyle Add
	Alpha 0.85
    Scale 0.75
	States
	{
	Spawn:
		HFBL ABC 2 Bright
		Stop
	}
}

ACTOR ImmolatorTrail2 : ImmolatorTrail
{
	Alpha 0.5
	Scale 0.5
	States
	{
	Spawn:
		HFLM KLM 2 Bright
		Stop
	}
}