

//#include SYNTH_mon.txt

ACTOR FBD_UberZoldat: AbstractSynthMonster 17728
{
	Species "Nazis"
	//$category "FBD Monsters"
	
	//***Che radius, height and maxdropoffheight (n/a for flying ones) MUST be kept consistent with FBD_TrySpawn in FBD_CORE.acs!
	
	Height 43
	Radius 16
	DeathHeight 4
	BurnHeight 0	
	
	Health 120
	
	Mass 200
	Speed 2
	PainChance 170	

	DropItem MG42Spawner
	
	Tag "$UBERZOL" // "Uberzoldat";
	Obituary "$FBD_NAZI_O" //"%o was terminated by a Nazi."	
	
	SeeSound "nazi/sight"
	PainSound None
	ActiveSound None
	DeathSound "nazi/death"	
	
	-FASTER
	-DONTHURTSPECIES

	
	
	BloodType "FBD_Blood", "BloodSPlatterReplacer", "FBD_SawBlood"

	DamageFactor "ExtremePunches", 2.0
	DamageFactor "Melee", 2.0
	DamageFactor "KillMe", 0.0 // ignore captured marines
	//damagefactor "Killme", 1.0 // AOE inflicted by captured marines
	//PainChance "Killme", 255	
	DamageFactor "SSG", 10.0
	PainChance "Melee", 255 PainChance "Stealth", 255
	damagefactor "PussyGrab", 50.0	
	
	PainChance "Argent", 255
	DamageFactor "Argent", 1.0	
	
	+NOPAIN // temporary, cleared after spawn
	
	//***Che this damage type is now for subscribers only
	damagefactor "Stealth", 1.0
	PainChance "Stealth", 255	
	
	
	States
	{
		Spawn:
			UZOL A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 5) // uses default headbox
			"----" A 0 A_GiveInventory("TargetIsAFormerHuman", 1) //used by AOE DOT inflictors to reward players with soul ammo -- otherwise untraceable
			"----" A 0 A_SetUserVar("user_default_weapon", 32) // uberzoldat with MG-42
			"----" A 0 A_SetUserVar("user_melee_weapon", 32)
			
			Goto SetupDefaults	
		
		SetupDefaults:
			"----" A 0
			// uses default headbox
			"----" A 0 A_SetUserVar("user_nag_period", 0) // never use
			"----" A 0 A_SetUserVar("user_speed_limit", 2) // strafing speed, map units per tic. May overshoot it briefly. It's meaningles to set it below monster's Speed because when monster detects he's moving too fast he'd switch to using A_Wander sideways, which makes him move at precisely Speed map units per tic.
			"----" A 0 A_SetUserVar("user_footstep_mask", 2 | 8) // footsteps on synth frames 2 and 4
			
			"----" A 7
			"----" A 0 A_ChangeFlag("NOPAIN", 0)
			Goto WeaponSwitch // will proceed to Stand	
			
		Stand:
			
			"----" A 0 A_JumpIf(user_weapon == 31, "Stand_UberSniper")
			"----" A 0 A_JumpIf(user_weapon == 32, "Stand_UberZoldat")	
			
			Goto Idle // oopsie
			
		Stand_UberSniper:
			"----" A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, 0, 43)
			UZOS AAAA 5 A_Look
			Loop
		Stand_UberZoldat:
			"----" A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, 0, 43)
			UZOL AAAA 5 A_Look
			Loop


		Pain.Kick:
		Pain.Extremepunches:
		Pain.BlackHole: // ancient arachnotron
			"----" A 0
			"----" A 0 A_ChangeFlag("NODROPOFF", 0) // the *only* case he could be thrown off a cliff!			
			"----" A 0 A_Pain
			"----" A 0 A_SetUserVar("user_charge", 0)
			"----" A 0 A_SetUserVar("user_shots", 0)
			"----" A 0 A_SetUserVar("user_ambush", 0)
			"----" A 0 A_SetUserVar("user_shot_cooldown", 0)
			"----" A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -3, -3, 42)
			"----" A 0 A_FaceTarget
			"----" A 0 A_Recoil(5)
			"----" A 0 ThrustThingZ(0, 30, 0, 1)
			UZOL G 16
			UZOL G 30
			"----" A 0 A_ChangeFlag("NODROPOFF", 1)
			Goto See
			
		Pain.Slide: // player backslide
			"----" A 0 A_Pain
			"----" A 0 A_SetUserVar("user_charge", 0)
			"----" A 0 A_SetUserVar("user_shots", 0)
			"----" A 0 A_SetUserVar("user_ambush", 0)
			"----" A 0 A_SetUserVar("user_shot_cooldown", 0)
			"----" A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -3, -3, 42)	
			"----" A 0 ThrustThingZ(0,50,0,1)			
			UZOL G 1 A_FaceTarget
			UZOL G 3 A_Recoil (-6)
			UZOL G 20
			UZOL GGGGGGGGGGGGGGGGGGGG 5 A_CheckFloor("MissileOnLanding")
			Goto See
			
		MissileOnLanding:
			"----" A 0 A_JumpIfTargetInLOS("Missile", 0, JLOSF_DEADNOJUMP)
			Goto See

		Pain_UberZoldat:	
			"----" A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -3, -3, 42)
			UZOL G 3 A_Pain
			UZOL G 0 A_Jump(192, "ShuffleFromPain")
			UZOL G 3
			Goto ShuffleFromPain
			
		Pain_UberSniper:	
			"----" A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -3, -3, 42)
			UZOS P 3 A_Pain
			UZOS P 0 A_Jump(192, "ShuffleFromPain")
			UZOS P 3
			Goto ShuffleFromPain			

		AnimFrameJ:
			"----" A 0 A_JumpIf(user_weapon == 31, "AnimFrameJ_UberSniper")
			"----" A 0 A_JumpIf(user_weapon == 32, "AnimFrameJ_UberZoldat")
			
			"----" A 1 // error unknown weapon
			Goto WeaponPhase
		AnimFrameJ_UberSniper:
			// no jumping frame, using the standing frame
			UZOS E 1 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, 0, 43)
			Goto WeaponPhase
		AnimFrameJ_UberZoldat:
			// no jumping frame, using the standing frame
			UZOL A 1 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, 0, 43)
			Goto WeaponPhase
		
		AnimFrame1:
			"----" A 0 A_JumpIf(user_weapon == 31, "AnimFrame1_UberSniper")
			"----" A 0 A_JumpIf(user_weapon == 32, "AnimFrame1_UberZoldat")
			"----" A 1 // error unknown weapon
			Goto WeaponPhase
		AnimFrame1_UberSniper:
			// no jumping frame, using the standing frame
			UZOS E 1 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, 0, 43)
			Goto WeaponPhase
		AnimFrame1_UberZoldat:
			// no jumping frame, using the standing frame
			UZOL A 1 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, 0, 43)
			Goto WeaponPhase			

		AnimFrame2:
			"----" A 0 A_JumpIf(user_weapon == 31, "AnimFrame2_UberSniper")
			"----" A 0 A_JumpIf(user_weapon == 32, "AnimFrame2_UberZoldat")
			"----" A 1 // error unknown weapon
			Goto WeaponPhase
		AnimFrame2_UberSniper:
			// no jumping frame, using the standing frame
			UZOS F 1
			Goto WeaponPhase
		AnimFrame2_UberZoldat:
			// no jumping frame, using the standing frame
			UZOL B 1
			Goto WeaponPhase

		AnimFrame3:
			"----" A 0 A_JumpIf(user_weapon == 31, "AnimFrame3_UberSniper")
			"----" A 0 A_JumpIf(user_weapon == 32, "AnimFrame3_UberZoldat")
			"----" A 1 // error unknown weapon
			Goto WeaponPhase
		AnimFrame3_UberSniper:
			// no jumping frame, using the standing frame
			UZOS G 1
			Goto WeaponPhase
		AnimFrame3_UberZoldat:
			// no jumping frame, using the standing frame
			UZOL C 1
			Goto WeaponPhase

		AnimFrame4:
			"----" A 0 A_JumpIf(user_weapon == 31, "AnimFrame4_UberSniper")
			"----" A 0 A_JumpIf(user_weapon == 32, "AnimFrame4_UberZoldat")
			"----" A 1 // error unknown weapon
			Goto WeaponPhase
		AnimFrame4_UberSniper:
			// no jumping frame, using the standing frame
			UZOS H 1
			Goto WeaponPhase
		AnimFrame4_UberZoldat:
			// no jumping frame, using the standing frame
			UZOL D 1
			Goto WeaponPhase
			
		WpnFire_MonsterDefined:
			"----" A 0 A_JumpIf(user_weapon == 31, "WpnFire_UberSniper")
			"----" A 0 A_JumpIf(user_weapon == 32, "WpnFire_UberZoldat")	
			"----" A 1 
			Wait
			
		WpnFire_UberSniper:
			"----" A 0 A_SpawnItemEx("PlayerMuzzle3",42,3,user_muzzle_z, 0,0,0, 0,SXF_NOCHECKPOSITION)
			"----" A 0 A_PlaySound("m14FIRE", CHAN_WEAPON)
			"----" A 0 A_PlaySound("FARM14")
			"----" A 0 A_SpawnItem ("RifleCaseSpawn", 0, 30,0)
			
			// 35 damage (70 on Equality skills)
			"----" A 0 A_CustomMissile("NaziBoltActionTracer", user_muzzle_z, 0, angle + 0.005 * Random(-10, 10), CMF_ABSOLUTEANGLE | (user_best_d ? CMF_AIMDIRECTION : CMF_OFFSETPITCH) | CMF_SAVEPITCH, (user_best_d ? user_best_p * 0.005493164 : 0) + 0.005 * Random(-10, 10)) 
			Goto WeaponAfterFiring
			
			
		WpnFire_UberZoldat:

			"----" A 0 A_SpawnItemEx("MG42Muzzle", 45,8,user_muzzle_z, 0,0,0, 0,SXF_NOCHECKPOSITION)
			
