actor FlamewaveSpawner
{
  Radius 11
  Height 8
  Speed 20
  Damage 0
  PROJECTILE
  Obituary "%o was cremated by %k's flamewave."
  +NOGRAVITY
  +BLOODLESSIMPACT
  +NOTONAUTOMAP
  +NOINTERACTION //Feeling like spawning it through a wall? Lawl.
  States
  {
  Spawn:
	TNT1 A 1 NoDelay A_SpawnItemEx("FlamewaveSpannerRight",0,0,0,20,0,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("FlamewaveSpannerLeft",0,0,0,20,0,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("FlamewavePart",0,0,0,20,0,0,0,SXF_TRANSFERPOINTERS)
	stop
  }
}

ACTOR FlamewaveSpannerLeft
{
  Damage 0
  Speed 20
  +MISSILE
  +STEPMISSILE
  +DROPOFF
  +NOEXPLODEFLOOR
  +RIPPER
  Gravity 0.33
  MaxStepHeight 32
  ReactionTime 8
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_Countdown
	TNT1 A 0 A_SetAngle(Angle - 3.75)
	TNT1 A 0 A_SpawnItemEx("FlamewavePart",0,0,0,20,0,0,0,SXF_TRANSFERPOINTERS)
	Loop
  Death:
	TNT1 A 0
	stop
  }
}

ACTOR FlamewaveSpannerRight : FlamewaveSpannerLeft
{
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_Countdown
	TNT1 A 0 A_SetAngle(Angle + 3.75)
	TNT1 A 0 A_SpawnItemEx("FlamewavePart",0,0,0,20,0,0,0,SXF_TRANSFERPOINTERS)
	Loop
  Death:
	TNT1 A 0
	stop
  }
}

actor SuperFlamewaveSpawner : FlamewaveSpawner
{
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_SpawnItemEx("SuperFlamewaveSpanner",0,0,0,20,20,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("SuperFlamewaveSpanner",0,0,0,20,-20,0,0,SXF_TRANSFERPOINTERS)
	stop
  }
}

ACTOR SuperFlamewaveSpanner : FlamewaveSpannerLeft
{
  ReactionTime 30
  +BOUNCEONWALLS
  WallBounceFactor 1.0
  BounceCount 3
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_Countdown
	TNT1 A random(1,2) A_SpawnItemEx("SuperFlamewavePart",0,0,0,20,0,0,0,SXF_TRANSFERPOINTERS)
	Loop
  Death:
	TNT1 A 0
	stop
  }
}

Actor FlamewavePart
{
	Radius 12
	Height 18
	Damage 0
	Speed 20
	Scale 1.5
 	+MISSILE
	ProjectileKickback 600
 	+STEPMISSILE
 	+DROPOFF
 	+NOEXPLODEFLOOR
  	+RIPPER
	+BLOODLESSIMPACT
	+FORCERADIUSDMG
	+FORCEYBILLBOARD
	DamageType Fire
 	Gravity 0.33
  	MaxStepHeight 32
	Renderstyle Add
	States
	{
		Spawn:
   			FSKL A 0 NoDelay A_PlaySound("Skullfire/Fly",5,0.3,1)
			TNT1 A 0 A_Jump(256,1,2,3,4,5,6,7,8,9,10,11,12,13,14)
		Looplet:
			TNT1 A 0 A_CheckFloor("Watercheck")
			FLME ABCDEFGHIJKLMN 1 Bright A_GiveInventory("FlamewaveCycle")
			Loop
		Watercheck:
			TNT1 A 0 A_JumpIf(CallACS("WaterBollocks") == true, "Death")
			Goto Looplet+2
		Death:
    		TNT1 A 0 A_PlaySound("Skullfire/Hit",5,1.0)
    		TNT1 A 0 A_Explode(25,128,0)
    		TNT1 A 0 A_AlertMonsters
    		TNT1 AAAA 0 A_SpawnItemEx("SkullfireFlameSpawner")
   			TNT1 A 1 A_SpawnItemEx("FlamewaveDrop",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
			stop
	}
}

Actor SuperFlamewavePart : FlamewavePart
{
  WallBounceFactor 1.0
  BounceCount 3
  +BOUNCEONWALLS
  
}

ACTOR FlamewaveCycle : CustomInventory
{
	+INVENTORY.AUTOACTIVATE
	+FORCERADIUSDMG
	Inventory.MaxAmount 0
	DamageType Fire
	States
	{
		Spawn:
			TNT1 A -1
			Stop
		Pickup:
			TNT1 A 0 A_Explode(6,48,0,0,24)
			TNT1 A random(2,3) A_SpawnItemEx("FlamewaveTrail",frandom(-1.0,1.0),frandom(-1.0,1.0),0,0,0,0,0,SXF_CLIENTSIDE,64) //A_SpawnItemEx("FlamewaveFlame",frandom(2.0,-2.0),frandom(2.0,-2.0),frandom(2.0,-2.0),frandom(0.5,1.0),frandom(0.5,1.0),frandom(1.0,3.5),frandom(0.0,360.0),SXF_CLIENTSIDE,128)
			Stop
	}
}

ACTOR FlamewaveDrop : SkullfireDrop
{ 
	Scale 1.5
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SetUserVar("User_BurnCounter", 12)
    TNT1 A 0 A_PlaySound("Skullfire/Fly",5,0.3,1)
	TNT1 A 0 A_Jump(256,4,5,6,7,8,9,10,11,12,13,14,15,16,17)
	Looplet:
	TNT1 A 0 A_CheckFloor("Watercheck")
	TNT1 A 0 A_Jump(128,2)
	TNT1 A 0 A_SetUserVar("User_BurnCounter", User_BurnCounter - 1)
	TNT1 A 0 A_Explode(10,108,0)
	FLME ABCD 1 Bright
	FLME EFG 1 Bright
	TNT1 A 0 A_Explode(10,108,0)
	FLME HIJK 1 Bright
	FLME LMN 1 Bright
	TNT1 A 0 A_JumpIf(User_BurnCounter <= 0, "Death")
	Loop
	Watercheck:
	TNT1 A 0 A_JumpIf(CallACS("WaterBollocks") == true, "Death")
	Goto Looplet+2
	Death:
	FLME A 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.15)
	FLME B 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.15)
	FLME C 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.15)
	FLME D 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.15)
	FLME E 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.15)
	FLME F 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.15)
	FLME G 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.15)
	FLME H 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.15)
	FLME I 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.15)
	FLME J 1 Bright A_FadeOut(0.1)
  	FSKL A 0 A_StopSound(5)
	Stop
	}
}

ACTOR FlamewaveTrail
{
   	+NOTONAUTOMAP
	-NOGRAVITY
	+FORCEYBILLBOARD
	Scale 1.5
	Gravity 0.33
	Renderstyle Add
	States
	{
		Spawn:
			"####" "#" 0 NoDelay A_Jump(256,1,2,3,4,5,6,7,8,9,10,11,12,13,14)
			FLME ABCDEFGHIJKLMN 0
			"####" "#" 0 A_FadeOut(0.1)
			"####" "#" 1 A_SetScale(ScaleX-0.09)
			Loop
	}
}

ACTOR FlamewaveFlame : SkullfireFlame
{ 
	Scale 0.25
}