actor MageCommando : magegunner
{
	Health 500 
	Speed 17
	Radius 30 
	Height 56 
	Mass 800 
	+DONTHARMSPECIES
	MONSTER
    bloodtype newbloodsplatter
	seesound "magegunner/spot"
	painsound "magegunner/pain"
	deathsound "magegunner/die"
	activesound ""
	+floorclip
    Obituary "%o was blasted by a Mage Commando."
	states
	{
	spawn:
		MGCM AB 10 A_Look
		loop
	see:
		MGCM AABBCCDD 3 A_Chase
		loop
	missile:
		TNT1 A 0 
		TNT1 A 0 A_Jumpifcloser (350,"ShortShot")
		TNT1 A 0 A_Jump (60, "chargeshot")
	Normalfire:
		MGCM E 8 A_FaceTarget
		MGCM F 4 bright A_CustomMissile ("magerifleshot")
		TNT1 A 0 A_CustomMissile ("magerifleshot",32,0,random(-4,11),2,random(-2,4))
		MGCM E 1
		MGCM E 6 A_FaceTarget
		MGCM F 2 bright A_CustomMissile ("magerifleshot")
		TNT1 A 0 A_CustomMissile ("magerifleshot",32,0,random(-7,14),2,random(-3,2))
		MGCM E 1
		MGCM E 8 A_FaceTarget
		MGCM F 2 bright A_CustomMissile ("magerifleshot")
		TNT1 A 0 A_CustomMissile ("magerifleshot",32,0,random(-2,13),2,random(-2,3))
		MGCM E 1
		MGCM E 8 A_FaceTarget
		MGCM F 2 bright A_CustomMissile ("magerifleshot")
		TNT1 A 0 A_CustomMissile ("magerifleshot",32,0,random(-2,13),2,random(-2,3))
		MGCM E 4
		TNT1 A 0 A_Jump (100,"NormalFire")
		goto see
	ShortShot:
		MGCM E 8 A_FaceTarget
		TNT1 A 0 A_PlaySound ("magegunner/Rifle",0)
		TNT1 A 0 A_PlaySound ("magegunner/bigshot",0)
		TNT1 A 0 A_CustomMissile ("CloseMageShot",32,0,random(-4,11),2,random(-2,4))
		TNT1 A 0 A_CustomMissile ("CloseMageShot",32,0,random(-4,11),2,random(-2,4))
		TNT1 A 0 A_CustomMissile ("CloseMageShot",32,0,random(-4,11),2,random(-2,4))
		TNT1 A 0 A_CustomMissile ("CloseMageShot",32,0,random(-4,11),2,random(-2,4))
		MGCM F 4 bright A_CustomMissile ("CloseMageShot")
		MGCM E 1
		MGCM E 8 A_FaceTarget
		goto see
	chargeshot:
		MGCM E 0 A_PlaySound ("magegunner/charge",0)
		MGCM E 0 A_FaceTarget
		MGCM E 5 bright A_SpawnItemEx ("riflechargeup1",20,10,32)
		MGCM E 0 A_FaceTarget
		MGCM E 5 A_SpawnItemEx ("riflechargeup1",20,10,32)
		MGCM E 0 A_FaceTarget
		MGCM E 5 bright A_SpawnItemEx ("riflechargeup2",20,10,32)
		MGCM E 0 A_FaceTarget
		MGCM E 5 A_SpawnItemEx ("riflechargeup2",20,10,32)
		MGCM E 0 A_FaceTarget
		MGCM E 5 bright A_SpawnItemEx ("riflechargeup3",20,10,32)
		MGCM E 0 A_FaceTarget
		MGCM E 5 A_SpawnItemEx ("riflechargeup3",20,10,32)
		MGCM E 0 A_FaceTarget
		MGCM E 5 bright A_SpawnItemEx ("riflechargeup3",20,10,32)
		MGCM E 0 A_FaceTarget
		MGCM E 5 A_SpawnItemEx ("riflechargeup3",20,10,32)
		MGCM E 0 A_FaceTarget
		MGCM E 5 bright A_SpawnItemEx ("riflechargeup3",20,10,32)
		MGCM E 4 A_FaceTarget
		TNT1 A 0 A_Jump (60, "MachineGun")
		TNT1 A 0 A_Jump (120, "missileshoot")
		goto chargefire
	missileshoot:
		MGCM E 12 A_PlaySound ("magegunner/missileload",0)
		MGCM E 15 A_PlaySound ("magegunner/attack",0)
		MGCM E 8 A_FaceTarget
		TNT1 A 0 A_Recoil (5)
		MGCM F 4 A_CustomMissile ("magicmissile")
		MGCM E 4
		TNT1 A 0 A_Jump (80,"ExtraMagicMissile")
		goto see
	ExtraMagicMissile:
		MGCM E 12 A_PlaySound ("magegunner/missileload",0)
		MGCM E 8 A_FaceTarget
		TNT1 A 0 A_Recoil (5)
		MGCM F 4 A_CustomMissile ("magicmissile")
		MGCM E 4
		goto see
	
	MachineGun:
		MGCM E 12 A_PlaySound ("magecommando/MachineGun",0)
		MGCM E 15 A_PlaySound ("magegunner/attack",0)
		MGCM E 4 A_FaceTarget
		TNT1 A 0 A_PlaySound("DoomSlayer/ReignStormShot", CHAN_BODY)
		MGCM F 3 bright A_CustomMissile ("MageCommandoShot")
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-7,16),2,random(-4,6))
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-10,12),2,random(-1,2))
		MGCM E 1
		MGCM E 2 A_FaceTarget
		TNT1 A 0 A_PlaySound("DoomSlayer/ReignStormShot", CHAN_BODY)
		MGCM F 3 bright A_CustomMissile ("MageCommandoShot")
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-7,16),2,random(-4,6))
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-10,12),2,random(-1,2))
		MGCM E 1
		MGCM E 2 A_FaceTarget
		TNT1 A 0 A_PlaySound("DoomSlayer/ReignStormShot", CHAN_BODY)
		MGCM F 3 bright A_CustomMissile ("MageCommandoShot")
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-7,16),2,random(-4,6))
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-10,12),2,random(-1,2))
		MGCM E 1
		MGCM E 2 A_FaceTarget
		TNT1 A 0 A_PlaySound("DoomSlayer/ReignStormShot", CHAN_BODY)
		MGCM F 3 bright A_CustomMissile ("MageCommandoShot")
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-7,16),2,random(-4,6))
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-10,12),2,random(-1,2))
		MGCM E 1
		MGCM E 2 A_FaceTarget
		TNT1 A 0 A_PlaySound("DoomSlayer/ReignStormShot", CHAN_BODY)
		MGCM F 3 bright A_CustomMissile ("MageCommandoShot")
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-7,16),2,random(-4,6))
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-10,12),2,random(-1,2))
		MGCM E 1
		MGCM E 2 A_FaceTarget
		TNT1 A 0 A_PlaySound("DoomSlayer/ReignStormShot", CHAN_BODY)
		MGCM F 3 bright A_CustomMissile ("MageCommandoShot")
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-7,16),2,random(-4,6))
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-10,12),2,random(-1,2))
		MGCM E 1
		MGCM E 2 A_FaceTarget
		TNT1 A 0 A_PlaySound("DoomSlayer/ReignStormShot", CHAN_BODY)
		MGCM F 3 bright A_CustomMissile ("MageCommandoShot")
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-7,16),2,random(-4,6))
		TNT1 A 0 A_CustomMissile ("MageCommandoShot",32,0,random(-10,12),2,random(-1,2))
		MGCM E 1
		TNT1 A 0 A_Recoil (20)
		MGCM E 6
		goto see
	chargefire:
		MGCM E 15 A_PlaySound ("magegunner/attack",0)
		MGCM F 1 A_CustomMissile ("magebigshot")
		MGCM F 4 bright A_Recoil (5)
		MGCM E 4 
		goto see
	pain:
		MGCM G 3
		TNT1 A 0 A_TakeInventory ("PowerTerrorStatus",999)
		TNT1 A 0 A_TakeInventory ("PowerKickedStatus",999)
		MGCM G 6 A_Pain
		goto see
	pain.Dazer:
    Pain.Superkick:
		MGCM G 4
		TNT1 A 0 A_GiveInventory ("KickDazer",1)
		MGCM G 8 A_Pain
		goto Dazed
    Dazed:
		MGCM G 2
		MGCM G 1 A_SetAngle (angle+15)
		MGCM G 1 A_JumpIfInventory ("PowerKickedStatus",1,"Dazed")
		Goto See


	death:
		TNT1 A 0 A_Jump (40, "specialdeath")
		MGCM G 1 A_Scream 
		MGCM G 1 a_noblocking 
		MGCM H 1 A_FaceTarget
		TNT1 A 0 thrustthingz (0,10,0,1)
		TNT1 A 0 ThrustThing(angle*256/360+128, 2, 0, 0)		
		MGCM H 3 
		MGCM I 3 
		MGCM J 2
		MGCM K 3
		MGCM L 2 A_PlaySound("magebane/fall",0)
		MGCM M 2
		MGCM N 1 A_BossDeath
		TNT1 A 0 A_Jump (20,"DarkPortal")
		MGCM N -1 
		stop
	DarkPortal:
		TNT1 A 0
		MGCM N random(50,180) 
		TNT1 A 0 A_PlaySound ("Darkportal/form",0)
		MGCM N 3 Thing_SetTranslation(0, 4242)
		HWRP ABCD 1
		TNT1 A 1 A_SpawnItemEx ("MediumPortal")
		stop				
	xdeath:
		MGCM I 2 
		MGCM O 2 a_fall
		MGCM O 0 A_PlaySound ("magegunner/xdeath",0)
		TNT1 AAAAAAAA 0 a_spawnitem ("newbloodsplatter") 
		TNT1 AAA 0 A_SpawnItemEx("bonegib",0,0,0,random(-10,10),random(-10,10),10)		
		MGCM PQRST 4 
		MGCM T 1 A_BossDeath
		TNT1 A 0 A_Jump (20,"GibbedDarkPortal")
		MGCM T -1 
		stop
	GibbedDarkPortal:
		TNT1 A 0
		MGCM T random(50,180)  
		TNT1 A 0 A_PlaySound ("Darkportal/form",0)
		MGCM T 3 Thing_SetTranslation(0, 4242)
		HWRP ABCD 1
		TNT1 A 1 A_SpawnItemEx ("MediumPortal")
		stop				
	specialdeath:
		MGCM G 0 
		MGCM G 0 A_Stop
		MGCM G 1 a_fall
		MGCM G 1 A_PlaySound ("magegunner/specialdeath",0)
		MGCM G 68 
		MGCM H 5 
		MGCM I 4
		MGCM J 4
		MGCM K 3
		MGCM L 2 A_PlaySound("magebane/fall",0)
		MGCM M 2
		MGCM N 1 A_BossDeath
		TNT1 A 0 A_Jump (256,"DarkPortal")
		MGCM N -1
		stop		
	death.blazice:
		MGCM G 2 A_Scream
		MCIC A 2 A_noblocking
		TNT1 A 0 A_BossDeath
		TNT1 A 0 A_PlaySound ("swordtech/freezedeath")
		TNT1 A 0 a_fadeout (0.20)
		TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx ("iceparticle",random(-8,8),random(-8,8),32,random(-100,100)/10.0,random(-100,100)/10.0,random(-100,100)/20.0,0,160)
		MCIC B 90 bright
		MCIC C 2 bright
		TNT1 A 0 A_PlaySound ("swordtech/iceshatter")
		TNT1 AAAA 0 A_SpawnItemEx ("icefragment",0,0,0,random(-10,10),random(-10,10),10) 
		TNT1 AAAAAA 0 A_SpawnItemEx ("icefragment",0,0,0,random(-4,13),random(-8,13),8) 
		stop
	death.superkick:
		MGCM H 1 A_Scream
		MGCM H 1 A_ScaleVelocity (0.1)
		MGCM H 1 A_Stop
		MGCM H 1 a_noblocking
		TNT1 A 0 A_BossDeath
		TNT1 A 0 a_changeflag ("NOCLIP",1)
		TNT1 A 0 a_changeflag ("NOGRAVITY",1)
		MGCM H 1 A_FaceTarget
		TNT1 A 0 thrustthingz (0,80,0,1)
		TNT1 A 0 ThrustThing(angle*256/360+128, 110, 1, 0)
		TNT1 A 0 A_SpawnItemEx ("bosskickdeathsound")
        MGCM H 1
		MGCM H 2
	kickfly:
		MGCM HHHHHHH 1 A_SpawnItemEx ("KustamParticle",random(-8,8),random(-8,8),random(-10,10),random(-120,120)/15.0,random(-130,130)/12.0,random(-110,110)/17.0,0)
		TNT1 A 0 a_fadeout (0.02)
		loop
	death.Sentinelarm:
		MGCM G 1 A_Scream 
		MGCM G 1 a_noblocking 
		MGCM H 1 A_FaceTarget
		TNT1 A 0 thrustthingz (0,50,0,1)
		MGCM H 3 A_BossDeath
		MGCM I 3 
		MGCM J 2
		TNT1 A 0 a_nogravity
		TNT1 A 0 A_Stop
		TNT1 A 0 A_PlaySound ("Kustam/OCKill",CHAN_VOICE,1,0,0.4)
		TNT1 A 0 A_PlaySound ("Kustam/OCKill",5,1,0,0.6)
		TNT1 A 0 A_PlaySound ("Kustam/OCKill",6,1,0,0.6)
		TNT1 A 0 A_PlaySound ("Kustam/OCKill",7,1,0,0.6)
		OCKL ABCDEF 2 bright
		stop
		
	
	death.fatalslash:
		MGCM G 2 A_Scream
		MCIC A 4 a_noblocking
		TNT1 A 0 A_BossDeath
		MGCM G 15
	randomwait:
		FDMC A 1 A_Jump (20,"split")
		loop
	split:
		FDMC AABBCC 5
		FDMC DE 2
		FDMC FGHIJ 3 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDMC J 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDMC J 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDMC J 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDMC J 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDMC J 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
	exploding:
		FDMC J 1 Bright
		TNT1 A 1 Bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDMC J 1 Bright
		TNT1 A 1 Bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDMC J 1 Bright
		TNT1 A 1 Bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDMC J 1 Bright A_Jump (100,"reallydie")
		TNT1 A 1 Bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		loop
	reallydie:
		TNT1 A 0
		TNT1 A 1 A_SpawnItemEx ("fataldrawdeath",0,0,30)
		stop
	Raise:
		MGCM LKJIHG 4 
		TNT1 A 0 A_Jump (40,"chaosexplode")
		goto see
	Chaosexplode:
 		TNT1 A 0
		TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
		MGCM A 8
        MGCM G 6 A_Pain
    	MGCM A 8
        MGCM G 6 A_Pain
    	MGCM A 8
        MGCM G 6 A_Pain
        TNT1 A 0 A_Scream
		TNT1 A 0 A_BossDeath
        TNT1 A 0 A_NoBlocking
		TNT1 A 0 a_radiusgive ("chaoslaugh",650,RGF_MONSTERS)
		TNT1 A 0 A_SpawnItemEx("skellytun",0,0,12,random(-6,6),random(-8,8),random(6,10),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_PlaySound ("bonelord/explode",0,1,0,0.6)
		TNT1 A 0 Radius_Quake (4,20,0,32,0)
		TNT1 A 0 a_spawnitem ("bigbloodsplatter")
		TNT1 AAAAAAAAAAAA 0 a_spawnitem ("newbloodsplatter") 
		TNT1 AAAAAAAA 0 A_SpawnItemEx("bonegib",0,0,0,random(-30,30),random(-30,30),10)
		ISKL AAAAAAA 0 A_SpawnItemEx("hipbonegib",0,0,32,random(-10,10),random(-10,10),10)
		ISKL AAAAA 0 A_SpawnItemEx("ribbonegib",0,0,32,random(-10,10),random(-10,10),12)
		TNT1 AAA 0 A_SpawnItemEx("bonegib",0,0,0,random(-30,30),random(-30,30),10)
		TNT1 A 20
		stop
	}
}


