//GRUNTS or human enemies
///////////////////////////////////////////////////////

actor BasicGrunt{
  
	  obituary "%o got killed by a Grunt"
	  health 90//12
	  radius 20
	  height 56
	  mass 100
	  speed 7
	  painchance 180
	  translation 0
	  DropItem "barracudarifle" 180
	  dropitem "grenades" 30
	  
	  SeeSound "bgrunt/see"
	  ActiveSound "bgrunt/active"
	  PainSound "bgrunt/pain"
	  DeathSound "bgrunt/death"
	  
	  AttackSound " "
	  
	  //DamageFactor "frag_boom", 1.5
	  MONSTER
	  +FLOORCLIP
	  +DONTHURTSPECIES
	  +NODROPOFF
	  +NOINFIGHTING
	  //+AVOIDMELEE
	  
	  GibHealth 40
	  
	  states{
		spawn:
			SOLN A 2 A_Look
			loop
			
		//			
		see:
			TNT1 A 0 A_TakeInventory("PathClear",1)
			TNT1 A 0 A_TakeInventory("CeilingClear",1)
			TNT1 A 0 A_JumpIfCloser(600, "closechase")
		farchase:
			SOLN ABCD 3 A_Chase//A_Chase(0, "missile", CHF_DONTMOVE)
			goto see
		closechase:
			SOLN ABCD 3 A_Chase//A_Chase(0, "missile", CHF_DONTMOVE)
			goto see	
	
		missile:
			TNT1 A 0 A_JumpIfCloser(4000, "GruntAttack")
			goto see
		GruntAttack:
			TNT1 A 0 A_Jump(10, "GrenadeCheck")
		FireWeapon:
			TNT1 A 0 A_JumpIfCloser(800, "fullfire")
		longshot:
			SOLF AA 5 A_FaceTarget
			
			TNT1 A 0 A_JumpIfInventory("Grunt_ArAmmo", 36, "ls_NoAmmo")
			TNT1 A 0 A_PlaySound("weapons/ar_fire")
			//SOLF B 2 bright A_CustomBulletAttack (2, 1, 1, 5, "arifle_impact",0,CBAF_NORANDOM) 
			SOLF B 2 bright A_CustomMissile ("arifle_tracer", 43, 5, /*f*/random(-0.2,0.2), CMF_OFFSETPITCH , /*f*/random(-0.5,0.5))
			TNT1 A 0 A_GiveInventory("Grunt_ArAmmo", 1)
			SOLF A 7
			SOLF A 1 A_MonsterRefire(100, "see")
			TNT1 A 0 A_JumpIfCloser(800, "fullfire")
			goto longshot+2
		ls_NoAmmo:
			SOLF A 1 A_FaceTarget
			SOLF A 8 A_PlaySound("weapons/noammo")
			TNT1 A 0 A_PlaySound("bgrunt/noammo", CHAN_VOICE)
			TNT1 A 0 A_ChangeFlag(FRIGHTENED, 1)
			goto reload_check
			
			
		fullfire:
			SOF2 AA 5 A_FaceTarget
		ff_refire:
			TNT1 A 0 A_JumpIfInventory("Grunt_ArAmmo", 36, "ff_NoAmmo")
			TNT1 A 0 A_PlaySound("weapons/ar_fire")
			//SOF2 B 2 bright A_CustomBulletAttack (7, 6, 1, 5, "arifle_impact",0,CBAF_NORANDOM) 
			SOF2 B 2 bright A_CustomMissile ("arifle_tracer", 34, 9, /*f*/random(-3.0,3.0),CMF_OFFSETPITCH , /*f*/random(-2.0,2.0)) 
			TNT1 A 0 A_GiveInventory("Grunt_ArAmmo", 1)
			SOF2 A 1 
			SOF2 A 1 A_MonsterRefire(100, "see")
			TNT1 A 0 A_JumpIfCloser(800, "ff_refire")
			goto missile
		ff_NoAmmo:
			SOF2 A 1 A_FaceTarget
			SOF2 A 4 A_PlaySound("weapons/noammo")
			SOF2 A 4 A_PlaySound("weapons/noammo")
			SOF2 A 4 A_PlaySound("weapons/noammo")
			TNT1 A 0 A_PlaySound("bgrunt/noammo", CHAN_VOICE)
			SOF2 A 9
			TNT1 A 0 A_ChangeFlag(FRIGHTENED, 1)
			goto reload_check
		
		//
		reload_check:
			TNT1 A 0 A_JumpIfCloser(600, "retreat")
		reload:
			SOLN A 20 A_PlaySound("weapons/reload")
			TNT1 A 0 A_TakeInventory("Grunt_ArAmmo", 36)
			TNT1 A 0 A_TakeInventory("Grunt_RetreatTimer", 6)
			TNT1 A 0 A_ChangeFlag(FRIGHTENED, 0)
			goto see	
		retreat:
			TNT1 A 0 A_JumpIfInventory("Grunt_RetreatTimer", 8, "Reload")
			SOLN ABCD 3 A_Wander
			TNT1 A 0 A_GiveInventory("Grunt_RetreatTimer", 1)
			loop
		
		////
		GrenadeCheck:
			TNT1 A 0 A_JumpIfCloser(600, "GrenadeToss")
			goto see
			
		GrenadeToss:
			//TNT1 A 0 A_CustomMissile ("checker", 45, -15, 0, CMF_AIMDIRECTION, 0)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_CustomMissile ("checker", 45, 0, 0, CMF_AIMDIRECTION, 0)
			TNT1 A 0 A_CustomMissile ("top_checker", 45, 0, 0, CMF_AIMDIRECTION, 35)
			SOLN A 7 A_FaceTarget
			//SOLG A 26 A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("PathClear", 1, "fireweapon")
			
			TNT1 A 0 A_PlaySound("bgrunt/grenadetoss", CHAN_VOICE)
			SOLG A 8 A_FaceTarget
			TNT1 A 0 A_PlaySound("grenade/pin")
			TNT1 A 0 A_TakeInventory("PathClear",1)
			SOLG BC 2 A_FaceTarget
			
			TNT1 A 0 A_JumpIfInventory("CeilingClear", 1, "GrToss_Part")
		GrToss_Full:
			TNT1 A 0 A_JumpIfCloser(256, "grtoss1")
			TNT1 A 0 A_JumpIfCloser(352, "grtoss2")
			TNT1 A 0 A_JumpIfCloser(480, "grtoss3")
			TNT1 A 0 A_JumpIfCloser(544, "grtoss4")
			TNT1 A 0 A_JumpIfCloser(600, "grtoss5")
			goto grtoss2
		
		GrToss_Part:
			TNT1 A 0 A_TakeInventory("CeilingClear",1)
			TNT1 A 0 A_JumpIfCloser(256, "grtoss1")
			TNT1 A 0 A_JumpIfCloser(352, "grtoss2")
			TNT1 A 0 A_JumpIfCloser(480, "grtoss3")
		
		grtoss1:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, -10)
			goto grenfinish
		grtoss2:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 0)
			goto grenfinish
		grtoss3:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 15)
			goto grenfinish
		grtoss4:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 30)
			goto grenfinish
		grtoss5:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 35)
			goto grenfinish
			
		grenfinish:
			SOLG EF 2
			SOLG G 30
			goto see
		
		//
		pain:
			SOLH A 2 
			SOLH A 4 A_Pain
			goto see
		
		////
		death:
			TNT1 A 0 A_Jump(255, "dth1", "dth2", "dth3", "dth4")		
		dth1:
			SOD1 A 4 A_Scream
			SOD1 B 4 A_NoBlocking
			SOD1 CDEFGH 4
			SOD1 I -1
			stop		
		dth2:
			SOD2 A 4 A_Scream
			SOD2 B 4 A_NoBlocking
			SOD2 CDEF 4
			SOD2 G -1
			stop
		dth3:
			SOD2 A 4 A_Scream
			SOD2 B 4 A_NoBlocking
			SOD2 CDHI 4
			SOD2 J -1
			stop
		dth4:
			SOD3 A 4 A_Scream
			SOD3 B 4 A_NoBlocking
			SOD3 CD 4
			SOD3 E -1
			stop
			
		XDeath:
			TNT1 A 0			
			TNT1 A 1 A_SpawnItemEx ("SoldierXDeath", 0, 0, 0, 0 ,0 ,0 , 0, SXF_TRANSFERTRANSLATION)
			TNT1 A 0 A_NoBlocking
			stop
		Raise:
			SOD1 EDCBA 5
			goto See	
		
	  }
}

