dont bother checking to see if they are damaged, simply repair them on each script loop
I use the following script on all my maps for the likes of ammo crates etc
Init.sqs entry
damconarrayA=[bu1.bu2.bu3.bu4.bu5]
damconarrayB=[bu6,bu7,bu8,bu9,bu10]
damconarrayC=[bu11,bu12,bu13, bu14, bu15]
[]exec "Damcon.sqs"
-------------------------------------------------------------------------------------------------------------------
If there are a lot of objects that you need kept in a good state of repair then create more Damconarrays
__________________________________________________________________________
then the script itself
;;Damcon.sqs
#START
?(Time>=Param1):exit
~3
{_x Setdammage 0} forEach damconarrayA
~3
{_x Setdammage 0} forEach damconarrayB
~3
{_x Setdammage 0} forEach damconarrayC
goto "START"
#End
Exit
use whatever ~wait period you want between the setdammage statements, i wouldnt run it any faster than ~1, especially if you have a lot of other scripts running