This falling through stairs effect is still apparent after patch 2. If you try to climb a set of stairs from straight on, it works fine, but if you try to climb those same stairs at a sharp angle you will fall through the BSP. Note, this effect does not happen if you don't implement any sort of gravity (you climb the stairs from any angle with no problem), but stairs without gravity are less than useful as you can't go down them. Below is some basic code (copied and slightly modified from a post by haggisman, I have some code of my own but this code is much cleaner and shorter). Also a link to a .bsp file that has some stairs
http://www.angelfire.com/trek/farwalk/clip2.bsp
http://www.angelfire.com/trek/farwalk/clip2.bsp
Rem Project: clip
Rem Created: 10/24/2002 8:22:53 AM
Rem ***** Main Source File *****
Rem Project: BSP check
Rem Created: 20/10/2002 17:40:11
Rem ***** Main Source File *****
sync on : sync rate 60 : hide mouse
rem set window on
set window size 200,200
rem setup camera
set camera range 0.1,50000
position camera 0, 8, 0
rem setup guide object
make object cube 1, 0.1
position object 1, 0, 8, 0
hide object 1
rem setup bsp
Text 20,20,"Loading BSP File..."
load bsp "","clip2.bsp"
set bsp object collision 1, 1, 0.5, 0
set bsp object Collision radius 1, 1, 0.4, 1.3, 0.4
set bsp collision threshhold 1, 0.0
rem main loop
do
rem mouselook
yrotate camera 0, camera angle y(0)+ mousemovex()
xrotate camera 0, camera angle x(0)+ mousemovey()
yrotate object 1, camera angle y(0)
rem control movement
SF#=(60.0/screen fps())
if upkey()=1 then move object 1, 0.3*SF#
if downkey()=1 then move object 1, -0.2*SF#
if leftkey()=1 then move object left 1, 0.15*SF#
if rightkey()=1 then move object right 1, 0.15*SF#
if mouseclick()=1 then m#=-0.4 else m#=0.2
height#=1.5
position object 1, object position x(1), object position y(1)-m#, object position z(1)
position camera 0, object position x(1), object position y(1)+height#, object position z(1)
text 10, 10, "FPS "+str$(screen fps())
sync
loop
<<When an object moves directly at a face (ie. wall) of a BSP, DBP correctly detects it as a collision hit (assuming collision threshold and other settings have been done correctly)
However if the user travels at an acute angle (eg: 30 degrees or less) towards a surface, DBPro does not detect a hit and the result is that the user will fall through the floor. This mostly seems to affect places such as stairs where the next level up is not very high and so instead of stepping up when going an an acute angle at the surface, the player plumets through. >>