//MAULER
// Original Sprite: Eriance - Sprite Edit: DavidG, MagSigmaX
////////////////////////////////////////////////////////////////

actor MaulerDemon : demon replaces demon {
	Health 85
	PainChance 180
	Speed 20
	Radius 30
	Height 56
	Mass 400
	Monster
	+FLOORCLIP -FASTER -FASTMELEE
	SeeSound "mauler/sight"
	AttackSound "demon/melee"
	PainSound "demon/pain"
	DeathSound "demon/death"
	ActiveSound "demon/active"
	Obituary "%o was killed by a Mauler"
	bloodcolor gold   
	GibHealth 60
	
	MeleeThreshold 112
	MaxTargetRange 224
	
	States{
		Spawn:
			MAUL AB 10 A_Look
			Loop
		See:
			MAUL AABBCCDD 2 A_Chase
			Loop
		Melee:
			MAUL E 6 A_FaceTarget
			MAUL FG 2 A_FaceTarget 
			MAUL G 8 A_CustomMissile ("MaulerBit", 20, 0, 0, 0, 0)
			Goto See
		Missile:
			TNT1 A 0 A_PlaySound("mauler/lunge", CHAN_VOICE)
			TNT1 A 0 A_ChangeFlag(SLIDESONWALLS, 1)
			MAUL E 12 A_FaceTarget
			TNT1 A 0 ThrustThingZ(0,26,0,1)
			TNT1 A 0 A_Recoil(-32)
			TNT1 A 0 A_CustomMissile ("MaulerLungeBit", 20, 0, 0, CMF_AIMDIRECTION, 0)
			MAUL FFFFFF 1 A_FaceTarget
			MAUL G 10 
			TNT1 A 0 A_ScaleVelocity(0.2)
			
			TNT1 A 0 A_ChangeFlag(SLIDESONWALLS, 0)
			goto see
		
		Pain:
			MAUL H 2
			MAUL H 2 A_Pain
			Goto See
		Death:
			TNT1 A 0 A_Jump(255, "dth1", "dth2")
			stop
		dth1:
			MAD1 A 8 A_Scream
			MAD1 B 8 A_NoBlocking
			MAD1 CDE 4
			MAD1 F -1
			Stop
		dth2:
			MAD2 A 4 A_Scream
			TNT1 A 0 A_PlaySound("gr/tear", CHAN_AUTO)
			TNT1 AAAA 0 A_SpawnItemEx ("gore_bloodmistY_small", 0, 5, 25, frandom(-0.4,0.4) , frandom(-0.4,0.4) , frandom(-0.4,0.4) , random(1,360), SXF_TRANSFERTRANSLATION)
			//TNT1 A 0 A_SpawnItemEx ("MaulerArm1_Gib2", 0, 5, 25, 0 , random(3,5) , random(6,8) , random(1,360), SXF_TRANSFERTRANSLATION)
			TNT1 A 0 A_CustomMissile("MaulerArm1_Gib2", 25, 5, random(15,360), 2, random(90,120))
			TNT1 A 0 A_NoBlocking
			MAD2 BBB 3 A_CustomMissile("gore_fleshbitY", 25, 0, random(0,180),2,random(30,80))
			MAD2 CDE 5 A_CustomMissile("gore_fleshbitY", 20, 0, random(0,180),2,random(30,80))
			MAD2 F -1
			stop
		XDeath:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("maulerxdeath", 0, 0, 0, 0 ,0 ,0 , 0, SXF_TRANSFERTRANSLATION)
			stop
		Raise:
			MAD1 F 5
			MAD1 EDCBA 5
			goto See
	}
}

actor MaulerBit{
	radius 5
	height 5
	speed 20
	DamageType StrongMelee
	damage (random(30,30))
	//deathsound "sfx/fleshhit"
	PROJECTILE
	states{
		spawn:
			TNT1 AAA 1
			stop
		death:
			TNT1 A 1
			stop
	}
}

actor MaulerLungeBit : MaulerBit {
	radius 30
	height 40	
	speed 31
	damage (random(58,58))
	states{
		spawn:
			TNT1 AAAAAAAA 1
			stop
		death:
			TNT1 A 1
			stop
	}
}

actor maulerxdeath {
	states{
		spawn:
			TNT1 A 0
			TNT1 A 0 A_PlaySound("gore/explode")
			TNT1 AA 0 A_SpawnItemEx ("gore_bloodmistY", random(-2,2), random(-2,2), 8, frandom(-0.4,0.4) ,frandom(-0.4,0.4) ,0 , random(1,360), SXF_TRANSFERTRANSLATION)
			
			TNT1 AAAAA 0 A_CustomMissile("gore_fleshbitY", 25, 0, random(0,180),2,random(20,120))
			TNT1 AAAAA 0 A_CustomMissile("gore_fleshbitY", 25, 0, random(181,360),2,random(20,120))
			
			TNT1 AAA 0 A_CustomMissile("gib_spawnerY", 25, 0, random(0,180),2,random(20,120))
			TNT1 AAA 0 A_CustomMissile("gib_spawnerY", 25, 0, random(181,360),2,random(20,120))
			
			TNT1 A 0 A_SpawnItem ("Mauler_ArmsGibSpawn")
			TNT1 A 0 A_SpawnItem ("Mauler_ArmsGibSpawn")
			TNT1 A 0 A_CustomMissile("MaulerLeg_Gib", 25, 0, random(0,180),2,random(50,160))
			TNT1 A 0 A_CustomMissile("MaulerLeg_Gib", 25, 0, random(181,360),2,random(50,160))
			TNT1 A 0 A_CustomMissile("MaulerHead_Gib", 25, 0, random(0,360),2,random(50,160))
			TNT1 A 0 A_CustomMissile("MaulerBack_Gib", 25, 0, random(0,360),2,random(50,160))
			
			TNT1 A 4
			TNT1 AAAAA 0 A_CustomMissile("gore_fleshbitY", 25, 0, random(0,180),2,random(20,120))
			TNT1 AAAAA 0 A_CustomMissile("gore_fleshbitY", 25, 0, random(181,360),2,random(20,120))
			stop
	
	}
}

