ACTOR XenoWarrior replaces Zombieman
{
	bloodcolor orange
	species Xenomorph
	bloodtype XenoBlood
	health 70
	meleerange 40
	radius 14
	height 48
	mass 100
	gravity 2.2
	speed 24
	painchance 120
	maxstepheight 74
	maxdropoffheight 74
	monster
	+DROPOFF
	+FLOAT
	+FLOORCLIP
	+DONTHARMSPECIES
	+DONTHURTSPECIES
	+FASTMELEE
	+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 mauled by a warrior."
	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("NoPain", 0)
		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
		ALIN A 0 A_FaceTarget
		ALIN A 0 A_Chase
		ALIN CD 2 A_Chase
		TNT1 A 0 A_Jump(248, 2)
		TNT1 A 0 A_PlaySound("xeno/active")
		TNT1 A 0
		Goto See
	Melee: 
		TNT1 A 0 A_Jump(120, "TailMelee", "GrabCheck")
		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
	GrabCheck:
		TNT1 A 0 A_JumpIfCloser(90, "grab")
		goto tailmelee
	grab:
		ALIN E 2 A_FaceTarget
		ALIN A 0 A_PlaySound ("xeno/attack")
		ALIN A 0 ThrustThingZ (0, 10, 0, 0)
		ALIN A 0 ThrustThing (angle*256/360, 12, 0, 0)
		ALIN A 0 A_CustomMeleeAttack(random(1, 2)*2, "xeno/hack", "xeno/claw")
	GrabJumpUp:
		ALIN E 1
	GrabJumpDown:
		TNT1 A 0 A_JumpIfCloser(100, "grab")
		ALIN F 1 A_CheckFloor ("grabLand")
		loop
	grabLand:
		ALIN E 2 A_Stop
		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
		ALIN ABCD 1 A_Chase
		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.PulseRifle:
		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(45, "xdeath")
    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
  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 XenoWarrior2 : Xenowarrior replaces ShotgunGuy {}