ACTOR agitator : Revenant replaces revenant
{
	HitObituary "%o chewed on a revenant's fist."
	Obituary  "%o was outwitted by a boner"
	PainSound "boner/pain"
	Bloodtype "CADustBlood"
	+noblooddecals
	States
	{
	Melee:
		SKEL G 0 A_FaceTarget
		SKEL G 6 A_SkelWhoosh
		SKEL H 6 A_FaceTarget
		SKEL I 6 A_SkelFist
		Goto See
	Missile:
		TNT1 A 0
		SKEL J 0 Bright A_FaceTarget
		TNT1 A 0 a_jump (25, "bonerrocket")
	ActuallyShoot:
		SKEL J 10 Bright A_FaceTarget
		TNT1 A 0 a_jump (115, "HomingBonerAttack")
		SKEL K 10 a_custommissile ("NormalBonerShot",45)
		SKEL K 10 A_FaceTarget
		Goto See
	HomingBonerAttack:
		SKEL K 10 a_custommissile ("HomingBonerShot",45)
		SKEL K 10 A_FaceTarget
		Goto See
		
	bonerrocket:
		TNT1 A 0
		TNT1 A 0 a_jumpifcloser (400,"ActuallyShoot")
		SKEL K 10 Bright A_FaceTarget
		TNT1 AAA 0  A_SpawnItemEx("revenanttracersmoke",-15,18,65,0,0,frandom(1,2))
		TNT1 AAA 0  A_SpawnItemEx("revenanttracersmoke",-15,-18,65,0,0,frandom(1,2))
		SKEL K 10 Bright A_FaceTarget
		TNT1 AAA 0  A_SpawnItemEx("revenanttracersmoke",-15,18,65,0,0,frandom(1,2))
		TNT1 AAA 0  A_SpawnItemEx("revenanttracersmoke",-15,-18,65,0,0,frandom(1,2))
		SKEL K 10 Bright A_FaceTarget
		TNT1 AAA 0  A_SpawnItemEx("revenanttracersmoke",-15,18,65,0,0,frandom(1,2))
		TNT1 AAA 0  A_SpawnItemEx("revenanttracersmoke",-15,-18,65,0,0,frandom(1,2))
		SKEL J 5 Bright A_FaceTarget
		TNT1 A 0 a_playsound ("weapons/rocklf",0)
		SKEL K 10 A_custommissile ("bonermissile",45)
		SKEL K 10 A_FaceTarget
		Goto See

	Pain:
		SKEL L 5
		SKEL L 5 A_Pain
		TNT1 A 0 a_jumpifcloser (160,"rollforagitation")
		Goto See
	rollforagitation:
		TNT1 A 0
		TNT1 A 0
		SKEL L 1 a_jump (90, "AGITATION")
		goto see
	agitation:
		TNT1 A 0
		TNT1 A 0 
		SKEL K 10 A_FaceTarget
		TNT1 A 0 a_playsound ("skeleton/sight",0,1,0,0.6)
		TNT1 A 0 radius_quake (3,30,0,250,0)
		SKEL K 10 A_FaceTarget
		SKEL K 10 A_FaceTarget
		SKEL K 10 A_FaceTarget
		SKEL G 0 A_FaceTarget
		SKEL G 6 A_SkelWhoosh
		TNT1 A 0 a_facetarget
		TNT1 A 0 thrustthingz (0,20,0,0)
		TNT1 A 0 ThrustThing(angle*256/360, 15, 0, 0)
		SKEL H 6 A_FaceTarget
		TNT1 A 0 a_facetarget
		TNT1 A 0 thrustthingz (0,20,0,0)
		TNT1 A 0 ThrustThing(angle*256/360, 15, 0, 0)
		TNT1 A 0 a_custommissile ("skellypunch")
		SKEL I 4 A_SkelFist
		SKEL G 4 A_SkelWhoosh
		SKEL H 6 A_FaceTarget
		TNT1 A 0 a_facetarget
		TNT1 A 0 thrustthingz (0,20,0,0)
		TNT1 A 0 ThrustThing(angle*256/360, 15, 0, 0)
		TNT1 A 0 a_custommissile ("skellypunch")
		SKEL I 4 A_SkelFist
		SKEL G 0 A_FaceTarget
		SKEL G 4 A_SkelWhoosh
		SKEL H 6 A_FaceTarget
		TNT1 A 0 thrustthingz (0,20,0,0)
		TNT1 A 0 ThrustThing(angle*256/360, 15, 0, 0)
		TNT1 A 0 a_custommissile ("skellypunch")
		SKEL I 4 A_SkelFist
		SKEL I 12
		SKEL I 1 a_stop
		Goto See
	Death:
		SKEL LM 7
		SKEL N 7 A_Scream
		SKEL O 7 A_NoBlocking
		SKEL P 7
		SKEL Q -1
		Stop
	xdeath:
		TNT1 A 0
		TNT1 A 0 a_scream
		TNT1 A 0 a_noblocking
		TNT1 A 0 Thing_SetTranslation(0, 0)
		TNT1 AAAAAAAAAA 0 a_spawnitemex ("visualbonegib",0,0,0,random(-10,10),random(-10,10),random(9,16),0)
		TNT1 AAAAAAAAAAAAA 0 a_spawnitemex ("visualbonegib",0,0,0,random(-12,13),random(-15,13),random(10,14),0)
		TNT1 A 0 a_spawnitemex ("bonerskull",0,0,0,random(-10,10),random(-10,10),10)
		TNT1 A 0 thrustthingz (0,35,0,1)
		TNT1 A 0 ThrustThing(angle*256/360+128, 3, 0, 0)		
		STSO A 5
	Flyback:
		STSO B 1 A_JumpIf(Abs(VelZ) <= 0.01, "Land")
		loop
	Land:
		STSO C 1 thrustthingz (0,15,0,1)
		TNT1 A 0 a_playsound ("misc/DMpunch",0)
		STSO DED 1
		STSO E -1
		stop		
	Death.CALinkedBomb:
	Death.CALinked:
		TNT1 A 0
		TNT1 A 0 a_scream
		TNT1 A 0 a_noblocking
		TNT1 A 0 a_setscale (1.20,1.40)
		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 I 2
		L1ST I -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 ("MalefactorBonerTorso",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)
		8D11 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.60,0)
		TNT1 A 0 A_SpawnItemEx("MonsterFireExplosion",0,0,30)
		stop
	Raise:
		TNT1 A 0 
		TNT1 A 0 a_setscale (1)
		TNT1 A 0 A_ChangeFlag ("THRUACTORS",0)
		SKEL Q 5
		SKEL PONML 5
		Goto See
	}
}