//
actor CloseBasicGrunt{
   Obituary "%o got killed by a CQB Grunt"
   Health 136//18
   Radius 20
   Height 56
   Speed 8
   PainChance 180
   translation "112:127=152:159"
   DropItem "hydrashotgun" 180
   //dropitem "autoshot_ammo" 30
   dropitem "grenades" 30

   SeeSound "bgrunt/see"
   ActiveSound "bgrunt/active"
   PainSound "bgrunt/pain"
   DeathSound "bgrunt/death"
   
   AttackSound " "  
   //DamageFactor "frag_boom", 1.5
   MONSTER 
   +FLOORCLIP
   +DONTHURTSPECIES
   +NODROPOFF
   +NOINFIGHTING
   //+AVOIDMELEE
   
   GibHealth 50
   
   States { 
		spawn:
			SOLN A 2 A_Look
			loop
			
		//			
		see:
			TNT1 A 0 A_TakeInventory("PathClear",1)
			TNT1 A 0 A_TakeInventory("CeilingClear",1)
			TNT1 A 0 A_JumpIfCloser(600, "closechase")
		farchase:
			SOLN ABCD 3 A_Chase
			goto see
		closechase:
			SOLN ABCD 3 A_Chase
			goto see	
	
		missile:
			TNT1 A 0 A_Jump(10, "GrenadeCheck")
			
		FireWeapon:
			TNT1 A 0 A_JumpIfCloser(864, "sfire")
			goto see
		sfire:
			SOF2 AA 6 A_FaceTarget
			
			TNT1 A 0 A_JumpIfInventory("CAGrunt_AutoAmmo", 16, "NoAmmo")
			TNT1 A 0 A_PlaySound("weapons/hs_fire")
			//SOF2 B 2 bright A_CustomBulletAttack (8, 7, 9, 2, "buckshot_impact",0,CBAF_NORANDOM)
			TNT1 AAAAAAAAA 0 A_CustomMissile ("pellet_tracer", 34, 9, /*f*/random(-4.0,4.0),CMF_OFFSETPITCH , /*f*/random(-3.0,3.0)) 
			SOF2 B 2 bright 
			TNT1 A 0 A_GiveInventory("CAGrunt_AutoAmmo", 1)
			SOF2 A 6
			SOF2 A 1 A_MonsterRefire(100, "see")
			TNT1 A 0 A_Jump(10, "GrenadeCheck")
			goto sfire+2	
		NoAmmo:
			SOF2 A 1 A_FaceTarget
			SOF2 A 8 A_PlaySound("weapons/noammo")
			SOF2 A 8 A_PlaySound("weapons/noammo")
			TNT1 A 0 A_PlaySound("bgrunt/noammo", CHAN_VOICE)
			TNT1 A 0 A_ChangeFlag(FRIGHTENED, 1)	
			goto reload_check
	
		//
		reload_check:
			TNT1 A 0 A_JumpIfCloser(600, "retreat")
		reload:
			SOLN A 25 A_PlaySound("weapons/reload")
			TNT1 A 0 A_TakeInventory("CAGrunt_AutoAmmo", 16)
			TNT1 A 0 A_TakeInventory("Grunt_RetreatTimer", 6)
			TNT1 A 0 A_ChangeFlag(FRIGHTENED, 0)
			goto see	
		retreat:
			TNT1 A 0 A_JumpIfInventory("Grunt_RetreatTimer", 8, "Reload")
			SOLN ABCD 3 A_Wander
			TNT1 A 0 A_GiveInventory("Grunt_RetreatTimer", 1)
			loop
		
		////
		GrenadeCheck:
			TNT1 A 0 A_JumpIfCloser(600, "GrenadeToss")
			goto see
			
		GrenadeToss:
			//TNT1 A 0 A_CustomMissile ("checker", 45, -15, 0, CMF_AIMDIRECTION, 0)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_CustomMissile ("checker", 45, 0, 0, CMF_AIMDIRECTION, 0)
			TNT1 A 0 A_CustomMissile ("top_checker", 45, 0, 0, CMF_AIMDIRECTION, 35)
			SOLN A 7 A_FaceTarget
			//SOLG A 26 A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("PathClear", 1, "fireweapon")
			
			TNT1 A 0 A_PlaySound("bgrunt/grenadetoss", CHAN_VOICE)
			SOLG A 8 A_FaceTarget
			TNT1 A 0 A_PlaySound("grenade/pin")
			TNT1 A 0 A_TakeInventory("PathClear",1)
			SOLG BC 2 A_FaceTarget
			
			TNT1 A 0 A_JumpIfInventory("CeilingClear", 1, "GrToss_Part")
		GrToss_Full:
			TNT1 A 0 A_JumpIfCloser(256, "grtoss1")
			TNT1 A 0 A_JumpIfCloser(352, "grtoss2")
			TNT1 A 0 A_JumpIfCloser(480, "grtoss3")
			TNT1 A 0 A_JumpIfCloser(544, "grtoss4")
			TNT1 A 0 A_JumpIfCloser(600, "grtoss5")
			goto grtoss2
		
		GrToss_Part:
			TNT1 A 0 A_TakeInventory("CeilingClear",1)
			TNT1 A 0 A_JumpIfCloser(256, "grtoss1")
			TNT1 A 0 A_JumpIfCloser(352, "grtoss2")
			TNT1 A 0 A_JumpIfCloser(480, "grtoss3")
		
		grtoss1:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, -10)
			goto grenfinish
		grtoss2:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 0)
			goto grenfinish
		grtoss3:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 15)
			goto grenfinish
		grtoss4:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 30)
			goto grenfinish
		grtoss5:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 35)
			goto grenfinish
			
		grenfinish:
			SOLG EF 2
			SOLG G 30
			goto see
		
		//
		pain:
			SOLH A 2 
			SOLH A 4 A_Pain
			goto see
		
		////
		death:
			TNT1 A 0 A_Jump(255, "dth1", "dth2", "dth3", "dth4")		
		dth1:
			SOD1 A 4 A_Scream
			SOD1 B 4 A_NoBlocking
			SOD1 CDEFGH 4
			SOD1 I -1
			stop		
		dth2:
			SOD2 A 4 A_Scream
			SOD2 B 4 A_NoBlocking
			SOD2 CDEF 4
			SOD2 G -1
			stop
		dth3:
			SOD2 A 4 A_Scream
			SOD2 B 4 A_NoBlocking
			SOD2 CDHI 4
			SOD2 J -1
			stop
		dth4:
			SOD3 A 4 A_Scream
			SOD3 B 4 A_NoBlocking
			SOD3 CD 4
			SOD3 E -1
			stop
			
		XDeath:
			TNT1 A 0			
			TNT1 A 1 A_SpawnItemEx ("SoldierXDeath", 0, 0, 0, 0 ,0 ,0 , 0, SXF_TRANSFERTRANSLATION)
			TNT1 A 0 A_NoBlocking
			stop
		Raise:
			SOD1 EDCBA 5
			goto See  		
	  }	  
}



