

//***Che Monstrosities coded by ChebMaster


Actor CyberdemonChad: FBD_Cyberdemon 17681 { 
	//$Sprite CYMAA2A8
	Health 7500
	// dark red
	Translation "48:69=16:37", "70:79=38:47", "174:191=16:46", "148:151=188:191"
	Tag "$CYBRCHAD"
	
		// normal cybers have 15 tics between attacks (6-6-3), chad has 10 (7-3)
		// normal cybers have 12 tics between speciall atack shots (4-4-3), chad has 8 (5-3)

	PainChance "Ice", 20
	
	States {
		Missile:
			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 256 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			TNT1 A 0 A_JumpIfInTargetInventory("IsInATank", 1, "SpecialAttack")
		
			// Kinslayer check:	
			TNT1 A 0 A_JumpIfInTargetInventory("TargetIsACyberdemon", 1, 2)
			TNT1 A 0 A_JumpIf(true, 2)
			TNT1 A 0 ACS_NamedExecuteWithResult("FBD_InfightFriendlyFireOn")	
			
			TNT1 A 0 A_JumpIfInventory("Enraged", 1, "SpecialAttack")
			
			TNT1 A 0 A_JumpIfCloser(768, "MissileSaturation")
			
			TNT1 A 0 A_Jump(64, "SpecialAttack")
	
		MissileRegular:
			
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -12, -6, 96)
		
			TNT1 A 0 A_JumpIfTargetInLOS(2)
			TNT1 A 0 A_JumpIf(user_dont_adjust_aim, 2)
			TNT1 A 0 A_FaceTarget
			CYBR E 8
			TNT1 A 0 A_SetUserVar("user_dont_adjust_aim", 0)

			

			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,0,0)

			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 7 //A_FaceTarget
			
			

			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle - 7, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,-7,0)

			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 7 //A_FaceTarget

			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle + 7, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,7,0)		

			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 7 //A_FaceTarget
			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,0,0)
			
			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 7 //A_FaceTarget
			
			CYBR E 12
			Goto See	
			
		MissileSaturation:
			TNT1 A 0 
