//Air altfire becomes a pinpoint spiral spawner
actor Junkman : TankArmorClass
{
Player.ScoreIcon "JUNKMUGS"
player.startitem "BaseFlagPack", 1
player.startitem "IsFromMM7"
player.soundclass "junkmanc"
Player.ViewHeight 84
projectilepassheight 92
player.displayname "Junkman"
player.startitem "JunkShieldBoss"
player.startitem "Base28Ammo", 28
player.startitem "BaseAltfireAmmo", 112
player.startitem "UltimateAttackItem3", 1
player.startitem "UltSoundWatcherSpawn3"
player.startitem "NoHealthBar"
player.forwardmove 0.75, 0.75
player.sidemove 0.73, 0.73
player.jumpz 14
States
{
Spawn:
JUNM A 0
JUNM B 1 A_JumpIf(z-floorz>0, "Jumping")
JUNM A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2

See:
JUNM BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn

Jumping:
JUNM I 1 A_JumpIf(z-floorz<=0, "Spawn")
wait

Animation9:
Missile:
JUNM QQ 1 A_JumpIf(z-floorz>0, "JumpingMissile")

Missile2:
JUNM RR 1 A_JumpIf(z-floorz>0, "JumpingMissile2")

Missile3:
JUNM SSSSSSSS 1 A_JumpIf(z-floorz>0, "JumpingMissile3")
Goto Spawn+1

JumpingMissile:
JUNM LL 1 A_JumpIf(z-floorz<=0, "Missile")

JumpingMissile2:
JUNM MM 1 A_JumpIf(z-floorz<=0, "Missile2")

JumpingMissile3:
JUNM NNNNNNNN 1 A_JumpIf(z-floorz<=0, "Missile3")
goto Jumping

Animation1:
JUNM F 5
loop

Animation2:
JUNM G 5
loop

Animation3:
JUNM O 20
goto Spawn+2

Animation4:
JUNM P 17
JUNM O 11
goto Spawn+2

Animation5:
JUNM TUTU 1
loop

Animation6:
JUNM KKKKKKKKKKKKKK 1 A_JumpIf(z-floorz>0, "JumpingMissile")
goto Spawn+2

Animation7:
JUNM J 1 A_JumpIf(z-floorz<=0, "Animation6")
loop

Animation8:
JUNM QQQR 1
JUNM F 30
goto Spawn+1

ClassTimeStop:
PLAY A 0 SetPlayerProperty(0,1,4)
PLAY A 0 ACS_Execute(528,0)
JUNM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
PLAY A 0 SetPlayerProperty(0,0,4)
Goto pain+1
ClassPain:
JUNM H 0 A_GiveInventory("JunkPainHandler") //For armor hurt sounds. -Fr3ak
JUNM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
Death.ThunderBolt:
Death.Cloudman:
Death.CloudmanBolt:
Death.CloudmanCharge:
TNT1 A 0 A_SpawnItemEx("DeadElectrocutedJunkMan",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
NOFX A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
ClassDeath:
TNT1 A 0 A_SpawnItemEx("DeadJunkMan",0,0,0,0,0,0,0,1)
NOFX A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
ClassIceDeath:
JUNM A 35
NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("JunkShieldWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("JunkShieldWepM")
goto ClassDeath
}
}

actor DeadJunkMan : DeadFreezeMan
{
meleerange 7841
States
{
Spawn:
JUNM H 0
"####" "#" 0
goto loopit
}
}

actor DeadElectrocutedJunkMan
{
Translation "192:192=50:50", "198:198=93:93"
PROJECTILE
+MISSILE
species "DeadBody"
+THRUSPECIES
+THRUACTORS
+NOGRAVITY
-NOEXPLODEFLOOR
+NOINTERACTION
scale 2.5
reactiontime 16
meleerange 839
mass 230
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
JUNM VWX 1
TNT1 A 0 A_CountDown
loop

Death:
TNT1 A 0 A_PlaySoundEx("mm7/dead","Auto")
TNT1 A 0 A_SpawnItemEX("CriticalDeathSpawner",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
Stop
}
}

actor JunkShieldBoss : VCBaseWeapon
{
	Weapon.AmmoType "Base28Ammo"
	Weapon.AmmoType2 "BaseAltfireAmmo"
	Weapon.ammouse 2
	Obituary "$OB_JUNKMAN1"
	States
	{
		Ready:
		TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Ready.TF")
		JUKH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) JUKH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		JUKH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) JUKH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		JUKH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) JUKH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		JUKH A 0 A_GiveInventory("Base28Ammo",1)
		JUKH A 0 A_GiveInventory("BaseAltfireAmmo",2)
		goto Ready
		
		Ready.TF:
		JUKH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) JUKH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") JUKH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		JUKH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) JUKH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") JUKH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		JUKH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) JUKH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") JUKH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		JUKH A 0 A_GiveInventory("Base28Ammo",1)
		JUKH A 0 A_GiveInventory("BaseAltfireAmmo",2)
		goto Ready
		
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		JUKH A 1 A_Lower
		Loop
		
		Select:
		TNT1 A 0 ACS_ExecuteAlways(991,0,7841)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		JUKH A 1 A_Raise
		Loop
		
		
		User1:
		TNT1 A 0 A_GiveInventory("JunkTFHandler")
		
		U1.Loop:
		JUKH P 0 ThrustThingZ(0,120,0,0)
		JUKH P 1 A_SpawnItemEx("JunkCeilingCheck",0,0,80)
		JUKH P 0 A_JumpIfInventory("BaseCustomFlag2",1,"U1.Next")
		JUKH Q 0 ThrustThingZ(0,120,0,0)
		JUKH Q 1 A_SpawnItemEx("JunkCeilingCheck",0,0,80)
		JUKH Q 0 A_JumpIfInventory("BaseCustomFlag2",1,"U1.Next")
		JUKH Q 0 A_SpawnItemEx("JunkDebris1",random(24,32),0,random(28,36),0,0,0,random(0,359))
		JUKH R 0 ThrustThingZ(0,120,0,0)
		JUKH R 1 A_SpawnItemEx("JunkCeilingCheck",0,0,80)
		JUKH R 0 A_JumpIfInventory("BaseCustomFlag2",1,"U1.Next")
		TNT1 A 0 A_GiveInventory("CutterFlag",1)
		TNT1 A 0 A_JumpIfInventory("CutterFlag",14,"U1.Next")
		loop
		
		U1.Next:
		TNT1 A 0 A_ChangeFlag("CEILINGHUGGER",1)
		TNT1 A 0 ThrustThingZ(0,1000,0,0)
		TNT1 A 6 A_GiveInventory("JunkTFHandler2")
		TNT1 A 0 A_SetGravity(0.0)
		
		U1.Dig:
		TNT1 A 0 ThrustThingZ(0,1000,0,0)
		TNT1 A 0 A_TakeInventory("CutterFlag",999)
		TNT1 A 0 A_ChangeFlag("CEILINGHUGGER",1)
		TNT1 A 0 A_TakeInventory("JunkDigTimer",1)
		TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"U1.Finish")
		TNT1 A 0 A_JumpIfInventory("JunkDigTimer",1,"U1.Dig")
		goto U1.Finish
		
		U1.Finish:
		TNT1 A 0 A_GiveInventory("JunkTFHandler3")
		
		U1.FinishLoop:
		JUKH P 0 ThrustThingZ(0,50,1,1)
		JUKH P 1 A_CheckFloor("U1.Land")
		JUKH Q 0 ThrustThingZ(0,50,1,1)
		JUKH Q 1 A_CheckFloor("U1.Land")
		JUKH R 0 ThrustThingZ(0,50,1,1)
		JUKH R 1 A_CheckFloor("U1.Land")
		loop
		
		U1.Land:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
		JUKH A 0 A_Stop
		JUKH A 1 Offset(0,28)
		JUKH A 3 Offset(0,20) A_TakeInventory("JunkCeilingFlag")
		JUKH A 1 Offset(0,28)
		goto Ready
		
		
		Fire:
		JUKG F 0 A_GunFlash("Flash.M1")
		JUKH F 2
		JUKH G 1 A_GiveInventory("JunkM1Handler")
		TNT1 A 21
		JUKH STA 1
		goto Ready
		
		
		Altfire:
		TNT1 A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
		TNT1 A 0 A_CheckFloor("Altfire.Ground")
		
		Altfire.Loop:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",7)
		TNT1 A 0 A_SpawnItemEx("JunkStompHitbox")
		JUKH A 0 ThrustThingZ(0,20,1,1)
		JUKH A 1 Offset(0,24) A_CheckFloor("Altfire.Land")
		loop
		
		Altfire.Land:
		JUKH A 0 A_PlaySoundEx("weapon/junkstomp","Weapon")
		JUKH A 0 A_GiveInventory("JunkM2Handler")
		JUKH A 1 Offset(0,40)
		JUKH A 1 Offset(0,24)
		JUKH A 1 Offset(0,39)
		JUKH A 1 Offset(0,25)
		JUKH A 1 Offset(0,38)
		JUKH A 1 Offset(0,26)
		JUKH A 1 Offset(0,37)
		JUKH A 1 Offset(0,27)
		JUKH A 1 Offset(0,36)
		JUKH A 1 Offset(0,28)
		JUKH A 1 Offset(0,35)
		JUKH A 1 Offset(0,29)
		JUKH A 1 Offset(0,34)
		JUKH A 1 Offset(0,30)
		JUKH A 1 Offset(0,33)
		JUKH A 1 Offset(0,31)
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,14,1)
		TNT1 A 0 A_TakeInventory("NoSpeed",999)
		JUKH A 0 A_WeaponReady(WRF_NOFIRE)
		goto Ready
		
		Altfire.Ground:
		TNT1 A 0 A_JumpIfInventory("JunkManArmor",1,"AltfireB")
		TNT1 A 0 A_JumpIfInventory("JunkJumpFlag",1,"NoAmmo")
		TNT1 A 0 A_GunFlash("Flash.M2")
		TNT1 A 0 A_Stop
		TNT1 A 0 A_GiveInventory("NoSpeed",1)
		TNT1 A 0 A_GiveInventory("NoPushFlag",1)
		TNT1 A 0 A_SetGravity(0.0)
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
		
		Altfire1:
		TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
		TNT1 A 0 A_GiveInventory("HalfHalfDamageProtection",1)
		TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
		goto Altfire.Release
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",4)
		TNT1 A 0 A_Stop
		JUKH HHH 1 A_GiveInventory("JunkBlockTimer",2)
		TNT1 A 0 A_Refire("Altfire2")
		goto Altfire.Release
		
		Altfire2:
		TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
		goto Altfire.Release
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",4)
		TNT1 A 0 A_Stop
		JUKH III 1 A_GiveInventory("JunkBlockTimer",3)
		TNT1 A 0 A_Refire("Altfire3")
		goto Altfire.Release
		
		Altfire3:
		TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
		goto Altfire.Release
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",4)
		TNT1 A 0 A_Stop
		JUKH JJJ 1 A_GiveInventory("JunkBlockTimer",2)
		TNT1 A 0 A_Refire("Altfire4")
		goto Altfire.Release
		
		Altfire4:
		TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
		goto Altfire.Release
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",4)
		TNT1 A 0 A_Stop
		JUKH KKK 1 A_GiveInventory("JunkBlockTimer",3)
		TNT1 A 0 A_Refire("Altfire5")
		goto Altfire.Release
		
		Altfire5:
		TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
		goto Altfire.Release
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",4)
		TNT1 A 0 A_Stop
		JUKH LLL 1 A_GiveInventory("JunkBlockTimer",2)
		TNT1 A 0 A_Refire("Altfire6")
		goto Altfire.Release
		
		Altfire6:
		TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
		goto Altfire.Release
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",4)
		TNT1 A 0 A_Stop
		JUKH MMM 1 A_GiveInventory("JunkBlockTimer",3)
		TNT1 A 0 A_Refire("Altfire7")
		goto Altfire.Release
		
		Altfire7:
		TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
		goto Altfire.Release
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",4)
		TNT1 A 0 A_Stop
		JUKH NNN 1 A_GiveInventory("JunkBlockTimer",2)
		TNT1 A 0 A_Refire("Altfire8")
		goto Altfire.Release
		
		Altfire8:
		TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
		goto Altfire.Release
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",4)
		TNT1 A 0 A_Stop
		JUKH OOO 1 A_GiveInventory("JunkBlockTimer",3)
		TNT1 A 0 A_Refire("Altfire1")
		goto Altfire.Release
		
		Altfire.Release:
		TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
		JUKH D 0 A_GunFlash("Flash.M2Hold")
		JUKH HIJKLMNOHIJKLMNOHHIIJJKKLLMMNNOO 1
		JUKH H 0 A_GunFlash("Flash.M2Form")
		JUKH H 0 A_SpawnItemEx("JunkManBlockA",70,0,18)
		JUKH O 16 ACS_NamedExecuteWithResult("VC_SetState",3)
		JUKH D 1 A_GunFlash("Flash.M2Release")
		JUKH A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
		JUKH A 0 A_GiveInventory("JunkJumpFlag")
		JUKH A 0 A_SpawnItemEx("JunkManBlockB",70,0,0,20)
		JUKH A 0 A_SpawnItemEx("JunkBlockWatcher",1)
		TNT1 A 0 A_PlaySoundEx("weapon/junkpunch","Auto")
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",28)
		TNT1 A 0 A_TakeInventory("HalfHalfDamageProtection")
		JUKH E 28 A_Quake(3,12,0,64)
		JUKH D 1
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,14,1)
		TNT1 A 0 A_TakeInventory("NoSpeed",1)
		TNT1 A 0 A_TakeInventory("NoPushFlag",1)
		TNT1 A 0 A_GiveInventory("GravityRestore")
		goto Ready
		
		AltfireB:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",8)
		TNT1 A 0 A_GunFlash("Flash.M2B")
		JUKH UUUV 1
		JUKH W 30 A_GiveInventory("JunkShootHandler",1)
		JUKH OAAA 1 A_GiveInventory("JunkShootFlag",1) //Just in case
		goto Ready
		
		
		UltimateAttack:
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,63)
		CUTA A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		TNT1 A 0 A_GiveInventory("InvProtection")
		TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
		TNT1 A 0 A_GiveInventory("NoSpeed",1)
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
		JUKH H 0 A_SpawnItemEx("JunkGatherer")
		TNT1 A 0 A_SetGravity(0.0)
		TNT1 A 0 A_Stop
		TNT1 A 0 A_GunFlash("Flash.Ult")
		
		Ult.Loop:
		TNT1 A 0 A_GiveInventory("PharaohUltCooldown",1)
		JUKH HI 1 ACS_NamedExecuteWithResult("VC_SetState",1)
		JUKH JK 1 ACS_NamedExecuteWithResult("VC_SetState",2)
		JUKH LM 1 ACS_NamedExecuteWithResult("VC_SetState",1)
		JUKH NO 1 ACS_NamedExecuteWithResult("VC_SetState",2)
		TNT1 A 0 A_GiveInventory("CutterFlag",1)
		TNT1 A 0 A_JumpIfInventory("CutterFlag",8,"Ult.Finish")
		loop
		
		Ult.Finish:
		TNT1 A 0 A_GunFlash("Flash.UltLoop2")
		JUKH H 0 A_Quake(3,6,0,128)
		JUKH A 0 A_PlaySoundEx("weapon/junknest","Auto")
		TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MM7ExplodeFX",random(50,90),random(-30,30),random(10,30))
		JUKH AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("JunkDebris2",random(50,90),random(-30,30),random(10,30),random(5,30),random(-22,22),random(-8,28))
		JUKH OWWWWWWWWWW 2
		TNT1 A 0 A_GiveInventory("PharaohUltCooldown",1)
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",9)
		JUKH F 2 A_GunFlash("Flash.M1")
		TNT1 A 0 A_PlaySound("weapon/GutsmanToss", "Weapon")
		JUKH G 1 A_FireCustomMissile("JunkManNest",0,0,1,20)
		TNT1 A 21
		JUKH STA 1
		TNT1 A 0 A_TakeInventory("InvProtection")
		TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
		TNT1 A 0 A_TakeInventory("NoSpeed",1)
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,14,1)
		TNT1 A 0 A_GiveInventory("GravityRestore")
		TNT1 A 0 A_GunFlash("NoFlash")
		TNT1 A 0 A_TakeInventory("UltAttackFlag")
		TNT1 A 0 A_TakeInventory("CutterFlag",9)
		goto Ready
		
		
		NoAmmo:
		JUKH A 0 A_GiveInventory("Base28Ammo",1)
		JUKH A 2 A_GiveInventory("BaseAltfireAmmo",2)
		goto Ready
		
		
		Flash.M1:
		JUKH BBCCCCCCCCCCCCCCCCCCCCCCBB 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		stop
		
		Flash.M2:
		JUKH B 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		
		Flash.M2Loop:
		JUKH C 0 A_SpawnItemEx("JunkGather", random(100,200), 0, 0, 0, 0, 0, random(0, 359))
		JUKH C 0 A_SpawnItemEx("JunkHandFX1",60,0,50) JUKH C 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_SpawnItemEx("JunkHandFX2",60,0,50) JUKH C 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_SpawnItemEx("JunkGather", random(200,300), 0, 0, 0, 0, 0, random(0, 359))
		JUKH C 0 A_SpawnItemEx("JunkHandFX3",60,0,50) JUKH C 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_SpawnItemEx("JunkHandFX4",60,0,50) JUKH C 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		loop
		
		Flash.M2Hold:
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		JUKH CC 1 A_SpawnItemEx("JunkBlockForm1",70,0,20)
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		JUKH CC 1 A_SpawnItemEx("JunkBlockForm1",70,0,20)
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		JUKH CC 1 A_SpawnItemEx("JunkBlockForm1",70,0,20)
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		JUKH CC 1 A_SpawnItemEx("JunkBlockForm2",70,0,20)
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		JUKH CC 1 A_SpawnItemEx("JunkBlockForm2",70,0,20)
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		JUKH CC 1 A_SpawnItemEx("JunkBlockForm2",70,0,20)
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		JUKH CC 1 A_SpawnItemEx("JunkBlockForm3",70,0,20)
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		JUKH CC 1 A_SpawnItemEx("JunkBlockForm3",70,0,20)
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		JUKH CC 1 A_SpawnItemEx("JunkBlockForm3",70,0,20)
		
		Flash.M2HoldLoop:
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		JUKH C 1 A_SpawnItemEx("JunkBlockForm4",70,0,20)
		JUKH C 1 A_SpawnItemEx("JunkBlockForm5",70,0,20)
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		JUKH C 1 A_SpawnItemEx("JunkBlockForm4",70,0,20)
		JUKH C 1 A_SpawnItemEx("JunkBlockForm5",70,0,20)
		loop
		
		Flash.M2Form:
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 2 A_PlaySoundEx("classes/thundercarnival","Body")
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 2 A_PlaySoundEx("classes/thundercarnival","Body")
		loop
		
		Flash.M2Release:
		JUKH TSSSSSSSSSSSSSSSSSSSSSSSSSSSST 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		stop
		
		Flash.M2B:
		JUKH BCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		stop
		
		Flash.Ult:
		JUKH B 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		
		Flash.UltLoop:
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("weapon/junkult","Body")
		JUKH C 0 A_SpawnItemEx("JunkHandFX1",60,0,50) JUKH C 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_SpawnItemEx("JunkHandFX2",60,0,50) JUKH C 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		JUKH C 0 A_PlaySoundEx("weapon/junkult","Body")
		JUKH C 0 A_SpawnItemEx("JunkHandFX3",60,0,50) JUKH C 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 0 A_SpawnItemEx("JunkHandFX4",60,0,50) JUKH C 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		loop
		
		Flash.UltLoop2:
		JUKH C 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		JUKH C 1 A_SpawnItemEx("JunkNestFX",70,0,20)
		loop
	}
}

