actor GrenadierRevenant : actor replaces revenant
{
	Health 500
	Radius 20
	Height 56
	Mass 500
	Speed 10
	PainChance 100
	Monster
	meleerange 55
	MeleeThreshold 100
	+FLOORCLIP
	+DONTHARMSPECIES
	Species "GeoRev"
    bloodtype bonespray
	SeeSound "skeleton/sight"
	PainSound "skellytun/pain"
	DeathSound "skeleton/death"
	ActiveSound "skeleton/active"
	MeleeSound "skeleton/melee"
	HitObituary "%o was smashed by a Grenadier revenant."
	Obituary  "%o couldn't evade a Grenadier revenant's geo shot"
	dropitem "lilchest" 8
	dropitem "lilcube" 9
	dropitem "smallsubrefresh" 50
	States
	{
	Spawn:
		GREV AB 10 A_Look
		Loop
	See:
		GREV AABBCCDDEEFF 2 A_Chase
		Loop
	Missile:
		TNT1 A 0
		TNT1 A 0 a_jumpifcloser (400,"midrange")
	longrange:
		GREV G 0 Bright A_FaceTarget
		GREV G 10 Bright A_FaceTarget
		TNT1 A 0 a_jump (80, "homingshot")
		GREV H 2 A_custommissile ("Geoshot",56,-12)
		GREV H 2 A_custommissile ("GeoRing",58,-12)
		GREV I 5 A_FaceTarget
		Goto See
	Homingshot:
		GREV H 2 A_custommissile ("GeoHomingshot",56,-12)
		GREV H 2 A_custommissile ("GeoRing",58,-12)
		GREV I 5 A_FaceTarget
		Goto See
	midrange:
		TNT1 A 0
		TNT1 A 0 a_jump (80,"bonethrow")
		TNT1 A 0 a_jumpifcloser (250,"bonethrow")
		GREV G 0 Bright A_FaceTarget
		GREV G 10 Bright A_FaceTarget
		GREV H 2 A_custommissile ("GeoBomb",56,-12)
		GREV H 2 A_custommissile ("GeoRing",58,-12)
		GREV I 5 A_FaceTarget
		Goto See
	bonethrow:
		GREV J 1 A_FaceTarget
		GREV J 4 A_PlaySound ("skellytun/woosh")
		GREV K 5 A_FaceTarget
		TNT1 A 0 A_CustomMissile("RevBone",32,0,0,1)
		GREV L 4
		TNT1 A 0 a_jump (120, "bonethrow")
		TNT1 A 0 a_jump (30,"midrange")
		TNT1 A 0 a_jump (30,"longrange")
		Goto See
		
	Melee:
		GREV J 1 A_FaceTarget
		GREV J 5 A_PlaySound("skellytun/woosh")
		GREV K 4 A_FaceTarget
		TNT1 A 0 A_CustomMeleeAttack(random(1,10)*4,"skellytun/punch","none") //----------------This is a custom replication of the basic revenant punch damage
		TNT1 A 0 ACS_ExecuteWithResult(990,0,1,2)//flyback//------------------------------------Change arg4 for higher knockback distances. 2 is pretty big tho.
		GREV L 4
		Goto See
	Pain:
		GREV M 5
		TNT1 A 0 a_playsound ("skeleton/allpain",0,1,0,0.5)
		GREV M 5 A_Pain
		Goto See
	Death:
		GREV M 4
		GREV N 5 A_Scream
		GREV O 5 A_NoBlocking
		GREV P 4
		TNT1 A 0 a_playsound ("hellfos/fall",0)
		GREV Q 4
		GREV R 5
		GREV S 2
		GREV S -1
		Stop	
	Xdeath:
		TNT1 A 0
		TNT1 A 0 a_spawnitemex("bonergib1",0,0,0,frandom(-10,10),frandom(-10,10),frandom(8,11),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib2",0,0,0,frandom(-15,15),frandom(-10,10),frandom(8,16),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib2",0,0,0,frandom(-10,15),frandom(-10,10),frandom(8,16),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib3",0,0,0,frandom(-10,10),frandom(-10,10),frandom(8,15),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib3",0,0,0,frandom(-10,10),frandom(-10,10),frandom(8,18),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 thrustthingz (0,35,0,1)
		TNT1 A 0 ThrustThing(angle*256/360+128, 3, 0, 0)		
		TNT1 A 0 a_playsound ("skeleton/gib",0,1,0,0.6)
		TNT1 A 0 A_NoBlocking
		TNT1 AAAAAA 0 a_spawnitemex("bonegib",0,0,0,random(-10,10),random(-10,10),random(11,15))
		TNT1 AAAAAA 0 a_spawnitemex("bonegib",0,0,0,random(-14,18),random(-15,19),random(11,15))
		TNT1 AAAAAA 0 a_spawnitemex("bonegib",0,0,0,random(-8,15),random(-20,13),random(11,15))
		GRGB M 5
	flyback:
		GRGB N 1 A_JumpIf(floorz == z, "land")
		loop
	land:
		GRGB P 1 thrustthingz (0,15,0,1)
		TNT1 A 0 a_playsound ("hellfos/fall",0)
		GRGB OPQ 1
		GRGB Q -1
		stop
	death.sunder:
		TNT1 A 0
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 a_spawnitemex("bonergib1",0,0,0,frandom(-10,10),frandom(-10,10),frandom(8,11),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib2",0,0,0,frandom(-15,15),frandom(-10,10),frandom(8,16),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib2",0,0,0,frandom(-10,15),frandom(-10,10),frandom(8,16),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib3",0,0,0,frandom(-10,10),frandom(-10,10),frandom(8,15),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib3",0,0,0,frandom(-10,10),frandom(-10,10),frandom(8,18),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 thrustthingz (0,35,0,1)
		TNT1 A 0 ThrustThing(angle*256/360+128, 3, 0, 0)		
		TNT1 A 0 a_playsound ("skeleton/gib",0,1,0,0.6)
		TNT1 AAAAAA 0 a_spawnitemex("bonegib",0,0,0,random(-10,10),random(-10,10),random(11,15))
		TNT1 AAAAAA 0 a_spawnitemex("bonegib",0,0,0,random(-14,18),random(-15,19),random(11,15))
		TNT1 AAAAAA 0 a_spawnitemex("bonegib",0,0,0,random(-8,15),random(-20,13),random(11,15))
		TNT1 AAAAAAAAAAAAAAAAAA 0 a_dropitem ("milkjug",1)
		GRGB M 5
		goto flyback
	Death.slayermelee:
		GREV M 4
		GREV N 5 A_Scream
		GREV O 5 A_NoBlocking
		GREV P 4
		TNT1 AA 0 a_spawnitemex ("Strongsunderlootorb", 0, 0, 0, random (-4, 7), random (-6, 3), random (3,6))
		TNT1 AAA 0 a_spawnitemex ("sunderlootorb", 0, 0, 0, random (-3, 6), random (-8, 8), random (3,5))
		TNT1 A 0 a_playsound ("hellfos/fall",0)
		GREV Q 4
		GREV R 5
		GREV S 2
		GREV S -1
		Stop	
	Death.slayersupermelee:
		TNT1 A 0
		TNT1 A 0 a_fall
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 a_spawnitemex("bonergib1",0,0,0,frandom(-10,10),frandom(-10,10),frandom(8,11),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib2",0,0,0,frandom(-15,15),frandom(-10,10),frandom(8,16),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib2",0,0,0,frandom(-10,15),frandom(-10,10),frandom(8,16),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib3",0,0,0,frandom(-10,10),frandom(-10,10),frandom(8,15),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 a_spawnitemex("bonergib3",0,0,0,frandom(-10,10),frandom(-10,10),frandom(8,18),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 thrustthingz (0,35,0,1)
		TNT1 A 0 ThrustThing(angle*256/360+128, 3, 0, 0)		
		TNT1 A 0 a_spawnitemex ("Strongsunderlootorb", 0, 0, 0, random (-4, 7), random (-6, 3), random (3,6))
		TNT1 AA 0 a_spawnitemex ("sunderlootorb", 0, 0, 0, random (-3, 6), random (-8, 8), random (3,5))
		TNT1 A 0 a_playsound ("skeleton/gib",0,1,0,0.6)
		TNT1 AAAAAA 0 a_spawnitemex("bonegib",0,0,0,random(-10,10),random(-10,10),random(11,15))
		TNT1 AAAAAA 0 a_spawnitemex("bonegib",0,0,0,random(-14,18),random(-15,19),random(11,15))
		TNT1 AAAAAA 0 a_spawnitemex("bonegib",0,0,0,random(-8,15),random(-20,13),random(11,15))
		GRGB M 5
		goto flyback
	death.blazice:
		GREV M 2 a_scream
		GRIC A 2 A_noblocking
		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)
		GRIC B 90 bright
		GRIC C 2 bright
		TNT1 A 0 a_playsound ("swordtech/iceshatter")
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 45, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 360, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 a_dropitem ("treatspawner",2,220)
		TNT1 AAA 0 a_spawnitemex ("icefragment",0,0,0,random(-10,10),random(-10,10),10) 
		TNT1 AAAA 0 a_spawnitemex ("icefragment",0,0,0,random(-4,13),random(-8,13),8) 
		stop
	death.fatalslash:
		GREV M 2 a_scream
		GRIC A 4 a_noblocking
		GREV M 15
	randomwait:
		FDGR A 1 a_jump (20,"split")
		loop
	split:
		FDGR AABBCC 5
		FDGR DE 2
		FDGR FGHIJ 3 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,35), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDGR J 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,35), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDGR J 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,35), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDGR J 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,35), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDGR J 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,35), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDGR J 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,35), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
	exploding:
		FDGR J 1
		TNT1 A 1 A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,35), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		FDGR J 1
		TNT1 A 1 A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,35), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		FDGR J 1
		TNT1 A 1 A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,35), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		FDGR J 1 a_jump (100,"reallydie")
		TNT1 A 1 A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,35), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		loop
	reallydie:
		TNT1 A 0 
		TNT1 A 1 a_spawnitemex ("fataldrawdeath",0,0,30)
		stop
	Raise:
		GREV S 5
		GREV RQPONM 5
		TNT1 A 0 a_jump (60, "chaosexplode")
		Goto See
	Chaosexplode:
 		TNT1 A 0
		TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
		GREV A 8
        GREV M 6 A_Pain
    	GREV A 8
        GREV M 6 A_Pain
    	GREV A 8
        GREV M 6 A_Pain
        TNT1 A 0 a_scream
        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 4
		TNT1 A 0 a_spawnitemex("skellytun",0,0,12,random(-6,6),random(-8,8),random(6,10),0,SXF_NOCHECKPOSITION)
		TNT1 A 20
		stop
		
	}
}	