//TNT1 A 0 A_Log("MissileSaturation...")
			//TNT1 A 0 A_JumpIfHigherOrLower("MissileRegular", "MissileRegular", 32, 128, FALSE) // compare z-height without factoring in actor heights
			//Invalid state parameter a_jumpifhigherorlower

			
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -12, -6, 96)
			TNT1 A 0 A_JumpIfTargetInLOS(2)
			TNT1 A 0 A_JumpIf(user_dont_adjust_aim, 2)
			TNT1 A 0 A_FaceTarget
			
			//TNT1 A 0 A_CustomMissile("FBD_CheckIfTargetIsAbove40")
			//TNT1 A 0 A_CustomMissile("FBD_CheckIfTargetIsBelow40")
			
			CYBR E 8
			TNT1 A 0 A_SetUserVar("user_dont_adjust_aim", 0)

			// user_pitch_adjust ranges 0..10, use multiplier of 0.1 to apply
				TNT1 A 0 A_SetUserVar("user_pitch_adjust", CallAcs("CyberSaturationPitchAdjust",60,-25))
				//TNT1 A 0 A_JumpIfInventory("TargetIsAbove", 1, 4)//3) // do NOT use vertical spread if target is either above 50 or below -40
				//TNT1 A 0 A_JumpIfInventory("TargetIsBelow", 1, 3)//2)
				//TNT1 A 0 A_SetUserVar("user_pitch_adjust", 1)
				//TNT1 A 0 A_Log("Chad Cyberdemon: target is level with me, I'm shooting the ground to get it with splash.")			
			

			// saturation attack is never auto-aimed
				
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle - 2, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH, - 12 * 0.08 * user_pitch_adjust)


			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 5)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 3)
				TNT1 A 0 A_FaceTarget
				TNT1 A 0 A_SetUserVar("user_pitch_adjust", CallAcs("CyberSaturationPitchAdjust",60,-25))
			
			CYBR E 7 //A_FaceTarget
			
			
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle - 12, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH, -7 * 0.08 * user_pitch_adjust)

			
			
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 5)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 3)
				TNT1 A 0 A_FaceTarget
				TNT1 A 0 A_SetUserVar("user_pitch_adjust", CallAcs("CyberSaturationPitchAdjust",60,-25))
			
			CYBR E 7 //A_FaceTarget

			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle + 10, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH, -7 * 0.08 * user_pitch_adjust)		

			
			
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 5)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 3)
				TNT1 A 0 A_FaceTarget
				TNT1 A 0 A_SetUserVar("user_pitch_adjust", CallAcs("CyberSaturationPitchAdjust",60,-25))
			
			CYBR E 7 //A_FaceTarget
			
			
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle - 2, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH, -20 * 0.08 * user_pitch_adjust)
			
			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 7 //A_FaceTarget
			
			CYBR E 12
			Goto See			
		
		SpecialAttack:
			
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -12, -6, 96)
			TNT1 A 0 A_JumpIfTargetInLOS(2)
			TNT1 A 0 A_JumpIf(user_dont_adjust_aim, 2)
			TNT1 A 0 A_FaceTarget
			CYBR E 6
			TNT1 A 0 A_SetUserVar("user_dont_adjust_aim", 0)

			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,0,0)
			
			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			CYBR E 5 //A_FaceTarget
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle - 7, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,-7,0)
			
			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			CYBR E 5 //A_FaceTarget
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget

			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle + 7, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,7,0)
			
			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			CYBR E 5 //A_FaceTarget
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,0,0)
			
			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			CYBR E 5 //A_FaceTarget
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,0,0)
			

			CYBR E 5 //A_FaceTarget
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("CyberBalls",60,-25,0,0)

			Goto See

		Melee:
			TNT1 A 0 A_JumpIf(!CallACS("GetIsZDeltaToTargetInRange", -40, 40), "Missile")
			
		Stomp:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInTargetInventory("IsInATank", 1, "SpecialAttack")
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, -7, 96)
			
			// Kinslayer check:	
			TNT1 A 0 A_JumpIfInTargetInventory("TargetIsACyberdemon", 1, 2)
			TNT1 A 0 A_JumpIf(true, 2)
			TNT1 A 0 ACS_NamedExecuteWithResult("FBD_InfightFriendlyFireOn")	
			
			
			
			//TNT1 A 0 A_CustomMissile("FBD_CheckIfTargetIsAbove40")
			//TNT1 A 0 A_CustomMissile("FBD_CheckIfTargetIsBelow40")

			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 2, 0, 96)
			
			CYBR A 4 A_FaceTarget
			
			//TNT1 A 0 A_JumpIfInventory("TargetIsAbove", 1, "NoStomp")
			//TNT1 A 0 A_JumpIfInventory("TargetIsBelow", 1, "NoStomp")
			
			CYBR A 1
			
			TNT1 A 0 A_Recoil(-5)
			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
				
			TNT1 A 0 ThrustThingZ(0,25,0,1)
			TNT1 A 0 A_Recoil(-10)
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 9, -12, 96)	
			CYMA A 7 //A_FaceTarget
			CYMA AAAAAAAAAAAAA 1 A_CheckFloor("StompLand")
		StompLand:
			
			TNT1 A 0 A_CustomMissile("CyberStomp",10,0,0,0)
			CYMA B 7
			
			CYMA B 7
			
			Goto See			
	}

}

