actor DocRobot : VCBaseClass
{
	Player.ScoreIcon "DOCRMUGS"
	player.startitem "BaseFlagPack", 1
	player.startitem "NormalArmor"
	player.soundclass "docrobotc"
	Player.ViewHeight 57
	player.forwardmove 0.75, 0.75
	player.sidemove 0.73, 0.73
	player.displayname "DocRobot"
	player.startitem "DocMetalBoss"
	player.startitem "DocAirBoss"
	player.startitem "DocBubbleBoss"
	player.startitem "DocQuickBoss"
	player.startitem "DocCrashBoss"
	player.startitem "DocFlashBoss"
	player.startitem "DocHeatBoss"
	player.startitem "DocWoodBoss"
	player.startitem "UltimateAttackItem3", 1
	player.startitem "UltSoundWatcherSpawn3"
	player.startitem "IsFromMM3"
	States
	{
		Animation2:
		Spawn:
		DOCB A 0
		DOCB B 1 A_JumpIf(z-floorz>0, "Jumping")
		DOCB A 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+2
		
		See:
		DOCB BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn
		
		Jumping:
		DOCB J 1 A_JumpIf(z-floorz<=0, "Land")
		wait
		
		Land:
		DOCB QQQ 1 A_JumpIf(z-floorz>0, "Jumping")
		goto Spawn+2
		
		Missile:
		DOCB R 0 A_JumpIfInventory("BaseCustomFlag1",1,"Missile2")
		DOCB RRR 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		
		Missile2:
		DOCB GGGGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
		Goto Spawn+1
		
		JumpingMissile:
		DOCB KKKKK 1 A_JumpIf(z-floorz<=0, "Missile2")
		
		JumpingMissile2:
		DOCB KKKK 1 A_JumpIf(z-floorz<=0, "Missile2")
		Goto Jumping
		
		Animation2:
		HETK ABC 2
		loop
		
		Animation3:
		DOCB SSSSSTTTTTS 1
		goto Spawn+2
		
		ClassTimeStop:
		PLAY A 0 SetPlayerProperty(0,1,4)
		PLAY A 0 ACS_Execute(528,0)
		DOCB AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		PLAY A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		DOCB H 0 A_GiveInventory("DocPainHandler")
		DOCB HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		WeaponGetM:
		ClassDeath:
		DOCB H 20 ACS_ExecuteAlways(999,0,0)
		DOCB H 0 A_PlayerScream
		NOFX A 0 A_SpawnItemEx("FakeDeathFXMM3",0,0,32)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		DOCB A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
	}
}

