////////////////
// GUTS DOZER //
////////////////

actor GutsDozerBoss
{
scale 2.5
gravity 0.25
+SLIDESONWALLS
Height 128
Radius 200
+THRUSPECIES
species "Dozer"
+SOLID
+CANPASS
+THRUACTORS
obituary "%o was crushed by the \cgGuts Dozer\c*."
states
{
	Spawn:
	Stunned:
	DOZE C -1
	loop
	Start:
	DOZE C -1 A_SpawnItemEx("DozerBossTop", 0, 0, 115)
	stop
	Drive:
	DOZE CCCCDDDD 1 A_Recoil(-1)
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, 190, 108, random(0,-6),random(-3,3), 5) 
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, -190, 108, random(0,-6),random(-3,3), 5) 
	loop
	Fall:
	DOZE C 0 A_Stop	
	DOZE C 0 ThrustThingZ(0,8,0,1)
	DOZE C 0 A_Recoil(-12)
	Falling:
	DOZE CC 2 //A_Recoil(-)
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, 190, 108, random(0,-6),random(-3,3), 5) 
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, -190, 108, random(0,-6),random(-3,3), 5) 
	loop
	Land:
	DOZE C -1
	stop
	Look:
	DOZE C 0 A_ChangeFlag("THRUACTORS",0)
	DOZE C 0 A_PlaySoundEx("misc/dozer", 7, 1, 0)
	DOZE C 1 A_LookEx(0,0,0,0,360,"See")
	loop
	Seek:
	DOZE C 0 A_PlaySoundEx("misc/dozer", 7, 1, 0)
	DOZE C 1 A_LookEx(0,0,0,0,360,"See")
	loop
	See:
	DOZE C 0 A_GiveInventory("CutterFlag", random(0,2))
	DOZE CC 1 A_FaceTarget(1)
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, 190, 108, random(0,-6),random(-3,3), 5) 
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, -190, 108, random(0,-6),random(-3,3), 5) 
	DOZE C 0 A_SpawnItemEx("DozerBossDamager",0,0,1,1,0,0,0,SXF_ABSOLUTEANGLE )
	DOZE C 0 A_Recoil(-1)
	DOZE CC 1 A_FaceTarget(1)
	DOZE C 0 A_Recoil(-1)
	DOZE DD 1 A_FaceTarget(1)
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, 190, 108, random(0,-6),random(-3,3), 5) 
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, -190, 108, random(0,-6),random(-3,3), 5) 
	DOZE C 0 A_Recoil(-1)
	DOZE DD 1 A_FaceTarget(1)
	DOZE C 0 A_Recoil(-1)
	DOZE C 0 A_JumpIfInventory("CutterFlag", 40, "RamCheck")
	loop
	RamCheck:
	DOZE C 0 A_LookEx(0,0,0,0,360,"Ram")
	Goto Ram
	Ram:
	DOZE C 20 A_Stop
	DOZE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FaceTarget(5)
	DOZE CCCCCCCCCCC 1 A_Recoil(2)
	DOZE C 8 A_Stop
	DOZE C 0 A_PlaySoundEx("misc/gutsgboost", "Voice", 0, 1)
	Ramming:
	DOZE C 0 A_GiveInventory("CutterFlag", 1)
	DOZE C 1 A_Recoil(-4)
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, 190, 108, random(0,-6),random(-3,3), 5) 
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, -190, 108, random(0,-6),random(-3,3), 5) 
	DOZE C 0 A_SpawnItemEx("DozerBossDamager2",0,0,1,1,0,0,0,SXF_ABSOLUTEANGLE )
	DOZE C 1 A_Recoil(-3)
	DOZE D 1 A_Recoil(-3)
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, 190, 108, random(0,-6),random(-3,3), 5) 
	DOZE C 0 A_SpawnItemEx("FryingPanFX", -180, -190, 108, random(0,-6),random(-3,3), 5) 
	DOZE D 1 A_Recoil(-3)
	DOZE C 0 A_JumpIfInventory("CutterFlag", 60, "RamEnd")
	loop
	Face:
	DOZE CCCCCCCCCC 2 A_FaceTarget(5)
	DOZE C -1
	RamEnd:
	DOZE D 0 A_TakeInventory("CutterFlag", 9999)
	DOZE D 0 A_Stop
	DOZE CCCCCCCCCCCCCCCCCCC 1 A_FaceTarget(5)
	Goto Seek
	StoryRam:
	DOZE C 0 A_TakeInventory("CutterFlag", 9999)
	//DOZE C 20 A_Stop
	DOZE CCCCCCCCCCC 1 A_Recoil(2)
	DOZE C 8 A_Stop
	DOZE C 0 A_PlaySoundEx("misc/gutsgboost", "Voice", 0, 1)
	Goto Ramming
	Pickedup:
	DOZE C 0 A_ChangeFlag("NOGRAVITY", 1)
	//DOZE C 5
	DOZE C 20 ThrustThingZ(0, 2, 0, 1)
	DOZE C 0 A_PlaySoundEx("weapon/superarmuse", "Voice", 0, 1)
	DOZE C 30 ThrustThingZ(0, 4, 0, 1)
	DOZE C -1 A_Stop
	stop
	DozerThrow:
	DOZE C 0 A_ChangeFlag("NOGRAVITY", 0)
	DOZE C 0 A_SetGravity(1.0)
	DOZE C 20 ThrustThingZ(0, 60, 0, 1)
	DOZE C 0 A_ChangeVelocity(-13.0, 0.0, 10.0, CVF_REPLACE|CVF_RELATIVE)
	DOZE C -1
	stop
	Shocked:
	DOZE C 0 A_SpawnItemEx("ShockFX", -180, random(-190,190), random(0,100))
	DOZE C 2 A_SpawnItemEx("ShockFX", 180, random(-210,210), random(0,100))
	loop
}
}