actor geoshot
{
	Radius 11
	Height 8
	Speed 20
	Damage (25)
	Projectile
	+THRUSPECIES
	+THRUGHOST
	species "enemyshot"
	+bright
	SeeSound "GeoRev/Shot"
	DeathSound "GeoRev/Break"
	States
	{
	Spawn:
		REVS A 1 a_spawnitemex ("geotrail")
		REVS B 1 a_spawnitemex ("geotrail")
		REVS C 1 a_spawnitemex ("geotrail")
		REVS D 1 a_spawnitemex ("geotrail")
		REVS E 1 a_spawnitemex ("geotrail")
		REVS D 1 a_spawnitemex ("geotrail")
		REVS C 1 a_spawnitemex ("geotrail")
		REVS B 1 a_spawnitemex ("geotrail")
		REVS A 1 a_spawnitemex ("geotrail")
		Loop
	Death:
		REVS FGHIJK 2
		Stop
	}
}

actor geotrail
{
	+NOCLIP
	+clientsideonly
	+NOBLOCKMAP
	+NOGRAVITY
	renderstyle add
	alpha 0.5
	States
	{
	spawn:
		TNT1 A 0
		TNT1 A 2
		REVS ABCDE 1
		stop
	}
}

ACTOR GeoHomingShot
{
	Radius 11
	Height 8
	Speed 15
	Damage (35)
	Projectile
	+THRUSPECIES
	+THRUGHOST
	+BRIGHT
	species "enemyshot"
	+SEEKERMISSILE
	SeeSound "GeoRev/Shot"
	DeathSound "GeoRev/Break"
	States
	{
	Spawn:
		TNT1 A 0
		REVS M 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		REVS M 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		REVS M 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 a_playsound ("GeoRev/Homing",7)
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		REVS N 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		REVS N 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		REVS N 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		REVS O 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		REVS O 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		REVS O 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		REVS P 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		REVS P 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		REVS P 1 a_spawnitemex ("geoHomingtrail")
		TNT1 A 0 A_SeekerMissile(2,4,SMF_PRECISE)
		Loop
	Death:
		REVS QRSTUV 2
		Stop
	}
}

