Actor Gumpop_AcidBubble
{
	Alpha 0.99
	RenderStyle Add
	+NOGRAVITY
	+NOINTERACTION
	+NOTONAUTOMAP
	Scale 0
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(255, "SpriteA", "SpriteB", "SpriteC", "SpriteD", "SpriteE", "SpriteF", "SpriteG", "SpriteH", "SpriteI", "SpriteJ", "SpriteK", "SpriteL")
		SpriteA:
			BBLA A 0 A_Jump(255, "FadeIn")
			Goto SpriteA
		SpriteB:
			BBLA B 0 A_Jump(255, "FadeIn")
			Goto SpriteB
		SpriteC:
			BBLA C 0 A_Jump(255, "FadeIn")
			Goto SpriteC
		SpriteD:
			BBLA D 0 A_Jump(255, "FadeIn")
			Goto SpriteD
		SpriteE:
			BBLA E 0 A_Jump(255, "FadeIn")
			Goto SpriteE
		SpriteF:
			BBLA F 0 A_Jump(255, "FadeIn")
			Goto SpriteF
		SpriteG:
			BBLA G 0 A_Jump(255, "FadeIn")
			Goto SpriteE
		SpriteH:
			BBLA H 0 A_Jump(255, "FadeIn")
			Goto SpriteF
		SpriteI:
			BBLA I 0 A_Jump(255, "FadeIn")
			Goto SpriteI
		SpriteJ:
			BBLA J 0 A_Jump(255, "FadeIn")
			Goto SpriteJ	
		SpriteK:
			BBLA K 0 A_Jump(255, "FadeIn")
			Goto SpriteK
		SpriteL:
			BBLA L 0 A_Jump(255, "FadeIn")
			Goto SpriteL
		FadeIn:
			"####" "#" 0 Bright A_SetScale(ScaleX+FRandom(0.1, 0.25))
			Goto Idle
		Idle:
			"####" "#" 2 Bright A_Jump(164, "FadeOut","FadeOut2")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_FadeOut(0.035)
			"####" "#" 0 A_ChangeVelocity(VelX+Frandom(0.5,-0.5),VelY+Frandom(0.5,-0.5),VelZ+Frandom(0.5,-0.5),CVF_REPLACE)
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.025, 0.015))
			Loop
		FadeOut2:
			"####" "#" 1 Bright A_FadeOut(0.035)
			"####" "#" 0 A_JumpIf(ScaleX <= 0.0, "NULL")
			"####" "#" 0 A_ChangeVelocity(VelX+Frandom(0.5,-0.5),VelY+Frandom(0.5,-0.5),VelZ+Frandom(0.5,-0.5),CVF_REPLACE)
			"####" "#" 0 A_SetScale(ScaleX - FRandom(0.025, 0.015))
			Loop
	}
}

Actor Gumpop_AcidTrail
{
	+NoInteraction
	+ForceXYBillboard
	+NotOnAutoMap
	Alpha 0.99
	RenderStyle Add
	Scale 0
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SetScale(ScaleX+FRandom(0.3, 0.15))
			Goto SetSelect
		SetSelect:
			TNT1 A 0 A_Jump(255,"Set1","Set2","Set3","Set4","Set5","Set6","Set7","Set8","Set9","Set0")
			Goto SetSelect
		Set1:
			1SPT ABCDEFGHIJKLMNOPQRS 1 A_GiveInventory("Gumpop_AcidExpander")
			Stop
		Set2:
			2SPT ABCDEFGHIJKLMNOPQR 1 A_GiveInventory("Gumpop_AcidExpander")
			Stop
		Set3:
			3SPT ABCDEFGHIJKLM 1 A_GiveInventory("Gumpop_AcidExpander")
			Stop
		Set4:
			4SPT ABCDEFGHIJKLMNOPQRS 1 A_GiveInventory("Gumpop_AcidExpander")
			Stop
		Set5:
			5SPT ABCDEFGHIJKLMNOPQRS 1 A_GiveInventory("Gumpop_AcidExpander")
			Stop
		Set6:
			6SPT ABCDEFGHIJKLMNOPQRS 1 A_GiveInventory("Gumpop_AcidExpander")
			Stop
		Set7:
			7SPT ABCDEFGHIJKLMNOPQR 1 A_GiveInventory("Gumpop_AcidExpander")
			Stop
		Set8:
			8SPT ABCDEFGHIJKLMNOPQR 1 A_GiveInventory("Gumpop_AcidExpander")
			Stop
		Set9:
			9SPT ABCDEFGHIJKLM 1 A_GiveInventory("Gumpop_AcidExpander")
			Stop
		Set0:
			0SPT ABCDEFGHIJKLM 1 A_GiveInventory("Gumpop_AcidExpander")
			Stop
	}
}

