Actor Gumpop_AcidBubble
{
	Alpha 0.99
	RenderStyle Add
	+NOGRAVITY
	+NOINTERACTION
	+NOTONAUTOMAP
	+FORCEXYBILLBOARD
	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 10
  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.PickupMessage ""
   Inventory.PickupSound ""
   Inventory.PickupFlash None 
   +INVENTORY.ALWAYSPICKUP
   +INVENTORY.AUTOACTIVATE
   +INVENTORY.NOSCREENFLASH
   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
{
	//Basis
	damagefactor "Acid", 1.0

	//Physical
	damagefactor "Normal", 1.75
	damagefactor "CloseCombat", 1.75
	damagefactor "Shoelaces", 1.75
	damagefactor "SuperCloseCombat", 1.75
	damagefactor "SuperShoelaces", 1.75
	damagefactor "SuperMidasCloseCombat", 1.75
	damagefactor "SuperMidasShoelaces", 1.75
	damagefactor "Pound", 1.75
	damagefactor "CloseCombat", 1.75
	damagefactor "Manuel", 1.75
	damagefactor "Matriarch", 1.75
	damagefactor "Crow", 1.75
	damagefactor "Crow2", 1.75

	//Semi-physical, semi-elemental
	damagefactor "Breath", 1.5
	damagefactor "Flesh", 1.5
	damagefactor "Annihilation", 1.5
	//damagefactor "Tiberium", 1.5 //it's not like it doesn't do absurd damage already.
	//damagefactor "BlueTiberium", 1.5

	//Elemental
	damagefactor "Meteorfist", 1.25
	damagefactor "Fire", 1.25
	damagefactor "Ice", 1.25
	damagefactor "Fire", 1.25
	damagefactor "Ice", 1.25
	damagefactor "LightningBlue", 1.25
	damagefactor "Lightning", 1.25
}

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 GumpopProjectile2 : GumpopProjectile
{
  States
  {
  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("GumpodSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
    TNT1 A 0 A_SpawnItemEx("Gumpop_Impact")
    TNT1 B 28
    Stop
  }
}

ACTOR GumpodSpawner
{
	+NOINTERACTION
	+NOGRAVITY
	+NOTONAUTOMAP
	var int user_count;
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_SetUserVar("user_count",18)
	TNT1 A 0 A_SpawnItemEx("GumpodSpawner2",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	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|SXF_SETMASTER)
	TNT1 A 0 A_SetAngle(Angle + 20)
	Loop
	}
}

ACTOR GumpodSpawner2
{
	+NOINTERACTION
	+NOGRAVITY
	+NOTONAUTOMAP
	var int user_count;
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_SetUserVar("user_count",9)
	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",105,0,20,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_SETMASTER)
	TNT1 A 0 A_SetAngle(Angle + 40)
	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,0.5)
		NPOD A 0 A_RadiusGive("GumpopItem",128,RGF_MONSTERS,1)
		NPOD E 0 A_SpawnItemEx("Gumpop_Impact")
		NPOD E 5 Bright A_Explode(80,128,0)
		NPOD F 10 Bright
		Stop
  }
}