actor DocMetalBoss : VCBaseWeapon
{
	weapon.ammotype "Base28Ammo"
	weapon.ammotype2 "DocRobotAmmo"
	+WEAPON.NOAUTOAIM
	Weapon.SlotNumber 1
	Tag "Doc Robot - Metal Blade"
	Obituary "$OB_DOCROBOT1"
	inventory.icon "METLSI"
	weapon.ammouse 2
	States
	{
		Ready:
		TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		DOCR A 0 A_GiveInventory("DocRobotSkinCheck",1)
		DOCR A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")
		
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,2)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,2)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,2)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 0 A_GiveInventory("Base28Ammo",1)
		Goto Ready
		
		AltSkinFrame:
		D_CR A 0
		Goto Ready+3
		
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		DOCR A 1 A_Lower
		Loop
		
		Select:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(991,0,3768)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		DOCR A 1 A_Raise
		Loop
		
		Fire:
		"####" A 0 A_GiveInventory("DocMetalM1Handler",1)//A_FireCustomMissile("DocMetalShot",0,1,1,8)
		"####" A 0 A_PlaySoundEx("weapon/metalblade","Weapon")
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(10, 46)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(2, 37)
		"####" A 6 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		goto Ready
		
		Altfire:
		"####" A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
		
		Altfire.BubbleStart:
		"####" A 0 A_PlaySoundEx("Weapon/ShadowCloneAppear","Auto")
		"####" A 0 A_TakeInventory("DocMetalFlag")
		"####" A 0 A_TakeInventory("DocAirFlag")
		"####" A 0 A_GiveInventory("DocBubbleFlag")
		"####" A 0 A_TakeInventory("DocQuickFlag")
		"####" A 0 A_TakeInventory("DocCrashFlag")
		"####" A 0 A_TakeInventory("DocFlashFlag")
		"####" A 0 A_TakeInventory("DocHeatFlag")
		"####" A 0 A_TakeInventory("DocWoodFlag")
		"####" A 0 A_GiveInventory("ToadChargeDamageGive")
		"####" A 0 A_SpawnItemEx("DocBubbleImage",0,0,323)
		
		Altfire.BubbleHold:
		"####" B 1 Offset(0,34) A_GiveInventory("DocRobotChargeHandler",1)
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",87,"Altfire.MetalStart")
		"####" B 0 A_Refire("Altfire.BubbleHold")
		goto Altfire.Bubble
		
		Altfire.MetalStart:
		"####" A 0 A_PlaySoundEx("Weapon/ShadowCloneAppear","Auto")
		"####" A 0 A_GiveInventory("DocMetalFlag")
		"####" A 0 A_TakeInventory("DocAirFlag")
		"####" A 0 A_TakeInventory("DocBubbleFlag")
		"####" A 0 A_TakeInventory("DocQuickFlag")
		"####" A 0 A_TakeInventory("DocCrashFlag")
		"####" A 0 A_TakeInventory("DocFlashFlag")
		"####" A 0 A_TakeInventory("DocHeatFlag")
		"####" A 0 A_TakeInventory("DocWoodFlag")
		"####" A 0 A_SpawnItemEx("DocMetalImage",0,0,323)
		
		Altfire.MetalHold:
		"####" B 1 Offset(0,36) A_GiveInventory("DocRobotChargeHandler",1)
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",174,"Altfire.AirStart")
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",87,1)
		goto Altfire.BubbleStart
		"####" B 0 A_Refire("Altfire.MetalHold")
		goto Altfire.Metal
		
		Altfire.AirStart:
		"####" A 0 A_PlaySoundEx("Weapon/ShadowCloneAppear","Auto")
		"####" A 0 A_TakeInventory("DocMetalFlag")
		"####" A 0 A_GiveInventory("DocAirFlag")
		"####" A 0 A_TakeInventory("DocBubbleFlag")
		"####" A 0 A_TakeInventory("DocQuickFlag")
		"####" A 0 A_TakeInventory("DocCrashFlag")
		"####" A 0 A_TakeInventory("DocFlashFlag")
		"####" A 0 A_TakeInventory("DocHeatFlag")
		"####" A 0 A_TakeInventory("DocWoodFlag")
		"####" A 0 A_SpawnItemEx("DocAirImage",0,0,323)
		
		Altfire.AirHold:
		"####" B 1 Offset(0,38) A_GiveInventory("DocRobotChargeHandler",1)
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",261,"Altfire.QuickStart")
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",174,1)
		goto Altfire.MetalStart
		"####" B 0 A_Refire("Altfire.AirHold")
		goto Altfire.Air
		
		Altfire.QuickStart:
		"####" A 0 A_PlaySoundEx("Weapon/ShadowCloneAppear","Auto")
		"####" A 0 A_TakeInventory("DocMetalFlag")
		"####" A 0 A_TakeInventory("DocAirFlag")
		"####" A 0 A_TakeInventory("DocBubbleFlag")
		"####" A 0 A_GiveInventory("DocQuickFlag")
		"####" A 0 A_TakeInventory("DocCrashFlag")
		"####" A 0 A_TakeInventory("DocFlashFlag")
		"####" A 0 A_TakeInventory("DocHeatFlag")
		"####" A 0 A_TakeInventory("DocWoodFlag")
		"####" A 0 A_SpawnItemEx("DocQuickImage",0,0,323)
		
		Altfire.QuickHold:
		"####" B 1 Offset(0,40) A_GiveInventory("DocRobotChargeHandler",1)
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",348,"Altfire.CrashStart")
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",261,1)
		goto Altfire.AirStart
		"####" B 0 A_Refire("Altfire.QuickHold")
		goto Altfire.Quick
		
		Altfire.CrashStart:
		"####" A 0 A_PlaySoundEx("Weapon/ShadowCloneAppear","Auto")
		"####" A 0 A_TakeInventory("DocMetalFlag")
		"####" A 0 A_TakeInventory("DocAirFlag")
		"####" A 0 A_TakeInventory("DocBubbleFlag")
		"####" A 0 A_TakeInventory("DocQuickFlag")
		"####" A 0 A_GiveInventory("DocCrashFlag")
		"####" A 0 A_TakeInventory("DocFlashFlag")
		"####" A 0 A_TakeInventory("DocHeatFlag")
		"####" A 0 A_TakeInventory("DocWoodFlag")
		"####" A 0 A_SpawnItemEx("DocCrashImage",0,0,323)
		
		Altfire.CrashHold:
		"####" B 1 Offset(0,42) A_GiveInventory("DocRobotChargeHandler",1)
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",435,"Altfire.HeatStart")
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",348,1)
		goto Altfire.QuickStart
		"####" B 0 A_Refire("Altfire.CrashHold")
		goto Altfire.Crash
		
		Altfire.HeatStart:
		"####" A 0 A_PlaySoundEx("Weapon/ShadowCloneAppear","Auto")
		"####" A 0 A_TakeInventory("DocMetalFlag")
		"####" A 0 A_TakeInventory("DocAirFlag")
		"####" A 0 A_TakeInventory("DocBubbleFlag")
		"####" A 0 A_TakeInventory("DocQuickFlag")
		"####" A 0 A_TakeInventory("DocCrashFlag")
		"####" A 0 A_TakeInventory("DocFlashFlag")
		"####" A 0 A_GiveInventory("DocHeatFlag")
		"####" A 0 A_TakeInventory("DocWoodFlag")
		"####" A 0 A_SpawnItemEx("DocHeatImage",0,0,323)
		
		Altfire.HeatHold:
		"####" B 1 Offset(0,44) A_GiveInventory("DocRobotChargeHandler",1)
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",522,"Altfire.WoodStart")
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",435,1)
		goto Altfire.CrashStart
		"####" B 0 A_Refire("Altfire.HeatHold")
		goto Altfire.Heat
		
		Altfire.WoodStart:
		"####" A 0 A_PlaySoundEx("Weapon/ShadowCloneAppear","Auto")
		"####" A 0 A_TakeInventory("DocMetalFlag")
		"####" A 0 A_TakeInventory("DocAirFlag")
		"####" A 0 A_TakeInventory("DocBubbleFlag")
		"####" A 0 A_TakeInventory("DocQuickFlag")
		"####" A 0 A_TakeInventory("DocCrashFlag")
		"####" A 0 A_TakeInventory("DocFlashFlag")
		"####" A 0 A_TakeInventory("DocHeatFlag")
		"####" A 0 A_GiveInventory("DocWoodFlag")
		"####" A 0 A_SpawnItemEx("DocWoodImage",0,0,323)
		
		Altfire.WoodHold:
		"####" B 1 Offset(0,46) A_GiveInventory("DocRobotChargeHandler",1)
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",609,"Altfire.FlashStart")
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",522,1)
		goto Altfire.HeatStart
		"####" B 0 A_Refire("Altfire.WoodHold")
		goto Altfire.Wood
		
		Altfire.FlashStart:
		"####" A 0 A_PlaySoundEx("Weapon/ShadowCloneAppear","Auto")
		"####" A 0 A_TakeInventory("DocMetalFlag")
		"####" A 0 A_TakeInventory("DocAirFlag")
		"####" A 0 A_TakeInventory("DocBubbleFlag")
		"####" A 0 A_TakeInventory("DocQuickFlag")
		"####" A 0 A_TakeInventory("DocCrashFlag")
		"####" A 0 A_GiveInventory("DocFlashFlag")
		"####" A 0 A_TakeInventory("DocHeatFlag")
		"####" A 0 A_TakeInventory("DocWoodFlag")
		"####" A 0 A_SpawnItemEx("DocFlashImage",0,0,323)
		
		Altfire.FlashHold:
		"####" B 1 Offset(0,48) A_GiveInventory("DocRobotChargeHandler",1)
		"####" B 0 A_JumpIfInventory("DocRobotAmmo",609,1)
		goto Altfire.WoodStart
		"####" B 0 A_Refire("Altfire.FlashHold")
		goto Altfire.Flash
		
		Altfire.Bubble:
		"####" A 0 A_FireCustomMissile("DocBubbleAlt",0,0,1,8)
		"####" A 0 A_GiveInventory("ToadChargeDamageTake")
		"####" A 0 A_PlaySoundEx("weapon/wrapfire","Weapon")
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(10, 46)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(2, 37)
		"####" A 9 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"####" A 0 A_ClearRefire
		"####" A 0 A_TakeInventory("DocBubbleFlag")
		goto Ready
		
		Altfire.Metal:
		"####" A 0 A_FireCustomMissile("DocMetalAlt",0,0,1,8)
		"####" A 0 A_GiveInventory("ToadChargeDamageTake")
		"####" A 0 A_PlaySoundEx("weapon/metalblade","Weapon")
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(10, 46)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(2, 37)
		"####" A 6 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"####" A 0 A_ClearRefire
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" A 0 A_TakeInventory("DocMetalFlag")
		goto Ready
		
		Altfire.Crash:
		"####" B 0 A_GiveInventory("DocCrashM2Handler",1)
		"####" A 0 A_GiveInventory("ToadChargeDamageTake")
		"####" A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(10, 46)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(2, 37)
		"####" A 6 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"####" A 0 A_ClearRefire
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" A 0 A_TakeInventory("DocCrashFlag")
		goto Ready
		
		Altfire.Quick:
		"####" A 0 A_PlaySoundEx("weapon/tengudash","Weapon")
		"####" A 0 A_GiveInventory("DocQuickSpeed")
		"####" A 0 A_GiveInventory("ToadChargeDamageTake")
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		
		Altfire.QuickLoop:
		"####" A 2 Offset(0,56) A_SpawnItemEx("DocQuickAlt", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
		"####" A 0 A_GiveInventory("CutterFlag",1)
		"####" A 0 A_JumpIfInventory("CutterFlag",35,1)
		loop
		"####" A 0 A_TakeInventory("CutterFlag",999)
		"####" A 6 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"####" A 0 A_ClearRefire
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" A 0 A_TakeInventory("DocQuickFlag")
		goto Ready
		
		Altfire.Air:
		"####" A 0 A_SpawnItemEx("DocAirAlt",0,0,32,15,0,0)
		"####" AA 0 A_SpawnItemEx("DocAirAlt",0,0,32,15,random(4,8),random(0,0))
		"####" AA 0 A_SpawnItemEx("DocAirAlt",0,0,32,15,random(-8,-4),random(4,8))
		"####" AA 0 A_SpawnItemEx("DocAirAlt",0,0,32,15,random(8,16),random(8,16))
		"####" AA 0 A_SpawnItemEx("DocAirAlt",0,0,32,15,random(-16,-8),random(8,16))
		"####" AA 0 A_SpawnItemEx("DocAirAlt",0,0,32,15,random(16,32),random(2,16))
		"####" AA 0 A_SpawnItemEx("DocAirAlt",0,0,32,15,random(-32,-16),random(2,16))
		"####" A 0 A_GiveInventory("ToadChargeDamageTake")
		"####" A 0 A_PlaySoundEx("weapon/AirWall","Weapon")
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(10, 46)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(2, 37)
		"####" A 6 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"####" A 0 A_ClearRefire
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" A 0 A_TakeInventory("DocAirFlag")
		goto Ready
		
		Altfire.Heat:
		"####" A 0 A_PlaySoundEx("weapon/heattackle","Weapon")
		"####" A 0 A_GiveInventory("DocHeatAltStart")
		"####" A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		"####" A 0 A_GiveInventory("ToadChargeDamageTake")
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		
		Altfire.HeatLoop:
		"####" A 0 A_GiveInventory("WeaponCharge",1)
		"####" Z 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"Altfire.HeatCancel")
		"####" Z 0 A_GiveInventory("DocHeatAltLoop")
		"####" A 0 A_JumpIfInventory("WeaponCharge",50,"Altfire.HeatEnd")
		loop
		
		Altfire.HeatEnd:
		"####" A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		"####" A 0 A_GiveInventory("DocHeatAltEnd")
		"####" A 6 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"####" A 0 A_ClearRefire
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" A 0 A_TakeInventory("WeaponCharge",99)
		"####" A 0 A_TakeInventory("DocHeatFlag")
		goto Ready
		
		
		Altfire.HeatCancel:
		"####" B 1 A_PlaySoundEx("weapon/turboskid","Weapon")
		"####" A 28 A_GiveInventory("DocHeatAltEndCancel")
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" A 0 A_TakeInventory("WeaponCharge",99)
		"####" A 0 A_TakeInventory("DocHeatFlag")
		"####" A 1 A_GiveInventory("DocHeatAltEndCancel2")
		goto Ready
		
		Altfire.Wood:
		"####" A 0 A_FireCustomMissile("DocWoodAlt",0,0,1,8)
		"####" A 0 A_PlaySoundEx("weapon/leafshieldcounter","Weapon")
		"####" A 0 A_GiveInventory("ToadChargeDamageTake")
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(10, 46)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(2, 37)
		"####" A 6 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"####" A 0 A_ClearRefire
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" A 0 A_TakeInventory("DocWoodFlag")
		goto Ready
		
		Altfire.Flash:
		"####" A 0 A_FireCustomMissile("DocFlashAlt",0,0,1,8)
		"####" A 0 A_FireCustomMissile("DocTimeStopperFXSpawner",0,0,0,0)
		"####" A 0 A_GiveInventory("ToadChargeDamageTake")
		"####" A 0 A_PlaySoundEx("weapon/timestopper","Auto")
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" B 1 Offset(5, 41) ACS_NamedExecuteWithResult("VC_SetState",3)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(10, 46)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(2, 37)
		"####" A 6 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"####" A 0 A_ClearRefire
		"####" A 0 A_TakeInventory("DocRobotAmmo",999)
		"####" A 0 A_TakeInventory("DocFlashFlag")
		goto Ready
		
		UltimateAttack:
		"####" A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,121)
		"####" A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		"####" A 0 A_TakeInventory("MediumUltimateAmmo",1)
		"####" A 0 A_TakeInventory("UltAttackFlag")
		"####" A 0 A_SpawnItemEx("DocKamegoroMaker")
		"####" A 0 A_SpawnItemEx("DocUltWatcher")
		"####" A 1
		goto Ready
	}
}