//
actor HeavyGrunt : BasicGrunt replaces chaingunguy{
	obituary "%o was anihilated by a Heavy Grunt"
	health 304//40
	Speed 10
	
	translation "112:127=[180,80,0]:[40,18,0]"
	
	dropitem "barracudarifle" 224
	dropitem "arifle_ammo" 86
	dropitem "grenades" 60
	PainChance 70
	//DamageFactor "frag_boom", 1.5
	
	SeeSound "hgrunt/see"
	ActiveSound "hgrunt/active"
	PainSound "hgrunt/pain"
	DeathSound "hgrunt/death"
	
	GibHealth 50
	
	states{
		spawn:
			SOLN A 2 A_Look
			loop
			
		//			
		see:
			TNT1 A 0 A_TakeInventory("PathClear",1)
			TNT1 A 0 A_TakeInventory("CeilingClear",1)
			TNT1 A 0 A_JumpIfCloser(600, "closechase")
		farchase:
			SOLN ABCD 3 A_Chase//A_Chase(0, "missile", CHF_DONTMOVE)
			goto see
		closechase:
			SOLN ABCD 3 A_FastChase//A_Chase(0, "missile", CHF_DONTMOVE)
			goto see	
	
		missile:
			TNT1 A 0 A_JumpIfCloser(5000, "GruntAttack")
			goto see
			
		GruntAttack:
			TNT1 A 0 A_Jump(10, "GrenadeCheck")
			
		FireWeapon:
			TNT1 A 0 A_JumpIfCloser(800, "fullfire")
		longshot:
			SOLF AA 4 A_FaceTarget
			
			TNT1 A 0 A_JumpIfInventory("Grunt_ArAmmo", 36, "ls_NoAmmo")
			TNT1 A 0 A_PlaySound("weapons/ar_fire")
			//SOLF B 2 bright A_CustomBulletAttack (2, 1, 1, 5, "arifle_impact",0,CBAF_NORANDOM) 
			SOLF B 2 bright A_CustomMissile ("arifle_tracer", 43, 5, 0, CMF_OFFSETPITCH , /*f*/random(-0.2,0.2))
			TNT1 A 0 A_GiveInventory("Grunt_ArAmmo", 1)
			SOLF A 7
			SOLF A 1 A_MonsterRefire(100, "see")
			TNT1 A 0 A_JumpIfCloser(800, "fullfire")
			goto longshot+2
		ls_NoAmmo:
			SOLF A 1 A_FaceTarget
			SOLF A 8 A_PlaySound("weapons/noammo")
			TNT1 A 0 A_PlaySound("hgrunt/noammo", CHAN_VOICE)
			TNT1 A 0 A_ChangeFlag(FRIGHTENED, 1)
			goto reload_check
					
		fullfire:
			SOF2 AA 4 A_FaceTarget
		ff_refire:
			TNT1 A 0 A_JumpIfInventory("Grunt_ArAmmo", 36, "ff_NoAmmo")
			TNT1 A 0 A_PlaySound("weapons/ar_fire")
			//SOF2 B 2 bright A_CustomBulletAttack (7, 6, 1, 5, "arifle_impact",0,CBAF_NORANDOM) 
			SOF2 B 2 bright A_CustomMissile ("arifle_tracer", 34, 9, /*f*/random(-2.4,2.4),CMF_OFFSETPITCH , /*f*/random(-1.4,1.4)) 
			TNT1 A 0 A_GiveInventory("Grunt_ArAmmo", 1)
			SOF2 A 1 
			SOF2 A 1 A_MonsterRefire(100, "see")
			TNT1 A 0 A_JumpIfCloser(800, "ff_refire")
			goto missile
		ff_NoAmmo:
			SOF2 A 1 A_FaceTarget
			SOF2 A 4 A_PlaySound("weapons/noammo")
			SOF2 A 4 A_PlaySound("weapons/noammo")
			SOF2 A 4 A_PlaySound("weapons/noammo")
			TNT1 A 0 A_PlaySound("hgrunt/noammo", CHAN_VOICE)
			SOF2 A 9
			TNT1 A 0 A_ChangeFlag(FRIGHTENED, 1)
			goto reload_check
		
		//
		reload_check:
			TNT1 A 0 A_JumpIfCloser(600, "retreat")
		reload:
			SOLN A 20 A_PlaySound("weapons/reload")
			TNT1 A 0 A_TakeInventory("Grunt_ArAmmo", 36)
			TNT1 A 0 A_TakeInventory("Grunt_RetreatTimer", 6)
			TNT1 A 0 A_ChangeFlag(FRIGHTENED, 0)
			goto see	
		retreat:
			TNT1 A 0 A_JumpIfInventory("Grunt_RetreatTimer", 8, "Reload")
			SOLN ABCD 3 A_Wander
			TNT1 A 0 A_GiveInventory("Grunt_RetreatTimer", 1)
			loop
		
		////
		GrenadeCheck:
			TNT1 A 0 A_JumpIfCloser(600, "GrenadeToss")
			goto see
			
		GrenadeToss:
			//TNT1 A 0 A_CustomMissile ("checker", 45, -15, 0, CMF_AIMDIRECTION, 0)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_CustomMissile ("checker", 45, 0, 0, CMF_AIMDIRECTION, 0)
			TNT1 A 0 A_CustomMissile ("top_checker", 45, 0, 0, CMF_AIMDIRECTION, 35)
			SOLN A 7 A_FaceTarget
			//SOLG A 26 A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("PathClear", 1, "fireweapon")
			
			TNT1 A 0 A_PlaySound("hgrunt/grenadetoss", CHAN_VOICE)
			SOLG A 8 A_FaceTarget
			TNT1 A 0 A_PlaySound("grenade/pin")
			TNT1 A 0 A_TakeInventory("PathClear",1)
			SOLG BC 2 A_FaceTarget
			
			TNT1 A 0 A_JumpIfInventory("CeilingClear", 1, "GrToss_Part")
		GrToss_Full:
			TNT1 A 0 A_JumpIfCloser(256, "grtoss1")
			TNT1 A 0 A_JumpIfCloser(352, "grtoss2")
			TNT1 A 0 A_JumpIfCloser(480, "grtoss3")
			TNT1 A 0 A_JumpIfCloser(544, "grtoss4")
			TNT1 A 0 A_JumpIfCloser(600, "grtoss5")
			goto grtoss2
		
		GrToss_Part:
			TNT1 A 0 A_TakeInventory("CeilingClear",1)
			TNT1 A 0 A_JumpIfCloser(256, "grtoss1")
			TNT1 A 0 A_JumpIfCloser(352, "grtoss2")
			TNT1 A 0 A_JumpIfCloser(480, "grtoss3")
		
		grtoss1:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, -10)
			goto grenfinish
		grtoss2:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 0)
			goto grenfinish
		grtoss3:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 15)
			goto grenfinish
		grtoss4:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 30)
			goto grenfinish
		grtoss5:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 35)
			goto grenfinish
			
		grenfinish:
			SOLG EF 2
			SOLG G 30
			goto see
		
		//
		pain:
			SOLH A 2 
			SOLH A 4 A_Pain
			goto see
		
		////
		death:
			TNT1 A 0 A_Jump(255, "dth1", "dth2", "dth3", "dth4")		
		dth1:
			SOD1 A 4 A_Scream
			SOD1 B 4 A_NoBlocking
			SOD1 CDEFGH 4
			SOD1 I -1
			stop		
		dth2:
			SOD2 A 4 A_Scream
			SOD2 B 4 A_NoBlocking
			SOD2 CDEF 4
			SOD2 G -1
			stop
		dth3:
			SOD2 A 4 A_Scream
			SOD2 B 4 A_NoBlocking
			SOD2 CDHI 4
			SOD2 J -1
			stop
		dth4:
			SOD3 A 4 A_Scream
			SOD3 B 4 A_NoBlocking
			SOD3 CD 4
			SOD3 E -1
			stop
			
		XDeath:
			TNT1 A 0			
			TNT1 A 1 A_SpawnItemEx ("SoldierXDeath", 0, 0, 0, 0 ,0 ,0 , 0, SXF_TRANSFERTRANSLATION)
			TNT1 A 0 A_NoBlocking
			stop
		Raise:
			SOD1 EDCBA 5
			goto See	
		
	  }

}

//
////////////////////////////////////////////////////////////////////////////////////////////////
actor HeavyCloseGrunt{
   Obituary "%o was nailed by a Heavy CQB Grunt"
   Health 418//55
   Radius 20
   Height 56
   Speed 11
   PainChance 100
   
   translation "112:127=[0,133,66]:[0,26,13]"
   
   DropItem "raptorshotgun" 224
   dropitem "grenades" 30
   
   AttackSound ""
   SeeSound "hgrunt/see"
   ActiveSound "hgrunt/active"
   PainSound "hgrunt/pain"
   DeathSound "hgrunt/death"
   
   DamageFactor "frag_boom", 1.5
   MONSTER 
   +FLOORCLIP
   +DONTHURTSPECIES
   +NODROPOFF
   +NOINFIGHTING
   //+AVOIDMELEE
   
   GibHealth 50
   
   States { 
		spawn:
			SOLN A 2 A_Look
			loop
			
		//			
		see:
			TNT1 A 0 A_TakeInventory("PathClear",1)
			TNT1 A 0 A_TakeInventory("CeilingClear",1)
			TNT1 A 0 A_JumpIfCloser(500, "closechase")
		farchase:
			SOLN ABCD 3 A_Chase
			goto see
		closechase:
			SOLN ABCD 3 A_FastChase
			goto see	
	
		missile:
			TNT1 A 0 A_Jump(96, "GrenadeCheck")
			
		FireWeapon:
			TNT1 A 0 A_JumpIfCloser(500, "sfire")
			goto see
		sfire:
			TNT1 A 0 A_JumpIfInventory("HAGrunt_RaptorAmmo", 4, "NoAmmo")
			
			SOF2 AAAAA 3 A_FaceTarget
			SOF2 A 1 A_FaceTarget
			SOF2 B 3 bright A_PlaySound("weapons/cs_fire", CHAN_AUTO) 
			TNT1 AAAAAAAAAAA 0 A_CustomMissile ("grunt_raptornail", 30, 0, random(-6, 6), CMF_OFFSETPITCH, random(-3,3)) 

			TNT1 A 0 A_GiveInventory("HAGrunt_RaptorAmmo", 1)
			SOF2 A 10
			SOLN B 20  A_PlaySound("weapons/cs_cock", CHAN_AUTO)
			SOLN B 1 A_MonsterRefire(128, "see")
			goto missile
		NoAmmo:
			SOF2 A 1 A_FaceTarget
			SOF2 A 10 A_PlaySound("weapons/noammo")
			TNT1 A 0 A_PlaySound("hgrunt/noammo", CHAN_VOICE)
			SOF2 A 6
			TNT1 A 0 A_ChangeFlag(FRIGHTENED, 1)	
			goto reload_check
	
		//
		reload_check:
			TNT1 A 0 A_JumpIfCloser(600, "retreat")
		reload:
			SOLN A 25 A_PlaySound("hgrunt/shotgunreload")
			SOLN A 20 A_PlaySound("weapons/cs_cock", CHAN_AUTO)
			TNT1 A 0 A_TakeInventory("HAGrunt_RaptorAmmo", 4)
			TNT1 A 0 A_TakeInventory("Grunt_RetreatTimer", 6)
			TNT1 A 0 A_ChangeFlag(FRIGHTENED, 0)
			goto see	
		retreat:
			TNT1 A 0 A_JumpIfInventory("Grunt_RetreatTimer", 8, "Reload")
			SOLN ABCD 3 A_Wander
			TNT1 A 0 A_GiveInventory("Grunt_RetreatTimer", 1)
			loop
		
		////
		GrenadeCheck:
			TNT1 A 0 A_JumpIfCloser(600, "GrenadeToss")
			goto see
			
		GrenadeToss:
			//TNT1 A 0 A_CustomMissile ("checker", 45, -15, 0, CMF_AIMDIRECTION, 0)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_CustomMissile ("checker", 45, 0, 0, CMF_AIMDIRECTION, 0)
			TNT1 A 0 A_CustomMissile ("top_checker", 45, 0, 0, CMF_AIMDIRECTION, 35)
			SOLN A 7 A_FaceTarget
			//SOLG A 26 A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("PathClear", 1, "fireweapon")
			
			TNT1 A 0 A_PlaySound("hgrunt/grenadetoss", CHAN_VOICE)
			SOLG A 8 A_FaceTarget
			TNT1 A 0 A_PlaySound("grenade/pin")
			TNT1 A 0 A_TakeInventory("PathClear",1)
			SOLG BC 2 A_FaceTarget
			
			TNT1 A 0 A_JumpIfInventory("CeilingClear", 1, "GrToss_Part")
		GrToss_Full:
			TNT1 A 0 A_JumpIfCloser(256, "grtoss1")
			TNT1 A 0 A_JumpIfCloser(352, "grtoss2")
			TNT1 A 0 A_JumpIfCloser(480, "grtoss3")
			TNT1 A 0 A_JumpIfCloser(544, "grtoss4")
			TNT1 A 0 A_JumpIfCloser(600, "grtoss5")
			goto grtoss2
		
		GrToss_Part:
			TNT1 A 0 A_TakeInventory("CeilingClear",1)
			TNT1 A 0 A_JumpIfCloser(256, "grtoss1")
			TNT1 A 0 A_JumpIfCloser(352, "grtoss2")
			TNT1 A 0 A_JumpIfCloser(480, "grtoss3")
		
		grtoss1:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, -10)
			goto grenfinish
		grtoss2:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 0)
			goto grenfinish
		grtoss3:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 15)
			goto grenfinish
		grtoss4:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 30)
			goto grenfinish
		grtoss5:
			SOLG D 2 A_CustomMissile ("GruntGrenade", 45, -15, 0, CMF_AIMDIRECTION, 35)
			goto grenfinish
			
		grenfinish:
			SOLG EF 2
			SOLG G 30
			goto see
		
		//
		pain:
			SOLH A 2 
			SOLH A 4 A_Pain
			goto see
		
		////
		death:
			TNT1 A 0 A_Jump(255, "dth1", "dth2", "dth3", "dth4")		
		dth1:
			SOD1 A 4 A_Scream
			SOD1 B 4 A_NoBlocking
			SOD1 CDEFGH 4
			SOD1 I -1
			stop		
		dth2:
			SOD2 A 4 A_Scream
			SOD2 B 4 A_NoBlocking
			SOD2 CDEF 4
			SOD2 G -1
			stop
		dth3:
			SOD2 A 4 A_Scream
			SOD2 B 4 A_NoBlocking
			SOD2 CDHI 4
			SOD2 J -1
			stop
		dth4:
			SOD3 A 4 A_Scream
			SOD3 B 4 A_NoBlocking
			SOD3 CD 4
			SOD3 E -1
			stop
			
		XDeath:
			TNT1 A 0			
			TNT1 A 1 A_SpawnItemEx ("SoldierXDeath", 0, 0, 0, 0 ,0 ,0 , 0, SXF_TRANSFERTRANSLATION)
			TNT1 A 0 A_NoBlocking
			stop
		Raise:
			SOD1 EDCBA 5
			goto See  		
	  }	  









}
////////////////////////////////////////////////////////////////////////////////////////////////

