ACTOR ImpDude : Doomimp replaces Doomimp
{
	Speed 10
	HitObituary "%o got too close to an imp"
	Obituary "%o was fireballed by an Imp"
	species "imp"
	+DONTHARMSPECIES
	SeeSound "impdude/see"
	PainSound "impdude/pain"
	DeathSound "impdude/die"
	ActiveSound "impdude/idle"
	States
	{
	Melee:
	Missile:
		TROO EF 8 A_FaceTarget
		TNT1 A 0 A_JumpIfCloser(280, "BounceBall" )
		TROO G 6 A_TroopAttack
		Goto See
	BounceBall:
		TNT1 A 0
		TNT1 A 0 
		TNT1 A 0 a_jumpiftargetinsidemeleerange ("claw") 
		TNT1 A 0 a_playsound ("imp/attack",0)
		TROO G 9 A_custommissile ("MalefactorBouncingFireball",32,10,0)
		Goto See
	claw:
		TROO G 6 A_TroopAttack
		Goto See	
	XDeath:
		TROO N 5 A_NoBlocking
		TNT1 A 0 a_playsound ("MaleFactors/Gib",0,0.80)
		TNT1 AAA 0 a_spawnitemex("CAXblood",0,0,10,random(-7,7),random(-6,6),random(10,12))
		TNT1 AAA 0 a_spawnitemex("CAXblood",0,0,10,random(-8,8),random(-10,10),random(9,14))
    	TNT1 A 0 BRIGHT a_spawnitemex("CAMonsterBlud",0,0,0,random(-3,8),random(-6,8),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("CAMonsterBlud",0,0,0,random(-6,12),random(-10,10),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("cs_go",0,0,0,random(-7,10),random(-9,12),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("cs_go",0,0,0,random(-3,16),random(-10,16),random(10,12))
    	TNT1 A 0 BRIGHT A_PlaySound("CABsplat")	
		TROO O 5 A_XScream
		TROO P 5
		TROO Q 5 
		TROO RST 5
		TROO U -1
		Stop
	Death.CALinkedBomb:
	Death.CALinked:
		TNT1 A 0
		TNT1 A 0 a_scream
		TNT1 A 0 a_noblocking
		TNT1 A 0 a_stop
		TNT1 A 0 a_changeflag ("THRUACTORS",1)
		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 D 2
		L1ST D -1
		wait
	Death.CABladeBeam:
		TNT1 A 0
		TNT1 A 0 a_facetarget
		TNT1 A 0 a_spawnitemex ("MalefactorImpTorso",0,0,36,random(-3,3),random(-3,3),random (1,2),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_scream
		TNT1 A 0 a_noblocking
		TNT1 A 0 a_playsound ("Malefactors/BladeBeamDeath1",0,1,0,0.90)
		8DX4 B random (45,50)
		TNT1 AAA 0 a_spawnitemex("FireDebris",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 0 A_SpawnItemEx("MonsterFireExplosion",0,0,30)
		stop
	Raise:
		TNT1 A 0
		TNT1 A 0 a_changeflag ("THRUACTORS",0)
		TROO ML 8
		TROO KJI 6
		Goto See	
	}
}

actor MalefactorBouncingFireball
{
	projectile
    +FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+bloodlessimpact
	+bounceonceilings
	+thruspecies
	+bounceonfloors
	+usebouncestate
	radius 12
	bouncecount 2
    gravity 0.5
	damage (8)
	speed 12
	+THRUSPECIES
	species "imp"
	states
	{
	spawn:
		BAL1 A 1 bright a_spawnitemex ("MonsterVentTrail")
		BAL1 B 1 bright a_spawnitemex ("MonsterVentTrail")
		BAL1 A 1 bright a_spawnitemex ("MonsterVentTrail")
		BAL1 B 1 bright a_spawnitemex ("MonsterVentTrail")
		TNT1 A 0 a_changeflag ("NOGRAVITY",0)
		TNT1 A 0 thrustthingz (0,2,0,0)
	flying:
		BAL1 A 1 bright a_spawnitemex ("MonsterVentTrail")		
		BAL1 B 1 bright a_spawnitemex ("MonsterVentTrail")
		loop
	Bounce.floor:
		BAL1 A 1 bright a_spawnitemex ("MonsterVentTrail")		
		TNT1 A 0 thrustthingz (0,25,0,0)
		goto flying
	Death:
		TNT1 A 0 a_changeflag ("nogravity", 1)
		TNT1 A 0 a_playsound ("imp/shotx",0,0.60,0,1.40)
		BAL1 CDE 2 bright
		BAL1 E 1 a_fadeout (0.10)
		wait
	}
}



actor MalefactorImpTorso : MalefactorRiflemanTorso
{
	gravity 0.80
    States
    {
    Spawn:
		TNT1 A 0
		8DX4 A 6
		TNT1 A 0 a_scalevelocity (0.30)
		8DX4 A 6
		TNT1 A 0 a_scalevelocity (0.50)
		8DX4 A 6
		TNT1 A 0 a_stop
		8DX4 A 10
		TNT1 A 0 a_changeflag ("NOGRAVITY",0)
		TNT1 A 0 a_changeflag ("HEXENBOUNCE",0)
	Falling:
		8DX4 A 1
		loop
    }
}
	