How would I solve your castle wall problem....
It really does depend on the design of the castle walls - if I couldn't do maths collision (where you manually code your collision zones - I use variable centre locations or 'hot spots' to allow me to use the same code to detect multiple castles) because of a complex object shape I would be tempted to use .bsp too.
If there are few other .bsp objects and you are using a matrix or plain for the rest of your world, then loading in each section of the castle as a .bsp might not be too slow - that would allow you to delete the bsp and reload a damaged section, however...
From what I can tell, delete bsp seems to remove the entire bsp map from memory and not just a loaded cell - it's either all or nothing - so it's likely you'll have to reload the other parts of the castle too.
You might have some sucess with polygonal collision, but you'll need very few polygons on your object to have it work well.
Create a 'collision object' which is a single polygon hidden object and position this where the player is - now as you move use maths collision to detect when you are close to one of your castle part objects - when this is true you could then check the hidden single polygon to see if it is colliding with the wall - if it is move the hidden poly up and check again (steps) and failing that, prevent the player from moving or calculate sliding data.
Pneumatic Dryll, Outrageous epic cleric of EQ/Xev
God made the world in 7 days, but we're still waiting for the patch.