actor GruntSpawner : RandomSpawner replaces Zombieman
{
	DropItem "BasicGrunt" 255, 10
	DropItem "CloseBasicGrunt" 255, 2
}

actor GruntSpawner2 : GruntSpawner replaces ShotgunGuy{
	DropItem "BasicGrunt"
	DropItem "CloseBasicGrunt"
}



actor checker {
	radius 6
	height 9
	speed 35
	damage 0
	projectile
	+FORCEXYBILLBOARD
	//+RIPPER
	
	states {
		spawn:
			TNT1 AA 3
			goto remove 
		death:
			TNT1 A 0 A_GiveToTarget("PathClear", 1)
			TNT1 CDE 4
			stop
		remove:
			TNT1 A 0
			stop
	}
}

actor top_checker : checker {
	states{
		spawn:
			TNT1 AA 2
			goto remove 
		death:
			TNT1 A 0 A_GiveToTarget("CeilingClear", 1)
			TNT1 CDE 4
			stop
		remove:
			TNT1 A 0
			stop
	}
}


actor PathClear : inventory{
	inventory.maxamount 1
}

actor CeilingClear : inventory{
	inventory.maxamount 1
}

actor Grunt_ArAmmo : Inventory{
	Inventory.MaxAmount 36
}

actor CAGrunt_AutoAmmo : Inventory{
	Inventory.MaxAmount 16
}