actor JunkBlockTimer : Ammo
{
	inventory.amount 1
	inventory.maxamount 168
	+INVENTORY.IGNORESKILL
}

actor JunkToss
{
+THRUSPECIES
species "JunkBlockType"
PROJECTILE
Obituary "$OB_JUNKMAN2"
speed 70
damage(20)
radius 14
height 14
damagetype "JunkMan"
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUCU F 1
wait
Death:
JUCU F 1 A_Stop
JUCU F 0 A_PlaySoundEx("weapon/dustbreak","Body")
JUCU F 0 A_CheckFloor("Death.Floor")
JUCU F 0 A_CheckCeiling("Death.Ceiling")
TNT1 AAA 0 A_SpawnItemEx("JunkDebris1",random(0,8),0,random(0,8),random(3,5),0,random(6,10),random(150,210),1)
TNT1 A 2 
stop
Death.Floor:
TNT1 AAA 0 A_SpawnItemEx("JunkDebris1",random(0,8),0,random(0,8),random(3,5),0,random(6,10),random(0,359),1)
TNT1 A 2
stop
Death.Ceiling:
TNT1 AAA 0 A_SpawnItemEx("JunkDebris1",random(0,8),0,random(-4,0),random(3,5),0,random(-6,-2),random(0,359),1)
TNT1 A 2
stop
}
}

