-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Roof tiles not falling down #32260
Comments
Do you have z-levels on? |
I believe roofs falling down is limited to z-levels only. Probably for performance reasons. |
That world has z-levels enabled, though? |
Your first post says it doesn't happen, your second post says "it does indeed occur with z-levels on", so I assumed you didn't have z-levels on for the first post. |
I don't know if that first world had z-levels on (it's not mine, after all). I could check without z-levels. |
That first world had z-levels on, now that I've asked the guy. |
Fixes CleverRaven#34752 The solution to CleverRaven#32260 included in CleverRaven#34694 had three serious problems: 1. smashing a random floor tile would cause scores of nearby floor tiles to collapse, possibly hundreds across multiple z-levels. 2. any vehicle that was above a collapsing floor would get bashed into scrap metal 3. despite the collapse of all these floors and walls, the floors on the next z-level up would remain. So there was very weird behavior that didn't actually resolve the issue of floating floors after the underlying level collapsed. The solution is to substantially rewrite collapse_at(), as so: 1. collapse_at() is only called from bash_furn_ter() when a wall supporting a roof collapses. 2. when a wall collapses, repeat the collapse check for any walls on the z-level above it. 3. when a tile that is supporting a roof collapses, turn the tile above it into open_air with no furniture but don't destroy it (which might destroy any vehicles - unsupported vehicles should fall and be destroyed that way). Also, perform the collapse_at() checks for adjacent tiles during bash_furn_ter() - collapse_at() already checks those adjacent tiles, so that was doubling their chances of collapse. collapse_check() now checks the terrain below the current terrain. It is still possible for a wall supported on several sides but not supported by anything below to not collapse, but it's less likely.
Fixes CleverRaven#34752 The solution to CleverRaven#32260 included in CleverRaven#34694 had three serious problems: 1. smashing a random floor tile would cause scores of nearby floor tiles to collapse, possibly hundreds across multiple z-levels. 2. any vehicle that was above a collapsing floor would get bashed into scrap metal 3. despite the collapse of all these floors and walls, the floors on the next z-level up would remain. So there was very weird behavior that didn't actually resolve the issue of floating floors after the underlying level collapsed. The solution is to substantially rewrite collapse_at(), as so: 1. collapse_at() is only called from bash_furn_ter() when a wall supporting a roof collapses. 2. when a wall collapses, repeat the collapse check for any walls on the z-level above it. 3. when a tile that is supporting a roof collapses, turn the tile above it into open_air with no furniture but don't destroy it (which might destroy any vehicles - unsupported vehicles should fall and be destroyed that way). Also, perform the collapse_at() checks for adjacent tiles during bash_furn_ter() - collapse_at() already checks those adjacent tiles, so that was doubling their chances of collapse. collapse_check() now checks the terrain below the current terrain. It is still possible for a wall supported on several sides but not supported by anything below to not collapse, but it's less likely.
Fixes CleverRaven#34752 The solution to CleverRaven#32260 included in CleverRaven#34694 had three serious problems: 1. smashing a random floor tile would cause scores of nearby floor tiles to collapse, possibly hundreds across multiple z-levels. 2. any vehicle that was above a collapsing floor would get bashed into scrap metal 3. despite the collapse of all these floors and walls, the floors on the next z-level up would remain. So there was very weird behavior that didn't actually resolve the issue of floating floors after the underlying level collapsed. The solution is to substantially rewrite collapse_at(), as so: 1. collapse_at() is only called from bash_furn_ter() when a wall supporting a roof collapses. 2. when a wall collapses, repeat the collapse check for any walls on the z-level above it. 3. when a tile that is supporting a roof collapses, turn the tile above it into open_air with no furniture but don't destroy it (which might destroy any vehicles - unsupported vehicles should fall and be destroyed that way). Also, perform the collapse_at() checks for adjacent tiles during bash_furn_ter() - collapse_at() already checks those adjacent tiles, so that was doubling their chances of collapse. collapse_check() now checks the terrain below the current terrain. It is still possible for a wall supported on several sides but not supported by anything below to not collapse, but it's less likely.
Fixes #34752 The solution to #32260 included in #34694 had three serious problems: 1. smashing a random floor tile would cause scores of nearby floor tiles to collapse, possibly hundreds across multiple z-levels. 2. any vehicle that was above a collapsing floor would get bashed into scrap metal 3. despite the collapse of all these floors and walls, the floors on the next z-level up would remain. So there was very weird behavior that didn't actually resolve the issue of floating floors after the underlying level collapsed. The solution is to substantially rewrite collapse_at(), as so: 1. collapse_at() is only called from bash_furn_ter() when a wall supporting a roof collapses. 2. when a wall collapses, repeat the collapse check for any walls on the z-level above it. 3. when a tile that is supporting a roof collapses, turn the tile above it into open_air with no furniture but don't destroy it (which might destroy any vehicles - unsupported vehicles should fall and be destroyed that way). Also, perform the collapse_at() checks for adjacent tiles during bash_furn_ter() - collapse_at() already checks those adjacent tiles, so that was doubling their chances of collapse. collapse_check() now checks the terrain below the current terrain. It is still possible for a wall supported on several sides but not supported by anything below to not collapse, but it's less likely.
…4866) Fixes CleverRaven#34752 The solution to CleverRaven#32260 included in CleverRaven#34694 had three serious problems: 1. smashing a random floor tile would cause scores of nearby floor tiles to collapse, possibly hundreds across multiple z-levels. 2. any vehicle that was above a collapsing floor would get bashed into scrap metal 3. despite the collapse of all these floors and walls, the floors on the next z-level up would remain. So there was very weird behavior that didn't actually resolve the issue of floating floors after the underlying level collapsed. The solution is to substantially rewrite collapse_at(), as so: 1. collapse_at() is only called from bash_furn_ter() when a wall supporting a roof collapses. 2. when a wall collapses, repeat the collapse check for any walls on the z-level above it. 3. when a tile that is supporting a roof collapses, turn the tile above it into open_air with no furniture but don't destroy it (which might destroy any vehicles - unsupported vehicles should fall and be destroyed that way). Also, perform the collapse_at() checks for adjacent tiles during bash_furn_ter() - collapse_at() already checks those adjacent tiles, so that was doubling their chances of collapse. collapse_check() now checks the terrain below the current terrain. It is still possible for a wall supported on several sides but not supported by anything below to not collapse, but it's less likely.
…4866) Fixes CleverRaven#34752 The solution to CleverRaven#32260 included in CleverRaven#34694 had three serious problems: 1. smashing a random floor tile would cause scores of nearby floor tiles to collapse, possibly hundreds across multiple z-levels. 2. any vehicle that was above a collapsing floor would get bashed into scrap metal 3. despite the collapse of all these floors and walls, the floors on the next z-level up would remain. So there was very weird behavior that didn't actually resolve the issue of floating floors after the underlying level collapsed. The solution is to substantially rewrite collapse_at(), as so: 1. collapse_at() is only called from bash_furn_ter() when a wall supporting a roof collapses. 2. when a wall collapses, repeat the collapse check for any walls on the z-level above it. 3. when a tile that is supporting a roof collapses, turn the tile above it into open_air with no furniture but don't destroy it (which might destroy any vehicles - unsupported vehicles should fall and be destroyed that way). Also, perform the collapse_at() checks for adjacent tiles during bash_furn_ter() - collapse_at() already checks those adjacent tiles, so that was doubling their chances of collapse. collapse_check() now checks the terrain below the current terrain. It is still possible for a wall supported on several sides but not supported by anything below to not collapse, but it's less likely.
Describe the bug
When burning down a building, some tiles above it are kept there. This is unrealistic.
Steps To Reproduce
Steps to reproduce the behavior:
Expected behavior
Whenever a building is burned down, all the tiles above it should fall down as well.
Screenshots
Additional context
We need realism to be applied to all roofs so they don't defy gravity!
The text was updated successfully, but these errors were encountered: