I think that’s an ok approach, was maybe going to go this way myself if I got around to it.
Implementation-wise, you could just add a std::map<point, int> that stores “damage to furniture or terrain at x,y”.
Or an array of int or two for that matter, but that seems a bit wasteful.
The temporary nature would rely on chunk loading, when map chunks are written to disk, you just wouldn’t write this damage data out, so on load it will have reset.