actor HAGrunt_RaptorAmmo : Inventory{
	Inventory.MaxAmount 4
}

actor Grunt_RetreatTimer : Inventory {
	Inventory.MaxAmount 8
}

actor Grunt_GrenReady : Inventory {
	Inventory.MaxAmount 1
}






/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////




//
// - General Soldier Gibs
//


actor soldierxdeath {
	+CLIENTSIDEONLY
	states{
		spawn:
			TNT1 A 0
			TNT1 A 0 A_PlaySound("gore/explode")
			TNT1 AA 0 A_SpawnItemEx ("gore_bloodmist", random(-2,2), random(-2,2), 8, /*f*/random(-0.4,0.4) ,/*f*/random(-0.4,0.4) ,0 , random(1,360), SXF_TRANSFERTRANSLATION)
			
			TNT1 AAAAA 0 A_CustomMissile("gore_fleshbit", 25, 0, random(0,180),2,random(20,120))
			TNT1 AAAAA 0 A_CustomMissile("gore_fleshbit", 25, 0, random(181,360),2,random(20,120))
			
			TNT1 AAA 0 A_CustomMissile("gib_spawner", 25, 0, random(0,180),2,random(20,120))
			TNT1 AAA 0 A_CustomMissile("gib_spawner", 25, 0, random(181,360),2,random(20,120))
			
			TNT1 A 0 A_SpawnItem ("Soldier_ArmsGibSpawn")
			TNT1 A 0 A_SpawnItem ("Soldier_ArmsGibSpawn")
			
			TNT1 A 0 A_CustomMissile("SoldierLeg_Gib", 25, 0, random(0,180),2,random(50,160))
			TNT1 A 0 A_CustomMissile("SoldierLeg_Gib", 25, 0, random(181,360),2,random(50,160))
			TNT1 A 0 A_CustomMissile("SoldierHead_Gib", 25, 0, random(0,360),2,random(50,160))
			
			TNT1 A 4
			
			TNT1 AAAAA 0 A_CustomMissile("gore_fleshbit", 25, 0, random(0,180),2,random(20,120))
			TNT1 AAAAA 0 A_CustomMissile("gore_fleshbit", 25, 0, random(181,360),2,random(20,120))
			stop
	
	}
}	
	


