actor SkullfireProjectile// : FastProjectile
{
	Radius 12
	Height 14
	MissileHeight 14
	Speed 20
	Damage 20
	Projectile
	+NOGRAVITY
	+DONTSPLASH
	+EXPLODEONWATER
	+BLOODLESSIMPACT
	+FORCEXYBILLBOARD
	DamageType Fire
	Obituary "%o was melted by %k's skullfire blast."
	Scale 0.25
	//MissileType "SkullfireTrailSpawner"
	States
	{
	Spawn:
		EMBS A 0 NoDelay A_PlaySound("Skullfire/Fly",6,0.8,1)
	Looplet:
		EMBS ABCDEFGH 1 Bright A_SpawnItemEx("SkullfireTrailSpawner",-8,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		Loop
	Death:
		TNT1 A 0 A_PlaySound("Matriarch/Exp",6,1.0)
		TNT1 A 0 A_PlaySound("Skullchunk/Impact",4,1.0)
		TNT1 A 0 A_Explode(100,192,0)
		TNT1 A 0 A_Quake(2,25,0,384,"none")
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_SpawnItemEx("SkullfireSkull",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("SkullfireDrop",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("SkullfireBlaster",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("SkullfireDropper",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		TNT1 A 25
		stop
	}
}

ACTOR SkullfireSkull
{
	Alpha 0.99
	Renderstyle Add
	Scale 0.6
	+NOINTERACTION
	+FORCEXYBILLBOARD
	States
	{
	Spawn:
		YSKX A 0 NoDelay A_SetScale(ScaleX+0.03)
		YSKX A 1 Bright A_FadeOut(frandom(0.018,0.02))
		Loop
	}
}

ACTOR SkullfireTrailSpawner
{
	+NOINTERACTION
	DamageType Fire
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_SpawnItemEx("SkullfireNewFlame",frandom(6.0,-6.0),frandom(6.0,-6.0),frandom(6.0,-6.0),frandom(-2.0,-1.0),frandom(0.3,-0.3),frandom(0.3,-0.3),frandom(157.5,202.5),SXF_TRANSFERPOINTERS)//,192)
		TNT1 A 0 A_SpawnItemEx("SkullfireSmoke",frandom(6.0,-6.0),frandom(6.0,-6.0),frandom(6.0,-6.0),frandom(-2.0,-1.0),frandom(0.3,-0.3),frandom(0.3,-0.3),frandom(157.5,202.5),SXF_CLIENTSIDE)//,192)
		TNT1 A 0 A_Explode((10),48,0)
		Stop
	}
}

ACTOR SkullfireBlaster
{
	+NOINTERACTION
	ReactionTime 6
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_Countdown
		TNT1 A random(1,4) A_SpawnItemEx("SkullfireBlast",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		Loop
	Death:
		TNT1 A 0
		Stop
	}
}

ACTOR SkullfireBlast
{
	+NOINTERACTION
	ReactionTime 20
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_Countdown
		TNT1 A 0 A_SpawnItemEx("SkullfireNewFlame",frandom(5.0,-5.0),frandom(5.0,-5.0),frandom(5.0,-5.0),frandom(2.0,4.0),frandom(2.5,1.0),frandom(2.0,-2.0),frandom(0.0,360.0),SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("SkullfireSmoke",frandom(5.0,-5.0),frandom(5.0,-5.0),frandom(5.0,-5.0),frandom(-2.0,-3.0),frandom(2.0,1.0),frandom(2.0,-2.0),frandom(0.0,360.0),SXF_CLIENTSIDE)
		Loop
	Death:
		TNT1 A 0
		Stop
	}
}

ACTOR SkullfireDropper
{
	+NOINTERACTION
	ReactionTime 3
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_Countdown
		TNT1 A random(1,3) A_SpawnItemEx("SkullfireDrop",frandom(45.0,-45.0),frandom(25.0,-25.0),frandom(15.0,-15.0),0,0,0,0,SXF_TRANSFERPOINTERS,64)
		Loop
	Death:
		TNT1 A 0
		Stop
	}
}

ACTOR SkullfireNewFlame
{
	Radius 12
	Height 16
	Speed 6
	+FORCEXYBILLBOARD
	+THRUACTORS
	PROJECTILE
	Renderstyle Add
	Alpha 0.0
	Scale 0.0
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_ScaleVelocity(frandom(0.9,1.1))
		TNT1 A 0 A_FadeIn(frandom(0.8,0.95))
		TNT1 A 0 A_SetScale(frandom(0.15,0.2))
		FEUR ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 Bright A_GiveInventory("SkullfireCycle")
		Stop
	}
}

ACTOR SkullfireCycle : CustomInventory
{
	+INVENTORY.AUTOACTIVATE
	+FORCERADIUSDMG
	+BLOODLESSIMPACT
	Inventory.MaxAmount 0
	DamageType Fire
	States
	{
	Spawn:
	TNT1 A -1
	Stop
	Pickup:
	//TNT1 A 0 A_Explode((random(2,1)),24,0)
	TNT1 A 0 A_SetScale(ScaleX+(frandom(0.01,0.005)))
	TNT1 A 0 A_FadeOut(frandom(0.02,0.05))
	TNT1 A 0 A_ChangeVelocity(frandom(-0.2, 0.2), frandom(-0.2, 0.2), frandom(-0.2, 0.2), 0)
	Stop
	}
}

ACTOR SkullfireSmoke
{
	Speed 4
	Alpha 0.0
	RenderStyle Translucent
	+FORCEXYBILLBOARD
	+NOINTERACTION
	+NOTONAUTOMAP
	States
	{
		Spawn:
			TNT1 A 12
			TNT1 A 0 A_ScaleVelocity(frandom(0.9,1.1))
		SetupSprite:
			TNT1 A 0 A_Jump(256, "SpriteE", "SpriteF", "SpriteG", "SpriteH",
			"SpriteI", "SpriteJ", "SpriteK", "SpriteL", "SpriteM", "SpriteN",
			"SpriteO", "SpriteP")
		SpriteE:
			DYMI E 0 A_Jump(256, "SetupScale")
		SpriteF:
			DYMI F 0 A_Jump(256, "SetupScale")
		SpriteG:
			DYMI G 0 A_Jump(256, "SetupScale")
		SpriteH:
			DYMI H 0 A_Jump(256, "SetupScale")
		SpriteI:
			DYMI I 0 A_Jump(256, "SetupScale")
		SpriteJ:
			DYMI J 0 A_Jump(256, "SetupScale")
		SpriteK:
			DYMI K 0 A_Jump(256, "SetupScale")
		SpriteL:
			DYMI L 0 A_Jump(256, "SetupScale")
		SpriteM:
			DYMI A 0 A_Jump(256, "SetupScale")
		SpriteN:
			DYMI B 0 A_Jump(256, "SetupScale")
		SpriteO:
			DYMI C 0 A_Jump(256, "SetupScale")
		SpriteP:
			DYMI D 0 A_Jump(256, "SetupScale")
		SetupScale:
			"####" "#" 0 A_SetScale(frandom(0.4, 0.35))
		FadeIn:
			"####" "#" 1 A_FadeIn(FRandom(0.01, 0.03))
			"####" "#" 0 A_ChangeVelocity(frandom(-0.05, 0.05), frandom(-0.05, 0.05), frandom(-0.025, 0.05), 0)
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.005, 0.0025))
			"####" "#" 0 A_JumpIf(Alpha >= 0.35, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 A_FadeOut(FRandom(0.02,0.01))
			"####" "#" 0 A_ChangeVelocity(frandom(-0.05, 0.05), frandom(-0.05, 0.05), frandom(-0.025, 0.05), 0)
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.005, 0.0025))
			Loop
	}
}