/*
//***Che replaced with CyberDevastator using annihilator sprites!
Actor CyberdemonGrizzly: CyberdemonChad 17685 {
	//$Sprite CYBRF2
	Health 8500
	// black with gold highlights
	Translation "48:69=80:111", "70:79=0:0", "148:151=0:0", "1:1=0:0", "168:191=160:167", "16:47=9:12"
	Tag "$CYBRGRIZ"
	
	
	States {
		Spawn: 
			CYBR D 0 NODELAY ACS_NamedExecuteAlways("SlaughtermapInit", 0, 2, 0, 0) // counts as two monsters
			TNT1 A 0 A_SetUserVar("user_head_type", 1) // cyberdemon headbox
			TNT1 A 0 A_SetUserVar("user_headshot_stun_limit", 8) // prevents permanent stunlock
			TNT1 A 0 A_GiveInventory("TargetIsACyberdemon")
			TNT1 A 0 A_GiveInventory("TargetIsABoss")
			TNT1 A 0 A_GiveInventory("TargetIsAGreatTerribleBoss")
			CYBR Z 7 // Must not do anything until scripts init
			TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
			Goto Stand
		Missile:
			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 256 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")	

			// Kinslayer check:	
			TNT1 A 0 A_JumpIfInTargetInventory("TargetIsACyberdemon", 1, 2)
			TNT1 A 0 A_JumpIf(true, 2)
			TNT1 A 0 ACS_NamedExecuteWithResult("FBD_InfightFriendlyFireOn")	
		
			TNT1 A 0 A_JumpIfInventory("Enraged", 1, "SpecialAttack")
			
			TNT1 A 0 A_JumpIfCloser(2048, "MissileRegular")
		
		MissileLongRange:
			
			// like regular attack but spread reduced from 7 to 4
		
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -12, -6, 96)
			TNT1 A 0 A_JumpIfTargetInLOS(2)
			TNT1 A 0 A_JumpIf(user_dont_adjust_aim, 2)
			TNT1 A 0 A_FaceTarget
			CYBR E 8
			TNT1 A 0 A_SetUserVar("user_dont_adjust_aim", 0)

			

			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,0,0)

			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 6 //A_FaceTarget

				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 6 //A_FaceTarget
			
			

			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle - 4, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,-7,0)

			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 6 //A_FaceTarget

				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 6 //A_FaceTarget

			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle + 4, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,7,0)		

			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 6 //A_FaceTarget

				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 6 //A_FaceTarget
			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,0,0)
			
			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 6 //A_FaceTarget

				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 6 //A_FaceTarget
			
			CYBR E 12
			Goto See			
		
		MissileRegular:
		
			TNT1 A 0
			TNT1 A 0 A_Jump(85, "SpecialAttack")		
			
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -12, -6, 96)
			TNT1 A 0 A_JumpIfTargetInLOS(2)
			TNT1 A 0 A_JumpIf(user_dont_adjust_aim, 2)
			TNT1 A 0 A_FaceTarget
			CYBR E 8
			TNT1 A 0 A_SetUserVar("user_dont_adjust_aim", 0)

			

			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,0,0)

			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 7 //A_FaceTarget
			
			

			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle - 7, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,-7,0)

			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 7 //A_FaceTarget

			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle + 7, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,7,0)		

			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 7 //A_FaceTarget
			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,0,0)
			
			
			
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			CYBR E 7 //A_FaceTarget
			
			CYBR E 12
			Goto See	
		
		SpecialAttack:
			
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -12, -6, 96)
			TNT1 A 0 A_JumpIfTargetInLOS(2)
			TNT1 A 0 A_JumpIf(user_dont_adjust_aim, 2)
			TNT1 A 0 A_FaceTarget
			CYBR E 6
			TNT1 A 0 A_SetUserVar("user_dont_adjust_aim", 0)

			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,0,0)
			
			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			CYBR E 5 //A_FaceTarget
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle - 7, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,-7,0)
			

			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			CYBR E 5 //A_FaceTarget
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget

			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle + 7, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,7,0)
			
			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			CYBR E 5 //A_FaceTarget
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,0,0)
			
			TNT1 A 0 A_JumpIf(CallACS("GetDistanceToTarget", 999) <= 180 && CallACS("GetIsZDeltaToTargetInRange", -40, 40) && !CallACS("GetIsTargetUnStompeable"), "Stomp")
			
			CYBR E 5 //A_FaceTarget
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,0,0)
			

			CYBR E 5 //A_FaceTarget
				//***Che: do NOT adjust aim if target goes out of sight or is invisible
				TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 4)
				TNT1 A 0 A_JumpIfTargetInLOS(2)
				TNT1 A 0 A_Jump(256, 2)
				TNT1 A 0 A_FaceTarget
			
			
			
			// MUST use auto-aiming at visible targets, otherwise misses at close range due to projectile's origin offset
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), 2)
			TNT1 A 0 A_JumpIfTargetInLOS(3)
			// the version with auto-aim disabled:		
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,angle, CMF_ABSOLUTEANGLE | CMF_OFFSETPITCH | CMF_SAVEPITCH)
			TNT1 A 0 A_Jump(256, 2)
			// the auto-aimed version:
			CYBR F 3 BRIGHT A_CustomMissile("GoldenCyberBall",60,-25,0,0)
			TNT1 A 0 // a dummy frame for A_Jump

			Goto See	
	}	
	
}
*/

