diff --git a/zscript/ammoled.zsc b/zscript/ammoled.zsc index 0c201df..6a94051 100644 --- a/zscript/ammoled.zsc +++ b/zscript/ammoled.zsc @@ -25,13 +25,14 @@ Class PulseGunLED : Actor roll = 180; angle = 180; double halfstretch = (1.+level.pixelstretch)/2.; - if ( !base ) base = Spawn("AmmoLEDScreen",(PULSELEDBASE,PULSELEDBASE-128.,pos.z+64.*halfstretch-GetFloorTerrain().footclip*16.)); + double zofs = (ceilingz>floorz)?CurSector.GetFloorTerrain(0).footclip*16.:0.; + if ( !base ) base = Spawn("AmmoLEDScreen",(PULSELEDBASE,PULSELEDBASE-128.,pos.z+64.*halfstretch-zofs)); for ( int i=0; i<3; i++ ) { if ( !digits[i] ) - digits[i] = Spawn("LEDFont",(PULSELEDBASE+1.,PULSELEDBASE-72.+48.*i,pos.z+50.*halfstretch-GetFloorTerrain().footclip*16.)); + digits[i] = Spawn("LEDFont",(PULSELEDBASE+1.,PULSELEDBASE-72.+48.*i,pos.z+50.*halfstretch-zofs)); } - if ( !bar ) bar = Spawn("AmmoCountBar",(PULSELEDBASE+1.,PULSELEDBASE-98.,pos.z-26.*halfstretch-GetFloorTerrain().footclip*16.)); + if ( !bar ) bar = Spawn("AmmoCountBar",(PULSELEDBASE+1.,PULSELEDBASE-98.,pos.z-26.*halfstretch-zofs)); } override void Tick() { @@ -80,11 +81,12 @@ Class FlakCannonLED : Actor roll = 180; angle = 180; double halfstretch = (1.+level.pixelstretch)/2.; - if ( !base ) base = Spawn("AmmoLEDScreen",(FLAKLEDBASE,FLAKLEDBASE-64.,floorz+32.*halfstretch-GetFloorTerrain().footclip*16.)); + double zofs = (ceilingz>floorz)?CurSector.GetFloorTerrain(0).footclip*16.:0.; + if ( !base ) base = Spawn("AmmoLEDScreen",(FLAKLEDBASE,FLAKLEDBASE-64.,floorz+32.*halfstretch-zofs)); for ( int i=0; i<3; i++ ) { if ( !digits[i] ) - digits[i] = Spawn("LEDFont",(FLAKLEDBASE+1.,FLAKLEDBASE-30.+20.*i,floorz+16.*halfstretch-GetFloorTerrain().footclip*16.)); + digits[i] = Spawn("LEDFont",(FLAKLEDBASE+1.,FLAKLEDBASE-30.+20.*i,floorz+16.*halfstretch-zofs); } } override void Tick() @@ -123,11 +125,12 @@ Class MinigunLED : Actor roll = 180; angle = 180; double halfstretch = (1.+level.pixelstretch)/2.; - if ( !base ) base = Spawn("AmmoLEDScreen",(MINILEDBASE,MINILEDBASE-32.,floorz+32.*halfstretch-GetFloorTerrain().footclip*16.)); + double zofs = (ceilingz>floorz)?CurSector.GetFloorTerrain(0).footclip*16.:0.; + if ( !base ) base = Spawn("AmmoLEDScreen",(MINILEDBASE,MINILEDBASE-32.,floorz+32.*halfstretch-zofs)); for ( int i=0; i<3; i++ ) { if ( !digits[i] ) - digits[i] = Spawn("LEDFont",(MINILEDBASE+1.,MINILEDBASE-30.+20.*i,floorz+16.*halfstretch-GetFloorTerrain().footclip*16.)); + digits[i] = Spawn("LEDFont",(MINILEDBASE+1.,MINILEDBASE-30.+20.*i,floorz+16.*halfstretch-zofs)); } } override void Tick() @@ -166,11 +169,12 @@ Class UTRocketLauncherLED : Actor roll = 180; angle = 180; double halfstretch = (1.+level.pixelstretch)/2.; - if ( !base ) base = Spawn("AmmoLEDScreen",(ROCKETLEDBASE,ROCKETLEDBASE-32.,floorz+32.*halfstretch-GetFloorTerrain().footclip*16.)); + double zofs = (ceilingz>floorz)?CurSector.GetFloorTerrain(0).footclip*16.:0.; + if ( !base ) base = Spawn("AmmoLEDScreen",(ROCKETLEDBASE,ROCKETLEDBASE-32.,floorz+32.*halfstretch-zofs)); for ( int i=0; i<3; i++ ) { if ( !digits[i] ) - digits[i] = Spawn("LEDFont",(ROCKETLEDBASE+1.,ROCKETLEDBASE-30.+20.*i,floorz+16.*halfstretch-GetFloorTerrain().footclip*16.)); + digits[i] = Spawn("LEDFont",(ROCKETLEDBASE+1.,ROCKETLEDBASE-30.+20.*i,floorz+16.*halfstretch-zofs)); } } override void Tick() @@ -195,7 +199,7 @@ Class LEDFont : Actor StencilColor "FF 00 00"; Radius .1; Height 0.; - RenderRadius 256; + RenderRadius 131072; +NOBLOCKMAP; +NOGRAVITY; +NOINTERACTION; @@ -218,7 +222,7 @@ Class AmmoCountBar : Actor { Radius .1; Height 0.; - RenderRadius 256; + RenderRadius 131072; +NOBLOCKMAP; +NOGRAVITY; +NOINTERACTION; @@ -239,7 +243,7 @@ Class AmmoLEDScreen : Actor { Radius .1; Height 0.; - RenderRadius 256; + RenderRadius 131072; +NOBLOCKMAP; +NOGRAVITY; +NOINTERACTION;