actor DocAirBoss : DocMetalBoss
{
	Weapon.SlotNumber 2
	Tag "Doc Robot - Air Shooter"
	Obituary "$OB_DOCROBOT2"
	inventory.icon "AIRSI"
	weapon.ammouse 3
	States
	{
		Ready:
		TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		DOCR A 0 A_GiveInventory("DocRobotSkinCheck",1)
		DOCR A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")
		
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 0 A_GiveInventory("Base28Ammo",1)
		Goto Ready
		
		AltSkinFrame:
		D_CR A 0
		Goto Ready+3
		
		Fire:
		"####" A 0 A_FireCustomMissile("DocAirShot",0,0,-32,0)
		"####" A 0 A_FireCustomMissile("DocAirShot",0,0,0,32)
		"####" A 0 A_FireCustomMissile("DocAirShot",0,1,32,0)
		"####" A 0 A_PlaySoundEx("weapon/airshooter","Weapon")
		"####" B 2 Offset(5, 41)
		"####" B 2 Offset(9, 45)
		"####" B 2 Offset(10, 46)
		"####" B 2 Offset(9, 45)
		"####" B 2 Offset(5, 41)
		"####" B 2 Offset(2, 37)
		"####" A 8 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		goto Ready
	}
}

actor DocBubbleBoss : DocMetalBoss
{
	Weapon.SlotNumber 3
	Tag "Doc Robot - Bubble Buster"
	Obituary "$OB_DOCROBOT3"
	inventory.icon "BUBBI"
	weapon.ammouse 1
	States
	{
		Ready:
		TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		DOCR A 0 A_GiveInventory("DocRobotSkinCheck",1)
		DOCR A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")
		
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 0 A_GiveInventory("Base28Ammo",1)
		Goto Ready
		
		AltSkinFrame:
		D_CR A 0
		Goto Ready+3
		
		Fire:
		"####" A 0 A_FireCustomMissile("DocBubbleShot2",0,1,1,8)
		"####" A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(10, 46)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(2, 37)
		"####" A 5 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		goto Ready
	}
}

actor DocQuickBoss : DocMetalBoss
{
	Weapon.SlotNumber 4
	Tag "Doc Robot - Quick Boomerang"
	Obituary "$OB_DOCROBOT4"
	inventory.icon "QUICKSI"
	weapon.ammouse 4
	States
	{
		Ready:
		TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		DOCR A 0 A_GiveInventory("DocRobotSkinCheck",1)
		DOCR A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")
		
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 0 A_GiveInventory("Base28Ammo",1)
		Goto Ready
		
		AltSkinFrame:
		D_CR A 0
		Goto Ready+3
		
		Fire:/*
		"####" A 0 A_FireCustomMissile("DocQuickShot",0,1,1,8)
		"####" A 0 A_FireCustomMissile("DocQuickShot",-20,0,1,8)
		"####" A 0 A_FireCustomMissile("DocQuickShot",20,0,1,8)*/
		"####" A 0 A_GiveInventory("DocQuickM1Handler",1)
		"####" A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(10, 46)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(2, 37)
		"####" A 13 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		goto Ready
	}
}

actor DocCrashBoss : DocMetalBoss
{
	Weapon.SlotNumber 5
	Tag "Doc Robot - Crash Bomb"
	Obituary "$OB_DOCROBOT5"
	inventory.icon "CRASSI"
	weapon.ammouse 4
	States
	{
		Ready:
		TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		DOCR A 0 A_GiveInventory("DocRobotSkinCheck",1)
		DOCR A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")
		
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 0 A_GiveInventory("Base28Ammo",1)
		Goto Ready
		
		AltSkinFrame:
		D_CR A 0
		Goto Ready+3
		
		Fire:
		"####" A 0 A_GiveInventory("DocCrashM1Handler",1)
		"####" A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(10, 46)
		"####" B 1 Offset(9, 45)
		"####" B 1 Offset(5, 41)
		"####" B 1 Offset(2, 37)
		"####" A 16 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		goto Ready
	}
}