ACTOR GoldenCyberBall: CyberBalls
{
	DamageType Desintegrate // triple damage to player tank
	RenderStyle Add
	Alpha 0.9
	Scale 1.6
	SeeSound "DSCANFIR"
	DeathSound "FAREXPL"
	Decal "Scorch"
	
	+FORCERADIUSDMG
	States
	{
		Spawn:
			TNT1 A 0 A_SpawnItem("YellowFlare22",0,0)
			FRPU K 1 BRIGHT A_SpawnItemEx("GoldenExplosionFlameTrail", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 0 A_SpawnItem("YellowFlare22",0,0)
			FRPU J 1 BRIGHT A_SpawnItem("YellowFlare22",0,0)
			Loop
		Death:
			TNT1 A 0 Bright
			EXPL A 0 Radius_Quake (3, 8, 0, 15, 0)//(intensity, duration, damrad, tremrad, tid)
			TNT1 A 0 Bright A_Explode(120, 170, 1) // no self damage: he himself is *not* immune to this damaghe type!
			TNT1 AAAAAAAAA 0 A_CustomMissile ("GoldenExplosionFire", 2, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAA 0 A_CustomMissile("GoldenIgniter", 24.0, 0.0, Random(-180,180), CMF_AIMDIRECTION | CMF_TRACKOWNER | CMF_SAVEPITCH, Random(5, 70))
			EXPL AA 0 A_CustomMissile ("BigNeoSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_PlaySound("FAREXPL", 3)
			TNT1 A 15
			TNT1 BCDEF 2 Bright
			TNT1 AAAAAAA 2 A_CustomMissile ("BigNeoSmoke", 2, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_PlaySound("distantexp", 5)
			Stop
	}
}


ACTOR GoldenIgniter {
    +FORCERADIUSDMG // to overcome player tank's +NORADIUSDMG
	Species "Cyberdemons"
	+DONTHARMSPECIES
	
	Radius 4
    Height 4
    Speed 12
	FastSpeed 12 // must NOT be faster, spread too much and become useles as an area denial
    Renderstyle Add
	Mass 1
    +NOBLOCKMAP
	+MISSILE
    +NOTELEPORT
    +MOVEWITHSECTOR
    +RIPPER
    +BLOODLESSIMPACT 
	+NODAMAGETHRUST
    +DOOMBOUNCE
	+SKYEXPLODE
    BounceFactor 0.5
	BounceCount 2
	damagetype Disintegrate
	Damage (random (1, 1))
	Missileheight 4
	//Missiletype "GoldenTinyFlameTrail"
    States
    {
		Spawn:
			FRPU KJ 1 BRIGHT A_SpawnItemEx("GoldenTinyFlameTrail", 0, 0, 0, 0, 0, 0, 0, 128)
			Loop
		Death: // a recolored clone of FlamethrowerBurningStuff
			TNT1 A 0
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Playsound("props/redfire", 1)
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			//NF4Y ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 AAAAAAAA 2 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))

			TNT1 A 0 A_Explode(16, 64, 0) // 0 = don't harm the originator
			
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			//NF4Y ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 AAAAAAAA 2 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 0 A_Explode(16, 64, 0)
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			//NF4Y ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 AAAAAAAA 2 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 0 A_Explode(16, 64, 0)
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			//NF4Y ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 AAAAAAAA 2 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 0 A_Explode(16, 64, 0)
			
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			//NF4Y ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 AAAAAAAA 2 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 0 A_Explode(16, 64, 0)
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			//NF4Y ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 AAAAAAAA 2 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 0 A_Explode(16, 64, 0)
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			//NF4Y ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 AAAAAAAA 2 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 0 A_Explode(16, 64, 0)
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			//NF4Y ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 AAAAAAAA 2 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 0 A_Explode(16, 64, 0)
		
		TurnOff:
			//NF4R QRSTUV 1 BRIGHT
			TNT1 AA 4 A_CustomMissile ("GoldFlameTrailsbIG", 6, 0, random (0, 180), 2, random (0, 180))
			TNT1 AA 6 A_CustomMissile ("GoldFlameTrailsbIG", 6, 0, random (0, 180), 2, random (0, 180))
			TNT1 AA 8 A_CustomMissile ("GoldFlameTrailsbIG", 6, 0, random (0, 180), 2, random (0, 180))
			TNT1 A 0 A_checkFloor("Smoke")
			Stop
		Underwater:
		Splash:
			//NF4Y ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 AAA 0 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (0, 180))
			TNT1 AAA 0 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (0, 180))
			TNT1 AAA 0 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("GoldFlameTrailsbIG", Random (4, 24), 0, random (0, 180), 2, random (0, 180))
			TNT1 A 1 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (0, 180))
	
			TNT1 A 0 A_Explode(16, 64, 0)
			TNT1 A 0 A_Jump(64, "JustDie")
			Loop
		JustDie:
			TNT1 A 0
			Stop			
		Smoke:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx("ExplosionSimpleSmokeColumn",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			Stop
    }
}

Actor VileGoldenIgniter: GoldenIgniter
{
	Species "Vile"
	+DONTHARMSPECIES
}


ACTOR PalletteShiftableFlameTrails: GreenFlameTrailsbIG
{
	Speed 2
		// I used GreenFlameTrailsbIG directly at first, because those were doom-paletted, very convenient
		// but then I saw Mark-sensei improved FIR6 sprites in BDv22... And translation stopped working.
		// so I copied the original FIR6 from BDv21 into the BDv22-to-chebskies patch as FIRW
		// the BDv21 version is just a clone of GreenFlameTrailsbIG using FIR6 directly
}

ACTOR GoldFlameTrailsbIG: PalletteShiftableFlameTrails { //GreenFlameTrailsbIG {
	Speed 1
	Translation "112:116=224:231", "116:127=160:167"
}



ACTOR GoldenExplosionFire
{
	Game Doom
	Radius 1
	Height 1
	Speed 3
	Damage 0 
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
	+MISSILE
	+FORCEXYBILLBOARD
    +CLIENTSIDEONLY
    +NOINTERACTION
	+NOCLIP
	RenderStyle Add
    DamageType Flames
    Scale 2.0
	Alpha 1
	Gravity 0
	States
	{
		Spawn:
			TNT1 A 1
			EXPU ABCDEFG 3 BRIGHT
			Stop
	}
}

ACTOR GoldenExplosionFlameTrail: ExplosionFlames

// green and reddish versions are EXPG and EXPL correspondingly

{
	Scale 0.5
	States
	{
		Spawn:
			TNT1 A 2
			TNT1 A 0 A_Jump(192, "Spawn2", "Spawn3", "Spawn4")
		Spawn1:	
			TNT1 A 0 
			EXPU C 1 BRIGHT A_SetScale(0.5, 0.5)
			EXPU D 1 BRIGHT A_SetScale(0.65, 0.65)
			EXPU E 1 BRIGHT A_SetScale(0.8, 0.8)
			EXPU F 1 BRIGHT A_SetScale(1.0, 1.0)
			EXPU G 1 BRIGHT A_SetScale(1.2, 1.2)
			Stop
		Spawn2:	
			TNT1 A 0
			EXPU C 1 BRIGHT A_SetScale(-0.5, 0.5)
			EXPU D 1 BRIGHT A_SetScale(-0.65, 0.65)
			EXPU E 1 BRIGHT A_SetScale(-0.8, 0.8)
			EXPU F 1 BRIGHT A_SetScale(-1.0, 1.0)
			EXPU G 1 BRIGHT A_SetScale(-1.2, 1.2)
			Stop
		Spawn3:	
			TNT1 A 0
			EXPU C 1 BRIGHT A_SetScale(0.5, -0.5)
			EXPU D 1 BRIGHT A_SetScale(0.65, -0.65)
			EXPU E 1 BRIGHT A_SetScale(0.8, -0.8)
			EXPU F 1 BRIGHT A_SetScale(1.0, -1.0)
			EXPU G 1 BRIGHT A_SetScale(1.2, -1.2)
			Stop
		Spawn4:	
			TNT1 A 0
			EXPU C 1 BRIGHT A_SetScale(-0.5, -0.5)
			EXPU D 1 BRIGHT A_SetScale(-0.65, -0.65)
			EXPU E 1 BRIGHT A_SetScale(-0.8, -0.8)
			EXPU F 1 BRIGHT A_SetScale(-1.0, -1.0)
			EXPU G 1 BRIGHT A_SetScale(-1.2, -1.2)
			Stop
		
	}
}

ACTOR GoldenTinyFlameTrail: ExplosionFlames
{
	Scale 0.5
	States
	{
		Spawn:
			TNT1 A 2
			TNT1 A 0 A_Jump(192, "Spawn2", "Spawn3", "Spawn4")
		Spawn1:	
			TNT1 A 0 
			EXPU C 1 BRIGHT A_SetScale(0.15, 0.15)
			EXPU D 1 BRIGHT A_SetScale(0.2, 0.2)
			EXPU E 1 BRIGHT A_SetScale(0.3, 0.3)
			EXPU F 1 BRIGHT A_SetScale(0.4, 0.4)
			EXPU G 1 BRIGHT A_SetScale(0.5, 0.5)
			Stop
		Spawn2:	
			TNT1 A 0
			EXPU C 1 BRIGHT A_SetScale(-0.15, 0.15)
			EXPU D 1 BRIGHT A_SetScale(-0.2, 0.2)
			EXPU E 1 BRIGHT A_SetScale(-0.3, 0.3)
			EXPU F 1 BRIGHT A_SetScale(-0.4, 0.4)
			EXPU G 1 BRIGHT A_SetScale(-0.5, 0.5)
			Stop
		Spawn3:	
			TNT1 A 0
			EXPU C 1 BRIGHT A_SetScale(0.15, -0.15)
			EXPU D 1 BRIGHT A_SetScale(0.2, -0.2)
			EXPU E 1 BRIGHT A_SetScale(0.3, -0.3)
			EXPU F 1 BRIGHT A_SetScale(0.4, -0.4)
			EXPU G 1 BRIGHT A_SetScale(0.5, -0.5)
			Stop
		Spawn4:	
			TNT1 A 0
			EXPU C 1 BRIGHT A_SetScale(-0.15, -0.15)
			EXPU D 1 BRIGHT A_SetScale(-0.2, -0.2)
			EXPU E 1 BRIGHT A_SetScale(-0.3, -0.3)
			EXPU F 1 BRIGHT A_SetScale(-0.4, -0.4)
			EXPU G 1 BRIGHT A_SetScale(-0.5, -0.5)
			Stop
		
	}
}

#include Cyber_Devastator.txt