actor DozerBossBelly
{
renderstyle none
+THRUSPECIES
+NOTAUTOAIMED
species "Dozer"
height 70
Radius 40
+SOLID
+SHOOTABLE
+NOBLOOD
+NODAMAGE
States
{
Spawn:
PLAY A -1
stop
}
}

actor DozerBossDamager
{
+MISSILE
+NOGRAVITY
-SOLID
+RIPPER
+HEXENBOUNCE
height 64
radius 230
damage (10)
damagetype "Dozer"
states
{
Spawn:
TNT1 A 1// A_Explode(10, 145, 0, 0, 10)
stop
}
}

actor DozerBossDamager2 : DozerBossDamager { damage (3) }

actor DozerBossGutsman
{
Health 9999
painchance 256
+SHOOTABLE
+NOBLOOD
+SLIDESONWALLS
+CANPASS
+DROPOFF
//+THRUACTORS
-SOLID
damagefactor "Met", 0.0
damagefactor "DozerShot", 0.0
damagefactor "Buster", 0.0
damagefactor "FlameSword", 0.0
damagefactor "FlameSwordSpark", 0.0
damagefactor "NapalmBomb", 0.0
Radius 35
Height 56
scale 2.5
Speed 5
painchance 256
Translation "198:198=41:41", "192:192=216:216"
+NODAMAGE
States
{
Spawn:
GUTS A 0 A_ChangeFlag("INVULNERABLE",1)
GUTS A -1 Thing_ChangeTID(0,14)
stop
Wander:
GUTS BBBBBCCCCCDDDDDEEEEE 1 A_Wander
GUTS B 0 A_JumpIfInventory("AtomicFireAmmo",15,"Missile")
GUTS B 0 A_GiveInventory("AtomicFireAmmo",1)
loop
Pain:
GUTS H 0 A_ChangeFlag("NOPAIN",1)
GUTS H 0 A_ChangeFlag("THRUACTORS",1)
GUTS A 0 A_PlaySoundEx("misc/monkeybutt", "Voice", 0, 0)
GUTS H 0 A_SpawnItem("PainFX",0,3)
GUTS H 20 A_ChangeVelocity(random(-20,20), random(-20,20), 8, CVF_REPLACE)
GUTS H 0 A_ChangeFlag("THRUACTORS",0)
GUTS H 0 A_ChangeFlag("NOPAIN",0)
GUTS H 5
Goto Wander
Missile:
GUTS B 0 A_ChangeFlag("NOPAIN",1)
GUTS B 0 A_ChangeFlag("THRUACTORS",1)
GUTS B 0 ACS_ExecuteAlways(5,0,41)
GUTS AIAIAIAIAI 4
GUTS G 0 A_PlaySoundEx("misc/hugequake2", "Body", 0, 1)//A_PlaySoundEx("misc/hugequake", "Body", 0, 1)
GUTS G 0 Radius_Quake(5, 10, 0, 350, 14)
GUTS G 12 A_SpawnItemEx("DozerBossGutsRock", 80, 0, 0, -3, 0, 20, 0)
GUTS B 0 ACS_ExecuteAlways(5,0,41)
GUTS F 50
GUTS B 0 ACS_ExecuteAlways(5,0,41)
GUTS F 20 ThrustThingZ(0, 80, 0, 1)
GUTS B 1 ACS_ExecuteAlways(5,0,41)
GUTS B 0 A_SpawnItemEx("DozerBossGutsRockProjectile", 32,0,0,100,0,0,0)
GUTS B 0 A_GiveInventory("AtomicFireAmmo",1)
GUTS G 10
Falling:
GUTS B 1 A_JumpIf(floorz==z,"Land")
loop
Land:
GUTS B 0 A_TakeInventory("AtomicFireAmmo",999)
GUTS A 5 A_PlaySoundEx("misc/fatland", "Voice", 0, 1)
GUTS B 0 A_ChangeFlag("NOPAIN",0)
GUTS B 0 A_ChangeFlag("THRUACTORS",0)
Goto Wander
Talking:
GUTS AIAIAIAIAIAIAIAIA 4
Goto Spawn
Falling2:
GUTS H 1 A_JumpIf(floorz==z,"Land2")
loop
Land2:
GUTS A -1 A_PlaySoundEx("misc/fatland", "Voice", 0, 1)
loop
DozerCarry:
GUTS B 0 A_ChangeFlag("THRUACTORS",1)
GUTS BBBBCCCCDDDDEEEEBBBBCCCCDDDDBBBBCCCCDDDD 1 A_Recoil(-1)
GUTS F 10 A_Stop
GUTS F -1
stop
DozerThrow:
GUTS F 20 ThrustThingZ(0, 60, 0, 1)
GUTS G 20
GUTS A -1
stop
Vibrate:
GUTS AK 2
loop
Hug:
GUTS L 1 A_ChangeVelocity(-2.0, 0.0, 4.0, CVF_RELATIVE|CVF_REPLACE)
HugFly:
GUTS L 1 A_JumpIf(floorz==z, "Hugland")
loop
HugLand:
GUTS M 0 A_PlaySoundEx("misc/fatland", "Voice", 0, 1)
GUTS M 0 Thing_Remove(1008)
GUTS M 0 Thing_Remove(1009)
Hugging:
GUTS MN 6// A_PlaySoundEx("misc/fatland", "Voice", 0, 1)
loop
}
}