actor JunkM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_FireCustomMissile("JunkToss",0,1,1,28)
TNT1 A 0 A_PlaySoundEx("misc/itemthrow","Weapon")
stop
}
}

actor JunkDebris1 : BasicClientSide
{
PROJECTILE
-NOINTERACTION
-NOGRAVITY
-NOEXPLODEFLOOR
+THRUACTORS
reactiontime 350
States
{
Spawn: 
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4","S_5","S_6","S_7","S_8")

S_1:
JUCU G 1 A_Countdown
loop

S_2:
JUCU H 1 A_Countdown
loop

S_3:
JUCU I 1 A_Countdown
loop

S_4:
JUCU J 1 A_Countdown
loop

S_5:
JUCU K 1 A_Countdown
loop

S_6:
JUCU L 1 A_Countdown
loop

S_7:
JUCU M 1 A_Countdown
loop

S_8:
JUCU N 1 A_Countdown
loop
}
}

actor JunkGather : BlackHoleBombFX
{
reactiontime 70
meleerange 2 //Upwards force
damage 16 //Minimum speed
mass 6 //Maximum speed
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn:
TNT1 A 1 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_ChangeVelocity(random(-damage,-mass), 0, meleerange, CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4","S_5","S_6","S_7","S_8")

S_1:
JUCU G 0 A_GiveInventory("ProjectileCode")
JUCU G 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUCU G 1 A_JumpIfCloser(45,"Death")
JUCU G 0 A_Countdown
loop

S_2:
JUCU H 0 A_GiveInventory("ProjectileCode")
JUCU H 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUCU H 1 A_JumpIfCloser(45,"Death")
JUCU H 0 A_Countdown
loop

S_3:
JUCU I 0 A_GiveInventory("ProjectileCode")
JUCU I 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUCU I 1 A_JumpIfCloser(45,"Death")
JUCU I 0 A_Countdown
loop

S_4:
JUCU J 0 A_GiveInventory("ProjectileCode")
JUCU J 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUCU J 1 A_JumpIfCloser(45,"Death")
JUCU J 0 A_Countdown
loop

S_5:
JUCU K 0 A_GiveInventory("ProjectileCode")
JUCU K 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUCU K 1 A_JumpIfCloser(45,"Death")
JUCU K 0 A_Countdown
loop

S_6:
JUCU L 0 A_GiveInventory("ProjectileCode")
JUCU L 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUCU L 1 A_JumpIfCloser(45,"Death")
JUCU L 0 A_Countdown
loop

S_7:
JUCU M 0 A_GiveInventory("ProjectileCode")
JUCU M 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUCU M 1 A_JumpIfCloser(45,"Death")
JUCU M 0 A_Countdown
loop

S_8:
JUCU N 0 A_GiveInventory("ProjectileCode")
JUCU N 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUCU N 1 A_JumpIfCloser(45,"Death")
JUCU N 0 A_Countdown
loop

Death:
TNT1 A 0
stop
}
}

