 Actor JetpackGiver : CustomInventory Replaces ArtiFly
{
	Inventory.PickupMessage "Obtained a Jetpack! Hold jump to fly!"
	Inventory.PickupSound "Jetpack/Pickup"
	+INVENTORY.AUTOACTIVATE
	States
	{
	Spawn:
		JETP A -1
		Stop
	Pickup: 
		TNT1 A 0 A_JumpIfInventory("HexenCounter", 1, "HexenMode") //INFINITE POWERRRRRR~ well, kind of.
		TNT1 A 0 A_JumpIfInventory("Jetpack",100,"Nope")
		TNT1 A 0 A_GiveInventory("Jetpack", 100)
		stop
	HexenMode:
		TNT1 A 0 A_GiveInventory("Jetpack2", 100)
		TNT1 A 0 A_GiveInventory("HexenRefuelCounter", 1)
		stop
	Nope:
		TNT1 A 0
		Fail
	}
}

ACTOR Jetpack : CustomInventory
{
  Inventory.Icon ARTIJETP
  Inventory.PickupMessage "Obtained a Jetpack! Hold jump to fly!"
  Inventory.MaxAmount 100
  Inventory.Amount 100
  Inventory.InterHubAmount 100
  Inventory.PickupSound "Jetpack/Pickup"
  Inventory.UseSound ""
  Tag "Jetpack"
  +INVBAR
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
    JETP A -1
    Stop
  Use:
	TNT1 A 0
	Fail
  }
}

ACTOR Jetpack2 : Jetpack
{
  Inventory.InterHubAmount 0
}

ACTOR HexenRefuelCounter : Inventory
{
  Inventory.InterHubAmount 0
  Inventory.MaxAmount 1
}

ACTOR JetpackActive
{
    +NOINTERACTION
    States
    {
    Spawn:
       TNT1 A 0 NoDelay A_SpawnItemEx("JetpackFlare",-16-frandom(1.0,-1.0),frandom(1.0,-1.0),-18-frandom(1.0,-1.0),frandom(0.1,0.05),frandom(0.1,0.05),frandom(-1.0,-2.5),frandom(0.0,360.0),SXF_CLIENTSIDE,30)
	   TNT1 A 0 A_SpawnItemEx("JetpackSmoke",-16-frandom(1.0,-1.0),frandom(1.0,-1.0),-18-frandom(1.0,-1.0),frandom(0.1,0.05),frandom(0.1,0.05),frandom(-2.5,-4.0),frandom(0.0,360.0),SXF_CLIENTSIDE,20)
       TNT1 A 15 A_SpawnItemEx("JetpackFire",-16-frandom(1.0,-1.0),frandom(1.0,-1.0),-18-frandom(1.0,-1.0),frandom(0.1,0.05),frandom(0.1,0.05),frandom(-2.5,-4.0),frandom(0.0,360.0),SXF_CLIENTSIDE,20)
       Stop
    }
}

ACTOR JetpackActive2
{
    +NOINTERACTION
    States
    {
    Spawn:
       TNT1 A 0 NoDelay A_SpawnItemEx("JetpackSmoke2",-14-frandom(1.0,-1.0),frandom(1.0,-1.0),-15-frandom(1.0,-1.0),frandom(0.1,0.05),frandom(0.1,0.05),frandom(-1.5,-3.0),frandom(0.0,360.0),SXF_CLIENTSIDE,40)
       Stop
    }
}

ACTOR JetpackSmoke
{ 
    Scale 0.0
    Alpha 0.0
    RenderStyle Translucent
    +NOINTERACTION
    +NOGRAVITY
    +THRUGHOST
    +DONTSPLASH
    States
    {
    Spawn:
      SMKE A 3
      SMKE A 0 A_Jump(256,"SpriteA","SpriteB","SpriteC","SpriteD")
	SpriteA:
		DYMI A 0 A_Jump(256, "FadeIn")
		Goto SpriteA
	SpriteB:
		DYMI B 0 A_Jump(256, "FadeIn")
		Goto SpriteB
	SpriteC:
		DYMI C 0 A_Jump(256, "FadeIn")
		Goto SpriteC
	SpriteD:
		DYMI D 0 A_Jump(256, "FadeIn")
		Goto SpriteD
	FadeIn:
		"####" "#" 0 A_FadeIn(0.03)
		"####" "#" 0 A_SetScale(ScaleX+frandom(0.02,0.04))
		"####" "#" 1 A_JumpIf(Alpha >= 0.4,"Main")
		Loop
	Main:
		"####" "#" 0 A_FadeOut(0.03)
		"####" "#" 1 A_SetScale(ScaleX+frandom(0.02,0.04))
		Loop
    }
}

ACTOR JetpackSmoke2 : JetpackSmoke
{ 
    States
    {
    Spawn:
      SMKE A 0 NoDelay A_Jump(256,"SpriteA","SpriteB","SpriteC","SpriteD")
	  Goto SpriteA
	}
}

ACTOR JetpackFire
{
	+NOGRAVITY
	+NOINTERACTION
	+THRUGHOST
	+DONTSPLASH
	RenderStyle Add
	Scale 0.2
	Alpha 0.7
	states
	{
	Spawn:
		TNT1 AA 0 A_Jump(256, "SpriteA", "SpriteB", "SpriteC", "SpriteD",
							 "SpriteE", "SpriteF", "SpriteG", "SpriteH")
	SpriteA:
		BLAS A 0 A_Jump(256, "FadeIn")
		Goto SpriteA
	SpriteB:
		BLAS B 0 A_Jump(256, "FadeIn")
		Goto SpriteB
	SpriteC:
		BLAS C 0 A_Jump(256, "FadeIn")
		Goto SpriteC
	SpriteD:
		BLAS D 0 A_Jump(256, "FadeIn")
		Goto SpriteD
	SpriteE:
		BLAS E 0 A_Jump(256, "FadeIn")
		Goto SpriteE
	SpriteF:
		BLAS F 0 A_Jump(256, "FadeIn")
		Goto SpriteF
	SpriteG:
		BLAS G 0 A_Jump(256, "FadeIn")
		Goto SpriteG
	SpriteH:
		BLAS H 0 A_Jump(256, "FadeIn")
		Goto SpriteH
	FadeIn:
		"####" "#" 1 Bright A_FadeOut(0.05)
		"####" "#" 0 A_SetScale(ScaleX - FRandom(0.005, 0.0075))
		"####" "#" 0 A_JumpIf(ScaleX <= 0,"NULL")
		Loop
	}
}

Actor JetpackFlare
{
	+NOGRAVITY
	+NOINTERACTION
	+THRUGHOST
	+DONTSPLASH
	RenderStyle Add
	Scale 0.25
	Alpha 0.95
	States
	{
		Spawn:
			FLAR A 1 Bright A_FadeOut(0.1)
			FLAR A 0 A_SetScale(ScaleX - FRandom(0.005, 0.0075))
			FLAR A 0 A_JumpIf(ScaleX <= 0.0, "NULL")
			Loop
	}
}