actor GutsDozerHitbox
{
scale 2.5
+INVULNERABLE
+NOGRAVITY
MONSTER
+THRUSPECIES
species "Dozer"
mass 9999
Health 1000
height 70
radius 40
renderstyle none
painchance 256
damagefactor "Buster", 0.0
damagefactor "Dozer", 0.0
damagefactor "Met", 0.0
damagefactor "DozerShot", 0.0
damagefactor "FlameSword", 0.18
damagefactor "FlameSwordSpark", 0.0
damagefactor "NapalmBomb", 0.42
damagefactor "MirrorBuster1", 1.65
damagefactor "MirrorBuster2", 1.65
damagefactor "MirrorBuster3", 1.65
	states
	{
	Spawn:
	PLAY A 1
	loop
	Start:
	PLAY F 10 A_ChangeFlag("INVULNERABLE", 0)
	Goto Spawn
	Pain.SuperArm:
	PLAY H -1 ACS_ExecuteAlways(5,0,42)
	stop
	}
}

actor DozerBossGutsRock
{
scale 2.5
+THRUACTORS
-SOLID
+MISSILE
states
{
Spawn:
SARM A 0
SARM A 0 A_ChangeFlag("MISSILE", 0)
SARM A 37
Stick:
SARM A 0 A_JumpIfInTargetInventory("AtomicFireAmmo", 17, "Death")
SARM A 1 A_Warp(AAPTR_TARGET, 0, 0, 72, 0, WARPF_NOCHECKPOSITION|WARPF_STOP)
loop
Death:
TNT1 A 1
stop
}
}

