// TIMED C4
actor TimedC4 : InventoryItem {
	Tag "Timed C4"
	Inventory.MaxAmount 4
	Inventory.Icon "TMC4ICON"
	states {
	Use:
		TNT1 A 0 A_JumpIfInventory ("IsMech", 1, "Use.Mech")
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Failure")
		TNT1 A 0 A_JumpIfInventory ("PowerBerserk", 1, "Failure")
		TNT1 A 0 A_JumpIfInventory ("StealthMode", 1, "Destealth")
		TNT1 A 0 A_PlaySound ("c4/use", CHAN_AUTO)
		TNT1 A 0 A_JumpIfInventory ("EnhancedTimedC4", 1, "UseEnhanced")
		TNT1 A 0 A_JumpIfInventory ("IsBlue", 1, "UseBlue")
		TNT1 A 0 A_FireCustomMissile ("TimedC4Thrown", 0, 0)
		stop
	UseEnhanced:
		TNT1 A 0 A_JumpIfInventory ("IsBlue", 1, "UseEnhancedBlue")
		TNT1 A 0 A_FireCustomMissile ("TimedC4ThrownE", 0, 0)
		stop
	UseBlue:
		TNT1 A 0 A_FireCustomMissile ("TimedC4ThrownBlue", 0, 0)
		stop
	UseEnhancedBlue:
		TNT1 A 0 A_FireCustomMissile ("TimedC4ThrownEBlue", 0, 0)
		stop
	}
}