actor Mauler_ArmsGibSpawn{
	states{
		spawn:
			NULL A 0
			NULL A 0 A_Jump(224,"arm1", "arm2")
			stop
		arm1:
			TNT1 A 0 A_CustomMissile("MaulerArm1_Gib", 25, 0, random(0,360),2,random(50,160))
			stop
		arm2:
			TNT1 A 0 A_CustomMissile("MaulerArm2_Gib", 25, 0, random(0,360),2,random(50,160))
			stop
	}
}


actor MaulerArm1_Gib{
	health 1
	radius 10
	height 10
	mass 1
	speed 8
	gravity 0.5
	bouncetype "doom"
	bouncefactor 0.3
	BounceSound "blood/splat"
	DeathSound "blood/splat"
	PROJECTILE
	-NOGRAVITY
	+CORPSE
	+NOTELEPORT
	states{
		spawn:
			MAGA ABCDEFGH 2 A_SpawnItemEx ("blood_spray", 0, 0, 0,  random(-2,2) ,  random(-2,2) ,  random(-2,2) , random(0,360), SXF_TRANSFERTRANSLATION)
			//A_SpawnItemEx ("gore_bloodmistY_small", 0, 0, 0, frandom(-0.2,0.2) , 0 , frandom(-0.2,0.2) , random(1,360), SXF_TRANSFERTRANSLATION)
			loop
		death:
			MAGA L -1
			stop
	}
}

actor MaulerArm1_Gib2: MaulerArm1_Gib {
	gravity 0.95
	bouncefactor 0.6
	states{
		spawn:
			MAGA AABBCCDD 1 A_SpawnItemEx ("blood_spray_Y", 0, 0, 0, frandom(-0.5,0.5) , 0 , frandom(-0.5,0.5) , random(1,360))
			TNT1 A 0 A_CustomMissile("gore_fleshbitY", 0, 0, random(0,180),2,random(10,40))
			MAGA EEFFGGHH 1 A_SpawnItemEx ("blood_spray_Y", 0, 0, 0, frandom(-0.5,0.5) , 0 , frandom(-0.5,0.5) , random(1,360))
			TNT1 A 0 A_CustomMissile("gore_fleshbitY", 0, 0, random(0,180),2,random(10,40))
			loop
		death:
			MAGA L -1
			stop
	}
}

actor MaulerArm2_Gib: MaulerArm1_Gib{
	states{
		spawn:
			MAGB ABCDEFGH 2 A_SpawnItemEx ("blood_spray", 0, 0, 0,  random(-2,2) ,  random(-2,2) ,  random(-2,2) , random(0,360), SXF_TRANSFERTRANSLATION)
			//A_SpawnItemEx ("gore_bloodmistY_small", 0, 0, 0, frandom(-0.2,0.2) , 0 , frandom(-0.2,0.2) , random(1,360), SXF_TRANSFERTRANSLATION)
			loop
		death:
			MAGB L -1
			stop
	}
}


actor MaulerLeg_Gib: MaulerArm1_Gib{
	states{
		spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(224,"l1")
			stop
		l1:
			MAGL ABCDEFGH 2 A_SpawnItemEx ("blood_spray", 0, 0, 0,  random(-2,2) ,  random(-2,2) ,  random(-2,2) , random(0,360), SXF_TRANSFERTRANSLATION)
			//A_SpawnItemEx ("gore_bloodmistY_small", 0, 0, 0, frandom(-0.2,0.2) , 0 , frandom(-0.2,0.2) , random(1,360), SXF_TRANSFERTRANSLATION)
			loop
		death:
			MAGL L -1
			stop
	}
}

actor MaulerHead_Gib: MaulerArm1_Gib{
	states{
		spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(224, "h1")
			stop
		h1:	
			MAGH ABCDEFGH 2 A_SpawnItemEx ("blood_spray", 0, 0, 0,  random(-2,2) ,  random(-2,2) ,  random(-2,2) , random(0,360), SXF_TRANSFERTRANSLATION)
			//A_SpawnItemEx ("gore_bloodmistY_small", 0, 0, 0, frandom(-0.2,0.2) , 0 , frandom(-0.2,0.2) , random(1,360), SXF_TRANSFERTRANSLATION)
			loop
		death:
			MAGH L -1
			stop
	}
}

actor MaulerBack_Gib: MaulerArm1_Gib{
	states{
		spawn:
			TNT1 A 0 
			TNT1 A 0 A_Jump(164,"b1")
		b1:
			MAGS ABCDEFGH 2 A_SpawnItemEx ("blood_spray", 0, 0, 0,  random(-2,2) ,  random(-2,2) ,  random(-2,2) , random(0,360), SXF_TRANSFERTRANSLATION) 
			//A_SpawnItemEx ("gore_bloodmistY_small", 0, 0, 0, frandom(-0.2,0.2) , 0 , frandom(-0.2,0.2) , random(1,360), SXF_TRANSFERTRANSLATION)
			loop
		death:
			MAGS L -1
			stop
	}
}