actor DozerBossGutsRockProjectile : FastProjectile
{
scale 2.5
+MISSILE
damage (5)
height 55
radius 54
DamageType "SuperArm"
+THRUSPECIES
species "Rock"
states
{
Spawn:
SARM A -1
stop
Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_PlaySound("dozeweapon/superarmhit")
SARM AAAAAAAAA 0 A_SpawnItemEx("GutrockFX",0,0,0,random(-32,32),random(-32,32),random(5,10),random(0,360))
TNT1 A 1
stop
}
}

actor DozerBossTop
{
obituary "%o was crushed by the \cgGuts Dozer\c*."
scale 2.5
+NOGRAVITY
+THRUSPECIES
+NOTARGETSWITCH
species "Dozer"
states
{
	Spawn:
	DOZE A 0
	DOZE A 0 ACS_ExecuteAlways(63,0)
	//Goto Chase
	Laugh:
	DOZE BA 5
	loop
	Chase:
	DOZE A 1 A_Explode(9999, 230, XF_NOTMISSILE, 0, 230)
	loop
	See:
	DOZE A 1
	loop
	Look:
	DOZE A 1 A_LookEx(0,0,0,0,360,"See2")
	loop
	See2:
	DOZE A 0 A_JumpIfCloser(200, "Melee")
	DOZE AAAAAAA 4 A_FaceTarget(15)
	DOZE A 0 A_JumpIfCloser(200, "Melee")
	DOZE A 0 A_PlaySoundEx("misc/devilfire","Voice", 0, 1)
	DOZE B 8 A_CustomMissile("DozerBossShot", 108, 0, 0) 
	DOZE A 0 A_GiveInventory("AtomicFireAmmo", 1)
	DOZE A 0 A_GiveInventory("RollingCutterAmmo", 1)
	CheckAmmo:
	DOZE A 0 A_JumpIfInventory("AtomicFireAmmo", 5, "Multishot")
	DOZE A 0 A_JumpIfInventory("RollingCutterAmmo", 3, "Met")
	Goto Look
	Multishot:
	DOZE A 0 A_TakeInventory("AtomicFireAmmo", 9999)
	DOZE AAAAAAAAAAAAAAA 4 A_FaceTarget(8)
	DOZE A 0 A_JumpIfCloser(200, "Melee")
	DOZE A 0 A_PlaySoundEx("misc/devilfire","Voice", 0, 1)
	DOZE B 8 A_CustomMissile("DozerBossShot", 108, 8, 0) 
	DOZE A 0 A_PlaySoundEx("misc/devilfire","Voice", 0, 1)
	DOZE B 8 A_CustomMissile("DozerBossShot", 108, 4, 0) 
	DOZE A 0 A_PlaySoundEx("misc/devilfire","Voice", 0, 1)
	DOZE B 8 A_CustomMissile("DozerBossShot", 108, 0, 0) 
	DOZE A 0 A_PlaySoundEx("misc/devilfire","Voice", 0, 1)
	DOZE B 8 A_CustomMissile("DozerBossShot", 108, -4, 0) 
	DOZE A 0 A_PlaySoundEx("misc/devilfire","Voice", 0, 1)
	DOZE B 8 A_CustomMissile("DozerBossShot", 108, -8, 0) 
	Goto CheckAmmo
	Met:
	DOZE AAA 2 A_FaceTarget(8)
	DOZE A 0 A_TakeInventory("RollingCutterAmmo", 9999)
	DOZE A 0 A_PlaySoundEx("misc/sharktorpedo","Voice", 0, 1)
	DOZE A 10 A_SpawnItemEx("DozerMetool3", 64, 0, 40, 20, 0, 6, 0)
	Goto CheckAmmo
	Stunned:
	DOZE JKLM 4
	loop
	Melee:
	DOZE G 1 A_FaceTarget
	DOZE A 0 A_Explode(20, 200, XF_NOTMISSILE, 0, 20)
	DOZE A 0 A_TakeInventory("AtomicFireAmmo", 9999)
	DOZE G 4 ACS_ExecuteAlways(5, 0, 43)
	DOZE HIIII 4
	Goto Look
	Recover:
	DOZE KKAAA 4 A_FaceTarget
	DOZE A -1 A_FaceTarget
	stop
	Shocked:
	DOZE B -1
	stop
	OhHeavens:
	DOZE K 4 A_SpawnItemEx("SharkDragonSweat", 64, 0, 235, 5, 0, 3, 0)
	DOZE K 4 A_SpawnItemEx("SharkDragonSweat", 64, 0, 235, 5, 0, 3, 180)
	loop
}
}