actor DocFlashBoss : DocMetalBoss
{
	Weapon.SlotNumber 6
	Tag "Doc Robot - Flash Buster"
	Obituary "$OB_DOCROBOT6"
	inventory.icon "FLASHSI"
	weapon.ammouse 1
	States
	{
		Ready:
		TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		DOCR A 0 A_GiveInventory("DocRobotSkinCheck",1)
		DOCR A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")
		
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 0 A_GiveInventory("Base28Ammo",1)
		Goto Ready
		
		AltSkinFrame:
		D_CR A 0
		Goto Ready+3
		
		Fire:
		"####" A 0 A_JumpIfNoAmmo("Ready")
		"####" A 0 A_FireCustomMissile("DocFlashShot",random(-7,7),1,8,8)
		"####" A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
		"####" B 1 Offset(4,30)
		"####" B 1 Offset(1,33) A_GiveInventory("BaseCustomFlag1",1)
		"####" B 1 Offset(4,36)
		"####" B 0 A_Refire
		"####" B 0 A_TakeInventory("BaseCustomFlag1",999)
		goto Ready
	}
}

actor DocHeatBoss : DocMetalBoss
{
	Weapon.SlotNumber 7
	Tag "Doc Robot - Atomic Fire"
	Obituary "$OB_DOCROBOT7"
	inventory.icon "ATOMI"
	weapon.ammouse 3
	States
	{
		Ready:
		TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		DOCR A 0 A_GiveInventory("DocRobotSkinCheck",1)
		DOCR A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")
		
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,3)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 0 A_GiveInventory("Base28Ammo",1)
		Goto Ready
		
		AltSkinFrame:
		D_CR A 0
		Goto Ready+3
		
		Fire:
		"####" A 0 A_FireCustomMissile("DocHeatShotS",-10,0,8,0)
		"####" A 0 A_FireCustomMissile("DocHeatShotM",10,0,8,8)
		"####" A 0 A_FireCustomMissile("DocHeatShotF",0,1,8,24)
		"####" A 0 A_PlaySoundEx("weapon/atomicfire","Weapon")
		"####" B 2 Offset(5, 41)
		"####" B 2 Offset(9, 45)
		"####" B 2 Offset(10, 46)
		"####" B 2 Offset(9, 45)
		"####" B 2 Offset(5, 41)
		"####" B 2 Offset(2, 37)
		"####" A 10 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		goto Ready
	}
}

actor DocWoodBoss : DocMetalBoss
{
	Weapon.SlotNumber 8
	Tag "Doc Robot - Leaf Shield"
	Obituary "$OB_DOCROBOT8"
	inventory.icon "LEAFI"
	weapon.ammouse 14
	States
	{
		Ready:
		TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		DOCR A 0 A_GiveInventory("DocRobotSkinCheck",1)
		DOCR A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")
		
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,14)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,14)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,14)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,0)) "####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		"####" A 0 A_GiveInventory("Base28Ammo",1)
		Goto Ready
		
		AltSkinFrame:
		D_CR A 0
		Goto Ready+3
		
		Fire:
		"####" A 0 A_FireCustomMissile("DocWoodShot",0,1,1,8)
		"####" A 0 A_PlaySoundEx("weapon/leafshield","Weapon")
		"####" B 2 Offset(5, 41)
		"####" B 2 Offset(9, 45)
		"####" B 2 Offset(10, 46)
		"####" B 2 Offset(9, 45)
		"####" B 2 Offset(5, 41)
		"####" B 2 Offset(2, 37)
		"####" A 6 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		goto Ready
	}
}

actor DocRobotAmmo : Ammo
{
	inventory.amount 1
	inventory.maxamount 609
	+INVENTORY.IGNORESKILL
}


actor DocMetalFlag : inventory{inventory.amount 1 inventory.maxamount 1}
actor DocAirFlag : inventory{inventory.amount 1 inventory.maxamount 1}
actor DocBubbleFlag : inventory{inventory.amount 1 inventory.maxamount 1}
actor DocQuickFlag : inventory{inventory.amount 1 inventory.maxamount 1}
actor DocCrashFlag : inventory{inventory.amount 1 inventory.maxamount 1}
actor DocFlashFlag : inventory{inventory.amount 1 inventory.maxamount 1}
actor DocHeatFlag : inventory{inventory.amount 1 inventory.maxamount 1}
actor DocWoodFlag : inventory{inventory.amount 1 inventory.maxamount 1}

actor DocUltCancel : Powerup
{
Powerup.Duration 35
}

actor DocAttackFlag : Powerup
{
Powerup.Duration 2
}

actor DocUltCooldown : UltBuildCooldownGiver
{
Powerup.Duration 35
}

actor DocMetalShot : MetalBlade
{
Translation "4:4=217:217"
+RIPPER
Obituary "$OB_DOCROBOT1"
damagetype "DocMetal"
damage(7)
speed 50
Radius 5//3
Height 8//4
}

actor DocAirShot : AirManShot
{
damage(10)
speed 25
//Translation "208:208=[0,217,255]:[0,217,255]"
Translation "4:4=193:193"
Obituary "$OB_DOCROBOT2"
}

actor DocBubbleShot2 : BubbleManBuster
{
Obituary "$OB_DOCROBOT3"
damagetype "DocBubbleBuster"
Damage (10)
speed 60
+HITTRACER
States
{
Death:
Crash:
XDeath:
TNT1 A 0 A_CheckFlag("INVULNERABLE","Failed",AAPTR_TRACER)
TNT1 A 0 A_JumpIfInventory("CanBeGrabBustered", 1, "TeamCheck", AAPTR_TRACER)
stop
TeamCheck:
TNT1 A 0 A_JumpIfInventory("LightTeamFlag", 1, "LightCheck", AAPTR_TARGET)
TNT1 A 0 A_JumpIfInventory("WilyTeamFlag", 1, "WilyCheck", AAPTR_TARGET)
TNT1 A 0 A_JumpIfInventory("CossackTeamFlag", 1, "CossackCheck", AAPTR_TARGET)
TNT1 A 0 A_JumpIfInventory("KingTeamFlag", 1, "KingCheck", AAPTR_TARGET)
goto CritCheck
LightCheck:
TNT1 A 0 A_JumpIfInventory("LightTeamFlag", 1, "Failed", AAPTR_TRACER)
TNT1 A 1 A_JumpIf(true, "CritCheck")
wait
WilyCheck:
TNT1 A 0 A_JumpIfInventory("WilyTeamFlag", 1, "Failed", AAPTR_TRACER)
TNT1 A 1 A_JumpIf(true, "CritCheck")
wait
CossackCheck:
TNT1 A 0 A_JumpIfInventory("CossackTeamFlag", 1, "Failed", AAPTR_TRACER)
TNT1 A 1 A_JumpIf(true, "CritCheck")
wait
KingCheck:
TNT1 A 0 A_JumpIfInventory("KingTeamFlag", 1, "Failed", AAPTR_TRACER)
TNT1 A 1 A_JumpIf(true, "CritCheck")
wait
Failed:
TNT1 A 0
stop
CritCheck:
TNT1 A 0
TNT1 A 1 A_JumpIfInventory("PowerShock", 1, "Explode", AAPTR_TRACER)
stop
Explode:
TNT1 A 0 A_PlaySoundEx("classes/criticalhit","Body")
TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("BubblemanFXTrail",random(-32,32),random(-32,32),random(0,64),random(5,8),0,random(-6,6),random(0,359))
TNT1 A 2 A_Explode(10,20,0,0,20)
stop
}
}

actor DocQuickShot : SuperQuickBoomerang
{
Translation "225:225=217:217"
Obituary "$OB_DOCROBOT4"
speed 30
damage(5)
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		DOQB ABAB 2
		DOQB ABAB 2 A_Stop
		DOQB A 0 A_ChangeVelocity(30,0,0,CVF_RELATIVE|CVF_REPLACE)
		DOQB AB 0 A_SeekerMissile(90,90,SMF_PRECISE|SMF_LOOK,256,10)
		Derp:
		DOQB AB 2
		loop
	}
}

