Actor MatchProjectile
{
	Radius 8
	Height 14
	Damage 20
	Speed 40
 	PROJECTILE
	ProjectileKickback 0
	+BLOODLESSIMPACT
	+FORCERADIUSDMG
	-NOGRAVITY
    +SEEKERMISSILE
    +DONTSPLASH
    +DONTFALL
	Gravity 0.2
	DamageType Fire
	var int user_lifespan;
	States
	{
		Spawn:
   			TNT1 AA 0 ThrustThingZ(0,5,0,1)
			TNT1 A 0 A_SetUserVar("user_lifespan",9)
			TNT1 A 0 A_PlaySound("Torchglow/Wall",6,0.2,1)
			TNT1 A 0 A_PlaySound("Matchstick/Fly",5,0.4,1)
		Main:
			TNT1 A 0 A_SetUserVar("user_lifespan",user_lifespan - 1)
			TNT1 A 0 A_JumpIf(user_lifespan <= 0, "Burst")
			TNT1 A 0 A_SpawnItemEx("Match_Flame", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-1.2, -1.0), FRandom(-1.0, 1.0),FRandom(-0.5, 1.0), 0, SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_JumpIf(CallACS("SmokeChoker"),2)
			TNT1 A 0 A_SpawnItemEx("Match_Smoke", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-1.0, -1.0), FRandom(-1.0, 1.0),FRandom(-0.5, 1.0), 0, SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_SpawnItemEx("Match_Flare", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),0, 0, 0, 0, SXF_CLIENTSIDE)
 			TNT1 A 0 A_SpawnItemEx("Match_Glow", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-1.5, -1.0), FRandom(-1.0, 1.0),FRandom(-0.5, 1.0), 0, SXF_CLIENTSIDE, 32)
 			TNT1 A 0 A_SpawnItemEx("Match_Ember", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3), FRandom(-1.0, -3.0), FRandom(-3.0, 3.0),FRandom(2.0, 5.0), 0, SXF_CLIENTSIDE, 204)
			TNT1 A 1
			Loop
		Death:
			TNT1 A 0 A_StopSound(1)
			TNT1 A 0 A_PlaySound("Matchstick/Impact",5,0.6)
			TNT1 AAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Match_Ember", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3), FRandom(-3.0, -5.0), FRandom(-3.0, 3.0),FRandom(2.0, 5.0), 0, SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_Explode(80,32,0)
			TNT1 AAAAAAAAAA 1 A_SpawnItemEx("MatchBurstProjectile_Heavy",random(5,-5),random(5,-5),random(5,-5),frandom(-6.0,6.0),frandom(-6.0,6.0),frandom(3.0,8.0),SXF_TRANSFERPOINTERS,0)
			stop
		Burst:
			TNT1 A 0 A_StopSound(6)
			TNT1 A 0 A_PlaySound("Matchstick/Impact",5,0.6)
			TNT1 AAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Match_Ember", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3), FRandom(-3.0, -5.0), FRandom(-3.0, 3.0),FRandom(2.0, 5.0), 0, SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_Explode(80,32,0)
			//LAZINESS SUPERPOWERS GO!
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("MatchBurstProjectile",0,0,0,velx+random(12,-12),vely+random(5,-5),velz+random(6,-5),FRandom(0,360),SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS,0)
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Flame", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-0.8, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 2.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_JumpIf(CallACS("SmokeChoker"),"Continue")
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Smoke", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-0.5, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 2.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
		Continue:
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Flare", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),0, 0, 0, 0, SXF_CLIENTSIDE)
 			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Glow", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-2.0, -1.0), FRandom(-1.0, 1.0),FRandom(-0.5, 1.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
 			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Ember", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3), FRandom(-1.0, -3.0), FRandom(-3.0, 3.0),FRandom(2.0, 5.0), FRandom(0,360), SXF_CLIENTSIDE, 204)
			/* doesn't quite work as intended, sadly.
			TNT1 A 0 A_SpawnItemEx("MatchBurstProjectile",0,0,0,0,0,velz+10,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS,0) //^
			TNT1 A 0 A_SpawnItemEx("MatchBurstProjectile",0,0,0,0,vely+10,velz+10,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS,0) //^>
			TNT1 A 0 A_SpawnItemEx("MatchBurstProjectile",0,0,0,0,0,velz+10,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS,0) //>
			TNT1 A 0 A_SpawnItemEx("MatchBurstProjectile",0,0,0,0,vely+10,velz-10,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS,0) //v>
			TNT1 A 0 A_SpawnItemEx("MatchBurstProjectile",0,0,0,0,0,velz-10,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS,0) //v
			TNT1 A 0 A_SpawnItemEx("MatchBurstProjectile",0,0,0,0,vely-10,velz-10,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS,0) //<v
			TNT1 A 0 A_SpawnItemEx("MatchBurstProjectile",0,0,0,0,vely-10,0,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS,0) //<
			TNT1 A 0 A_SpawnItemEx("MatchBurstProjectile",0,0,0,0,vely-10,velz+10,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS,0) //<^
			*/
			Stop
	}
}