actor DozerMetool2
{
MONSTER
Height 32
Radius 32
Health 2
scale 2.5
obituary "%o was destroyed by a metool."
speed 5
-SHOOTABLE
-ACTIVATEMCROSS
//-SOLID
+LOOKALLAROUND
mass 99999
damagefactor "Met", 0.0
damagefactor "DozerShot", 0.0
+QUICKTORETALIATE
+NOBLOOD
States
{
Spawn:
METT D -1
stop
Wake:
METT E 1// A_FaceTarget(10)
METT E 1 A_Jump(200, "Wake")
METT A 0 A_ChangeFlag("SHOOTABLE",1)
METT EF 4
See:
METT AAA 1 A_Wander
METT A 0 A_SpawnItem("MetoolAttack")
METT BBB 1 A_Wander
METT A 0 A_SpawnItem("MetoolAttack")
METT CCC 1 A_Wander
METT A 0 A_SpawnItem("MetoolAttack")
METT BBB 1 A_Wander
METT A 0 A_Jump(150, "See") 
METT A 0 A_JumpIf(z>floorz, "See")
METT A 0 ThrustThingZ(0, 35, 0, 0)
loop
Death:
MMFX B 0 A_Fall
MMFX N 0 A_GiveToTarget("DozerMetCount",1)
MMFX B 0 A_PlaySound("misc/metdie")
MMFX N 0 A_JumpIfInTargetInventory("DozerMetCount", 31, "Prize")
Blam:
MMFX FGHI 3 A_Stop
stop
Prize:
MMFX B 0 A_SpawnItemEx("ConfettiSpawner",0,0,50)
MMFX B 0 A_SpawnItemEx("ETank",0,0,10)
Goto Blam
}
}

actor DozerMetool3 : DozerMetool2
{
+SHOOTABLE
-NORADIUSDMG
+DROPOFF
+THRUSPECIES
+THRUACTORS
species "Rock"
speed 10
damagefactor "Met", 0.0
damagefactor "DozerShot", 0.0
states
{
Spawn:
METT A 0 A_Jump(256, "Look")
Spawn2:
METT A 0 Thing_ChangeTID(0, 1003)
METT AAA 1 A_JumpIf(floorz==z, "Land")
METT A 0 A_SpawnItem("MetoolAttack")
METT BBB 1 A_JumpIf(floorz==z, "Land")
METT A 0 A_SpawnItem("MetoolAttack")
METT CCC 1 A_JumpIf(floorz==z, "Land")
METT A 0 A_SpawnItem("MetoolAttack")
METT BBB 1 A_JumpIf(floorz==z, "Land")
loop
Land:
METT A 0 A_Stop
METT A 1 ThrustThingZ(0, 18, 0, 1)
Falling:
METT ABCB 1 A_JumpIf(floorz==z, "Look")
loop 
Look:
METT B 0 A_ChangeFlag("THRUACTORS",0)
METT B 1 A_LookEx(0,0,0,0,360,"See")
loop
See:
METT AAA 1 A_Chase
METT A 0 A_SpawnItem("MetoolAttack")
METT BBB 1 A_Chase
METT A 0 //A_SpawnItem("MetoolAttack")
METT CCC 1 A_Chase
METT A 0 //A_SpawnItem("MetoolAttack")
METT BBB 1 A_Wander
loop
Death:
MMFX B 0 A_Fall
MMFX N 0 A_GiveToTarget("DozerMetCount",1)
MMFX B 0 A_PlaySound("misc/metdie")
MMFX N 0 A_JumpIfInTargetInventory("BusterAmmo", 1, "Prize")
Blam:
MMFX FGHI 3 A_Stop
stop
Prize:
MMFX B 0 A_SpawnItemEx("SmallHealth",0,0,10)
Goto Blam
}
}

