actor XenoRunner replaces Demon
{
 bloodcolor orange
 species Xenomorph
 bloodtype XenoBlood
 health 56
 meleerange 60
 radius 30
 height 42
 mass 90
 speed 26
 painchance 120
 maxstepheight 74
 maxdropoffheight 74
 gravity 2.2
 monster
 +DROPOFF
 +FLOAT
 +FLOORCLIP
 +DONTHARMSPECIES
 +DONTHURTSPECIES
 +FASTMELEE
 +FASTER
 +CANBLAST
 +QUICKTORETALIATE
 +SLIDESONWALLS
 seesound "xeno/sight"
 deathsound "xeno/death"
 painsound "xeno/pain"
 meleesound "xeno/attack"
 damagefactor "PulseRifle", 1.1
 Painchance "KickDamage", 180
 obituary "%o was horribly deformed by a Runner."
 states
 {
  Spawn:
		TNT1 A 0
		// ExecuteAlways, 802, 0, <Threat Level>
		// 1 - Small blip
		// 2 - Medium blip
		// 3 - Large blip
		TNT1 A 0 ACS_ExecuteAlways(802, 0, 2)
		Goto Idle
  	Idle:
		ALIN A 4
		TNT1 A 0 A_Look
		ALIN A 4
		TNT1 A 0 A_Look
		ALIN A 4
		TNT1 A 0 A_Look
		ALIN A 4
		TNT1 A 0 A_Look
		ALIN A 4
		TNT1 A 0 A_Jump(18, 4)
		TNT1 A 0 A_Jump(186, 7)
		ALIN A 6
		Loop
		ALIN A 4 A_Look
		ALIN A 1 A_PlaySound("xeno/active")
		Loop
		ALIN A 1 A_Look
	Stand:
		TNT1 A 0 A_ChangeFlag("lookallaround",1)
		TNT1 A 0 A_Look
		ALIN AB 4 A_SetAngle(angle+random(-2, 2))
		TNT1 A 0 A_Wander
		TNT1 A 0 A_Look
		TNT1 A 0 A_Jump(248, 2)
		TNT1 A 0 A_PlaySound("xeno/active")
		TNT1 A 0 
		ALIN CD 4 A_SetAngle(angle+random(-2, 2))
		TNT1 A 0 A_Wander
		TNT1 A 0 A_ChangeFlag("lookallaround",0)
		TNT1 A 0 A_Jump(120, "TrueIdle")
		loop
	TrueIdle:
		ALIN A 4
		TNT1 A 0 A_Look
		ALIN A 4
		TNT1 A 0 A_Look
		ALIN A 4
		TNT1 A 0 A_Look
		ALIN A 4
		TNT1 A 0 A_Look
		TNT1 A 0 A_Jump(120, 1)
		Loop
		ALIN A 4 A_Look
		TNT1 A 0 A_Jump(180, 1)
		ALIN A 1 A_PlaySound("xeno/active")
		TNT1 A 0 A_Jump(100, "Stand")
		Loop
	See:
		TNT1 A 0 A_CheckCeiling("Drop")
		TNT1 A 0 A_ChangeFlag("lookallaround",0)
		TNT1 A 0 A_JumpIfTargetInLOS("ChaseHard")
		ALIN AB 3 A_Chase
		TNT1 A 0 A_JumpIfTargetInLOS("ChaseHard")
		ALIN CD 3 A_Chase
		TNT1 A 0 A_Jump(248, 2)
		TNT1 A 0 A_PlaySound("xeno/active")
		TNT1 A 0 A_Jump(90, "CeilingLeap")
		Loop
	CeilingLeap:
		TNT1 A 0 A_CustomBulletAttack(0, 166, 1, 0, "CheckerPuff")
		TNT1 A 0 A_ChangeFlag("NoPain", 1)
		TNT1 A 0 A_ChangeFlag("NOGRAVITY", 1)
		ALIN A 0 ThrustThingZ(0, 84, 0, 0)
		ALIN AB 2
		TNT1 A 0 A_JumpIfInventory("ThisIsNotASky", 0, "Drop")
		TNT1 A 0 A_CheckCeiling(1)
		goto Drop
		TNT1 A 0 A_TakeInventory("ThisIsNotASky", 1)
		ALIC E 1
		TNT1 A 0 A_ChangeFlag("CEILINGHUGGER", 1)
	CeilingChase:
		TNT1 A 0 A_CustomBulletAttack(0, 166, 1, 0, "CheckerPuff")
		ALIC AB 3 A_Chase("Drop")
		TNT1 A 0 A_JumpIf((Z - FloorZ) >= 980, "Drop")
		ALIN A 0 ThrustThingZ(0, 84, 0, 0)
		ALIC CD 3 A_Chase("Drop")
		TNT1 A 0 A_JumpIf((Z - FloorZ) >= 980, "Drop")
		ALIN A 0 ThrustThingZ(0, 84, 0, 0)
		TNT1 A 0 A_Jump(248, 2)
		TNT1 A 0 A_PlaySound("xeno/active")
		ALIN A 0 ThrustThingZ(0, 84, 0, 0)
		TNT1 A 0 A_JumpIfInventory("ThisIsNotASky", 0, "Drop")
		TNT1 A 0 A_TakeInventory("ThisIsNotASky", 1)
		TNT1 A 0 A_JumpIfCloser(400, "Drop")
		TNT1 A 0 A_Jump(180, "AmbushCeiling")
		Loop
	AmbushCeiling:
		TNT1 A 0 A_JumpIf((Z - FloorZ) >= 980, "Drop")
		ALIC A 1 A_Look
		ALIN A 0 ThrustThingZ(0, 84, 0, 0)
		TNT1 A 0 A_Jump(248, 2)
		TNT1 A 0 A_PlaySound("xeno/active")
		ALIN A 0 ThrustThingZ(0, 84, 0, 0)
		TNT1 A 0 A_JumpIfCloser(400, "Drop")
		ALIC A 1 A_Look
		loop
	Drop:
		TNT1 A 0 A_TakeInventory("ThisIsNotASky", 1)
		TNT1 A 0 A_ChangeFlag("CEILINGHUGGER", 0)
		TNT1 A 0 A_ChangeFlag("NoPain", 0)
		TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
	Dropping:
		TNT1 A 0 A_ChangeFlag("THRUSPECIES", 1)
		ALIN A 0 ThrustThingZ(0, 84, 1, 0)
		ALIC E 1 A_CheckFloor(2)
		ALIN A 0 ThrustThingZ(0, 84, 1, 0)
		loop
		ALIN A 0 ThrustThingZ(0, 84, 1, 0)
		ALIC E 1
		ALIN A 0 ThrustThingZ(0, 84, 1, 0)
		TNT1 A 0 A_ChangeFlag("THRUSPECIES", 0)
		goto see
	ChaseHard:
		TNT1 A 0 A_CheckCeiling("Drop")
		ALIN A 0 A_FaceTarget
		ALIN A 0 A_Chase
		ALIN AB 2 A_Chase
		TNT1 A 0 A_JumpIfCloser(220, "jumpcheck")
		ALIN A 0 A_FaceTarget
		ALIN A 0 A_Chase
		ALIN CD 2 A_Chase
		TNT1 A 0 A_JumpIfCloser(220, "jumpcheck")
		TNT1 A 0 A_Jump(248, 2)
		TNT1 A 0 A_PlaySound("xeno/active")
		TNT1 A 0 
		Goto See
  jumpcheck:
	TNT1 A 0 A_JumpIfTargetinLOS("JumpCheck2")
	goto see
  jumpcheck2:
	TNT1 A 0 A_JumpIfCloser(100, "melee")
	TNT1 A 0 A_CheckSight("see")
  pounce:
	ALIN A 2 A_FaceTarget
    ALIN A 0 A_PlaySound ("xeno/attack")
    ALIN A 0 ThrustThingZ (0, 34, 0, 0)
    ALIN A 0 ThrustThing (angle*256/360, 18, 0, 0)
	ALIN A 0 A_CustomMeleeAttack(random(1, 3)*2, "xeno/hack", "xeno/claw")
  JumpUp:
    ALIN Z 1
  JumpDown:
	TNT1 A 0 A_JumpIfCloser(100, "tailmelee")
    ALIN X 1 A_CheckFloor ("Land")
    loop
  Land:
    ALIN X 2 A_Stop
    goto see
  WanderRandom:
	TNT1 A 0 A_Jump(256, "Wander", "Wander2")
	goto Stand
  Wander:
	TNT1 A 0 A_Look
	ALIN AB 3 A_Wander
	TNT1 A 0 A_Look
	TNT1 A 0 A_Jump(128, 2)
	TNT1 A 0 A_PlaySound("xeno/active")
	ALIN CD 3 A_Wander
	goto Stand
  Wander2:
	TNT1 A 0 A_Look
	ALIN AB 3 A_Wander
	TNT1 A 0 A_Look
	TNT1 A 0 A_Jump(128, 2)
	TNT1 A 0 A_PlaySound("xeno/active")
	ALIN CD 3 A_Wander
	goto Stand
  melee:
	TNT1 A 0 A_Jump(120, "TailMelee")
    ALIN EF 8 A_FaceTarget
	TNT1 A 0 A_Recoil(-5)
	ALIN G 6 A_CustomMeleeAttack(random(3, 6)*2, "xeno/hack", "xeno/claw")
	goto see
  tailmelee:
	ALIN X 6 A_FaceTarget
	TNT1 A 0 A_Recoil(-5)
	ALIN Y 4 A_CustomMeleeAttack(random(3, 6)*2, "xeno/hack", "xeno/claw")
	goto see
  pain:
	ALIN H 2 A_Pain
	TNT1 A 0 A_ChangeFlag("NoPain", 1)
	ALIN H 0 A_ChangeFlag("frightened", 1)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_Recoil(5)
	ALIN ABCD 1 A_FastChase
	TNT1 A 0 A_ChangeFlag("NoPain", 0)
	ALIN H 0 A_ChangeFlag("frightened", 0)
	goto see
  Pain.KickDamage:
	ALIN H 1 A_FaceTarget
	TNT1 A 0 A_Recoil(30)
	ALIN H 2 A_Pain
	goto see
    death:
		TNT1 A 0 A_ChangeFlag("CEILINGHUGGER", 0)
		TNT1 A 0 A_ChangeFlag("NoPain", 0)
		TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		TNT1 A 0 A_Jump(256, "death1", "death2")
	death1:
		ALIN I 6 A_Scream
		ALIN J 5
		ALIN K 4
		ALIN L 3 A_NoBlocking
		ALIN M 2
		ALIN N -1
		Stop
	death2:
		ALIR A 6 A_Scream
		ALIR B 5
		ALIR C 4
		ALIR D 3 A_NoBlocking
		ALIR E 2
		ALIR F -1
		stop
  death.PulseRifle:
	TNT1 A 0 A_Jump(45, "death")
	TNT1 A 0 A_ChangeFlag("CEILINGHUGGER", 0)
	TNT1 A 0 A_ChangeFlag("NoPain", 0)
	TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
  xdeath:
	TNT1 A 0 A_ChangeFlag("CEILINGHUGGER", 0)
	TNT1 A 0 A_ChangeFlag("NoPain", 0)
	TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
	TNT1 A 0 A_Jump(256, "xdeath1", "xdeath2", "xdeath3")
  xdeath1:
	ALIG A 6 A_PlaySound("xeno/crack")
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("Arm3",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	TNT1 A 0 A_SpawnItemEx("Arm3",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	TNT1 A 0 A_SpawnItemEx("Head",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	TNT1 A 0 A_SpawnItemEx("Tail",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	ALIG B 5 A_Scream
	ALIG C 4 
	ALIG D 3
	ALIG E 2
	ALIG F 1 A_NoBlocking
	ALIG G -1
	stop
  xdeath2:
	XENG A 7 A_PlaySound("xeno/crack")
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("Arm1",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	TNT1 A 0 A_SpawnItemEx("Arm2",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	TNT1 A 0 A_SpawnItemEx("Head",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	TNT1 A 0 A_SpawnItemEx("Tail",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	XENG B 6 A_Scream
	XENG C 5
	XENG D 4
	XENG E 3
	XENG F 2
	XENG G 1
	XENG H 1 A_NoBlocking
	XENG I 1
    stop
  xdeath3:
    XEGB A 7 A_PlaySound("xeno/crack")
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("Arm2",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	TNT1 A 0 A_SpawnItemEx("Arm3",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	TNT1 A 0 A_SpawnItemEx("Head",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	TNT1 A 0 A_SpawnItemEx("Tail",random(-10,10),random(-10,10),random(12,40),random(-500,500)/100.00,random(-500,500)/100.00,random(400,1000)/100.00,random(-180,180),160,192)
	XEGB B 6 A_Scream
	XEGB C 5
	XEGB D 4
	XEGB E 3
	XEGB F 2
	XEGB G 1
	XEGB H -1 A_NoBlocking
	stop
  }
}

actor RunnerReplacer : XenoRunner replaces Spectre {}
 