//Shared stuff
actor SkullfireChunk
{
  Radius 7
  Height 9
  Speed 20
  Damage 9
  Projectile
  -NOGRAVITY
  +DONTSPLASH
  +EXPLODEONWATER
  +BLOODLESSIMPACT
  +SEEKERMISSILE
  Gravity 0.75
  DamageType Fire
  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:
	TNT1 A 0 A_SeekerMissile(30,30,SMF_LOOK|SMF_CURSPEED|SMF_PRECISE,64,4)
    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(40,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,96)
    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 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 SkullfireDrop
{ 
	Scale 1.0
	Renderstyle Add
	Projectile
	ProjectileKickback 0
	+DONTSPLASH
	-NOGRAVITY
	-NOINTERACTION
	+BLOODLESSIMPACT
	+NOEXPLODEFLOOR
	+FORCERADIUSDMG
	//+MISSILE
	Gravity 0.25
	Var Int User_BurnCounter;
	DamageType Fire
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SetUserVar("User_BurnCounter", 12)
   	 FSKL A 0 A_PlaySound("Skullfire/Fly",5,0.3,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)
	TNT1 A 0 A_Explode(10,52,0)
	FLME ABCD 1 Bright
	FLME EFG 1 Bright
	TNT1 A 0 A_Explode(10,52,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.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
	}
}

//Tomed mode
actor SkullfireTomedProjectile : SkullfireProjectile
{
	States
	{
	Death:
		TNT1 A 0 A_PlaySound("Skullfire/Boom",5,0.8)
		TNT1 A 0 A_Explode(100,192,0)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_SpawnItemEx("SkullfireMoltenSpreader",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)	
		TNT1 A 0 A_SpawnItemEx("SkullfireBlaster",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		TNT1 A 25
		stop
	}
}


actor SkullfireMoltenSpreader
{
  //Radius 12
  //Height 14
  //Damage 0
  //Projectile
  //+NOEXPLODEFLOOR
  //+RIPPER
  //+DONTSPLASH
  //+EXPLODEONWATER
  +NOINTERACTION
  +BLOODLESSIMPACT
  DamageType Fire
  Scale 0.25
  ReactionTime 8
  States
  {
	Spawn:
		EMBS A 0 NoDelay A_PlaySound("LeadBall/Roll",5,0.8,1)
		EMBS ABCDEFGH 2 Bright A_GiveInventory("SkullfireMoltenSeq")
	Looplet:
		EMBS A 0 A_Countdown
		EMBS A 0 A_SetScale(ScaleX + 0.03125)
		TNT1 A 0 A_AlertMonsters
		EMBS ABCDEFGH 2 Bright A_SpawnItemEx("SkullfireMoltenLooplet",0,0,10,0,0,0,0,SXF_TRANSFERPOINTERS)
		Loop
	Death:
		TNT1 A 0 A_PlaySound("Skullfire/Boom",5,0.8)
		TNT1 A 0 A_PlaySound("Matriarch/Exp",6,1.0)
		TNT1 A 0 A_PlaySound("Skullchunk/Impact",4,1.0)
		TNT1 A 0 A_Explode(200,192,0)
		TNT1 A 0 A_Quake(4,35,0,384,"none")
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_SpawnItemEx("SkullfireSkull",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("SkullfireChunker",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("SkullfireSuperBlaster",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		TNT1 A 35
		Stop
  }
}

ACTOR SkullfireChunker
{
	+NOINTERACTION
	ReactionTime 30
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_Countdown
		TNT1 A 0 A_SpawnItemEx("SkullfireChunk",0,0,0,frandom(10.0,4.0),frandom(3.0,2.0),frandom(14.0,4.0),frandom(0.0,360.0),SXF_TRANSFERPOINTERS,20)
		Loop
	Death:
		TNT1 A 0
		Stop
	}
}

ACTOR SkullfireSuperBlaster
{
	+NOINTERACTION
	ReactionTime 8
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_Countdown
		TNT1 A random(1,3) A_SpawnItemEx("SkullfireSuperBlast",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		Loop
	Death:
		TNT1 A 0
		Stop
	}
}

ACTOR SkullfireSuperBlast
{
	+NOINTERACTION
	ReactionTime 25
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_Countdown
		TNT1 A 0 A_SpawnItemEx("SkullfireNewFlame",frandom(5.0,-5.0),frandom(5.0,-5.0),frandom(5.0,-5.0),frandom(2.0,5.0),frandom(3.5,1.0),frandom(2.5,-2.5),frandom(0.0,360.0),SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("SkullfireSmoke",frandom(5.0,-5.0),frandom(5.0,-5.0),frandom(5.0,-5.0),frandom(-2.0,-4.0),frandom(2.0,1.0),frandom(2.5,-2.5),frandom(0.0,360.0),SXF_CLIENTSIDE)
		Loop
	Death:
		TNT1 A 0
		Stop
	}
}

ACTOR SkullfireMoltenSeq : CustomInventory
{
	+Inventory.Autoactivate
	+FORCERADIUSDMG
	Inventory.Amount 0
	States
	{
	Spawn:
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 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,164)
	TNT1 A 0 A_SetScale(ScaleX + 0.03125)
	TNT1 A 0 A_Explode(35,64,0)
	Stop
	}
}

ACTOR SkullfireMoltenLooplet
{ 
    +NOGRAVITY
    +NOINTERACTION
    +FORCERADIUSDMG
	DamageType Fire
	States
	{
	Spawn:
	TNT1 A 0 NoDelay 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,164)
	TNT1 A 0 A_Explode(35,64,0)
	Stop
	}
}