actor JunkGather2 : JunkGather
{
meleerange 1
damage 22
mass 17
}

actor JunkBlockForm1
{
Obituary "$OB_JUNKMAN3"
Height 84
Radius 42
+MISSILE
-SOLID
+NOGRAVITY
+DONTDRAIN
+GHOST
+THRUGHOST
+SHOOTABLE
+RIPPER
+NOTARGETSWITCH
+NORADIUSDMG
+DONTRIP
+NOBLOOD
+DONTREFLECT
+DONTBLAST
+THRUSPECIES
species "JunkBlockType"
renderstyle translucent
alpha 0.4
painchance 256
bloodtype ""
health 999999
mass 256
scale 2.5
damage(1)
damagetype "JunkManCubeForm"
damagefactor "JunkQuake", 0.0
damagefactor "JunkRoach", 0.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUCU A 2
stop
Pain:
JUCU A 1 A_PlaySoundEx("weapon/mm7reflect","Auto")
stop
}
}

actor JunkBlockForm2 : JunkBlockForm1
{
alpha 0.4
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUCU B 2
stop
Pain:
JUCU B 1 A_PlaySoundEx("weapon/mm7reflect","Auto")
stop
}
}

actor JunkBlockForm3 : JunkBlockForm1
{
alpha 0.4
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUCU C 2
stop
Pain:
JUCU C 1 A_PlaySoundEx("weapon/mm7reflect","Auto")
stop
}
}

actor JunkBlockForm4 : JunkBlockForm1
{
alpha 0.4
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUCU DD 1
stop
Pain:
JUCU D 1 A_PlaySoundEx("weapon/mm7reflect","Auto")
stop
}
}

actor JunkBlockForm5 : JunkBlockForm1
{
alpha 0.4
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUCU EE 1
stop
Pain:
JUCU W 1 A_PlaySoundEx("weapon/mm7reflect","Auto")
stop
}
}

actor JunkManBlockA : JunkBlockForm1
{
-NOGRAVITY
+NOEXPLODEFLOOR
+BOUNCEONCEILINGS
damagetype "JunkManCube"
damage(3)
alpha 1.0
renderstyle normal
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
loopit:
JUCU D 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"Death")
JUCU D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUCU DDEE 1 A_JumpIfInTargetInventory("JunkJumpFlag",1,"Death")
loop
Pain:
JUCU E 1 A_PlaySoundEx("weapon/mm7reflect","Auto")
goto loopit
Death:
TNT1 A 0
stop
}
}

actor JunkHandFX1 : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUCU O 1
stop
}
}

actor JunkHandFX2 : JunkHandFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUCU P 1
stop
}
}

actor JunkHandFX3 : JunkHandFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUCU Q 1
stop
}
}

actor JunkHandFX4 : JunkHandFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUCU R 1
stop
}
}

actor JunkManBlockB : JunkManBlockA
{
+INVULNERABLE
damage(14)
+STEPMISSILE
maxstepheight 24
renderstyle normal
alpha 1.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/coldslide","Weapon")
TNT1 A 0 A_PlaySoundEx("classes/thundercarnival","Body")
TNT1 A 0 A_ScaleVelocity(1.2)
JUCU D 0 A_SpawnItemEx("JunkSpark1",-50,-24,0,0,0,0,0,1)
JUCU D 0 A_SpawnItemEx("JunkSpark1",-50,24,0,0,0,0,0,1)
JUCU D 1 A_GiveToTarget("JunkJumpFlag")
JUCU D 0 A_SpawnItemEx("JunkSpark2",-50,-24,0,0,0,0,0,1)
JUCU D 0 A_SpawnItemEx("JunkSpark2",-50,24,0,0,0,0,0,1)
JUCU D 1 A_GiveToTarget("JunkJumpFlag")
TNT1 A 0 A_PlaySoundEx("classes/thundercarnival","Body")
TNT1 A 0 A_ScaleVelocity(1.2)
JUCU E 0 A_SpawnItemEx("JunkSpark3",-50,-24,0,0,0,0,0,1)
JUCU E 0 A_SpawnItemEx("JunkSpark3",-50,24,0,0,0,0,0,1)
JUCU E 1 A_GiveToTarget("JunkJumpFlag")
JUCU E 0 A_SpawnItemEx("JunkSpark4",-50,-24,0,0,0,0,0,1)
JUCU E 0 A_SpawnItemEx("JunkSpark4",-50,24,0,0,0,0,0,1)
JUCU E 1 A_GiveToTarget("JunkJumpFlag")
TNT1 A 0 A_PlaySoundEx("classes/thundercarnival","Body")
TNT1 A 0 A_ScaleVelocity(1.2)
JUCU D 0 A_SpawnItemEx("JunkSpark1",-50,-24,0,0,0,0,0,1)
JUCU D 0 A_SpawnItemEx("JunkSpark1",-50,24,0,0,0,0,0,1)
JUCU D 1 A_GiveToTarget("JunkJumpFlag")
JUCU D 0 A_SpawnItemEx("JunkSpark2",-50,-24,0,0,0,0,0,1)
JUCU D 0 A_SpawnItemEx("JunkSpark2",-50,24,0,0,0,0,0,1)
JUCU D 1 A_GiveToTarget("JunkJumpFlag")
TNT1 A 0 A_PlaySoundEx("classes/thundercarnival","Body")
TNT1 A 0 A_ScaleVelocity(1.2)
JUCU E 0 A_SpawnItemEx("JunkSpark3",-50,-24,0,0,0,0,0,1)
JUCU E 0 A_SpawnItemEx("JunkSpark3",-50,24,0,0,0,0,0,1)
JUCU E 1 A_GiveToTarget("JunkJumpFlag")
JUCU E 0 A_SpawnItemEx("JunkSpark4",-50,-24,0,0,0,0,0,1)
JUCU E 0 A_SpawnItemEx("JunkSpark4",-50,24,0,0,0,0,0,1)
JUCU E 1 A_GiveToTarget("JunkJumpFlag")
TNT1 A 0 A_PlaySoundEx("classes/thundercarnival","Body")
TNT1 A 0 A_ScaleVelocity(1.2)
JUCU D 0 A_SpawnItemEx("JunkSpark1",-50,-24,0,0,0,0,0,1)
JUCU D 0 A_SpawnItemEx("JunkSpark1",-50,24,0,0,0,0,0,1)
JUCU D 1 A_GiveToTarget("JunkJumpFlag")
JUCU D 0 A_SpawnItemEx("JunkSpark2",-50,-24,0,0,0,0,0,1)
JUCU D 0 A_SpawnItemEx("JunkSpark2",-50,24,0,0,0,0,0,1)
JUCU D 1 A_GiveToTarget("JunkJumpFlag")
loopit:
TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
TNT1 A 0 A_PlaySoundEx("classes/thundercarnival","Body")
JUCU E 0 A_SpawnItemEx("JunkSpark3",-50,-24,0,0,0,0,0,1)
JUCU E 0 A_SpawnItemEx("JunkSpark3",-50,24,0,0,0,0,0,1)
JUCU E 1 A_GiveToTarget("JunkJumpFlag")
JUCU E 0 A_SpawnItemEx("JunkSpark4",-50,-24,0,0,0,0,0,1)
JUCU E 0 A_SpawnItemEx("JunkSpark4",-50,24,0,0,0,0,0,1)
JUCU E 1 A_GiveToTarget("JunkJumpFlag")
TNT1 A 0 A_PlaySoundEx("classes/thundercarnival","Body")
JUCU D 0 A_SpawnItemEx("JunkSpark1",-50,-24,0,0,0,0,0,1)
JUCU D 0 A_SpawnItemEx("JunkSpark1",-50,24,0,0,0,0,0,1)
JUCU D 1 A_GiveToTarget("JunkJumpFlag")
JUCU D 0 A_SpawnItemEx("JunkSpark2",-50,-24,0,0,0,0,0,1)
JUCU D 0 A_SpawnItemEx("JunkSpark2",-50,24,0,0,0,0,0,1)
JUCU D 1 A_GiveToTarget("JunkJumpFlag")
loop
Pain:
JUCU D 1 A_PlaySoundEx("weapon/mm7reflect","Auto")
goto loopit
Death:
TNT1 A 0 A_GiveToTarget("BaseCustomFlag1")
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_GiveToTarget("JunkStopFlag")
TNT1 A 0 A_SpawnItemEx("JunkManBlockC")
TNT1 A 0 A_PlaySoundEx("misc/bigstomp","Body")
TNT1 A 10 A_Quake(3,10,0,300)
stop
}
}