actor skellypunch
{
	Projectile
	projectilekickback 600
	speed 64
	+BLOODSPLATTER
	+dontblast
	+forcepain
	height 10
	radius 10
	+noblood
	+NOEXTREMEDEATH
	mass 1000000
	damage (15)
	states
	{
	spawn:
		TNT1 A 2
		stop
	crash:
	xdeath:
		TNT1 A 0
		TNT1 A 1 A_radiusthrust (7000,30,RTF_NOIMPACTDAMAGE)
		stop
	}
}

actor bonermissile
{
	Radius 11
	Height 8
	Speed 10
	Damage 5
	Projectile
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 a_playsound ("skeleton/sight",8,0.70,1,1.5)
		goto flight
	flight:
		BNRB AB 2
		loop
	death:
	xdeath:
		TNT1 A 0
		TNT1 A 0 a_stopsound (8)
		TNT1 A 0 a_playsound ("weapons/rocklx",0,1,0,1.20)
		TNT1 AAA 0 a_spawnitemex("lilboner",0,0,0,random(-10,10),random(-10,10),5,0,SXF_NOCHECKPOSITION)
		FBXP A 8 Bright
		FBXP B 6 Bright
		FBXP C 4 Bright
		Stop
	}
}		

actor lilboner : agitator
{
	Health 40
	Radius 15
	Height 40
	scale 0.45
	speed 14
	mass 300
	MeleeRange 70
	-solid
	-countkill
	HitObituary "%o was punched in the junk by a lil skelly."
	Obituary  "%o was shamefully killed by a little boner ball"


	var int user_bonertimer;
	states
	{
	Spawn:
		SKEL AB 8 A_Look
		Loop
	See:
		TNT1 A 0
		TNT1 A 0 a_jumpif (user_bonertimer >= 15, "death")
		SKEL AABBCCDDEEFF 2 A_Chase
		TNT1 A 0 a_setuservar("user_bonertimer", user_bonertimer+1)
		Loop
	Melee:
		SKEL G 0 A_FaceTarget
		SKEL G 4 A_SkelWhoosh
		SKEL H 4 A_FaceTarget
		SKEL I 4 A_custommeleeattack (random(1, 10), "skeleton/melee")
		TNT1 A 0 a_setuservar("user_bonertimer", user_bonertimer+1)
		TNT1 A 0 a_jumpif (user_bonertimer >= 15, "death")
		Goto See
	Missile:
		SKEL J 0 Bright A_FaceTarget
		SKEL J 10 Bright A_FaceTarget
		TNT1 A 0 a_playsound ("skeleton/attack",0,0.60,0,1.20)
		SKEL K 10 a_custommissile ("lilmissile")
		SKEL K 10 A_FaceTarget
		TNT1 A 0 a_setuservar("user_bonertimer", user_bonertimer+1)
		TNT1 A 0 a_jumpif (user_bonertimer >= 15, "death")
		Goto See
	death:
	xdeath:
		SKEL LM 5
		SKEL N 2 A_Scream
		SKEL O 2 A_NoBlocking
		SKEL P 2
		SKEL Q 1
		TNT1 A 0 a_playsound ("weapons/rocklx",0,0.40,0,1.60)
		FBXP CBD 2 
		Stop
	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 ("MalefactorTinyBonerTorso",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)
		8D11 B random (45,50)
		TNT1 A 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.60,0)
		MISL BCD 3 bright
		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
		stop
	Pain:
		SKEL L 5
		SKEL L 5 A_Pain
		Goto See
	}
}

