actor SkullfireProjectile : FastProjectile
{
  Radius 12
  Height 14
  MissileHeight 14
  Speed 40
  Damage 8
  Projectile
  +NOGRAVITY
  +DONTSPLASH
  +EXPLODEONWATER
  +BLOODLESSIMPACT
  DamageType Fire3
  DeathSound ""
  ProjectileKickBack 5
  Obituary "%o was burned down by %k's skullfire missile."
  Scale 0.5
  MissileType "SkullfireTrailSpawner1"
  States
  {
  Spawn:
    FSKL AA 0 //ThrustThingZ(0,20,0,1)
    FSKL A 0 A_PlaySound("Skullfire/Fly",5,0.5,1)
  Looplet:
    FSKP ABC 1 Bright A_SpawnItemEx("SkullfireEmber",random(10,-10),random(10,-10),random(10,-10),frandom(1.2,1.5),frandom(1.2,1.5),frandom(1.4,2.1),random(0,359),SXF_CLIENTSIDE) //ThrustThingZ(0,random(-7,-9),0,1)
    Loop
  Death:
    TNT1 A 0 A_PlaySound("Skullfire/Hit",4,1.0)
    TNT1 A 0 A_Explode(35,108)
    TNT1 A 0 A_AlertMonsters
    TNT1 AAAAAAA 0 A_SpawnItemEx("SkullfireFlameSpawner")
    TNT1 A 0 A_SpawnItemEx("SkullfireDrop",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
    TNT1 A 25
    stop
  }
}

ACTOR SkullfireFlameSpawner
{ 
    +NOGRAVITY
    +NOINTERACTION
    +DONTSPLASH
    +NOTONAUTOMAP
	ReactionTime 20
	States
	{
	Spawn:
	Looplet:
	TNT1 AA 0 A_Countdown
	TNT1 A random(1,2) A_SpawnItemEx("SkullfireFlame",random(32,-32),random(32,-32),random(32,-32),frandom(0.5,2.0),frandom(1.5,2.0),frandom(1.5,2.5),random(0,359),SXF_CLIENTSIDE,20)
	Loop
	Death:
	Stop
	}
}

ACTOR SkullfireFlame
{ 
    +NOGRAVITY
    +NOINTERACTION
    +DONTSPLASH
    +NOTONAUTOMAP
	Renderstyle Add
	Alpha 0.99
	Scale 0.7
	States
	{
	Spawn:
	TNT1 A 0
	FRFX FGHIJKLMNOP random(1,2) Bright A_FadeOut(0.05)
	Stop
	}
}

ACTOR SkullfireEmber : SkullfireFlame
{ 
    +NOGRAVITY
    +NOINTERACTION
    +DONTSPLASH
    +NOTONAUTOMAP
	Renderstyle Add
	Alpha 0.99
	Scale 0
	States
	{
	Spawn:
	TNT1 AA 0 A_SetScale(ScaleX + frandom(0.05,0.1))
	FRFX FGHIJKLMNOP random(1,3) Bright A_FadeOut(frandom(0.02,0.1))
	Stop
	}
}

ACTOR SkullfireDrop
{ 
	Scale 1.0
	Renderstyle Add
	+DONTSPLASH
	-NOGRAVITY
	-NOINTERACTION
	+BLOODLESSIMPACT
	//+MISSILE
	Gravity 0.25
	Var Int User_BurnCounter;
	DamageType Fire33
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SetUserVar("User_BurnCounter", 12)
   	 FSKL A 0 A_PlaySound("Skullfire/Fly",5,0.4,1)
	Looplet:
	TNT1 A 0 A_CheckFloor("Watercheck")
	TNT1 A 0 A_Jump(128,2)
	TNT1 A 0 A_SetUserVar("User_BurnCounter", User_BurnCounter - 1)
	FLME ABCDEFGHIJKLMN 1 Bright A_Explode(1,64,0,0,64)
	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.1)
	FLME B 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.1)
	FLME C 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.1)
	FLME D 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.1)
	FLME E 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.1)
	FLME F 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.1)
	FLME G 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.1)
	FLME H 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.1)
	FLME I 1 Bright A_FadeOut(0.1)
	FLME A 0 A_SetScale(ScaleX-0.1)
	FLME J 1 Bright A_FadeOut(0.1)
  	FSKL A 0 A_StopSound(5)
	Stop
	}
}