actor JunkSpark1 : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_CheckFloor("Spawn2")
stop

Spawn2:
JUCU S 1
stop
}
}

actor JunkSpark2 : JunkSpark1
{
States
{
Spawn2:
JUCU T 1
stop
}
}

actor JunkSpark3 : JunkSpark1
{
States
{
Spawn2:
JUCU U 1
stop
}
}

actor JunkSpark4 : JunkSpark1
{
States
{
Spawn2:
JUCU V 1
stop
}
}

actor JunkManBlockC : JunkManBlockA
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
loopit:
TNT1 A 0 A_JumpIfInTargetInventory("JunkDispelFlag",1,"Death")
JUCU D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUCU D 0 A_JumpIfInTargetInventory("JunkCeilingFlag",1,"loopit2")
TNT1 A 0 A_PlaySoundEx("classes/thundercarnival","Body")
JUCU DD 1 A_GiveToTarget("JunkJumpFlag")
TNT1 A 0 A_JumpIfInTargetInventory("JunkDispelFlag",1,"Death")
JUCU E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUCU E 0 A_JumpIfInTargetInventory("JunkCeilingFlag",1,"loopit2")
TNT1 A 0 A_PlaySoundEx("classes/thundercarnival","Body")
JUCU EE 1 A_GiveToTarget("JunkJumpFlag")
loop
loopit2:
TNT1 A 0 A_PlaySoundEx("classes/thundercarnival","Body")
JUCU D 0 A_JumpIfCloser(72,"Death2")
JUCU D 1 A_GiveToTarget("JunkJumpFlag")
JUCU D 0 A_JumpIfCloser(72,"Death2")
JUCU D 1 A_GiveToTarget("JunkJumpFlag")
TNT1 A 0 A_PlaySoundEx("classes/thundercarnival","Body")
JUCU E 0 A_JumpIfCloser(72,"Death2")
JUCU E 1 A_GiveToTarget("JunkJumpFlag")
JUCU E 0 A_JumpIfCloser(72,"Death2")
JUCU E 1 A_GiveToTarget("JunkJumpFlag")
goto loopit
Pain:
JUCU E 1 A_PlaySoundEx("weapon/mm7reflect","Auto")
goto loopit
Death2:
TNT1 A 0 A_GiveToTarget("JunkShieldHandler")
Death:
TNT1 A 0 A_TakeFromTarget("JunkBlockTimer",999)
TNT1 AAAAAAA 0 A_SpawnItemEx("JunkDebris1",random(20,28),0,random(0,50),random(3,5),0,random(6,10),random(0,359),1)
TNT1 A 2 A_PlaySoundEx("weapon/dustbreak","Body")
stop
}
}

actor JunkJumpFlag : Powerup
{
Powerup.Duration 7
}

actor JunkStopFlag : Powerup
{
Powerup.Duration 5
}

actor JunkDispelFlag : Powerup
{
Powerup.Duration 5
}

actor JunkCeilingFlag : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor JunkDigTimer : Inventory
{
inventory.amount 1
inventory.maxamount 175
}

actor JunkBlockWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
loopit:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_JumpIfInTargetInventory("JunkStopFlag",1,"Spawn2")
TNT1 A 0 A_JumpIfInTargetInventory("JunkJumpFlag",1,"loopit")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_JumpIfInTargetInventory("JunkStopFlag",1,"Spawn2")
TNT1 A 0 A_JumpIfInTargetInventory("JunkJumpFlag",1,"loopit")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_JumpIfInTargetInventory("JunkStopFlag",1,"Spawn2")
TNT1 A 0 A_JumpIfInTargetInventory("JunkJumpFlag",1,"loopit")
goto Death

Spawn2:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 3 A_TakeFromTarget("JunkBlockTimer",1)
TNT1 A 0 A_JumpIfInTargetInventory("JunkBlockTimer",1,"Spawn2")
goto Death

Death:
TNT1 A 0 A_TakeFromTarget("JunkJumpFlag")
TNT1 A 0 A_GiveToTarget("JunkDispelFlag")
TNT1 A 0 A_TakeFromTarget("JunkBlockTimer",999)
TNT1 AA 1 A_TakeFromTarget("BaseCustomFlag1")
stop
}
}

actor JunkTFHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("JunkDigTimer",175)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
stop
}
}

actor JunkCeilingCheck
{
PROJECTILE
+THRUACTORS
+SKYEXPLODE
radius 10
height 10
States
{
Spawn:
TNT1 A 1
stop
Death:
TNT1 A 0 A_GiveToTarget("BaseCustomFlag2",1)
stop
XDeath:
TNT1 A 0
stop
}
}

actor JunkShieldHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/junkmanshield","Auto")
TNT1 A 0 A_GiveInventory("JunkManArmor")
TNT1 AAAAA 0 A_SpawnItemEx("JunkOrbitShield1")
TNT1 AA 0 A_SpawnItemEx("JunkOrbitShield2")
stop
}
}

actor JunkManArmor : PowerProtection
{
powerup.duration -99999
damagefactor "Normal", 0.75
}

actor JunkPainHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("JunkManArmor",1,"Pickup2")
stop

Pickup2:
TNT1 A 0 A_PlaySoundEx("weapon/mm7enemyhit","Auto")
stop
}
}

actor JunkM2Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_Stop
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
TNT1 A 0 A_GiveInventory("NoSpeed",1)
FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
TNT1 A 0 A_SpawnItemEx("JunkmanQuakeRadius")
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",112,"Pickup4")
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",84,"Pickup3")
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",56,"Pickup2")
TNT1 A 0 A_SpawnItemEx("JunkRainer1")
TNT1 A 0 A_Quake(1,35,0,300,0)
TNT1 AAAAAA 0 A_SpawnItemEx("JunkDebris1",random(32,180),0,0,0,0,random(5,14),random(0,359))
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",112)
stop

Pickup2:
TNT1 A 0 A_SpawnItemEx("JunkRainer2")
TNT1 A 0 A_Quake(2,35,0,300,0)
TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("JunkDebris1",random(32,180),0,0,0,0,random(5,14),random(0,359))
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",112)
stop