actor DocCrashShot : CrashBomb
{
-HITTRACER
DamageType "DocCrash"
Obituary "$OB_DOCROBOT5"
translation "42:42=225:225"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRAB A 1
Goto Spawn+2
Death:
CRAB A 0 A_CheckFloor("Floor")
CRAB A 0 A_CheckCeiling("Ceiling")
CRAB A 0 A_SpawnItemEx("DocCrashShotWall")
TNT1 A 2
stop
Floor:
CRAB A 0 A_SpawnItemEx("DocCrashShotFloor")
stop
Ceiling:
CRAB A 0 A_SpawnItemEx("DocCrashShotCeiling")
stop
Crash:
XDeath:
CRAS A 0 A_ChangeFlag("NOINTERACTION",1)
CRAS A 0 A_PlaySound("weapon/crashexplode")
CRAS K 3 A_Explode(9,64,0)
CRAS LM 3
CRAS N 3 A_Explode(9,64,0)
CRAS OP 3
CRAS Q 3 A_Explode(9,64,0)
CRAS RS 3
CRAS T 3 A_Explode(9,64,0)
CRAS VW 3
stop
}
}

actor DocCrashShotDown : DocCrashShot
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRAB N 1
Goto Spawn+2
Floor:
CRAB A 0 A_SpawnItemEx("DocCrashShotDownFloor")
stop
}
}

actor DocCrashShotWall : DocCrashShot
{
damage(0)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CRAB B 3 A_PlaySound("weapon/crashland")
CRAB C 3
CRAB DCDCDCDCDCDCDC 3
Death:
Goto XDeath
}
}

actor DocCrashShotFloor : DocCrashShot
{
damage(0)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CRAB E 3 A_PlaySound("weapon/crashland")
CRAB F 3
CRAB GFGFGFGFGFGFGF 3
Death:
Goto XDeath
}
}

actor DocCrashShotDownFloor : DocCrashShotFloor
{
damage(0)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CRAB Q 3 A_PlaySound("weapon/crashland")
CRAB O 3
CRAB POPOPOPOPOPOPO 3
Death:
Goto XDeath
}
}

actor DocCrashShotCeiling : DocCrashShot
{
damage(0)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CRAB H 3 A_PlaySound("weapon/crashland")
CRAB I 3
CRAB JIJIJIJIJIJIJI 3
Death:
Goto XDeath
}
}

actor DocFlashShot : FlashBuster
{
Obituary "$OB_DOCROBOT6"
Speed 70
}


Actor DocHeatShotS : HeatBlastS
{
Damage (9)
Obituary "$OB_DOCROBOT7"
Translation "225:225=217:217", "174:174=41:41"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
DOAF A 1
Goto Spawn+2
Death:
DOAF A 0 A_SpawnItemEx("DocHeatPillar",0,0,0)
TNT1 A 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

Actor DocHeatShotM : DocHeatShotS
{
	Speed 36
}

Actor DocHeatShotF : DocHeatShotS
{
	Speed 42
}

Actor DocHeatPillar : HeatPillar
{
Translation "225:225=217:217", "174:174=41:41"
Obituary "$OB_DOCROBOT7"
Damage (5)
States
{
Spawn:
HEAP DD 0 A_GiveInventory("ProjectileCode",1)
DOAF A 1 A_JumpIf(z-floorz<6,"Flame")
Goto Spawn+2
Flame:
HEAP D 0 A_ChangeFlag("FLOORHUGGER",1)
HEAP D 0 A_ChangeFlag("MISSILE",1)
DOAF A 3
DOAF BCDEFGEFGEFGEFGEFGEFGEFGEFDCBA 2
Death:
TNT1 A 0
stop
}
}

actor DocWoodShot
{
translation "104:104=129:129"
Obituary "$OB_DOCROBOT8"
scale 2.5
species "DocWoodType"
+THRUSPECIES
+MISSILE
+NOGRAVITY
Damage (0)
+DONTBLAST
+RIPPER
+SHOOTABLE
+NOBLOOD
-SOLID
painchance 256
health 999999
+DONTRIP
+NORADIUSDMG
+ghost
+NOTARGETSWITCH
damagetype "Woodman"
Speed 25
mass 99999
Radius 40
Height 40
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
loopit:
WMLS EEEGGG 1 A_Explode(4,48,0,0,48)
loop
Pain:
TNT1 A 0 
TNT1 A 0 A_PlaySound("item/protoreflect")
goto loopit
}
}

Actor DocAttackCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",4)==1,"Nope")
TNT1 A 0 A_GiveInventory("DocAttackFlag")
stop

Nope:
TNT1 A 0
stop
}
}

Actor DocKameFire : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("MediumUltimateAmmo",8)
TNT1 A 0 A_FireCustomMissile("DocKamegoro",0,0,0,30)
stop
}
}

actor DocKamegoroMaker
{
scale 2.5
PROJECTILE
+NOINTERACTION
+NOCLIP
damage(0)
radius 5
height 5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
Spawn2:
D3KG A 0 A_GiveToTarget("DocAttackCheck")
D3KG A 0 A_JumpIfInTargetInventory("DocUltCancel",1,"Death")
D3KG A 0 A_JumpIfInTargetInventory("DocAttackFlag",1,"Spawn3")
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
loop
Spawn3:
DK3G A 0 A_GiveToTarget("DocKameFire")
DK3G A 0 A_PlaySoundEx("weapon/NeedleSARDakka","Body")
DK3G A 0 A_PlaySoundEx("weapon/pshot","Weapon")
D3KG A 0 A_JumpIfInTargetInventory("DocUltCancel",1,"Death")
D3KG B 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG B 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG B 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG B 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 0 A_JumpIfInTargetInventory("DocUltCancel",1,"Death")
D3KG B 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 0 A_JumpIfInTargetInventory("DocUltCancel",1,"Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 0 A_JumpIfInTargetInventory("DocUltCancel",1,"Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
D3KG A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
D3KG A 0 A_JumpIfInTargetInventory("DocUltCancel",1,"Death")
goto Spawn2
Death:
TNT1 A 0 A_SpawnItemEx("NapalmExplodeFX",0,0,100)
TNT1 A 2 A_PlaySoundEx("misc/mm3explosion","Body")
stop
}
}

actor DocUltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("MediumUltimateAmmo",1)
TNT1 A 0 A_GiveToTarget("DocUltCooldown")
TNT1 AAAAAAAAAA 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_JumpIfInTargetInventory("MediumUltimateAmmo",1,"Spawn")

Death:
TNT1 A 0 A_GiveToTarget("DocUltCancel")
TNT1 A 0 A_TakeFromTarget("MediumUltimateAmmo",999)
stop
}
}