actor Soldier_ArmsGibSpawn{
	+CLIENTSIDEONLY
	states{
		spawn:
			NULL A 0
			NULL A 0 A_Jump(224,"arm1", "arm2")
			stop
		arm1:
			TNT1 A 0 A_CustomMissile("SoldierArm1_Gib", 25, 0, random(0,360),2,random(50,160)) 
			stop
		arm2:
			TNT1 A 0 A_CustomMissile("SoldierArm2_Gib", 25, 0, random(0,360),2,random(50,160))		
			stop
	}
}

actor SoldierArm1_Gib{
	health 1
	radius 10
	height 10
	mass 1
	speed 8
	gravity 0.5
	bouncetype "doom"
	bouncefactor 0.3
	/*BounceSound*/ SeeSound "blood/splat"
	DeathSound "blood/splat"
	PROJECTILE
	-NOGRAVITY
	+CORPSE
	+NOTELEPORT
	+NODROPOFF
	+FLOORCLIP
	-NOBLOCKMAP
	+CLIENTSIDEONLY
	states{
		spawn:
			SOGA ABCDEFGH 2 A_SpawnItemEx ("blood_spray", 0, 0, 0,  random(-2,2) ,  random(-2,2) ,  random(-2,2) , random(0,360), SXF_TRANSFERTRANSLATION)
			//A_SpawnItemEx ("gore_bloodmist_small", 0, 0, 0, /*f*/random(-0.2,0.2) , 0 , /*f*/random(-0.2,0.2) , random(1,360), SXF_TRANSFERTRANSLATION)
			loop
		death:
			SOGA I -1
			stop
			//SOGA I 80 A_FadeOut(0.1) 
			//loop
	}
}