actor geoHomingtrail : geotrail
{
	States
	{
	spawn:
		TNT1 A 3
		REVS M 6
		stop
	}
}


Actor GeoRing
{
	+dontblast
	+notimefreeze
	+nointeraction
	+clientsideonly 
	projectile
    +FORCEXYBILLBOARD	
	+LOOKALLAROUND
	radius 2
	speed 5
    Scale 1
	renderstyle add
	alpha 0.60
	states
	{
	spawn:
		TNT1 A 0
		TRNG E 2 bright
		TRNG D 2 bright
		TRNG C 2 bright
		TRNG B 2 bright
		TRNG A 2 bright
		stop
	death:
		TNT1 A 0
		stop
	}
}

actor GeoBomb
{
	Radius 11
	Height 12
	Speed 18
	Damage (15)
	+THRUGHOST
	Projectile
	-nogravity
	gravity 0.7
	+bright
	Species "GeoRev"
	+THRUSPECIES
	SeeSound "GeoRev/Shot"
	DeathSound "GeoRev/Break"
	States
	{
	spawn:
		TNT1 A 0
		REVS W 1 thrustthingz (0,12,0,0)
	flight:
		REVS W 1 a_spawnitemex ("GeoBombtrail")
		loop
	death:
		TNT1 A 0 a_changeflag ("nogravity", 1)
		TNT1 A 0 a_playsound ("bomberknight/explosion",0,1,0,0.50)
		TNT1 A 0 a_explode (15,120,0,0,90)
		TNT1 A 0 a_stop
		REVS QRSTUV 2
		stop
	}
}