actor DocKamegoro
{
PROJECTILE
+HEXENBOUNCE
+BOUNCEONCEILINGS
damage(20)
speed 30
bouncecount 28
bouncefactor 0.99
wallbouncefactor 0.99
radius 16
height 16
scale 2.5
Obituary "$OB_DOCROBOT10"
States
{
Spawn:
D3KG EE 0 A_GiveInventory("ProjectileCode",1)
D3KG E 0 A_JumpIfInTargetInventory("IsUsingAltSkin1",1,"AltSkinFrame")
D3KG E 0
D3KG E 0 A_Jump(256,"Spawn.Down")
goto Spawn.Down

Spawn.Down:
"####" E 0 A_GiveToTarget("DocUltCooldown")
"####" E 1 A_JumpIf(momz>0, "Spawn.Up")
"####" E 0 A_GiveInventory("CutterFlag",1)
"####" E 0 A_JumpIfInventory("CutterFlag",175,"LoseTheShell")
loop

AltSkinFrame:
D_KG E 0
goto Spawn.Down 

Spawn.Up:
"####" D 0 A_GiveToTarget("DocUltCooldown")
"####" D 1 A_JumpIf(momz<0, "Spawn.Down")
"####" D 0 A_GiveInventory("CutterFlag",1)
"####" D 0 A_JumpIfInventory("CutterFlag",175,"LoseTheShell")
loop

LoseTheShell:
"####" A 0 A_ScaleVelocity(2.0)
"####" A 0 A_SpawnItemEx("DocKameShellFall",0,0,0,0,0,-10,0,0,1)
"####" A 0 A_JumpIf(momz>0, "SpawnFast.Up")

SpawnFast.Down:
"####" G 0 A_GiveToTarget("DocUltCooldown")
"####" G 1 A_JumpIf(momz>0, "SpawnFast.Up")
loop

SpawnFast.Up:
"####" F 0 A_GiveToTarget("DocUltCooldown")
"####" F 1 A_JumpIf(momz<0, "SpawnFast.Down")
loop

Death:
MMFX BCDE 2
stop
}
}

actor DocKameShellFall
{
Obituary "$OB_DOCROBOT10"
-NOGRAVITY
PROJECTILE
Radius 16
Height 16
Scale 2.5
Speed 0
Damage (0)
damagetype "DocRobot"
States
{
Spawn:
D3KG CC 0 A_GiveInventory("ProjectileCode",1)
D3KG C 0 A_JumpIfInTargetInventory("IsUsingAltSkin1",1,"AltSkinFrame")
D3KG C 0
D3KG C 0 A_Jump(256,"loopit")
goto loopit
loopit:
"####" C 1
loop

AltSkinFrame:
D_KG C 0
goto loopit

Death:
TNT1 A 0 A_SpawnItemEx("DocKameShell",0,0,8,0,0,0,0,1)
stop
XDeath:
TNT1 A 0 A_SpawnItemEx("NapalmExplodeFX",0,0,0)
TNT1 A 0 A_Explode(20,128,0)
TNT1 A 2 A_PlaySoundEx("misc/mm3explosion","Body")
stop
}
}

actor DocKameShell
{
Obituary "$OB_DOCROBOT10"
PROJECTILE
Radius 16
Height 16
reactiontime 350
Scale 2.5
Speed 0
Damage (0)
damagetype "DocRobot"
States
{
Spawn:
D3KG CC 0 A_GiveInventory("ProjectileCode",1)
D3KG C 0 A_JumpIfInTargetInventory("IsUsingAltSkin1",1,"AltSkinFrame")
D3KG C 0
D3KG C 0 A_Jump(256,"loopit")
goto loopit
loopit:
"####" C 0 A_GiveToTarget("DocUltCooldown")
"####" C 1 A_Countdown
loop

AltSkinFrame:
D_KG C 0
goto loopit

Death:
XDeath:
TNT1 A 0 A_SpawnItemEx("NapalmExplodeFX",0,0,0)
TNT1 A 0 A_Explode(20,128,0)
TNT1 A 2 A_PlaySoundEx("misc/mm3explosion","Body")
stop
}
}

Actor DocBubbleAlt : BubblemanLead
{
	Speed 25
	Damage (12)
	Obituary "$OB_DOCROBOT9"
	+BOUNCEONFLOORS
	-BOUNCEONWALLS
	BounceCount 10
	BounceFactor 1.0
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 0 A_SetArg(0,3)
		Spawn_L:
		BBLD A 3 A_CheckFloor("Bounce.Floor")
		Goto Spawn_L
		Bounce.Floor:
		BBLD A 0 A_ScaleVelocity(0.9)
		BBLD A 0 A_CountDownArg(0,"Death")
		BBLD A 0 ThrustThingZ(0,35,0,0)
		BBLD AAA 1
		GotO Spawn+3
		Death:
		TNT1 A 0 A_SetScale(1.25)
		TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
		TNT1 A 0 A_Stop
		VLT2 B 3 A_Stop
		Stop
	}
}

actor DocMetalAlt : MetalWeakGear
{
//Translation "225:225=4:4", "174:174=225:225"
Obituary "$OB_DOCROBOT9"
Speed 50
Radius 12//3
Height 60//4
Damage (8)
+DOOMBOUNCE
-BOUNCEONFLOORS
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
METG GH 3
Goto Spawn+2
Death:
TNT1 A 1 A_CheckFloor("GearGo")
stop
GearGo:
TNT1 A 0 A_SpawnItemEx("DocMetalAlt2",0,0,0,50)
stop
}
}

actor DocMetalAlt2 : MetalWeakGear2
{
//Translation "225:225=4:4", "174:174=225:225"
Obituary "$OB_DOCROBOT9"
bouncecount 4
Radius 12//3
Height 60//4
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
loopit:
METG I 0 A_PlaySoundEx("misc/repairing","Body")
METG I 0 A_JumpIfInventory("CutterFlag",280,"Death")
METG I 0 A_GiveInventory("CutterFlag",6)
METG IJIJIJ 1 A_JumpIf(z-floorz>0, "Falling")
loop
Falling:
TNT1 A 0 A_ChangeVelocity(0,0,-50,CVF_REPLACE|CVF_RELATIVE)
TNT1 A 0 ThrustThingZ(0,50,1,0)
TNT1 A 0 A_PlaySoundEx("misc/repairing","Body")
TNT1 A 0 A_GiveInventory("CutterFlag",6)
TNT1 A 0 A_JumpIfInventory("CutterFlag",280,"Death")
METG IJIJIJ 1 A_CheckFloor("Land")
goto Falling+2
Land:
METG I 0 A_Recoil(-50)
METG I 0 ThrustThingZ(0,0,0,0)
goto loopit
Death:
TNT1 A 0
stop
}
}

actor DocCrashAlt : CrashBomb
{
-HITTRACER
Obituary "$OB_DOCROBOT9"
damagetype "DocCrash"
//translation "225:225=42:42"
translation "42:42=225:225"
}

actor DocCrashAltDown : DocCrashAlt
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRAB N 1
Goto Spawn+2
Floor:
CRAB A 0 A_SpawnItemEx("DocCrashAltDownFloor")
stop
}
}

actor DocCrashAltDownFloor : DocCrashAltDown
{
damage(0)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CRAB Q 3 A_PlaySound("weapon/crashland")
CRAB O 3
CRAB POPOPOPOPOPOPO 3
Death:
Goto XDeath
}
}

actor DocQuickSpeed : PowerSpeed
{
	Powerup.Duration 70
	Speed  2.5
}

actor DocQuickAlt : QuickHitBox1
{
	Obituary "$OB_DOCROBOT9"
	+THRUACTORS
	DamageType "DocQuick"
	Damage (0)
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 1 A_Explode(5,48,0,0,48)
		stop
	}
}

actor DocAirAlt : AirWall
{
	species "DocAirType"
	Damage (14)
	Obituary "$OB_DOCROBOT9"
	Translation "4:4=193:193"//Translation "208:208=[0,217,255]:[0,217,255]"
	+THRUACTORS
		States
		{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		AIRS AABBCC 1 //A_ChangeVelocity(3,0,0,CVF_RELATIVE)
		AIRS A 0 A_ChangeFlag("THRUACTORS",0)
		AIRS A 0 A_ChangeFlag("SHOOTABLE",1)
		AIRS A 0 A_Stop
		AIRS A 1 ACS_ExecuteAlways(548,0,0)
		AIRS A 0 A_ChangeVelocity(cos(pitch)*(40+ACS_ExecuteWithResult(548)/30),0,-sin(pitch)*(40+ACS_ExecuteWithResult(548)/30),CVF_RELATIVE|CVF_REPLACE)
		AIRS AABBCC 1 A_ScaleVelocity(1.1)
		loopit:
		AIRS ABC 2
		loop
	}
}