//=============================================================================
//=============================================================================
//=============================================================================
//Projectiles and attacks

ACTOR NormalBonerShot : RevenantTracer
{
	-SEEKERMISSILE
	+RANDOMIZE
	translation "176:191=192:204", "32:167=192:200", "208:223=192:199", "5:47=200:206", "168:176=192:196", "233:233=194:194"
	States
	{
	Spawn:
		FATB AB 2 Bright
		Loop
	Death:
		FBXP A 8 Bright
		FBXP B 6 Bright
		FBXP C 4 Bright
		Stop
	}
}

ACTOR HomingBonerShot : RevenantTracer
{
	+RANDOMIZE
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("Boner/HomingShot",0,1,0,0.80)
		TNT1 A 1 A_PlaySound ("Boner/FireLoop",CHAN_VOICE,1,1,1.10)
	Flying:
		FATB A 2 Bright
		FATB B 2 Bright a_tracer2
		TNT1 A 0 A_SpawnItemEx("revenanttracersmoke",0,0,2,0,0,frandom(1,2))
		Loop		
	}
}



actor lilmissile : revenanttracer
{
	radius 6
	height 4
	speed 8
	scale 0.50
	damage (3)
	-seekermissile
	translation "176:191=192:204", "32:167=192:200", "208:223=192:199", "5:47=200:206", "168:176=192:196", "233:233=194:194"
	states
	{
	spawn:
		FATB AB 2 Bright
		Loop
	}
}



actor visualbonegib
{
	+cannotpush
	+movewithsector
	+dontsplash
	+noblockmap
	+missile
	+doombounce
	+thruactors
	-nogravity
	+FORCEXYBILLBOARD	
	+LOOKALLAROUND
	scale 1
	Gravity 1.2 
	bouncecount 3
    bouncefactor 0.60
	Speed 5
    States
    {
    Spawn:
        RBNE ABCD 2
		loop
	death:
		RBNE B 300
		RBNE B 10 a_fadeout (0.25)
  		RBNE B 10 a_fadeout (0.25)
		RBNE B 10 a_fadeout (0.25)
		RBNE B 10 a_fadeout (0.25)
		stop
    }
}

actor bonerskull : visualbonegib
{
	scale 1
	states
	{
	spawn:
		RVHD ABCD 2
		loop
	death:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_jump (150, "dead2")
		RVHD D 300
		RVHD D 10 a_fadeout (0.25)
		RVHD D 10 a_fadeout (0.25)
		RVHD D 10 a_fadeout (0.25)
		RVHD D 10 a_fadeout (0.25)
		stop
	dead2:
		RVHD B 300
		RVHD B 10 a_fadeout (0.25)
		RVHD B 10 a_fadeout (0.25)
		RVHD B 10 a_fadeout (0.25)
		RVHD B 10 a_fadeout (0.25)
		stop
		
	}
}




actor MalefactorBonerTorso : MalefactorRiflemanTorso
{
	gravity 0.80
    States
    {
    Spawn:
		TNT1 A 0
		8D11 A 6
		TNT1 A 0 a_scalevelocity (0.30)
		8D11 A 6
		TNT1 A 0 a_scalevelocity (0.50)
		8D11 A 6
		TNT1 A 0 a_stop
		8D11 A 10
		TNT1 A 0 a_changeflag ("NOGRAVITY",0)
		TNT1 A 0 a_changeflag ("HEXENBOUNCE",0)
	Falling:
		8D11 A 1
		TNT1 A 0 A_CheckFloor ("Death")
		loop
    }
}
	
actor MalefactorTinyBonerTorso : MalefactorBonerTorso
{
	scale 0.45
	states
	{
	Death:
		TNT1 A 0 a_spawnitemex("FireDebris",0,0,random(3,8),random(-8,8),random(-7,7),random(6,7),0,SXF_NOCHECKPOSITION)
		MISL BCD 3 bright
		stop
	}
}