//Mage Commando projectiles

actor MageCommandoShot : fastprojectile
{
	+notimefreeze
	projectile
	missiletype "ReignStormtrail"
	missileheight 8
	+FORCEXYBILLBOARD
	+Bloodsplatter
	+LOOKALLAROUND
	+bright
	radius 5
	height 12
	speed 70
	damage (7)
	scale 0.80
	decal bulletchip
	states
	{
	spawn:
		HRBL A 1
		loop
	death:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("DoomSlayer/ReignStormMiss",0,0.80,0,1.20)
		TNT1 A 1 A_SpawnItemEx ("Bulletpuff")
		stop
	xdeath:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("DoomSlayer/ReignStormHit",0)
		TNT1 A 1 
		stop
	}
}

Actor CloseMageShot : magerifleshot 
{
	+notimefreeze
	projectile
	+THRUSPECIES
	species "enemyshot"
	+FORCEXYBILLBOARD	
	+LOOKALLAROUND
	radius 5
	height 12
	speed 20
	damage (6)
	seesound "silence"
	scale 1.5
	states
	{
	spawn:
		MWND C 1 bright A_SpawnItem("magerifletrail")
		MWND D 1 bright A_SpawnItem("magerifletrail")
		MWND C 1 bright A_SpawnItem("magerifletrail")
		MWND D 1 bright A_SpawnItem("magerifletrail")
		MWND C 1 bright A_SpawnItem("magerifletrail")
		MWND D 1 bright A_SpawnItem("magerifletrail")
		MWND C 1 bright A_SpawnItem("magerifletrail")
		MWND D 1 bright A_SpawnItem("magerifletrail")
		MWND C 1 bright A_SpawnItem("magerifletrail")
		MWND D 1 bright A_SpawnItem("magerifletrail")
		MWND C 1 bright A_SpawnItem("magerifletrail")
		MWND D 1 bright A_SpawnItem("magerifletrail")
		TNT1 A 0 A_ScaleVelocity (0.40)
		MWND C 1 bright A_SpawnItem("magerifletrail")
		MWND D 1 bright A_SpawnItem("magerifletrail")
		TNT1 A 0 A_ScaleVelocity (0.20)
		MWND C 1 bright A_SpawnItem("magerifletrail")
		MWND D 1 bright A_SpawnItem("magerifletrail")
		TNT1 A 0 A_ScaleVelocity (0.10)
		goto cease
	Cease:
		TNT1 A 0
		TNT1 A 6 A_Stop	
		stop
	Death:
		MWND E 4 Bright
		MWND F 3 Bright
		MWND G 4 Bright
		MWND H 3 Bright
		MWND I 4 Bright
		Stop
	}
}