Actor Gumpop_AcidExpander : CustomInventory
{
	+Inventory.Autoactivate
	+Inventory.Alwayspickup
	Inventory.Amount 0
	States
	{
	Spawn:
	TNT1 A -1
	Stop
	Use:
	TNT1 A 0 A_SetScale(ScaleX + FRandom(0.0025, 0.0015))
	TNT1 A 0 A_FadeOut(random(0.05,0.025))
	Stop
	}
}

Actor Gumpop_AcidBlast
{
	+NoInteraction
	+ForceXYBillboard
	Alpha 0.99
	RenderStyle Add
	Scale 0
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SetScale(ScaleX+FRandom(1.0, 1.5))
			Goto SetSelect
		SetSelect:
			TNT1 A 0 A_Jump(255,"Set1","Set2","Set3","Set4","Set5","Set6","Set7","Set8","Set9","Set0")
			Goto SetSelect
		Set1:
			1SPT ABCDEFGHIJKLMNOPQRS 1 A_GiveInventory("Gumpop_AcidExpander2")
			Stop
		Set2:
			2SPT ABCDEFGHIJKLMNOPQR 1 A_GiveInventory("Gumpop_AcidExpander2")
			Stop
		Set3:
			3SPT ABCDEFGHIJKLM 1 A_GiveInventory("Gumpop_AcidExpander2")
			Stop
		Set4:
			4SPT ABCDEFGHIJKLMNOPQRS 1 A_GiveInventory("Gumpop_AcidExpander2")
			Stop
		Set5:
			5SPT ABCDEFGHIJKLMNOPQRS 1 A_GiveInventory("Gumpop_AcidExpander2")
			Stop
		Set6:
			6SPT ABCDEFGHIJKLMNOPQRS 1 A_GiveInventory("Gumpop_AcidExpander2")
			Stop
		Set7:
			7SPT ABCDEFGHIJKLMNOPQR 1 A_GiveInventory("Gumpop_AcidExpander2")
			Stop
		Set8:
			8SPT ABCDEFGHIJKLMNOPQR 1 A_GiveInventory("Gumpop_AcidExpander2")
			Stop
		Set9:
			9SPT ABCDEFGHIJKLM 1 A_GiveInventory("Gumpop_AcidExpander2")
			Stop
		Set0:
			0SPT ABCDEFGHIJKLM 1 A_GiveInventory("Gumpop_AcidExpander2")
			Stop
	}
}

Actor Gumpop_AcidExpander2 : Gumpop_AcidExpander
{
	States
	{
	Use:
	TNT1 A 0 A_SetScale(ScaleX + FRandom(0.005, 0.0075))
	TNT1 A 0 A_FadeOut(random(0.035,0.025))
	Stop
	}
}

Actor GumpopProjectile : FastProjectile
{
  Radius 9
  Height 12
  Speed 60
  Damage 8
  Projectile
  +NOGRAVITY
  -THRUGHOST
  +DONTSPLASH
  +EXPLODEONWATER
  +FORCERADIUSDMG
  +BLOODLESSIMPACT
  +DONTREFLECT
  ProjectileKickback 0
  DamageType "Acid"
  DeathSound ""
  Obituary "%o poofed into a wonderful display of gibs, thanks to %k's acid spit."
  MissileType "Gumpop_TrailSpawner"
  MissileHeight 12
  States
  {
  Spawn:
    TNT1 AA 0 ThrustThingZ(0,25,0,1)
  Looplet:
    TNT1 A 1 ThrustThingZ(0,random(-4,-5),0,1)
    Loop
  Death:
    TNT1 A 0 A_Quake (2, 10, 0, 256, none)
    TNT1 A 0 A_Quake (1, 10, 0, 384, none)
    TNT1 A 0 A_PlaySound("Gumpop/Hit",5,1.0)
    TNT1 A 0 A_PlaySound("Gumpop/Fade",6,0.9)
    TNT1 A 0 A_Explode(35,128,0)
    TNT1 A 0 A_RadiusGive("GumpopItem",128,RGF_MONSTERS,1)
    TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_SpawnItemEx("Gumpop_Impact")
    TNT1 B 28
    Stop
  }
}

ACTOR GumpopItem : CustomInventory
{
   Inventory.Amount 0
   +INVENTORY.ALWAYSPICKUP
   +INVENTORY.AUTOACTIVATE
   States
   {
   Spawn:
	TNT1 A -1
	Stop
   Pickup:
	TNT1 A 0 A_GiveInventory("GumpopDamageBonus")
	Stop
   }
}

ACTOR GumpopDamageBonus : PowerupGiver
{
	+INVENTORY.AUTOACTIVATE
	+INVENTORY.ALWAYSPICKUP
	//+INVENTORY.ADDITIVETIME
	powerup.duration -6
	Powerup.Type GumpopDamage
	Powerup.Color None 0.0
	Inventory.PickupMessage "MY NAME IS BALLS OF STEEL, AND I'VE GOT DUKE NUKEM!"
	States
	{
	Spawn:
		TNT1 A -1
		Stop
	}
}