Actor DocHeatAltStart : CustomInventory
{
States
{
Pickup:
HAZH D 0 A_TakeInventory("UnSolid",1)
HAZH D 0 A_ChangeFlag("SOLID",0)
HAZH D 0 A_GiveInventory("InvProtection")
HAZH D 0 A_ChangeFlag("INVULNERABLE",1)
HAZH D 0 A_ChangeFlag("PICKUP",0)
HAZH D 0 A_ChangeFlag("NOGRAVITY",1)
TNT1 A 0 ACS_ExecuteAlways(191,0,APROP_JumpZ,0,1)
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_PlaySoundEx("heatman/tackle","Weapon")
TNT1 A 0 A_GiveInventory("BaseCustomFlag2",1)
stop
}
}

Actor DocHeatAltLoop : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob", Cos(Pitch)*46.0),0,-Sin(Pitch)*46,3)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,52)
TNT1 A 0 A_SpawnItemEx("DocHeatAltHitbox",0,0,24)
TNT1 A 0 A_SpawnItemEx("HeatTackleFX",0,0,32,0,0,0,0,1)
stop
}
}

Actor DocHeatAltEnd : CustomInventory
{
States
{
Pickup:
DRIA A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_ChangeFlag("PICKUP",1)
HAZH D 0 A_ChangeFlag("NOGRAVITY",0)
HAZH D 0 A_TakeInventory("InvProtection")
HAZH D 0 A_ChangeFlag("INVULNERABLE",0)
TNT1 A 0 ACS_ExecuteAlways(191,0,APROP_JumpZ,10,1)
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 A_Stop
HAZH D 0 A_TakeInventory("BaseCustomFlag2")
stop
}
}

Actor DocHeatAltEndCancel : CustomInventory
{
States
{
Pickup:
DRIA A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_ChangeFlag("PICKUP",1)
HAZH D 0 A_TakeInventory("InvProtection")
HAZH D 0 A_TakeInventory("BaseCustomFlag2")
HAZH D 0 A_ChangeFlag("INVULNERABLE",0)
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 SetPlayerProperty(0,1,3)
TNT1 A 0 SetPlayerProperty(0,1,0)
HAZH D 0 A_ChangeFlag("NOGRAVITY",1)
TNT1 A 0 A_Stop
stop
}
}

Actor DocHeatAltEndCancel2 : CustomInventory
{
States
{
Pickup:
HAZH D 0 A_ChangeFlag("NOGRAVITY",0)
TNT1 A 0 ACS_ExecuteAlways(191,0,APROP_JumpZ,10,1)
TNT1 A 0 SetPlayerProperty(0,0,0)
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 A_Stop
stop
}
}

actor DocHeatAltHitbox : HeatmanTackleHitbox
{
	Obituary "$OB_DOCROBOT9"
}

Actor DocWoodAlt
{
	Obituary "$OB_DOCROBOT9"
	translation "104:104=129:129"
	PROJECTILE
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_SpawnItemEx("DocWoodRainMaker",0,0,0,0,0,0,0,1)
		stop
	}
}

actor DocWoodRainMaker : LeafRainMakingIsDaBest
{
	translation "104:104=129:129"
	Obituary "$OB_DOCROBOT9"
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		LEF2 AAAA 6 ThrustThingZ(0,60,0,0)
		LEF2 A 0 A_Stop
		Death:
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf2",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf3",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf4",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf5",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_PlaySoundEx("weapon/leafrain","Body")
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf2",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf3",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf4",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf5",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_PlaySoundEx("weapon/leafrain","Body")
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf2",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf3",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf4",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf5",0,0,0,0,0,0,0,1)
		TNT1 A 4 A_PlaySoundEx("weapon/leafrain","Body")
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf2",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf3",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf4",0,0,0,0,0,0,0,1)
		TNT1 A 0 A_SpawnItemEx("DocWoodFallLeaf5",0,0,0,0,0,0,0,1)
		stop
	}
}

actor DocWoodFallLeaf : CeilingLeaf
{
	translation "104:104=129:129"
	Obituary "$OB_DOCROBOT9"
	states
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 1 A_SpawnItemEx("DocWoodLeaf",random(-128,128),random(-128,128),320,0,0,-16,0,1)
		TNT1 AAAA 1 A_Countdown
		stop
	}
}

actor DocWoodFallLeaf2 : DocWoodFallLeaf
{
	Obituary "$OB_DOCROBOT9"
	states
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 1 A_SpawnItemEx("DocWoodLeaf",random(100,320),random(100,320),320,0,0,-16,0,1)
		TNT1 AAAA 1 A_Countdown
		stop
	}
}

actor DocWoodFallLeaf3 : DocWoodFallLeaf
{
	Obituary "$OB_DOCROBOT9"
	states
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 1 A_SpawnItemEx("DocWoodLeaf",random(-100,-320),random(-100,-320),320,0,0,-16,0,1)
		TNT1 AAAA 1 A_Countdown
		stop
	}
}

actor DocWoodFallLeaf4 : DocWoodFallLeaf
{
	Obituary "$OB_DOCROBOT9"
	states
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 1 A_SpawnItemEx("DocWoodLeaf",random(-100,-320),random(100,320),320,0,0,-16,0,1)
		TNT1 AAAA 1 A_Countdown
		stop
	}
}

actor DocWoodFallLeaf5 : DocWoodFallLeaf
{
	Obituary "$OB_DOCROBOT9"
	states
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 1 A_SpawnItemEx("DocWoodLeaf",random(128,256),random(-128,-256),320,0,0,-16,0,1)
		TNT1 AAAA 1 A_Countdown
		stop
	}
}
actor DocWoodLeaf : WoodManLeaf
{
	translation "104:104=129:129"
	Obituary "$OB_DOCROBOT9"
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		LEF2 A 0 A_ChangeVelocity(5,0,momz,CVF_RELATIVE|CVF_REPLACE)
		LEF2 AAABBBCCCBBB 1 A_JumpIf(ceilingz-z>12, "Spawn2")
		LEF2 AAAA 0 A_JumpIf(momz==0,"Death")
		LEF2 A 0 A_CountDown
		LEF2 A 0 A_ChangeVelocity(-5,0,momz,CVF_RELATIVE|CVF_REPLACE) 
		LEF2 AAABBBCCCBBB 1 A_JumpIf(ceilingz-z>12, "Spawn2")
		LEF2 AAAA 0 A_JumpIf(momz==0,"Death")
		LEF2 A 0 A_CountDown
		Goto Spawn+2
		Spawn2:
		LEF2 AAAA 0 A_ChangeFlag("NOINTERACTION",0)
		LEF2 ABCB 3 A_ChangeVelocity(-5,0,momz,CVF_RELATIVE|CVF_REPLACE) 
		LEF2 ABCB 3 A_ChangeVelocity(5,0,momz,CVF_RELATIVE|CVF_REPLACE) 
		LEF2 AAAA 0 A_JumpIf(momz==0,"Death")
		LEF2 A 0 A_CountDown
		Goto Spawn
		Death:
		TNT1 A 0 A_Stop
		TNT1 A 0 A_Explode(11, 90, 0) //NERF
		TNT1 A 1 A_SpawnItemEx("LeafDebris",0,0,0,random(-15,15),random(-15,15),random(5,10),random(0,360),1)//MMFX BCDE 3
		stop
	}
}

actor DocFlashAlt : TimeStopperRadius
{
Obituary "$OB_DOCROBOT9"
damagetype "DocFlash"
states
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(20, 350, 0, 0, 350)
stop
}
}

