Actor RPGMineGI : GenericHumanScum 
  {
   Monster
   Health 240
   Radius 15
   Height 56
   Mass 400
   Species "Knight"
+DONTHARMSPECIES
   Speed 11
   BloodType "DASBLUT"
   PainChance 130
   +NODROPOFF	
   MaxDropOffHeight 69
   Monster
   Scale 1.0
   SeeSound "USNMilitarist1/See"
   PainSound "USMPA01"
   DeathSound "USNMilitarist1/Death"
   ActiveSound "USNMilitarist1/Active"
   Tag "DIY RPG WannaBeGI"	
   Obituary "%o had an FUBAR accident with the DIY rocket launcher made by highly-unintelligent yet patriotic GI Wannabe"
   States
        {
         Spawn:
			  TNT1 A 0
			  TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("STFUCheck") == 1, "STFU")
			  TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult ("VanJumpCheck") == 1, "VanJump")
			  TNT1 A 0 A_SetScale (scaleX+frandom(-0.02, 0.02), scaleY+frandom(-0.08,0.08))
		      TNT1 A 0 A_SpawnItemEx ("HumanTrails", 0, 0, 0)
			  TNT1 A 0 A_Jump (125, 2)
			  TNT1 A 0 A_GiveInventory ("MineLoaded", 1)
			  //TNT1 A 0 A_GiveInventory ("RocketLoaded", 1)
		 Spawn2:
		      SBAZ A 4 A_Look
			Loop
		 STFU:
     TNT1 A 0
	 TNT1 A 0 ACS_NamedExecute ("STFUUSNMilitarist1")
	 Goto Spawn+2
	 VanJump:
	 TNT1 A 0
	 TNT1 A 0  NODELAY ACS_NamedExecuteAlways ("VanillaHeights")
	Goto Spawn+3
	      See:
		   "####" A random(1,5)
			TNT1 A 0 A_Jump (70, "DodgeLeft", "DodgeRight", "DodgeLeftF", "DodgeLeftB", "DodgeRightF", "DodgeRightB")
			TNT1 A 0 A_Jump (180, "MissileCheck")	
	      SeeLoop:
			  TNT1 A 0 A_CheckSight ("CheckReload")
		      TNT1 A 0 A_Jump (199, "DodgeLeft", "DodgeRight", "DodgeLeftF", "DodgeLeftB", "DodgeRightF", "DodgeRightB")
		      SBAZ AABBCCDD 3 A_Chase
			 Loop
		    CheckReload:
				TNT1 A 0
				TNT1 A 0 A_Jump (222, "CheckReload2")
				Goto SeeLoop+1
			CheckReload2:
				TNT1 A 0
				TNT1 A 0 A_JumpIfInventory ("RocketShotCounter", 1, "Reload")
				Goto SeeLoop+1	
	  DodgeLeft:
        TNT1 A 0 A_FaceTarget
	    SBAZ AABBCCDD 2 ThrustThing(angle*256/360+192, 1, 0, 0)
		TNT1 A 0 A_Jump (228, "MissileCheck")
		TNT1 A 0 A_Jump (50, "DodgeRight")
		Goto SeeLoop+1
	DodgeLeftF:
	    TNT1 A 0 A_FaceTarget
	    TNT1 A 0 ThrustThingZ (0, 15, 0, 0)
	    TNT1 A 0 A_Recoil (random (-8,-3))
	    SBAZ AABBCCDD 2 ThrustThing(angle*256/360+192, 1, 0, 0)
		TNT1 A 0 A_Jump (228, "MissileCheck")
		Goto SeeLoop+1
    DodgeLeftB:
	    TNT1 A 0 A_FaceTarget
	    TNT1 A 0 ThrustThingZ (0, 15, 0, 0)
	    TNT1 A 0 A_Recoil (random (3,8))
	    SBAZ AABBCCDD 2 ThrustThing(angle*256/360+192, 1, 0, 0)
		TNT1 A 0 A_Jump (228, "MissileCheck")
		Goto SeeLoop+1
	DodgeRight:
	    TNT1 A 0 A_FaceTarget
	    SBAZ AABBCCDD 2 ThrustThing(angle*256/360+64, 1, 0, 0)
		TNT1 A 0 A_Jump (228, "MissileCheck")
		Goto SeeLoop+1
	DodgeRightF:
	    TNT1 A 0 A_FaceTarget
	    TNT1 A 0 ThrustThingZ (0, 15, 0, 0)
	    TNT1 A 0 A_Recoil ( random (-8,-3)) 
	    SBAZ AABBCCDD 2 ThrustThing(angle*256/360+64, 1, 0, 0)
		TNT1 A 0 A_Jump (228, "MissileCheck")
		Goto SeeLoop+1
	DodgeRightB:
	    TNT1 A 0 A_FaceTarget
	    TNT1 A 0 ThrustThingZ (0, 15, 0, 0)
	    TNT1 A 0 A_Recoil ( random (3,8)) 
	    SBAZ AABBCCDD 2 ThrustThing(angle*256/360+64, 1, 0, 0)
		TNT1 A 0 A_Jump (228, "MissileCheck")
		Goto SeeLoop+1
  MissileCheck:
    TNT1 A 0 A_JumpIfTargetInLos ("Missile", 30, JLOSF_DEADNOJUMP)
	Goto SeeLoop		 
		  Missile:
		      TNT1 A 0 A_JumpIfInventory ("MineLoaded", 1, "MissileMine")
			  SBAZ E 6 A_FaceTarget	
			  TNT1 A 0 A_JumpIfTargetInLos ("CloseQuarters", 0, JLOSF_DEADNOJUMP, 500)
			  TNT1 A 0 A_JumpIfTargetInLos ("LongRange", 0, JLOSF_DEADNOJUMP | JLOSF_CLOSENOJUMP, 0, 1000)
			  SBAZ E 18 A_FaceTarget
			  TNT1 A 0 A_Playsound ("RPGFIR", CHAN_Weapon)
			  TNT1 A 0 A_CustomMissile ("MiniRPGRocket", 42, 9, random (-2,2))
			  SBAZ F 4 Bright A_FaceTarget 
		      TNT1 A 0 A_GiveInventory ("RocketShotCounter", 1)
			 Goto MovingToCover
	    LongRange:
		    SBAZ E 28 A_FaceTarget
			TNT1 A 0 A_Playsound ("RPGFIR", CHAN_Weapon)
			TNT1 A 0 A_CustomMissile ("MiniRPGRocket", 42, 9)
			SBAZ F 4 Bright A_FaceTarget 
		    TNT1 A 0 A_GiveInventory ("RocketShotCounter", 1)
		    TNT1 A 0	
			 Goto MovingToCover
		CloseQuarters:
		  SBAZ E 15 A_FaceTarget
		  TNT1 A 0 A_Playsound ("RPGFIR", CHAN_Weapon)
		  TNT1 A 0 A_CustomMissile ("MiniRPGRocket", 42, 9, random (-5,5))
		  SBAZ F 4 Bright A_FaceTarget 
		  TNT1 A 0 A_GiveInventory ("RocketShotCounter", 1)
			 Goto MovingToCover		 
		MissileMine:
		   TNT1 A 0 A_JumpIfTargetInLos ("CQMine", 0, JLOSF_DEADNOJUMP, 800)
		   TNT1 A 0 A_JumpIfTargetInLos ("LongRangeMine", 0, JLOSF_DEADNOJUMP | JLOSF_CLOSENOJUMP, 0, 1400)
		   SBAZ E 18 A_FaceTarget
		   TNT1 A 0 A_Playsound ("RPGFIR", CHAN_Weapon)
		   TNT1 A 0 A_TakeInventory ("MineLoaded", 1)
		   TNT1 A 0 A_CustomMissile ("MiniArtMine", 42, 9, random (-4,4), CMF_OFFSETPITCH, random(10,14))
		   SBAZ F 4 Bright A_FaceTarget
		   TNT1 A 0 A_GiveInventory ("RocketShotCounter", 1)
			 Goto MovingToCover
		CQMine:
		  SBAZ E 15 A_FaceTarget
		  TNT1 A 0 A_Playsound ("RPGFIR", CHAN_Weapon)
		  TNT1 A 0 A_CustomMissile ("MiniArtMine", 42, 9, random (-4,4), CMF_OFFSETPITCH, random(6,9))
		  SBAZ F 4 Bright A_FaceTarget 
		  TNT1 A 0 A_GiveInventory ("RocketShotCounter", 1)
	   Goto MovingToCover
	   LongRangeMine:
		  SBAZ E 15 A_FaceTarget
		  TNT1 A 0 A_Playsound ("RPGFIR", CHAN_Weapon)
		  TNT1 A 0 A_CustomMissile ("MiniArtMine", 42, 9, random (-4,4), CMF_OFFSETPITCH, random(12,17))
		  SBAZ F 4 Bright A_FaceTarget 
		  TNT1 A 0 A_GiveInventory ("RocketShotCounter", 1)
	   Goto MovingToCover
		  MovingToCover:
			  TNT1 A 0
			  TNT1 A 0 A_Changeflag ("FRIGHTENED", true)
		  MovingToCoverLoop:		
			  SBAZ ABCD 2 A_Chase ("","")
			  TNT1 A 0 A_CheckSight ("Reload")
			  TNT1 A 0 A_GiveInventory ("MovingCounter", 1)
			  TNT1 A 0 A_JumpIfInventory ("MovingCounter", 10, "Reload")	
			 Loop
		 Reload:
			  TNT1 A 0 A_JumpIfCloser (1000, "ReloadMine")	
			  SBAZ D 12
			  SBAZ G 8 A_PlaySound ("RPGRL")	
			  SBAZ DE 10 
			  TNT1 A 0 A_TakeInventory ("RocketShotCounter", 1)
			  TNT1 A 0 A_TakeInventory ("MovingCounter", 10)
			  TNT1 A 0 A_Changeflag ("FRIGHTENED", false)
			  //TNT1 A 0 A_Jump (125, 2)
			  //TNT1 A 0 A_GiveInventory ("MineLoaded", 1)
			  //TNT1 A 0 A_GiveInventory ("RocketLoaded", 1)
			 Goto SeeLoop+1
	    ReloadMine:	
			  SBAZ D 12
			  SBAZ G 8	A_PlaySound ("RPGRL")
			  SBAZ DE 10 
			  TNT1 A 0 A_TakeInventory ("RocketShotCounter", 1)
			  TNT1 A 0 A_TakeInventory ("MovingCounter", 10)
			  TNT1 A 0 A_Changeflag ("FRIGHTENED", false)
			  TNT1 A 0 A_GiveInventory ("MineLoaded", 1)
			 Goto SeeLoop+1
		   Pain:
		      TNT1 A 0 A_Changeflag ("FRIGHTENED", false) 
		      SBAZ G 6 A_Pain
			  Goto SeeLoop
		   Death:
		      SBAZ I 3 A_Noblocking
			  SBAZ J 5 A_Scream
			  SBAZ K 5
			  SBAZ L -1
			 Stop
		   XDeath:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("VgavnonahCore", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
			PGIB A 1 A_XScream
			PGIB A 3 A_NoBlocking
			PGIB BCD 2
			PGIB E -1
		  Stop
		  Raise:
			TNT1 A 0 
			TNT1 A 0 A_SpawnItemEx ("NanoResEffect", 0, 0, 15, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
			SBAZ LKJI 5
		   Goto See	
		}
}



		    
		  Actor MiniArtMine
		   {
		 projectile
		+MISSILE
		-NOGRAVITY
		+BLOODSPLATTER
		gravity 0.35
		radius 5
		height 5
		speed 27
		scale 0.54
		damage (10)
		Obituary "%o was blown up by 40mm grenade"
		states
			{
			 Spawn:
				 NGLP B 1 A_SpawnItemEx("CSMiniMissileTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
				Loop
			 Death:
				 TNT1 A 0
				 TNT1 A 0 A_PlaySound("misc/boom",5)
				 TNT1 A 0 A_PlaySound("misc/distanceboom",6,1.0,0,0)
				 TNT1 A 0 A_Explode((30),85, 0 ,0,60)
				 TNT1 AAA 0 A_CustomMissile ("CSMiniMissileExplosionFlame", 0, 0, random (0, 360), 2, random (0, 360))
				 TNT1 A 0 A_SpawnItemEx ( "GroundExplosion", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
				 TNT1 A 0 A_SpawnItemEx ( "CobraSparxBurst", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
				 TNT1 AAA 0 A_CustomMissile ("CSMiniMissileBoomSmoke", 0, 0, random (0, 360), 2, random (0, 360))
				 TNT1 A 0 A_SpawnItemEx("CSMiniMissileShockwave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
				 TNT1 A 1 Radius_Quake (2,4,0,7,0)
				 TNT1 A 20
		stop
			 }
		   
		  }






		Actor MineLoaded : Inventory
			{
			 Inventory.MaxAmount 1
			}
			