//			"----" A 0 A_PlaySound ("pfire", CHAN_WEAPON)
//			"----" A 0 A_PlaySound("FARSHT", 5)
			"----" A 0 A_PlaySound("m14FIRE", user_shots % 2 ? CHAN_WEAPON : 5)
			"----" A 0 A_PlaySound("FARM14", user_shots % 2 ? 6 : 7)
			"----" A 0 A_SpawnItem ("RifleCaseSpawn", 0, 30,0)

			// 25 damage (50 on Equality skills)
			"----" A 0 A_CustomMissile("EnemyHeavyMachinegunProjectile", user_muzzle_z, 0, angle + 0.1 * Random(-15, 15), CMF_ABSOLUTEANGLE | (user_best_d ? CMF_AIMDIRECTION : CMF_OFFSETPITCH) | CMF_SAVEPITCH, (user_best_d ? user_best_p * 0.005493164 : 0) + 0.1 * Random(-15, 15)) 

			"----" A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), "WeaponAfterFiring")
			"----" A 0 A_JumpIfTargetInLOS(1, 0, JLOSF_DEADNOJUMP) 
			Goto WeaponAfterFiring
			"----" A 0 A_Jump(96, "OneMoreShot")
			Goto WeaponAfterFiring

		Pain_MonsterDefined:
			"----" A 0 A_JumpIf(user_weapon == 31, "Pain_UberSniper")
			"----" A 0 A_JumpIf(user_weapon == 32, "Pain_UberZoldat")
			"----" A 3 A_Pain // error state, no pain defined
			Goto PainContinue

		Pain_UberSniper:
			"----" A 0
			"----" A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -3, -3, 42)
			"----" A 0 A_PlaySOund("nazi/pain", CHAN_VOICE)
			"----" A 0 A_TakeInventory("SKNazi", 1)
			UZOS P 6 A_Pain
			Goto PainContinue
			
		Pain_UberZoldat:
			"----" A 0
			"----" A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -3, -3, 42)
			"----" A 0 A_PlaySOund("nazi/pain", CHAN_VOICE)
			"----" A 0 A_TakeInventory("SKNazi", 1)
			UZOL G 6 A_Pain
			Goto PainContinue
			
		Pain.Argent:
			"----" A 0
			"----" A 0 HealThing(100)
			"----" A 0 ACS_NamedExecuteWithResult("DisplayArgentDischarge", 10, 40, 0)
			"----" A 0 A_JumpIf(user_melee_weapon != 1, 2)
			Goto PainActually
			
		Pain.Killme:
		Pain.Taunt:
			"----" A 0
			"----" A 0 HealThing(1)
			Goto PainContinue

		Pain.Melee:
		Pain.Fatality:
			"----" A 3
			"----" A 0 A_JumpIfInventory ("SKNazi", 1, "StealthKill")			
			Goto PainActually
			
		Pain.Stealth:
			"----" A 0
			"----" A 0 A_Pain
			"----" A 0 A_JumpIfInventory ("SKNazi", 1, "StealthKill")
			Goto See

		Death:
			"----" A 0
			"----" A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")
			"----" A 0 A_CustomMissile ("MuchBlood", 50, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			UZOL N 5
			UZOL O 5 A_Scream
			UZOL P 5 A_NoBlocking
			UZOL Q 5
			TNT1 A 0 A_SpawnItem ("GrowingBloodPool")
			UZOL R -1
			Stop

		Death.Electric:				
			"----" A 0
			"----" A 0 A_SpawnItem("BarrelExplosionSmokeColumn")
			Goto Death
		
		Death.Eat:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("EatMe",1)
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")			
			UZOL U 5 A_NoBlocking
			UZOL V 5
			TNT1 A 0 A_SpawnItem ("GrowingBloodPool")
			UZOL W -1
			Stop
		
		Death.Decaptate:			
		Death.Psionic:
		Death.head:
		Death.HeadStun:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")		
			TNT1 A 0 A_SpawnItem("NaziHeadExplode", 0, 50)
			TNT1 A 0 A_NoBlocking
			UZOL SSSSSTTTTTUUUUU 2 A_CustomMissile ("Brutal_LiquidBlood2", 30, 0, random (0, 360), CMF_AIMDIRECTION, random (60, 120))
			UZOL VVVVVWWWW 2 A_CustomMissile ("Brutal_LiquidBlood2", 10, 0, random (0, 360), CMF_AIMDIRECTION, random (60, 120))		
			TNT1 A 0 A_SpawnItem ("GrowingBloodPool")
			UZOL W -1
			Stop
		
		XDeath:
		Death.Bfg10k: //***Che changed damage type from extreme to custom		
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")		
			TNT1 A 0 A_XScream
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_CustomMissile ("SargeXDeath", 0, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 AAAAAA 0 A_CustomMissile ("MuchBlood2", 50, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 AAAAA 0 A_CustomMissile ("MuchBlood", 50, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			
			TNT1 A -1
			Stop	
		

		Death.Desintegrate:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")		
			TNT1 A 0 A_XScream
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("DesintegratedHuman", 0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION)
			TNT1 A 0 A_Stop
			TNT1 A 0 A_GiveToTarget("SoulAmmo", 1)
			TGIB ABCDEFGHIJKLMNOPQ 3
			TGIB Q -1
			Stop

		Death.GreenFire:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")
			TNT1 A 0 A_XScream
			TNT1 A 0 A_NoBlocking
			TNT1 AAAA 0 A_CustomMissile ("Blood", 30, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 A 0 A_CustomMissile ("XDeathBurnedArm", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 A 0 A_CustomMissile ("XDeathBurnedLeg", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 A 0 A_CustomMissile ("XDeathBurnedSkull", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeathBurnedMeat", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeathBurnedMeat2", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeathBurnedMeat3", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			EXPL AAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("GreenFlameTrails", 50, 0, random (0, 360), 2, random (0, 360))
			XBRN AAAA 2 BRIGHT A_SpawnItem("GreenFlare",0,43)
			TNT1 A -1	
			Stop

		Death.Plasma: 
		Death.Plasma2:
		XDeath.Electric:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")
			TNT1 A 0 A_Stop
			PBR1 A 6 A_XScream
			TNT1 AAAA 0 A_CustomMissile ("BluePlasmaFireNonStatic", 42, 0, random (0, 360), 2, random (0, 180))
			TNT1 AAA 0 A_CustomMissile ("Blood", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 180))
			TNT1 AAAAAAAAAA 0 A_CustomMissile ("SuperGoreMistSmall", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (10, 90))
			TNT1 AAAAA 0 A_CustomMissile ("FBD_FlyingBlood", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 180))
			PBR1 B 6 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx ("DetectFloorCraterSmall",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItem("BarrelExplosionSmokeColumn")
			TNT1 A 0 A_SpawnItemEx("TinyBurningPiece", random (-15, 15), random (-15, 15))
			TNT1 AA 0 A_SpawnItemEx("TinyBurningPiece2", random (-35, 35), random (-35, 35))
			TNT1 AA 0 A_SpawnItemEx("TinyBurningPiece3", random (-45, 45), random (-45, 35))
			PBR1 CCDD 3 A_CustomMissile ("BluePlasmaFireNonStatic", 32, 0, random (0, 360), 2, random (0, 180))
			PBR1 EEFF 3
			PBR1 GG 3
			TNT1 A 0 A_GiveToTarget("SoulAmmo", 1)
			PBR1 H -1
			Stop	
		XDeath.Plasma:
		XDeath.Electric:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")
			TNT1 A 0 A_XScream
			TNT1 A 0 A_NoBlocking
			XBRN AA 2 BRIGHT A_SpawnItem("BlueFlare",0,43)
			TNT1 AAAA 0 A_CustomMissile ("Blood", 30, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 A 0 A_CustomMissile ("XDeathBurnedArm", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 A 0 A_CustomMissile ("XDeathBurnedLeg", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 A 0 A_CustomMissile ("XDeathBurnedSkull", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeathBurnedMeat", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeathBurnedMeat2", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeathBurnedMeat3", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			XBRN BB 2 BRIGHT A_SpawnItem("BlueFlare",0,43)
			TNT1 A 0 A_CustomMissile ("Blood", 30, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			XBRN CC 2 BRIGHT A_SpawnItem("BlueFlare",0,43)
			TNT1 AAAAA 0 A_CustomMissile ("PlasmaParticleX", 48, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAA 0 A_CustomMissile ("BigPlasmaParticleX", 42, 0, random (0, 360), 2, random (0, 360))
			
			TNT1 A -1
			Stop
		Death.Fire:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")		
			TNT1 A 0 A_PlaySound("BIGSCREA", CHAN_VOICE)
			BURN W 6 //A_Scream
			BURN X 6 A_NoBlocking
			BUR2 ABCD 6 BRIGHT A_CustomMissile ("PlasmaSmoke", 8, 0, random (0, 180), 2, random (0, 180))
			BURN FGHIJKL 6 BRIGHT A_CustomMissile ("PlasmaSmoke", 8, 0, random (0, 180), 2, random (0, 180))
			BURN MNOPQRSTUV 6 BRIGHT A_CustomMissile ("PlasmaSmoke", 8, 0, random (0, 180), 2, random (0, 180))
			BURN VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 6 A_CustomMissile ("PlasmaSmoke", 8, 0, random (0, 180), 2, random (0, 180))
			BURN V -1
			Stop

		Raise:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII") // should not have a headbox by now -- but what if?	
			TNT1 A 0 A_SpawnItemEx("StandaloneRezSfx",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			UZOL WVUTS 5
			TNT1 A 0 ACS_NamedExecuteWithResult("FBD_CustomizeOnRez") // it runs OnRezMapScript
				// if the map prpvides one
			Goto See
			
		FallbackRaise: // we were put into this state by the superarchvile AOE raising, our height is hopelessly kaput and we have to spawn a substitute
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			// no such thing as a raised uberzoldat, spawning the regular one (no raising animation)
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 103) // see _mob_list.xlsx
			Stop
			
		FallbackRezSuccess:
			TNT1 A 0 A_SpawnItemEx("StandaloneRezSfx",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 30
			Stop			

		Crush:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")
			TNT1 AAAA 0 A_SpawnItemEx ("BodyRemovalThing",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			TNT1 A 1 A_XScream
			TNT1 A -1 // be raiseable 
			Stop

		Death.Fatality:
			//***Che: was never implemented in BD21.
			// ersatz fatality: doomguy punches, we asplode, doomguy flexes
			TNT1 A 0 
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")
			TNT1 A 0 A_NoBlocking
			
			TNT1 A 0 A_GiveToTarget("GoFatality", 1)
			TNT1 A 0 A_GiveToTarget("ErsatzFatality", 1)	
			
			// after exactly 15 tics, asplode
			
			NAZI N 6 A_FaceTarget
			NAZI O 9 A_Pain
			
			TNT1 A 0 A_StopSound(CHAN_VOICE)
			
			TNT1 A 0 ACS_NamedExecuteAlways("DropFatalityBonuses", 0, 15, 20, 0) // 0, health, armor, 0
						
			Goto Death.SSG	
			
		Death.ExtremePunches:
		Death.Blast:
		Death.SSG:
		Death.Railgun:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")		
			SZD1 E 1 A_Pain
			TNT1 A 0 A_SpawnItem("Muchblood2", 0, 40)
			SZD1 E 1 A_FaceTarget
			
			TNT1 AAA 0 bright A_CustomMissile ("SuperGoreSpawner", 35, 0, random (170, 190), CMF_AIMDIRECTION, random (0, 40))
			//TNT1 A 0 A_CustomMissile ("MeatDeath", 0, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAA 0 A_CustomMissile ("XDeath1", 32, 0, random (170, 190), CMF_AIMDIRECTION, random (0, 40))
			TNT1 A 0 A_CustomMissile ("XDeath2", 32, 0, random (170, 190), CMF_AIMDIRECTION, random (0, 40))
			TNT1 A 0 A_CustomMissile ("XDeath3", 32, 0, random (170, 190), CMF_AIMDIRECTION, random (0, 40))
			TNT1 AAAA 0 A_CustomMissile ("FBD_FlyingBlood", 32, 0, random (170, 190), CMF_AIMDIRECTION, random (0, 40))
			TNT1 AAA 0 A_CustomMissile ("Guts", 32, 0, random (150, 210), CMF_AIMDIRECTION, random (0, 40))
			TNT1 AAAA 0 A_CustomMissile ("Brutal_FlyingBloodFaster", 32, 0, random (170, 190), CMF_AIMDIRECTION, random (0, 40))
			TNT1 AAAA 0 A_CustomMissile ("Brutal_FlyingBloodMuchFaster", 32, 0, random (170, 190), CMF_AIMDIRECTION, random (0, 40))
			TNT1 AAAA 0 A_CustomMissile ("SuperWallRedBlood", 32, 0, random (170, 190), CMF_AIMDIRECTION, random (0, 40))
			TNT1 AAAA 0 A_CustomMissile ("SuperWallRedBlood", 46, 0, random (170, 190), CMF_AIMDIRECTION, random (0, 40))
			//TNT1 AA 0 A_CustomMissile ("XDeathArm1", 32, 0, random (170, 190), CMF_AIMDIRECTION, random (0, 40))
			//TNT1 A 0 A_CustomMissile ("XDeathSergeantHead", 32, 0, random (170, 190), CMF_AIMDIRECTION, random (0, 40))
			TNT1 A 0 A_SpawnItem("NaziHeadExplode", 0, 50)
			TNT1 A 0 A_XScream
			TNT1 A 0 A_JumpIfInventory("IsASniper", 1, 3)
			TNT1 A 0 A_SpawnItem("MP40Drop")
			TNT1 A 0 A_JumpIf(true, 2)
			TNT1 A 0 A_SpawnItem("Gewehr98Spawner")
			TNT1 A 0 A_NoBlocking
			SZD1 EEFFGH 6
			TNT1 A 0 A_SpawnItem ("GrowingBloodPool")
			TNT1 A 0 A_SpawnItem("DeadShotgunguySZD1HNonRaiseable") //black clad legs only so you can't tell these are from a shotgun guy
			
			TNT1 A -1 // stay invisibly, be raiseable instead of the legs
			Stop
		
		StealthKill:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("GoFatality", 1)
			TNT1 A 0 A_GiveToTarget("GoSpecial", 1)
			TNT1 A 0 A_GiveToTarget("SKNazi", 1)
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_Die("Stealthy")
			TNT1 A 0 A_Fall
			TNT1 A 30
			Stop
		Death.Stealthy:
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")
			TNT1 A 30 A_ChangeFlag("CORPSE", 0)
			Stop
		
		Death.PussyGrab:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")
			TNT1 A 0 A_Pain
			TNT1 A 0 A_Chase("","")
			TNT1 A 0 A_Pain
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_GiveToTarget("GrabbedANazi", 1)
			TNT1 A 0 A_GiveToTarget("SoulAmmo", 1)
			TNT1 A 30 A_ChangeFlag("CORPSE", 0)
			Stop			

		Death.Ice: //***Che: this death was missing
		Death.Freeze:
		Death.Frost:
		Death.IOS_Frost: // has no permafrost
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("FrozenUberZoldat",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_GiveToTarget("SoulAmmo", 1)
			TNT1 A -1 //30 A_ChangeFlag("CORPSE", 0)
			Stop			
			
	}
}










ACTOR FBD_UberSniper: FBD_UberZoldat 17729
{
	
	DropItem Gewehr98Spawner
	Tag "$UBERSNOOPER" // "Nazi sniper";
	
	
	States
	{
		Spawn:
			UZOS E 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 5) // uses default headbox
			"----" A 0 A_GiveInventory("TargetIsAFormerHuman", 1) //used by AOE DOT inflictors to reward players with soul ammo -- otherwise untraceable
			"----" A 0 A_SetUserVar("user_default_weapon", 31) // sniper rifle
			"----" A 0 A_SetUserVar("user_melee_weapon", 31)			
			Goto SetupDefaults	
		
		
		Pain.Kick:
		Pain.Extremepunches:
		Pain.BlackHole: // ancient arachnotron
			"----" A 0
			"----" A 0 A_ChangeFlag("NODROPOFF", 0) // the *only* case he could be thrown off a cliff!			
			"----" A 0 A_Pain
			"----" A 0 A_SetUserVar("user_charge", 0)
			"----" A 0 A_SetUserVar("user_shots", 0)
			"----" A 0 A_SetUserVar("user_ambush", 0)
			"----" A 0 A_SetUserVar("user_shot_cooldown", 0)
			"----" A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -3, -3, 42)
			"----" A 0 A_FaceTarget
			"----" A 0 A_Recoil(5)
			"----" A 0 ThrustThingZ(0, 30, 0, 1)
			UZOS P 16
			UZOS P 30
			"----" A 0 A_ChangeFlag("NODROPOFF", 1)
			Goto See
			
		Pain.Slide: // player backslide
			"----" A 0 A_Pain
			"----" A 0 A_SetUserVar("user_charge", 0)
			"----" A 0 A_SetUserVar("user_shots", 0)
			"----" A 0 A_SetUserVar("user_ambush", 0)
			"----" A 0 A_SetUserVar("user_shot_cooldown", 0)
			"----" A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -3, -3, 42)	
			"----" A 0 ThrustThingZ(0,50,0,1)			
			UZOS P 1 A_FaceTarget
			UZOS P 3 A_Recoil (-6)
			UZOS P 20
			UZOS PPPPPPPPPPPPPPPPPPPP 5 A_CheckFloor("MissileOnLanding")
			Goto See
			
		MissileOnLanding:
			"----" A 0 A_JumpIfTargetInLOS("Missile", 0, JLOSF_DEADNOJUMP)
			Goto See
			
		FallbackRaise: // we were put into this state by the superarchvile AOE raising, our height is hopelessly kaput and we have to spawn a substitute
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			// no such thing as a raised uberzoldat, spawning the regular one (no raising animation)
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 102) // see _mob_list.xlsx
			Stop
	}
}

ACTOR MG42Muzzle: PlayerMuzzle1
{
	var int user_scale;
	States	{
		Spawn:
			TNT1 A 0 NODELAY A_SetUserVar("user_scale", Random(10, 20))
			TNT1 A 0 A_SetScale(0.1 * user_scale, 0.1 * user_scale)
			PLMZ A 1 BRIGHT
			Stop
	}
}