actor DocTimeStopperFXSpawner //Meant to emulate the sparkle pattern in Mega Man 3 -Fr3ak
{
+NOINTERACTION
+NOGRAVITY
+FORCEXYBILLBOARD
-SOLID
scale 2.5
height 0
radius 0
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAA 0 A_SpawnItemEx("DocTimeStopperFX1",random(-225,225),random(-5,5),random(0,225),0,0,0,random(0,359),1)
TNT1 AAAAAAAA 0 A_SpawnItemEx("DocTimeStopperFX2",random(-225,225),random(-5,5),random(0,225),0,0,0,random(0,359),1)
TNT1 AAAAAAAA 0 A_SpawnItemEx("DocTimeStopperFX3",random(-225,225),random(-5,5),random(0,225),0,0,0,random(0,359),1)
stop
}
}

actor DocTimeStopperFX1
{
+NOINTERACTION
+NOGRAVITY
+CLIENTSIDEONLY
+FORCEXYBILLBOARD
-SOLID
scale 2.5
height 0
radius 0
States
{
Spawn:
TNT1 A 0
FLAS A 17
FLAS C 6
stop
}
}

actor DocTimeStopperFX2 : DocTimeStopperFX1
{
States
{
Spawn:
TNT1 A 0
FLAS B 17
FLAS A 6
stop
}
}

actor DocTimeStopperFX3 : DocTimeStopperFX1
{
States
{
Spawn:
TNT1 A 0
FLAS C 17
FLAS B 6
stop
}
}

actor DocFlashWatcher
{
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_GiveToTarget("UnstunMeOnHit")
TNT1 A 0 A_JumpIfInTargetInventory("DontStunMeYouStupidBish",1,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("StoneStareProtect",1,"Death")
TNT1 A 0 A_SpawnItemEx("DocTimeStopperFX1", random(8, 64), 0, random(0, 64), 0, 0, 0, random(0, 359), 0, 85)
TNT1 A 0 A_SpawnItemEx("DocTimeStopperFX2", random(8, 64), 0, random(0, 64), 0, 0, 0, random(0, 359), 0, 85)
TNT1 A 0 A_SpawnItemEx("DocTimeStopperFX3", random(8, 64), 0, random(0, 64), 0, 0, 0, random(0, 359), 0, 85)
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 1 A_TakeFromTarget("NoThirdFire")
TNT1 A 0 A_TakeFromTarget("DontStunMeYouStupidBish")
TNT1 A 0 A_TakeFromTarget("UnstunMeOnHit")
TNT1 A 0 A_GiveToTarget("MovementReturnFailsafe",1)
stop
}
}

actor DocMetalImage
{
scale 2.5
PROJECTILE
+NOINTERACTION
+CLIENTSIDEONLY
+NOCLIP
damage(0)
radius 5
height 5
var int user_z;
reactiontime 17
States
{
Spawn:
TNT1 A 0
DO3I A 0 A_SetUserVar("user_z",300)
goto Spawn2
Spawn2:
"####" "#" 1 A_Warp(AAPTR_TARGET,0,0,user_z,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
"####" "#" 0 A_SetUserVar("user_z",user_z-18)
"####" "#" 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

actor DocAirImage : DocMetalImage
{
States
{
Spawn:
TNT1 A 0
DO3I B 0 A_SetUserVar("user_z",300)
goto Spawn2
}
}

actor DocBubbleImage : DocMetalImage
{
States
{
Spawn:
TNT1 A 0
DO3I C 0 A_SetUserVar("user_z",300)
goto Spawn2
}
}

actor DocQuickImage : DocMetalImage
{
States
{
Spawn:
TNT1 A 0
DO3I D 0 A_SetUserVar("user_z",300)
goto Spawn2
}
}

actor DocCrashImage : DocMetalImage
{
States
{
Spawn:
TNT1 A 0
DO3I E 0 A_SetUserVar("user_z",300)
goto Spawn2
}
}

actor DocFlashImage : DocMetalImage
{
States
{
Spawn:
TNT1 A 0
DO3I F 0 A_SetUserVar("user_z",300)
goto Spawn2
}
}

actor DocHeatImage : DocMetalImage
{
States
{
Spawn:
TNT1 A 0
DO3I G 0 A_SetUserVar("user_z",300)
goto Spawn2
}
}

actor DocWoodImage : DocMetalImage
{
States
{
Spawn:
TNT1 A 0
DO3I H 0 A_SetUserVar("user_z",300)
goto Spawn2
}
}

actor DocCrashM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
TNT1 A 0 A_JumpIf(pitch>30 && pitch<=90,"PickupDown")
TNT1 A 0 A_FireCustomMissile("DocCrashShot",0,1,1,0)
stop

PickupDown:
TNT1 A 0 A_FireCustomMissile("DocCrashShotDown",0,1,1,0)
stop
}
}

actor DocCrashM2Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
TNT1 A 0 A_JumpIf(pitch>30 && pitch<=90,"PickupDown")
TNT1 A 0 A_FireCustomMissile("DocCrashAlt",0,0,1,8)
TNT1 A 0 A_FireCustomMissile("DocCrashAlt",-10,0,1,8)
TNT1 A 0 A_FireCustomMissile("DocCrashAlt",10,0,1,8)
stop

PickupDown:
TNT1 A 0 A_FireCustomMissile("DocCrashAltDown",0,0,1,8)
TNT1 A 0 A_FireCustomMissile("DocCrashAltDown",-10,0,1,8)
TNT1 A 0 A_FireCustomMissile("DocCrashAltDown",10,0,1,8)
stop
}
}

actor DocRobotChargeHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("VC_Timer",1,"Pickup2")
TNT1 A 0 A_GiveInventory("VC_Timer")
TNT1 A 0 A_GiveInventory("DocRobotAmmo",1)
stop

Pickup2:
TNT1 A 0 A_TakeInventory("VC_Timer")
TNT1 A 0 A_GiveInventory("DocRobotAmmo",2)
stop
}
}

actor DocPainFlag : Powerup
{
Powerup.Duration 18
}

actor DocPainHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("DocPainFlag",1,"Nope")
TNT1 A 0 A_JumpIfInventory("DocRobotAmmo",1,1)
goto Nope

Pickup2:
TNT1 A 0 A_GiveInventory("DocPainFlag")
TNT1 A 0 A_TakeInventory("DocRobotAmmo",87)
TNT1 A 0 A_PlaySoundEx("weapon/docleveldown","Auto")
stop

Nope:
TNT1 A 0
stop
}
}

actor DocRobotSkinCheck : SkinChecker
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("GC_GetSkinNum")==273,"AltSkin1")
goto NormalSkin
}
}

actor DocMetalM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")
TNT1 A 0 A_FireCustomMissile("DocMetalShot",0,1,1,8)
stop

AltSkinFrame:
TNT1 A 0 A_FireCustomMissile("DocMetalShotCaptainN",0,1,1,8)
stop
}
}

actor DocMetalShotCaptainN : DocMetalShot
{
Translation "4:4=87:87"
}

actor DocQuickM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")
TNT1 A 0 A_FireCustomMissile("DocQuickShot",0,1,1,8)
TNT1 A 0 A_FireCustomMissile("DocQuickShot",-20,0,1,8)
TNT1 A 0 A_FireCustomMissile("DocQuickShot",20,0,1,8)
stop

AltSkinFrame:
TNT1 A 0 A_FireCustomMissile("DocQuickShotCaptainN",0,1,1,8)
TNT1 A 0 A_FireCustomMissile("DocQuickShotCaptainN",-20,0,1,8)
TNT1 A 0 A_FireCustomMissile("DocQuickShotCaptainN",20,0,1,8)
stop
}
}

actor DocQuickShotCaptainN : DocQuickShot
{
Translation "225:225=166:166"
}