actor DozerBossShot
{
PROJECTILE
Height 32
Radius 32
scale 2.5
-NOGRAVITY
+DOOMBOUNCE
+BOUNCEONACTORS
+FORCEXYBILLBOARD
bouncecount 3
bouncefactor 0.45
speed 55
damagetype "DozerShot"
+THRUSPECIES
species "Dozer"
Damage (5)
States
{
Spawn:
BASB A 1
loop
}
}


actor DozerMetCount : Inventory
{
inventory.amount 1
inventory.maxamount 32
}

actor MetoolAttack
{
PROJECTILE
Damage 0
damagetype "Met"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(10,64,0)
stop
}
}

actor WilyCastleBrickFXSpawner
{
+NOINTERACTION
radius 2
states
{
Spawn:
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("WilyCastleBrickFX", 0, random(-128,128), random(10,200), random(2,5), random(2,5)) 
stop
}
}

actor WilyCastleBrickFX : YellowDevilDebris
{
states
{
Spawn:
DOZE F 1
TNT1 A 1
loop
}
}

// Legacy

actor GutsDozerTop 10544
{
//$Category MM8BDM-Bosses
height 32
radius 32
scale 2.5
+FORCEYBILLBOARD
States
{
Spawn:
DOZE A 1
loop
Attack:
DOZE B 4
Goto Spawn
Laugh:
DOZE BA 5
loop
Spew:
DOZE B 50
Goto Spawn
Death:
DOZE AAAAAAA 10 A_SpawnItemEx("DrillExplode",random(-256,256),random(-256,256),random(-128,128),0,0,0,random(0,360))
DOZE AAAAAAAAAAA 5 A_SpawnItemEx("DrillExplode",random(-256,256),random(-256,256),random(-128,128),0,0,0,random(0,360))
DOZE AAAAAAAAAAAAAAAA 3 A_SpawnItemEx("DrillExplode",random(-256,256),random(-256,256),random(-128,128),0,0,0,random(0,360))
DOZE AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("DrillExplode",random(-256,256),random(-256,256),random(-128,128),0,0,0,random(0,360))
DOZE A 0 A_SpawnItemEx("FakeDeathFX")
stop
}
}

actor DozerMouth 10545
{
//$Category MM8BDM-Bosses
//$Sprite AMMOA0
-SOLID
-SHOOTABLE
+NOGRAVITY
height 32
obituary "%o was shot down by the Guts Dozer."
radius 32
+LOOKALLAROUND
States
{
Spawn:
TNT1 A 1 A_Look
loop
See:
TNT1 A 1
loop
Missile:
TNT1 A 0 A_FaceTarget
TNT1 A 0 //A_ThrowGrenade("DozerBullet") 
Goto See
CreateMet:
TNT1 A 0 A_FaceTarget
//TNT1 A 0 A_SpawnItemEx("DozerMetool",0,0,-20,30,0,9,random(-3,3))
Goto See
Bombs:
TNT1 A 0 A_FaceTarget
Goto See
}
}

actor DozerDamager 10546
{
//$Category MM8BDM-Bosses
//$Sprite AMMOA0
PROJECTILE
Height 8
Radius 8
damage 0
+RIPPER
obituary "%o was crushed by the Guts Dozer."
DamageType "NeedleCannon"
states
{
Spawn:
TNT1 A 0
TNT1 A 8 A_Explode(8,32,0)
loop
}
}

actor DozerTarget 10547
{
//$Category MM8BDM-Bosses
//$Sprite AMMOA0
+SHOOTABLE
+NORADIUSDMG
+NOGRAVITY
Health 2500
DamageFactor "QuickBoomerang", 4.0
DamageFactor "NeedleCannon", 0.0
Height 40
painchance 256
Radius 20
mass 999999999
States
{
Spawn:
TNT1 A 1 A_Stop
loop
Pain:
TNT1 A 1 A_Stop
TNT1 A 0 ACS_Execute(11,0)
goto Spawn
Death:
TNT1 A 0 ACS_Execute(12,0)
TNT1 A 0 
stop
}
}