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 "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|SXF_ORIGINATOR)
	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|SXF_ORIGINATOR)
	TNT1 A 0 A_SetAngle(Angle + 40)
	Loop
	}
}

ACTOR Gumpod
{
	+NOINTERACTION
	+NOGRAVITY
	+FORCERADIUSDMG
	+BLOODLESSIMPACT
	+FORCEXYBILLBOARD
	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(35,128,0)
		NPOD F 10 Bright
		Stop
  }
}

//Tomed [DoomKrakken]: Russsian Overkill INTENSIFIES...

ACTOR TomedGumpopProjectile : GumpopProjectile
{
	+SKYEXPLODE
	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("Gumpop_Impact")
    TNT1 B 28
	TNT1 A 0 A_SpawnItemEx("AcidRainSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
    TNT1 A 300 A_PlaySound("Toxicoil/Rain",5,1.0,1)
    TNT1 A 1 A_PlaySound("Toxicoil/End",5,1.0)
    Stop
	}
}

ACTOR AcidRainSpawner
{
   +NOINTERACTION
   +NOGRAVITY
   +DONTBLAST
   States
   {
   Spawn:
   TNT1 A 0
   TNT1 A 1 A_CustomMissile("AcidRainer",0,0,0,CMF_TRACKOWNER|CMF_AIMDIRECTION,-90)
   Stop
   }
}

ACTOR AcidRainer
{
   Radius 5
   Height 5
   +NOINTERACTION
   +THRUACTORS
   +SKYEXPLODE
   +NOGRAVITY
   +SPAWNCEILING
   +CEILINGHUGGER
   +DONTBLAST
   +DONTREFLECT
   Projectile
   ReactionTime 300
   States
   {
   Spawn:
   TNT1 A 0 A_SetAngle(Angle+3)
   TNT1 AAA 0 A_SpawnItemEx("AcidRain",random(350,-350),random(350,-350),-6,0,0,frandom(-0.2,0.0),0,SXF_TRANSFERPOINTERS,0)
   TNT1 A 1 A_Countdown
   Loop
   }
}

ACTOR AcidRain
{
  Radius 4
  Height 9
  Speed 0
  Damage 6
  DamageType "AcidReflux"
  PainType "Acid"
  DeathType "Acid"
  Projectile
  -NOGRAVITY
  +DONTSPLASH
  Gravity 1.5
  Obituary "o% was Gumpopped by %k's acid rain."
  Renderstyle Add
  States
  {
  Spawn:
  PDRP A 1 A_SpawnItemEx("AcidRainTrail")
  Loop
  Death:
  PDRP BCDEF 2
  TNT1 A 0 A_Explode(2,32,0)
  TNT1 A 1 A_RadiusGive("GumpopItem",32,RGF_MONSTERS,1)
  Stop
  XDeath:
  PDRP GHI 2
  TNT1 A 0 A_Explode(3,32,0)
  TNT1 A 1 A_RadiusGive("GumpopItem",32,RGF_MONSTERS,1)
  Stop
  }
}

ACTOR AcidRainTrail
{
  +NOINTERACTION
  +NOGRAVITY
  Renderstyle Add
  States
  {
  Spawn:
  PDRP GHI 1
  Stop
  }
}

//Tomed Alternate Mode...

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


ACTOR TomedGumpodSpawner : GumpodSpawner
{
	States
	{
	Spawn:
	TNT1 A 0 NoDelay A_SetUserVar("user_count",18)
	TNT1 A 0 A_SpawnItemEx("TomedGumpodSpawner2",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("TomedGumpod",210,0,20,0,0,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SetAngle(Angle + 20)
	Loop
	}
}

ACTOR TomedGumpodSpawner2 : GumpodSpawner2
{
	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("TomedGumpod",105,0,20,0,0,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SetAngle(Angle + 40)
	Loop
	}
}

ACTOR TomedGumpod : Gumpod
{
	States
	{
	Spawn:
		NPOD IJKLMNOP 1
		NPOD C 5 Bright
		NPOD D 5 Bright A_PlaySound("Pod/Explode",5,0.2)
		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
  }
}