actor geoBombTrail : geotrail
{
	States
	{
	spawn:
		TNT1 A 2
		REVS W 4
		stop
	}
}


ACTOR RevBone
{
	Radius 10
	Height 10
	Speed 15
	Damage (15)
	Scale 2
	+BRIGHT
	Projectile
	+THRUSPECIES
	+THRUGHOST
	species "enemyshot"
	deathsound "gibs/bones"
	Obituary "%o was boned by a Grenadier revenant."
	States
	{
	Spawn:
		TNT1 A 0
		RBNE A 2
		RBNE B 2
		RBNE C 2 A_PlaySound("Skeleton/Swing")
		RBNE D 2
		Loop
	Death:
		TNT1 A 0 A_SetTranslucent (0.5, 1)
		0NGB EFG 3 Bright
		Stop
	xdeath:
		TNT1 A 0 a_playsound ("subweapons/jabhit",0)
		TNT1 A 0 A_SetTranslucent (0.5, 1)
		0NGB EFG 3 Bright
		Stop
	}
}

actor bonergib1
{
	projectile
	+thruactors
	-nogravity
	+clientsideonly
	Radius 4
	Height 5
	+bright
	states
	{
	spawn:
		GRGB ABCD 1
		loop
	death:
		TNT1 A 1
		stop
	}
}

actor bonergib2 : bonergib1
{
	states
	{
	spawn:
		GRGB EFGH 1
		loop
	}
}

actor bonergib3 : bonergib1
{
	states
	{
	spawn:
		GRGB IJKL 1
		loop
	}
}

