ACTOR bigmouthedhissything : Cacodemon replaces cacodemon
{
	Speed 8
	HitObituary "%o forgot Cacos bite"
	Obituary "%o got blasted by an angry tomato"
	bloodtype "CAHissyBlood"
	bloodcolor "00 00 FF"
	SeeSound "hissything/see"
	PainSound "hissything/pain"
	DeathSound "hissything/death"
	ActiveSound "hissything/idle"

	States
	{
	Missile:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_jump (30, "SpiralBallAttack")
		HEAD BC 5 A_FaceTarget
		HEAD D 5 Bright A_HeadAttack
		Goto See
	SpiralBallAttack:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_playsound ("HissyThing/Charge",CHAN_VOICE,1,0,0.8)
		HEAD B 5 a_facetarget
		TNT1 AAAAA 0 a_spawnitemex ("cacocharge",Frandom(-4,4),Frandom(-4,4),25,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,0)
		HEAD B 5 a_facetarget
		TNT1 AA 0 a_spawnitemex ("cacocharge",Frandom(-4,4),Frandom(-4,4),25,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,0)
		HEAD B 5 a_facetarget
		TNT1 AAAAA 0 a_spawnitemex ("cacocharge",Frandom(-4,4),Frandom(-4,4),25,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,0)
		HEAD C 5 a_facetarget
		TNT1 AA 0 a_spawnitemex ("forcetrail3", 25,0,30)
		TNT1 AAAAA 0 a_spawnitemex ("cacocharge",Frandom(-4,4),Frandom(-4,4),25,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,0)
		HEAD C 5 a_facetarget
		TNT1 AA 0 a_spawnitemex ("forcetrail1", 25,0,30)
		TNT1 AAAAAAAAAAAAAA 0 a_spawnitemex ("cacocharge",Frandom(-4,4),Frandom(-4,4),25,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,0)
		HEAD C 5 a_facetarget
		TNT1 AAAAAAAAAAAAAA 0 a_spawnitemex ("cacocharge",Frandom(-4,4),Frandom(-4,4),25,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,0)
		HEAD CAEF 4 a_facetarget
		HEAD F 6 a_facetarget
		HEAD ABC 2 a_facetarget
		TNT1 A 0 a_playsound ("imp/attack",0)
		TNT1 A 0 a_facetarget 
		HEAD D 2 Bright a_custommissile ("SpiralBall")
		HEAD C 2 Bright a_custommissile ("SpiralBall")
		HEAD D 2 Bright a_custommissile ("SpiralBall")
		HEAD C 2 Bright a_custommissile ("SpiralBall")
		HEAD D 2 Bright a_custommissile ("SpiralBall")
		HEAD C 2 Bright a_custommissile ("SpiralBall")
		HEAD D 2 Bright a_custommissile ("SpiralBall")
		Goto See
	XDeath:
	death:
		TNT1 A 0
		HEAD H 1 A_Scream
		TNT1 A 0 a_changeflag ("SOLID",0)
		HEAD H 0 A_NoBlocking
		HEAD G 0 A_PlaySound ("hissything/deflate",CHAN_VOICE,1,0,1.2)
		//HEAD I 0 A_ChangeFlag("DOOMBOUNCE",1)
		HEAD G 0 A_NoGravity
		HEAD GGGGGGGG 1 A_ChangeVelocity (random(-6, 6), random(-6, 6), random(0,2), 0)
		TNT1 AAAA 0 A_SpawnItemEx("monstersmokespawner",random(-4,4),random(-6,6),random(-6,25),momx*random(1,7)*0.1,momy*random(1,7)*0.1,momz*random(1,7)*0.1,0,0,90)
		HEAD GGGGGGGG 1 A_ChangeVelocity (random(-5, 5), random(-5, 5), random(-2,3), 0)
		TNT1 AAAA 0 A_SpawnItemEx("monstersmokespawner",random(-4,4),random(-6,6),random(-6,25),momx*random(1,7)*0.1,momy*random(1,7)*0.1,momz*random(1,7)*0.1,0,0,90)
		HEAD IIIIIIIIJJJJJJJJ 0 A_SpawnItemEx("monstersmokespawner",random(0,4),random(-12,12),random(-6,25),momx*random(1,7)*0.1,momy*random(1,7)*0.1,momz*random(1,7)*0.1,0,0,150)
		HEAD GGGGHHHH 1 A_ChangeVelocity (random(-4, 4), random(-4, 4), random(-2,4), 0)
		TNT1 AAAA 0 A_SpawnItemEx("monstersmokespawner",random(-4,4),random(-6,6),random(-6,25),momx*random(1,7)*0.1,momy*random(1,7)*0.1,momz*random(1,7)*0.1,0,0,90)
		HEAD HHHHHHHH 1 A_ChangeVelocity (random(-4, 4), random(-4, 4), random(-3,4), 0)
		TNT1 AAAA 0 A_SpawnItemEx("monstersmokespawner",random(-4,4),random(-6,6),random(-6,25),momx*random(1,7)*0.1,momy*random(1,7)*0.1,momz*random(1,7)*0.1,0,0,90)
		HEAD HHHHHHHH 1 A_ChangeVelocity (random(-2, 2), random(-2, 2), random(-2,2), 0)
		TNT1 AAAA 0 A_SpawnItemEx("monstersmokespawner",random(-4,4),random(-6,6),random(-6,25),momx*random(1,7)*0.1,momy*random(1,7)*0.1,momz*random(1,7)*0.1,0,0,90)
		//HEAD I 0 A_ChangeFlag("DOOMBOUNCE",0)
		HEAD I 1 A_Gravity
		TNT1 A 0 ThrustThingZ (0,30,1,1)
		goto deadfall
	deadfall:
		HEAD I 1 A_JumpIf(Abs(VelZ) <= 0.01, "DeadStop")
		loop
	deadstop:
		HEAD J 1 A_PlaySound ("misc/DMpunch",CHAN_VOICE,1,0,0.5)
		HEAD JK 3
		TNT1 AAAA 0 A_SpawnItemEx("monstersmokespawner",random(-4,4),random(-6,6),random(-6,25),momx*random(1,7)*0.1,momy*random(1,7)*0.1,momz*random(1,7)*0.1,0,0,90)
		HEAD L -1 A_SetFloorClip
		stop
	Death.CALinkedBomb:
	Death.CALinked:
		TNT1 A 0
		TNT1 A 0 a_scream
		TNT1 A 0 a_noblocking
		TNT1 A 0 a_changeflag ("THRUACTORS",1)
		TNT1 A 0 a_stop 
		TNT1 A 0 a_setscale (1.60)
		TNT1 A 0 a_playsound ("Malefactors/LinkedHurt",0,0.80)
		TNT1 A 1 a_spawnitemex ("CALinkedKill",0,0,35)
		TNT1 A 0 a_playsound ("Malefactors/LinkedDeath",0,1,0,0.90)
		TNT1 A 2
		TNT1 A 3 ThrustThingZ (0,30,0,1)
		L1ST F 2
		L1ST F -1
		wait
	Death.CABladeBeam:
		TNT1 A 0
		TNT1 A 0 a_facetarget
		TNT1 A 0 a_scream
		TNT1 A 0 a_noblocking
		TNT1 A 0 a_spawnitemex ("MalefactorCacoTop",0,0,36,random(-3,3),random(-3,3),random (1,2),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_playsound ("Malefactors/BladeBeamDeath1",0,1,0,0.90)
		8DX6 B random (1,2)
		TNT1 A 0 a_nogravity
		8DX6 B 2 a_scalevelocity (0.40)
		8DX6 B 2 
		8DX6 B 2 a_scalevelocity (0.40)
		TNT1 A 0 a_stop
		8DX6 B random (36,40)
		TNT1 A 0 a_gravity
		8DX6 B 1 thrustthingz (0,1,0,0)
	HalfFalling:
		8DX6 B 1 A_JumpIf(Abs(VelZ) <= 0.01, "SlicedStop")
		loop
	SlicedStop:
		TNT1 A 0
		TNT1 AAA 0 a_spawnitemex("BigFireDebris",0,0,random(3,8),random(-8,8),random(-7,7),random(6,7),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_playsound ("Malefactors/BladeBeamExplosion",0,0.80,0)
		TNT1 A 1 A_SpawnItemEx("MonsterFireExplosion",0,0,30)
		stop
	Raise:
		TNT1 A 0
		TNT1 A 0 a_setscale (1)
		TNT1 A 0 a_changeflag ("THRUACTORS",0)
		HEAD L 8 A_UnSetFloorClip
		HEAD KJIHG 8
		Goto See
	}
}

actor SpiralBall
{
	Radius 10
	Height 9
	Speed 12
	Damage 2
	scale 0.80
	Projectile
	+RANDOMIZE
	+bright
	states
	{
	spawn:
		BAL2 ABAB 1 a_bishopmissileweave
		loop
	death:
		TNT1 A 0
		TNT1 A 0 a_playsound ("imp/shotx",0)
		BAL2 CDE 2 a_fadeout (0.10)
		BAL2 E 1 a_fadeout (0.10)
		wait
	}
}

actor forcetrail1
{
	+NOINTERACTION
	+clientsideonly
	Radius 4
	Height 5
	+bright
	renderstyle add
	alpha 0.90
	scale 1.25
	States
	{
	spawn:
		BAL2 A 3
		goto death
	death:
		TNT1 A 0 
		TNT1 A 0 a_spawnitemex ("forcetrail2")
		BAL2 A 2 a_fadeout (0.20)
		wait
	}
}

actor forcetrail2 : forcetrail1
{
	scale 1
	states
	{
	spawn:
		TNT1 A 5
		BAL2 A 2
		goto death
	death:
		TNT1 A 0 
		BAL2 A 2 a_fadeout (0.25)
		wait
	}
}

actor forcetrail3 : forcetrail2
{
	scale 1
	states
	{
	spawn:
		BAL2 A 2
		goto death
	}
}


actor cacocharge
{
	+clientsideonly
	+nointeraction
	projectile
	Radius 4
	Height 5
	speed 3
	Renderstyle Add
	scale 0.50
	Alpha 0.70
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 6
		TNT1 A 0 a_scalevelocity (-2)
		BAL2 A 5 
		goto death
	death:
		TNT1 A 1
		stop
	}
}




actor MalefactorCacoTop : MalefactorRiflemanTorso
{
	gravity 0.80
    States
    {
    Spawn:
		TNT1 A 0
		8DX6 A 6
		TNT1 A 0 a_scalevelocity (0.30)
		8DX6 A 6
		TNT1 A 0 a_scalevelocity (0.50)
		8DX6 A 6
		TNT1 A 0 a_stop
		8DX6 A 10
		TNT1 A 0 a_changeflag ("NOGRAVITY",0)
		TNT1 A 0 a_changeflag ("HEXENBOUNCE",0)
	Falling:
		8DX6 A 1
		TNT1 A 0 A_CheckFloor ("Death")
		loop
	Death:
		TNT1 AAA 0 a_spawnitemex("BigFireDebris",0,0,random(3,8),random(-8,8),random(-7,7),random(6,7),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_playsound ("Malefactors/BladeBeamExplosion",0,0.80,0)
		TNT1 A 1 A_SpawnItemEx("MonsterFireExplosion",0,0,30)
		stop
    }
}
	