Pickup3:
TNT1 A 0 A_SpawnItemEx("JunkRainer3")
TNT1 A 0 A_Quake(3,35,0,300,0)
TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("JunkDebris1",random(32,180),0,0,0,0,random(5,14),random(0,359))
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",112)
stop

Pickup4:
TNT1 A 0 A_PlaySoundEx("weapon/GutsmanQuake", "Body")
TNT1 A 0 A_FireCustomMissile("JunkRainStartPinpoint",0,0,0,8)//A_SpawnItemEx("JunkRainer4")
TNT1 A 0 A_Quake(4,35,0,300,0)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("JunkDebris1",random(32,180),0,0,0,0,random(5,14),random(0,359))
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",112)
stop
}
}

actor JunkStompHitbox : BasicExplosion
{
damagetype "JunkStomp"
Obituary "$OB_JUNKMAN4"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(13,48,0,0,48)
stop
}
}

actor JunkStompProtect : PowerProtection
{
	Powerup.Duration -1
	DamageFactor "JunkStomp", 0.0
}

actor JunkRainer1 : JunkBlockWatcher
{
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAA 3 A_SpawnItemEx("JunkRainStart1",0,0,0,random(0,200),0,300,random(0,359))
stop
}
}

actor JunkRainer2 : JunkRainer1
{
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAAAAAAAA 3 A_SpawnItemEx("JunkRainStart2",0,0,0,random(0,200),0,300,random(0,359))
stop
}
}

actor JunkRainer3 : JunkRainer1
{
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 3 A_SpawnItemEx("JunkRainStart2",0,0,0,random(0,200),0,300,random(0,359))
stop
}
}

actor JunkRainer4 : JunkRainer1
{
reactionTime 32
var int user_r;
States
{
Spawn:
TNT1 A 0
TNT1 A 3 A_SpawnItemEx("JunkRainStart3",user_r*4,0,0,0,0,300,user_r*12)
TNT1 A 0 A_SetUserVar("user_r",user_r+2)
TNT1 A 0 A_Countdown
loop
//stop
}
}

actor JunkRainStartPinpoint : FastProjectile
{
PROJECTILE
-DONTBLAST
+RIPPER
+SPECTRAL
+SKYEXPLODE
+DONTREFLECT
Damage (0)
speed 150
Radius 8
Height 8
Scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 AAA 1
TNT1 A 0 A_Stop
Goto Death

Death:
//TNT1 A 0 A_CheckFloor("Death.Floor")
//TNT1 A 0 A_CheckCeiling("Death.Ceiling")
TNT1 A 0 A_SpawnItemEx("JunkRainer4",0,0,0,0,0,0)
stop

Death.Floor:
TNT1 A 0 A_SpawnItemEx("WaterCrashSDRepositioner2",16,0,0,0,0,200)
stop

Death.Ceiling:
TNT1 A 0 A_PlaySoundEx("misc/venusfall","Auto")
TNT1 A 0 A_SpawnItemEx("WaterCrashSD",0,0,-8)
stop
}
}

actor JunkRainStart1
{
PROJECTILE
radius 16
height 16
+THRUACTORS
+SKYEXPLODE
+DONTREFLECT
States
{
Spawn:
TNT1 A 2
TNT1 A 1 A_Jump(256,"Death")
goto Death
Death:
TNT1 A 0 A_SpawnItemEx("JunkFall1")
stop
}
}

actor JunkRainStart2 : JunkRainStart1
{
States
{
Death:
TNT1 A 0 A_Jump(128,"Death2")
TNT1 A 0 A_SpawnItemEx("JunkFall1")
stop
Death2:
TNT1 A 0 A_SpawnItemEx("JunkFall2")
stop
}
}

actor JunkRainStart3 : JunkRainStart1
{
States
{
Death:
TNT1 A 0 A_SpawnItemEx("JunkFall2")
stop
}
}

actor JunkFall1 : JunkToss
{
-NOGRAVITY
+DONTREFLECT
Obituary "$OB_JUNKMAN4"
damage(10)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4")

S_1:
JUCU G 1 A_CheckFloor("Death")
wait

S_2:
JUCU H 1 A_CheckFloor("Death")
wait

S_3:
JUCU I 1 A_CheckFloor("Death")
wait

S_4:
JUCU J 1 A_CheckFloor("Death")
wait

Death:
TNT1 A 0
stop
}
}

actor JunkFall2 : JunkFall1
{
damage(20)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUCU F 1 A_CheckFloor("Death")
wait
Death:
JUCU F 1 A_Stop
JUCU F 0 A_PlaySoundEx("weapon/dustbreak","Body")
JUCU F 0 A_CheckFloor("Death.Floor")
TNT1 AAA 0 A_SpawnItemEx("JunkDebris1",random(0,8),0,random(0,8),random(3,5),0,random(6,10),random(150,210),1)
TNT1 A 2 
stop
Death.Floor:
TNT1 AAA 0 A_SpawnItemEx("JunkDebris1",random(0,8),0,random(0,8),random(3,5),0,random(6,10),random(0,359),1)
TNT1 A 2 
stop
}
}

actor JunkTFHandler2 : CustomInventory
{
States
{
Pickup:
TNT1 AAAAAAAA 0 A_SpawnItemEx("JunkDebris1",random(24,32),0,random(40,48),random(0,5),0,random(0,-3),random(0,359))
TNT1 A 0 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
TNT1 A 0 A_GiveInventory("ShadowInvisible")
stop
}
}

actor JunkTFHandler3 : CustomInventory
{
States
{
Pickup:
TNT1 AAAAAAAA 0 A_SpawnItemEx("JunkDebris1",random(24,32),0,random(40,48),random(0,5),0,random(0,-3),random(0,359))
TNT1 A 0 A_PlaySoundEx("weapon/drilldigend","Body")
TNT1 A 0 A_GiveInventory("GravityRestore")
TNT1 A 0 A_TakeInventory("BaseCustomFlag2")
TNT1 A 0 A_TakeInventory("JunkDigTimer",999)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
TNT1 A 0 A_ChangeFlag("CEILINGHUGGER",0)
TNT1 A 0 A_TakeInventory("InvProtection",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
TNT1 A 0 A_GiveInventory("ShadowVisible")
TNT1 A 0 A_GiveInventory("JunkCeilingFlag")
stop
}
}

actor JunkmanQuakeRadius : GutsmanQuakeRadius
{
States
{
Spawn:
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,18) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,36)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,54) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,72)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,90) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,108)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,126) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,144)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,162) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,180)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,198) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,216)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,234) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,254)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,270) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,288)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,306) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,324)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,342) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusRange",0,0,0,0,0,0,360)
stop
}
}

actor JunkQuakeRadiusRange : SuperArmQuakeRadiusRange
{
States
{
Spawn:
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusExplode",18) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusExplode",36)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusExplode",54) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusExplode",72)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusExplode",90) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusExplode",108)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusExplode",126) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusExplode",144)
TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusExplode",162) TNT1 A 0 A_SpawnItemEx("JunkQuakeRadiusExplode",180)
stop
}
}

actor JunkQuakeRadiusExplode : SuperArmQuakeRadiusExplode
{
damagetype "JunkQuake"
Obituary "$OB_JUNKMAN4"
}

actor JunkQuakeProtect : PowerProtection
{
	Powerup.Duration -1
	DamageFactor "JunkQuake", 0.0
}

actor JunkOrbitShield1
{
PROJECTILE
+NOINTERACTION
+CLIENTSIDEONLY
Scale 2.5
var int user_angle;
var int user_z;
renderstyle translucent
weaveindexz 8
+FLOATBOB
FloatBobPhase -1
alpha 0.7
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4")

S_1:
JUCU K 0
goto Next

S_2:
JUCU L 0
goto Next

S_3:
JUCU M 0
goto Next

S_4:
JUCU N 0
goto Next

Next:
"####" "#" 0 A_SetUserVar("user_angle",random(0,359))
"####" "#" 0 A_SetUserVar("user_z",frandom(-60,60))
"####" "#" 0 A_Jump(256, "Shield")
Goto Shield

Shield:
"####" "#" 0 A_Warp(AAPTR_TARGET,55,0,50,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
"####" "#" 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0, "Death")
"####" "#" 0 A_JumpIfInTargetInventory("JunkShootFlag",1,"Death")
"####" "#" 1 A_Weave(0,1,0,user_z)
"####" "#" 0 A_SetUserVar("user_angle",user_angle+25)
loop

Death:
TNT1 A 0
stop
}
}