actor TimedC4Thrown {
	PROJECTILE
	-NOGRAVITY
	+THRUGHOST
	Radius 6
	Height 8
	Speed 30
	Damage 0
	Gravity 0.5
	Scale 0.114
	Translation "112:127=224:246"
	States {
	Spawn:
		TC4T R 2 A_JumpIf (waterlevel > 1, "Water")
		wait
	Death:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("TimedC4Armed", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
		TNT1 A 4
		stop
	Water:
		TC4T R 35 A_PlaySound("c4/disarm")
		TC4T R 1 A_Fadeout(0.1) 
		Wait
	}
}

actor TimedC4ThrownBlue : TimedC4Thrown {
	Translation "112:127=192:207"
	states {
	Spawn:
		TC4T B 2 A_JumpIf (waterlevel > 1, "Water")
		wait
	Death:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("TimedC4ArmedBlue", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
		TNT1 A 4
		stop
	Water:
		TC4T B 35 A_PlaySound("c4/disarm")
		TC4T B 1 A_Fadeout(0.1) 
		Wait
	}
}

actor TimedC4Armed {
	+NOEXTREMEDEATH
	+NOGRAVITY
	+SHOOTABLE
	+THRUGHOST
	+NOBLOOD
	+NOTARGETSWITCH
	Radius 6
	Height 8
	Scale 0.114
	Health 500
	Mass 0x7FFFFFFF
	DamageType "Explosion"
	DamageFactor "Fist", 0.0 
	DamageFactor "Fire", 0.0
	DamageFactor "Bullet", 0.0
	DamageFactor "Rifle", 0.0
	DamageFactor "Explosion", 0.0
	DamageFactor "Terrorist", 0.0
	DamageFactor "Suicide", 0.0
	DamageFactor "Chemical", 0.0
	DamageFactor "Normal", 0.0
	DamageFactor "Energy", 0.0
	DamageFactor "Repair", 0.0
	DamageFactor "ChemicalSpecial", 0.0
	DamageFactor "AntiArmor", 0.0
	DamageFactor "Time", 0.0
	DamageFactor "Disarm", 1.2
	DamageFactor "MassDriver", 0.0
	DamageFactor "Mine", 0.0
	DamageFactor "Mechstomp", 0.0
	DamageFactor "Monster", 0.0
	
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf (waterlevel > 1, "Death.Disarm")
		TC4T R 35 Thing_SetSpecial (0, 226, 328, 0, 1)
		goto Idle
	Idle:
		"----" RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR 18 A_PlaySound ("c4/beep")
		"----" R 0 A_JumpIf (waterlevel > 1, "Death.Disarm")
		"----" RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR 18 A_PlaySound ("c4/beep")
		"----" R 0 A_PlaySound ("c4/detonate", CHAN_WEAPON)
		"----" R 50 A_PlaySound ("c4/detonate")
		"----" R 0 A_Die
	Death:
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 A_SpawnItemEx ("ExplosionMainLarge")
		TNT1 A 0 A_PlaySound ("weapons/rocklx")
		TNT1 A 0 A_PlaySound ("weapons/rocklx", CHAN_WEAPON)
		TNT1 AAAA 0 A_SpawnItemEx ("FlameWallDecay", random(-48,48), random(-48,48), 4)
		TNT1 A 0 bright A_Explode (400, 256)
		TNT1 A 0 bright A_Explode (700, 64)
		TNT1 A 0 bright A_Explode (700, 128)
		TNT1 A 0 bright A_Explode (700, 256)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 bright A_Explode (5, 16)
		stop
	Death.Disarm:
		TC4T R 35 A_PlaySound ("c4/disarm")
		TC4T R 1 A_Fadeout (0.1) 
		wait
	}
}

actor TimedC4ArmedBlue : TimedC4Armed {
	states {
	Spawn:
		TC4T BB 0 A_JumpIf (waterlevel > 1, "Death.Disarm")
		TC4T B 35 Thing_SetSpecial (0, 226, 328, 0, 0)
		goto Idle
	Death.Disarm:  
		TC4T B 35 A_PlaySound ("c4/disarm")
		TC4T B 1 A_Fadeout (0.1) 
		wait
	}
}

actor TimedC4Count : Inventory {inventory.maxamount 4}
actor EnhancedTimedC4 : Inventory {}

actor TimedC4ThrownE : TimedC4Thrown {
	Translation "1:32=16:32", "112:127=224:246"
	health 500
	states {
	Death:
		TC4T A 0
		TC4T A 0 A_SpawnItemEx ("TimedC4ArmedE", 0,0,0, 0,0,0, 0,
			SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
		TNT1 A 4 bright 
		stop
	}
}

actor TimedC4ArmedE : TimedC4Armed {
	Health 700
	States {
	Death:
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 A_SpawnItemEx("ExplosionMainLarge")
		TNT1 A 0 A_PlaySound("weapons/rocklx")
		TNT1 A 0 A_PlayWeaponSound("weapons/rocklx")
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("FlameWallDecay", random(-64,64), random(-64,64), 4, 0, 0, 0, 0, 0, 0)
		TNT1 A 0 A_Explode(500,256)
		TNT1 A 0 A_Explode(800,64)
		TNT1 A 0 A_Explode(800,128)
		TNT1 A 0 A_Explode(800,256)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_Explode(5,16)
		TNT1 A 4
		stop
	}
}

actor TimedC4ThrownEBlue : TimedC4ThrownBlue {
	Translation "1:39=16:39", "112:127=192:207"
	Health 500
	States {
	Death:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("TimedC4ArmedEBlue", 0,0,0, 0,0,0, 0,
			SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
		TNT1 A 4
		stop
	}
}

actor TimedC4ArmedEBlue : TimedC4ArmedBlue {
	States {
	Death:
		TC4T B 0 A_NoBlocking
		TNT1 A 0 A_SpawnItemEx("ExplosionMainLarge")
		TC4T B 0 A_PlaySound("weapons/rocklx")
		TC4T B 0 A_PlayWeaponSound("weapons/rocklx")
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("FlameWallDecay", random(-64,64), random(-64,64), 4, 0, 0, 0, 0, 0, 0)
		TNT1 A 0 A_Explode(500,256)
		TNT1 A 0 A_Explode(800,64)
		TNT1 A 0 A_Explode(800,128)
		TNT1 A 0 A_Explode(800,256)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_Explode(5,16)
		TNT1 A 4
		stop
	}
}
