//SpawnProjectile is broken in Zandronum, but this does the trick
ACTOR LR_DoDistanceCheck : CustomInventory
{
	+INVENTORY.AUTOACTIVATE
	states
	{
	Use:
		//TNT1 A 0 A_FireCustomMissile("DistanceCheckerCeiling", args[4], FALSE, 0, 8, FPF_NOAUTOAIM)
		TNT1 A 0 A_SetArg(4, 0)
		Goto DistLoop //just in case, CustomInventory is a bit weird sometimes
	DistLoop:
		TNT1 A 0 A_CustomMissile("DistanceCheckerCeiling", 0, 0, args[4], CMF_AIMDIRECTION, 0)
		TNT1 A 0 A_SetArg(4, args[4]+45)
		TNT1 A 0 A_JumpIf(args[4] < 360, "DistLoop")
		Stop
	}
}

ACTOR DistanceCheckerCeiling : FastProjectile
{
	Speed 25
	Radius 16
	Height 40
	Damage (0)
	Projectile

	+CLIENTSIDEONLY
	+CEILINGHUGGER
	+SKYEXPLODE
	+THRUACTORS
	-ACTIVATEIMPACT
	-ACTIVATEPCROSS

	States
	{
  		Spawn:
			TNT1 A 1
			Loop
		Death:
			// duration must not be too short, otherwise script reports wrong values
			TNT1 A 3 ACS_NamedExecuteAlways("StoreDistanceCheckResult", 0, ceilingz-floorz)
			Stop
	}
}