Actor MatchBurstProjectile : MatchProjectile
{
	Damage 10
	States
	{
		Spawn:
   			TNT1 AA 0 ThrustThingZ(0,5,0,1)
			TNT1 A 0 A_SetUserVar("user_lifespan",35)
		Main:
			/*TNT1 A 0 A_SpawnItemEx("Match_Flame", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-1.8, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 2.0), 0, SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_SpawnItemEx("Match_Smoke", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-1.0, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 2.0), 0, SXF_CLIENTSIDE, 32)*/
			TNT1 A 0 A_SpawnItemEx("Match_Flare", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),0, 0, 0, 0, SXF_CLIENTSIDE)
 			/*TNT1 A 0 A_SpawnItemEx("Match_Glow", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-1.5, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 1.0), 0, SXF_CLIENTSIDE, 32)
 			TNT1 A 0 A_SpawnItemEx("Match_Ember", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3), FRandom(-1.0, -3.0), FRandom(-3.0, 3.0),FRandom(2.0, 5.0), 0, SXF_CLIENTSIDE, 204)*/
			TNT1 A 1
			Loop
		Death:
			TNT1 A 0 A_PlaySound("Matchstick/Impact",5,0.6)
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Flame", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-0.8, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 2.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_JumpIf(CallACS("SmokeChoker"),"Continue")
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Smoke", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-0.5, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 2.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
		Continue:
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Flare", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),0, 0, 0, 0, SXF_CLIENTSIDE)
 			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Glow", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-2.0, -1.0), FRandom(-1.0, 1.0),FRandom(-0.5, 1.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
 			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Ember", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3), FRandom(-1.0, -3.0), FRandom(-3.0, 3.0),FRandom(2.0, 5.0), FRandom(0,360), SXF_CLIENTSIDE, 204)
			stop
	}
}

Actor MatchBurstProjectile_Heavy : MatchBurstProjectile
{
	Gravity 0.5
}

//Alt-Fire