actor JunkOrbitShield2 : JunkOrbitShield1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4")

S_1:
JUCU G 0
goto Next

S_2:
JUCU H 0
goto Next

S_3:
JUCU I 0
goto Next

S_4:
JUCU J 0
goto Next
}
}

actor JunkCaptureWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
reactiontime 105
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("MovementFrozen3")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0 A_TakeFromTarget("NoThirdFire")
TNT1 A 0 A_GiveToTarget("MovementReturnFailsafe",1)
stop
}
}

actor JunkManShield1
{
Obituary "$OB_JUNKMAN1"
damagetype "JunkManShield"
PROJECTILE
radius 20
height 20
damage(3)
scale 2.5
speed 12
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUK1 A 0
goto loopit

loopit:
"####" A 0 A_JumpIfInTargetInventory("JunkShieldHit",1,"Death")
"####" A 1 A_ScaleVelocity(1.04)
"####" B 0 A_JumpIfInTargetInventory("JunkShieldHit",1,"Death")
"####" B 1 A_ScaleVelocity(1.04)
"####" C 0 A_JumpIfInTargetInventory("JunkShieldHit",1,"Death")
"####" C 1 A_ScaleVelocity(1.04)
"####" D 0 A_JumpIfInTargetInventory("JunkShieldHit",1,"Death")
"####" D 1 A_ScaleVelocity(1.04)
"####" E 0 A_JumpIfInTargetInventory("JunkShieldHit",1,"Death")
"####" E 1 A_ScaleVelocity(1.04)
"####" F 0 A_JumpIfInTargetInventory("JunkShieldHit",1,"Death")
"####" F 1 A_ScaleVelocity(1.04)
"####" G 0 A_JumpIfInTargetInventory("JunkShieldHit",1,"Death")
"####" G 1 A_ScaleVelocity(1.04)
"####" H 0 A_JumpIfInTargetInventory("JunkShieldHit",1,"Death")
"####" H 1 A_ScaleVelocity(1.04)
"####" I 0 A_JumpIfInTargetInventory("JunkShieldHit",1,"Death")
"####" I 1 A_ScaleVelocity(1.04)
"####" J 0 A_JumpIfInTargetInventory("JunkShieldHit",1,"Death")
"####" J 1 A_ScaleVelocity(1.04)
loop

Death:
TNT1 A 0
stop
}
}

actor JunkManShield2 : JunkManShield1
{
speed 15
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUK2 A 0
goto loopit
}
}

actor JunkManShield3 : JunkManShield1
{
speed 18
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUK3 A 0
goto loopit
}
}

actor JunkShootFlag : Powerup
{
Powerup.Duration 12
}

actor JunkShootHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_FireCustomMissile("JunkManShield1",0,0,1,20)
TNT1 A 0 A_FireCustomMissile("JunkManShield2",0,0,1,20)
TNT1 A 0 A_FireCustomMissile("JunkManShield3",0,0,1,20)
TNT1 A 0 A_TakeInventory("JunkManArmor")
TNT1 A 0 A_GiveInventory("JunkShootFlag",1)
TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
stop
}
}

actor JunkGatherer
{
PROJECTILE
+NOINTERACTION
var int user_angle;
reactiontime 56
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar("user_angle",0)

loopit:
TNT1 A 0 A_Warp(AAPTR_TARGET,0,0,0,user_angle,WARPF_NOCHECKPOSITION|WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE)
TNT1 A 1 A_SpawnItemEx("JunkUltReturn",500,0,60,-40)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_SetUserVar("user_angle",angle+13.5)
TNT1 A 0 A_Countdown
loop

Death:
TNT1 A 0
stop
}
}

actor JunkUltReturn
{
PROJECTILE
+NOINTERACTION
radius 6
height 6
scale 2.5
States
{
Spawn: 
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4","S_5","S_6","S_7","S_8","S_9")

S_1:
JUCU F 0
goto Next

S_2:
JUCU G 0
goto Next

S_3:
JUCU H 0
goto Next

S_4:
JUCU I 0
goto Next

S_5:
JUCU J 0
goto Next

S_6:
JUCU K 0
goto Next

S_7:
JUCU L 0
goto Next

S_8:
JUCU M 0
goto Next

S_9:
JUCU N 0
goto Next

Next:
"####" "############" 1 A_JumpIfCloser(56,"Death")

Death:
TNT1 A 0
stop
}
}

actor JunkNestFX : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUGH A 2
stop
}
}

actor JunkDebris2 : JunkDebris1
{
var int user_reaction;
reactiontime 40
+DOOMBOUNCE
bouncecount 2
bouncefactor 0.6
gravity 1.6
States
{
Death:
"####" "#" 1 A_SetTranslucent(0.0)
"####" "#" 1 A_SetTranslucent(1.0)
"####" "#" 1 A_SetTranslucent(0.0)
"####" "#" 1 A_SetTranslucent(1.0)
"####" "#" 1 A_SetTranslucent(0.0)
"####" "#" 1 A_SetTranslucent(1.0)
"####" "#" 1 A_SetTranslucent(0.0)
"####" "#" 1 A_SetTranslucent(1.0)
"####" "#" 1 A_SetTranslucent(0.0)
"####" "#" 1 A_SetTranslucent(1.0)
stop
}
}

actor JunkManNest
{
PROJECTILE
+SKYEXPLODE
-NOGRAVITY
+THRUACTORS
+DONTBLAST
+DONTREFLECT
gravity 2.5
speed 60
radius 16
height 16
scale 2.5
+DOOMBOUNCE
-BOUNCEONFLOORS
bouncecount 999
wallbouncefactor 1.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUGH A 0 A_GiveToTarget("PharaohUltCooldown")
JUGH A 1 A_CheckFloor("Death")
goto Spawn+2
Death:
TNT1 A 0 A_SpawnItemEx("JunkManNest2")
stop
}
}

actor JunkManNest2 : JunkManNest
{
reactiontime 20
+FLOORHUGGER
+NOCLIP
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 AAAAAAAA 0 A_SpawnItemEx("JunkDebris2",random(40,120),0,0,random(3,8),0,random(5,11),random(0,359))
TNT1 A 0 A_PlaySoundEx("misc/bigstomp","Body")
TNT1 A 0 A_PlaySoundEx("misc/powerland","Auto")
TNT1 A 0 A_Quake(4,13,0,400)

loopit:
JUGH AAAAAAAABBBBBCCCCCBBBBBCCC 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUGH A 0 A_GiveToTarget("PharaohUltCooldown")
JUGH A 0 A_TakeFromTarget("MediumUltimateAmmo",15)
JUGH A 0 A_SpawnItemEx("JunkRoach",8,0,0,15)
JUGH AAAA 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
JUGH A 0 A_Countdown
loop

Death:
JUGH A 0 A_TakeFromTarget("MediumUltimateAmmo",999)
TNT1 A 0 A_PlaySoundEx("weapon/dustbreak","Body")
JUGH ZA 1
JUGH Z 0 A_SpawnItemEx("JunkNestBit1",0,0,40,random(-8,8),random(-8,8),random(1,11))
JUGH ZAZA 1
JUGH Z 0 A_SpawnItemEx("JunkNestBit2",0,0,40,random(-8,8),random(-8,8),random(1,11))
JUGH ZAZA 1
JUGH Z 0 A_SpawnItemEx("JunkNestBit3",0,0,40,random(-8,8),random(-8,8),random(1,11))
JUGH ZAZA 1
JUGH Z 0 A_SpawnItemEx("JunkNestBit4",0,0,40,random(-8,8),random(-8,8),random(1,11))
JUGH ZAZA 1
JUGH Z 0 A_SpawnItemEx("JunkNestBit5",0,0,40,random(-8,8),random(-8,8),random(1,11))
JUGH ZAZA 1
JUGH Z 0 A_SpawnItemEx("JunkNestBit6",0,0,40,random(-8,8),random(-8,8),random(1,11))
JUGH ZAZA 1
JUGH Z 0 A_SpawnItemEx("JunkNestBit7",0,0,40,random(-8,8),random(-8,8),random(1,11))
JUGH ZAZA 1
stop
}
}

