[r162] Early doodad placement prevents building construction

Summary: I’m thinking this one should be easy to fix. I had been scratching my head as to why a lot of my buildings are abandoned halfway through. They’d build two or three out of the four+ walls and then stand around doing nothing. The status bar thingy would be constantly yellow, despite me not having resources laying around or anything else that would be using the pathfinder much. I noticed the scaffolding wouldn’t rise above 1 level on the affected walls, and then noticed my benches had already been placed, getting in the villagers’ way.

Steps to reproduce:

  1. Design Custom building
  2. Place walls
  3. Enter doodad placer
  4. Place floor doodad next to wall - In my case, I’d place a bench underneath some of my windows
  5. Build building

Expected results:
Wall is built, doodad is then placed after the window goes up.

Actual results:

Notice the bench placed underneath the window in the schematic:

Bench is placed before the wall is completed:

Notes:

  • Sorry for the crappy pics / change in angles. I hadn’t yet figured out what was causing the issue :smile:
  • Building construction resumes as planned once the doodad is (re)moved

Version: r162

EDIT/UPDATE:
So this can really get out of hand!


FIVE workers trapped inside the building, placing doodads when they should be fixing the roof!!!
Thankfully, I had another 5 workers to finish the building and release them

4 Likes

So the suggestion to fix it might be to add another stage to the building process?

Building stages:

  1. mine out floor, place floor, place columns
  2. build scaffolding and walls
  3. build roof
  4. remove scaffolding
  5. place doodad ghosts

Makes me wonder if it would be easy in code to simply delay the placement of the doodad ghosts until after the scaffolding is removed, instead of when the floor beneath the doodad is complete. It seems logical that delaying the placement until the end could be a simpler implementation.

2 Likes

Yup, I’m thinking delaying doodad placement would be the best option here, or at least prioritizing finishing the skeleton before doing anything inside.

1 Like

Can confirm that doodads are being placed in scaffolding in r166. The image shows lanterns placed in the scaffold. This halts progress and the only workaround is to remove the building.

And a crash when attempting to remove the building:
crash.dmp.txt (117.7 KB)
stonehearth.log (201.4 KB)

After reproducing the crash twice, It now just removes the walls with no doodad ghosts in them:

2 Likes

I feel like it should be impossible to place a doodad on a wall that is part of an otherwise incomplete building. Another way of saying that is, there should be a difference between a completed free standing wall and a completed wall in an incomplete building, such that doodads can be placed on completed walls if the completed wall is NOT part of an incomplete building.

1 Like