actor PowerGumpopDamage : PowerProtection
{
damagefactor "Normal", 1.75
damagefactor "CloseCombat", 1.75
damagefactor "Manuel", 1.75
damagefactor "Sovereign", 1.75
//damagefactor "fire", 2.0
//damagefactor "ice", 2.0
damagefactor "Acid", 1.0
}

Actor Gumpop_TrailSpawner
{
	+NOINTERACTION
	+NOGRAVITY
	+NOTONAUTOMAP
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("Gumpop_AcidBubble",random(5,-5),random(5,-5),random(5,-5),frandom(0.3,0.5),frandom(0.3,0.5),frandom(0.0,0.4),random(0,359),0,20)
	TNT1 A 0 A_SpawnItemEx("Gumpop_AcidTrail",random(5,-5),random(5,-5),random(5,-5),frandom(0.1,0.2),frandom(0.1,0.2),frandom(-0.3,0.1),random(0,359),0,20)
	Stop
	}
}

Actor Gumpop_Impact
{
	+NOINTERACTION
	+NOGRAVITY
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("Gumpop_AcidBlast_BlastSpawner")
	TNT1 A 0 A_SpawnItemEx("Gumpop_AcidBubble_BlastSpawner")
	TNT1 A 0 A_SpawnItemEx("Gumpop_AcidBlast_Spawner")
	TNT1 A 0 A_SpawnItemEx("Gumpop_AcidBubble_Spawner")
	Stop
	}
}

Actor Gumpop_AcidBlast_BlastSpawner
{
	+NOINTERACTION
	+NOGRAVITY
	ReactionTime 20
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("Gumpop_AcidBlast",random(60,-60),random(60,-60),random(50,-50),frandom(3.0,1.0),frandom(3.0,1.0),frandom(-1.0,3.0),random(0,359),0,20)
	Loop
	Death:
	Stop
	}
}

Actor Gumpop_AcidBlast_Spawner
{
	+NOINTERACTION
	+NOGRAVITY
	+NOTONAUTOMAP
	ReactionTime 8
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Countdown
	TNT1 A random(1,2) A_SpawnItemEx("Gumpop_AcidBlast",random(25,-25),random(25,-25),random(25,-25),frandom(0.5,1.0),frandom(0.5,1.0),frandom(-0.5,1.0),random(0,359),0,20)
	Loop
	Death:
	Stop
	}
}

Actor Gumpop_AcidBubble_BlastSpawner
{
	+NOINTERACTION
	+NOGRAVITY
	ReactionTime 30
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("Gumpop_AcidBubble",random(35,-35),random(35,-35),random(35,-35),frandom(0.5,1.0),frandom(1.0,0.5),frandom(0.5,1.5),random(0,359),0,20)
	Loop
	Death:
	Stop
	}
}

Actor Gumpop_AcidBubble_Spawner
{
	+NOINTERACTION
	+NOGRAVITY
	+NOTONAUTOMAP
	ReactionTime 10
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Countdown
	TNT1 A random(1,2) A_SpawnItemEx("Gumpop_AcidBubble",random(35,-35),random(35,-35),random(35,-35),frandom(0.5,1.0),frandom(0.5,1.0),frandom(0.5,1.5),random(0,359),0,20)
	Loop
	Death:
	Stop
	}
}

//Tomed

ACTOR GumpodSpawner
{
	+NOINTERACTION
	+NOGRAVITY
	+NOTONAUTOMAP
	var int user_count;
	States
	{
	Spawn:
	TNT1 AA 0 A_SetUserVar("user_count",18)
	Looplet:
	TNT1 A 0 A_JumpIf(user_count <= 0, "NULL")
	TNT1 A 0 A_SetUserVar("user_count", user_count - 1)
	TNT1 A 0 A_SpawnItemEx("Gumpod",210,0,20,0,0,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 1 A_SetAngle(Angle + 20)
	Loop
	}
}

ACTOR Gumpod
{
	+NOINTERACTION
	+NOGRAVITY
	+FORCERADIUSDMG
	+BLOODLESSIMPACT
	DamageType Acid
	Obituary "%o got digested by %k's pod nova."
	States
	{
	Spawn:
		NPOD IJKLMNOP 1
		NPOD C 5 Bright
		NPOD D 5 Bright A_PlaySound("Pod/Explode",5)
		NPOD A 0 A_RadiusGive("GumpopItem",128,RGF_MONSTERS,1)
		NPOD E 0 A_SpawnItemEx("Gumpop_Impact")
		NPOD E 5 Bright A_Explode(90,128,0)
		NPOD F 10 Bright
		Stop
  }
}