actor JunkRoach
{
Obituary "$OB_JUNKMAN5"
damagetype "JunkRoach"
PROJECTILE
-NOGRAVITY
gravity 0.1
radius 16
height 16
speed 15
+SEEKERMISSILE
bouncetype Hexen
-BOUNCEONFLOORS
-BOUNCEONACTORS
+THRUSPECIES
+NOEXPLODEFLOOR
species "JunkBlockType"
bouncecount 12
wallbouncefactor 1.0
reactiontime 500
scale 2.5
damage(22)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GOCK CDE 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
GOCK ABABABAB 3 A_Stop

Jump:
GOCK C 0 A_GiveToTarget("PharaohUltCooldown")
GOCK C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
GOCK CCCC 0 A_SeekerMissile(90,90,SMF_CURSPEED|SMF_LOOK,256,5)
GOCK C 0 A_ChangeVelocity(10,0,momz,CVF_RELATIVE|CVF_REPLACE)
GOCK C 0 ThrustThingZ(0,10,0,0)
GOCK FGH 1 A_FaceTracer(6,0)

loopit:
GOCK A 0 A_TakeInventory("CutterFlag",99)
GOCK C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 AAA 0 A_Countdown
GOCK F 0 A_CheckFloor("Land")
GOCK F 0 A_ChangeVelocity(10,0,momz,CVF_RELATIVE|CVF_REPLACE)
GOCK F 1 A_FaceTracer(6,0)
GOCK G 0 A_CheckFloor("Land")
GOCK G 0 A_ChangeVelocity(10,0,momz,CVF_RELATIVE|CVF_REPLACE)
GOCK G 1 A_FaceTracer(6,0)
GOCK H 0 A_CheckFloor("Land")
GOCK H 0 A_ChangeVelocity(10,0,momz,CVF_RELATIVE|CVF_REPLACE)
GOCK H 1 A_FaceTracer(6,0)
loop

Land:
GOCK AB 3 A_Stop
TNT1 AAAAAA 0 A_Countdown
GOCK CCCC 0 A_SeekerMissile(90,90,SMF_CURSPEED|SMF_LOOK,256,5)

loopit2:
GOCK C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 AAA 0 A_Countdown
GOCK C 0 A_JumpIf(z-floorz>0, "loopit")
GOCK C 0 A_ChangeVelocity(15,0,momz,CVF_RELATIVE|CVF_REPLACE)
GOCK C 1 A_FaceTracer(3,0)
GOCK D 0 A_JumpIf(z-floorz>0, "loopit")
GOCK D 0 A_ChangeVelocity(15,0,momz,CVF_RELATIVE|CVF_REPLACE)
GOCK D 1 A_FaceTracer(3,0)
GOCK E 0 A_JumpIf(z-floorz>0, "loopit")
GOCK E 0 A_ChangeVelocity(15,0,momz,CVF_RELATIVE|CVF_REPLACE)
GOCK E 1 A_FaceTracer(3,0)
GOCK C 0 A_GiveInventory("CutterFlag",1)
GOCK C 0 A_JumpIfInventory("CutterFlag",11,"PreJump")
loop

PreJump:
GOCK ABABA 3 A_Stop
TNT1 AAAAAAAAAAAAAAA 0 A_Countdown
goto Jump

Death:
TNT1 A 0 A_SpawnItemEx("MM7ExplodeFX",0,0,8)
TNT1 A 2 A_PlaySoundEx("weapon/mm7enemyexplode", "Body")
stop
}
}

actor JunkCaptureFX1
{
scale 2.5
+NOINTERACTION
radius 5
height 5
var int user_warpAngle;
reactiontime 105
meleerange 360
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4","S_5","S_6","S_7","S_8","S_9")

S_1:
JUCU F 0
goto loopit

S_2:
JUCU G 0
goto loopit

S_3:
JUCU H 0
goto loopit

S_4:
JUCU I 0
goto loopit

S_5:
JUCU J 0
goto loopit

S_6:
JUCU K 0
goto loopit

S_7:
JUCU L 0
goto loopit

S_8:
JUCU M 0
goto loopit

S_9:
JUCU N 0
goto loopit

loopit:
"####" "#" 0 A_SetUserVar("user_warpAngle",user_warpAngle+22.5)
"####" "#" 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
"####" "#" 1 A_Warp(AAPTR_TARGET,60,0,30,user_warpAngle+meleerange,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
"####" "#" 0 A_Countdown
loop

Death:
TNT1 A 0 A_SpawnItemEx("MM7ExplodeFX")
stop
}
}

actor JunkCaptureFX2 : JunkCaptureFX1
{
meleerange 60
}

actor JunkCaptureFX3 : JunkCaptureFX1
{
meleerange 120
}

actor JunkCaptureFX4 : JunkCaptureFX1
{
meleerange 180
}

actor JunkCaptureFX5 : JunkCaptureFX1
{
meleerange 240
}

actor JunkCaptureFX6 : JunkCaptureFX1
{
meleerange 300
}

actor JunkNestBit1
{
+MISSILE
+THRUACTORS
scale 2.5
bouncetype Doom
bouncefactor 1.0
bouncecount 2
+USEBOUNCESTATE
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUGH Z 1
JUGH D 1
goto Spawn+2
Bounce:
Death:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
JUGH DZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZ 1 ThrustThingZ(0,6,1,1)
stop
}
}

actor JunkNestBit2 : JunkNestBit1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUGH Z 1
JUGH E 1
goto Spawn+2
Bounce:
Death:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
JUGH EZEZEZEZEZEZEZEZEZEZEZEZEZEZEZEZEZEZEZEZ 1 ThrustThingZ(0,6,1,1)
stop
}
}

actor JunkNestBit3 : JunkNestBit1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUGH Z 1
JUGH F 1
goto Spawn+2
Bounce:
Death:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
JUGH FZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZ 1 ThrustThingZ(0,6,1,1)
stop
}
}

actor JunkNestBit4 : JunkNestBit1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUGH Z 1
JUGH G 1
goto Spawn+2
Bounce:
Death:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
JUGH GZGZGZGZGZGZGZGZGZGZGZGZGZGZGZGZGZGZGZGZ 1 ThrustThingZ(0,6,1,1)
stop
}
}

actor JunkNestBit5 : JunkNestBit1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUGH Z 1
JUGH H 1
goto Spawn+2
Bounce:
Death:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
JUGH HZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZ 1 ThrustThingZ(0,6,1,1)
stop
}
}

actor JunkNestBit6 : JunkNestBit1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUGH Z 1
JUGH I 1
goto Spawn+2
Bounce:
Death:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
JUGH IZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZ 1 ThrustThingZ(0,6,1,1)
stop
}
}

actor JunkNestBit7 : JunkNestBit1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
JUGH Z 1
JUGH J 1
goto Spawn+2
Bounce:
Death:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
JUGH JZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZ 1 ThrustThingZ(0,6,1,1)
stop
}
}

actor JunkShieldHit : Powerup
{
Powerup.Duration 7
}