Actor MatchFlareProjectile : MatchProjectile
{
	Damage 0
	States
	{
		Spawn:
   			TNT1 AA 0 ThrustThingZ(0,5,0,1)
			TNT1 A 0 A_SetUserVar("user_lifespan",525)
			TNT1 A 0 A_PlaySound("Torchglow/Wall",6,0.2,1)
			TNT1 A 0 A_PlaySound("Matchstick/Fly",5,0.4,1)
		Main:
			TNT1 AA 0 A_SpawnItemEx("Match_Flame", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-1.8, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 2.0), 0, SXF_CLIENTSIDE, 32)
			TNT1 AA 0 A_SpawnItemEx("Match_Smoke", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-1.0, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 2.0), 0, SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_SpawnItemEx("Match_Flare", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),0, 0, 0, 0, SXF_CLIENTSIDE)
 			TNT1 AA 0 A_SpawnItemEx("Match_Glow", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-1.5, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 1.0), 0, SXF_CLIENTSIDE, 32)
 			TNT1 AA 0 A_SpawnItemEx("Match_Ember", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3), FRandom(-1.0, -3.0), FRandom(-3.0, 3.0),FRandom(2.0, 5.0), 0, SXF_CLIENTSIDE, 204)
			TNT1 A 1
			Loop
		Death:
			TNT1 A 0 A_StopSound(6)
			TNT1 A 0 A_PlaySound("Matchstick/Impact",5,0.6)
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Flame", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-0.8, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 2.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_JumpIf(CallACS("SmokeChoker"),"Continue")
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Smoke", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-0.5, -2.0), FRandom(-1.0, 1.0),FRandom(-0.5, 2.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
		Continue:
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Flare", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),0, 0, 0, 0, SXF_CLIENTSIDE)
 			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Glow", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-2.0, -1.0), FRandom(-1.0, 1.0),FRandom(-0.5, 1.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
 			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Match_Ember", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3), FRandom(-1.0, -3.0), FRandom(-3.0, 3.0),FRandom(2.0, 5.0), FRandom(0,360), SXF_CLIENTSIDE, 204)
			TNT1 A 1 A_SpawnItemEx("MatchFlare",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
			stop
		XDeath: //Stick
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeFlag(NOGRAVITY,1)
		StickLoop:
			TNT1 A 0 A_SeekerMissile(0,0,1,256,0)
			TNT1 A 0 A_SetUserVar("user_lifespan",user_lifespan - 1)
			TNT1 A 0 A_JumpIf(user_lifespan <= 0, "BurnOut")
			TNT1 A 0 A_SpawnItemEx("Match_Flame", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(0.3, -0.3), FRandom(-0.3, 0.3),FRandom(-0.5, 2.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_JumpIf(CallACS("SmokeChoker"),2)
			TNT1 A 0 A_SpawnItemEx("Match_Smoke", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(0.3, -0.3), FRandom(-0.3, 0.3),FRandom(-0.5, 1.5), FRandom(0,360), SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_SpawnItemEx("Match_Flare", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),0, 0, 0, 0, SXF_CLIENTSIDE)
 			TNT1 A 0 A_SpawnItemEx("Match_Glow", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-0.3, 0.3), FRandom(-0.3, 0.3),FRandom(-0.5, 1.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
 			TNT1 A 0 A_SpawnItemEx("Match_Ember", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3), FRandom(-1.0, -3.0), FRandom(-3.0, 3.0),FRandom(2.0, 5.0), 0, SXF_CLIENTSIDE, 204)
			TNT1 A 0 A_Explode(4,32,0)
			TNT1 A 1 A_Fire(35)
			Loop
		BurnOut:
			TNT1 A 0 A_StopSound(6)
			TNT1 A 0 A_StopSound(5)
			Stop
	}
}

Actor MatchFlare
{
	+BLOODLESSIMPACT
	+FORCERADIUSDMG
	+NOGRAVITY
	+NOINTERACTION
	DamageType Fire
	Projectile
	ProjectileKickback 0
	var int user_lifespan;
	States
	{
		Spawn:
			TNT1 A 0 A_PlaySound("Torchglow/Wall",6,0.2,1)
			TNT1 A 0 A_PlaySound("Matchstick/Fly",5,0.4,1)
			TNT1 A 0 A_SetUserVar("user_lifespan",525)
		Main:
			TNT1 A 0 A_SetUserVar("user_lifespan",user_lifespan - 1)
			TNT1 A 0 A_JumpIf(user_lifespan <= 0, "Death")
			TNT1 A 0 A_SpawnItemEx("Match_Flame", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(0.3, -0.3), FRandom(-0.3, 0.3),FRandom(-0.5, 2.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_JumpIf(CallACS("SmokeChoker"),2)
			TNT1 A 0 A_SpawnItemEx("Match_Smoke", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(0.3, -0.3), FRandom(-0.3, 0.3),FRandom(-0.5, 1.5), FRandom(0,360), SXF_CLIENTSIDE, 32)
			TNT1 A 0 A_SpawnItemEx("Match_Flare", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),0, 0, 0, 0, SXF_CLIENTSIDE)
 			TNT1 A 0 A_SpawnItemEx("Match_Glow", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3),FRandom(-0.3, 0.3), FRandom(-0.3, 0.3),FRandom(-0.5, 1.0), FRandom(0,360), SXF_CLIENTSIDE, 32)
 			TNT1 A 0 A_SpawnItemEx("Match_Ember", FRandom(-3, 3),FRandom(-3, 3), FRandom(-3, 3), FRandom(-1.0, -3.0), FRandom(-3.0, 3.0),FRandom(2.0, 5.0), 0, SXF_CLIENTSIDE, 204)
			TNT1 A 1 A_Explode(4,32,0)
			Loop
		Death:
			TNT1 A 0 A_StopSound(6)
			TNT1 A 0 A_StopSound(5)
			Stop
	}
}