actor SoldierArm2_Gib : SoldierArm1_Gib{
	states{
		spawn:
			SOGB ABCDEFGH 2 A_SpawnItemEx ("blood_spray", 0, 0, 0,  random(-2,2) ,  random(-2,2) ,  random(-2,2) , random(0,360), SXF_TRANSFERTRANSLATION)
			//A_SpawnItemEx ("gore_bloodmist_small", 0, 0, 0, /*f*/random(-0.2,0.2) , 0 , /*f*/random(-0.2,0.2) , random(1,360), SXF_TRANSFERTRANSLATION)
			loop
		death:
			SOGB I -1
			stop
	}
}

actor SoldierLeg_Gib : SoldierArm1_Gib{
	states{
		spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(224, "l1")
			stop
		l1:
			SOGL ABCDEFGH 2 A_SpawnItemEx ("blood_spray", 0, 0, 0,  random(-2,2) ,  random(-2,2) ,  random(-2,2) , random(0,360), SXF_TRANSFERTRANSLATION)
			//A_SpawnItemEx ("gore_bloodmist_small", 0, 0, 0, /*f*/random(-0.2,0.2) , 0 , /*f*/random(-0.2,0.2) , random(1,360), SXF_TRANSFERTRANSLATION)
			loop
		death:
			SOGL I -1
			stop
	}
}

actor SoldierHead_Gib : SoldierArm1_Gib{
	states{
		spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(224, "h1")
			stop
		h1:	
			SOGH ABCDEFGH 2 A_SpawnItemEx ("blood_spray", 0, 0, 0,  random(-2,2) ,  random(-2,2) ,  random(-2,2) , random(0,360), SXF_TRANSFERTRANSLATION)
			//A_SpawnItemEx ("gore_bloodmist_small", 0, 0, 0, /*f*/random(-0.2,0.2) , 0 , /*f*/random(-0.2,0.2) , random(1,360), SXF_TRANSFERTRANSLATION)
			loop
		death:
			SOGH I -1
			stop
			//SOGH I 80 A_FadeOut(0.1) 
			//loop
	}
}