ACTOR SkullfireTrailSpawner1
{ 
    +NOGRAVITY
    +NOINTERACTION
    +NOTONAUTOMAP
    States
    {
    Spawn:
      TNT1 A 0
      TNT1 A 1 A_SpawnItemEx("SkullfireTrail",-23+random(5,-5),random(5,-5),0,0,0,0,0,SXF_CLIENTSIDE,96)
      Stop
    }
}

ACTOR SkullfireTrail
{ 
    Scale 0.4
    Alpha 0.99
    Renderstyle Add
    +NOGRAVITY
    +NOINTERACTION
    +DONTSPLASH
    +NOTONAUTOMAP
    States
    {
    Spawn:
	  FRFX I 0
	  FRFX I 0 A_JumpIf(ScaleX<=0.0,"NULL")
	  FRFX I 0 A_SetScale(ScaleX-0.02,ScaleY-0.02)
	  FRFX I 1 Bright A_FadeOut(0.05)
	  Loop
    }
}

//Tomed

actor SkullfireTomedProjectile : FastProjectile
{
  Radius 12
  Height 14
  MissileHeight 14
  Speed 40
  Damage 10
  Projectile
  +NOGRAVITY
  +DONTSPLASH
  +EXPLODEONWATER
  +BLOODLESSIMPACT
  DamageType Fire3
  DeathSound ""
  ProjectileKickBack 5
  Obituary "%o got effin' burn'n'exploded by %k's volcanic skullfire blast."
  Scale 0.7
  MissileType "SkullfireTrailSpawner2"
  States
  {
  Spawn:
    FSKP AA 0 ThrustThingZ(0,20,0,1)
  Looplet:
    FSKP A 0 A_PlaySound("Skullfire/Fly",5,0.5,1)
    FSKP A 1 Bright ThrustThingZ(0,random(-5,-7),0,1)
	FSKP AA 0 A_SpawnItemEx("SkullfireEmber",random(10,-10),random(10,-10),random(10,-10),frandom(1.2,1.4),frandom(1.2,1.4),frandom(1.4,1.8),random(0,359),SXF_CLIENTSIDE)
    FSKP B 1 Bright ThrustThingZ(0,random(-5,-7),0,1)
	FSKP BB 0 A_SpawnItemEx("SkullfireEmber",random(10,-10),random(10,-10),random(10,-10),frandom(1.2,1.4),frandom(1.2,1.4),frandom(1.4,1.8),random(0,359),SXF_CLIENTSIDE)
	FSKP C 1 Bright ThrustThingZ(0,random(-5,-7),0,1)
	FSKP CC 0 A_SpawnItemEx("SkullfireEmber",random(10,-10),random(10,-10),random(10,-10),frandom(1.2,1.4),frandom(1.2,1.4),frandom(1.4,1.8),random(0,359),SXF_CLIENTSIDE)
	Loop
  Death:
	TNT1 A 0 A_JumpIf(CallACS("WaterBollocks") == true, "XDeath")
	TNT1 A 0 A_CheckFloor("DropMine")
    Goto XDeath
  XDeath:
    TNT1 A 0 A_Quake (5, 19, 0, 256, none)
    TNT1 A 0 A_Quake (2, 19, 0, 384, none)
    TNT1 A 0 A_PlaySound("Skullchunk/Impact",4,1.0)
    TNT1 A 0 A_PlaySound("Skullfire/Boom",5,0.8)
    TNT1 A 0 A_Explode(60,128)
    TNT1 A 0 A_AlertMonsters
    TNT1 AAAAAAA 0 A_SpawnItemEx("SkullfireFlameSpawner")
    TNT1 AAAAAA 0 A_SpawnItemEx("SkullfireChunkSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
    TNT1 A 0 A_SpawnItemEx("SkullfireDrop",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
    TNT1 A 25
    stop
  DropMine:
    TNT1 A 0 A_Quake (3, 16, 0, 256, none)
    TNT1 A 0 A_Quake (1, 16, 0, 384, none)
    TNT1 A 0 A_PlaySound("Skullfire/Hit",4,1.0)
    TNT1 A 0 A_Explode(40,128)
    TNT1 AAAA 0 A_SpawnItemEx("SkullfireFlameSpawner")
	TNT1 A 25 A_SpawnItemEx("FireMine",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Stop
  }
}

ACTOR SkullfireChunkSpawner
{ 
    +NOGRAVITY
    +NOINTERACTION
    +DONTSPLASH
	ReactionTime 7
	States
	{
	Spawn:
	TNT1 AA 0 A_Countdown
	TNT1 A random(2,6) A_SpawnItemEx("SkullFireChunk",0,0,0,frandom(5.0,4.0),frandom(3.0,2.0),frandom(14.0,4.0),frandom(0.0,360.0),SXF_TRANSFERPOINTERS)
	Loop
	Death:
	Stop
	}
}

actor SkullfireChunk
{
  Radius 7
  Height 9
  Speed 20
  Damage 7
  Projectile
  -NOGRAVITY
  +DONTSPLASH
  +EXPLODEONWATER
  +BLOODLESSIMPACT
  Gravity 0.75
  DamageType Fire3
  DeathSound ""
  ProjectileKickBack 5
  Obituary "%o got effin' burn'n'exploded by %k's volcanic skullfire blast."
  Scale 0.8
  States
  {
  Spawn:
    FSKL A 0
  Looplet:
    EMBP ABCDE 2 Bright A_SpawnItemEx("SkullfireFlame",random(5,-5),random(5,-5),random(5,-5),frandom(0.5,0.25),frandom(0.25,0.5),frandom(0.25,0.5),frandom(0.0,360.0),SXF_TRANSFERPOINTERS)
    Loop
  Death:
    TNT1 A 0 A_PlaySound("Skullchunk/Impact",4,0.6)
    TNT1 A 0 A_Explode(25,128,0)
    TNT1 A 0 A_AlertMonsters
    //TNT1 A 0 A_SpawnItemEx("SkullfireExplode")
    TNT1 AA 0 A_SpawnItemEx("SkullfireFlameSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
    TNT1 A 0 A_SpawnItemEx("SkullfireDrop",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
    stop
  }
}

ACTOR SkullfireTrailSpawner2
{ 
    +NOGRAVITY
    +NOINTERACTION
    +NOTONAUTOMAP
    States
    {
    Spawn:
      TNT1 A 0
      TNT1 A 1 A_SpawnItemEx("SkullfireTrail",-23+random(5,-5),random(5,-5),0,0,0,0,0,SXF_CLIENTSIDE,0)
      Stop
    }
}

actor FireMine
{
  Radius 6
  Height 6
  Speed 0
  Health 0
  Renderstyle Add
  Mass 999999999
  -NOGRAVITY
  +FRIENDLY
  -SHOOTABLE
  +NOBLOOD
  +DONTFALL
  +NOICEDEATH
  +DONTRIP
  +BLOODLESSIMPACT
  meleerange 96
  Obituary "%o was unfortunate enough to stumble upon %k's fire mine."
  Scale 0.8
  DamageType Fire3
  Var Int User_Lifespan;
  States
  {
  Spawn:
	TNT1 AA 0 A_SetUserVar("User_Lifespan", 20)
  Looplo:
	TNT1 AA 0 A_PlaySound("Skullfire/Fly",5,0.8,1)
	TNT1 A 0 A_PlaySound("FireMine/Loop",6,0.8,1)
	TNT1 A 0 A_SetUserVar("User_Lifespan", User_Lifespan - 1)
	FMIN BCDEFGHIJKLMNOPQRSTUVWXY 1 Bright A_LookEx(LOF_NOSOUNDCHECK,0,96,0,0,"Death")
	TNT1 A 0 A_JumpIf(User_Lifespan <= 0, "Death")
	loop
  See:
  Melee:
	GMIN A 0 A_Die
  Death:
	TNT1 A 0 A_StopSound(5)
	TNT1 A 0 A_StopSound(6)
    TNT1 A 0 A_Quake (5, 19, 0, 256, none)
    TNT1 A 0 A_Quake (2, 19, 0, 384, none)
    TNT1 A 0 A_PlaySound("Skullchunk/Impact",4,1.0)
    TNT1 A 0 A_PlaySound("Skullfire/Boom",5,0.8)
    TNT1 A 0 A_Explode(100,128,0)
    TNT1 A 0 A_AlertMonsters
    TNT1 AAAAAAA 0 A_SpawnItemEx("SkullfireFlameSpawner")
    TNT1 AAAAAA 0 A_SpawnItemEx("SkullfireChunkSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
    TNT1 A 0 A_SpawnItemEx("SkullfireDrop",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
    TNT1 A 25
    stop
  }
}
