Make an array up with all the object names that you need to have kept in a constant state of repair
eg
damcon = [Ac1,Ac2,Ac3,Ac4]
then create a looping script
#start
~3
{_x Setdammage 0} forEach damcon
goto "START"
and have it executed from the init.sqs
no need to check the damage state, simply repair on each loop regardless
Ref the stachel charges, it may be that a hit event cannot be triggered by a satchel charge
easy to check, instead of setting damage 0, simply have the event handler post a hint message on screen, then set a satchel charge off, if it doesnt post the hint, but it does for say an rpg round, then you know why it isnt working
you could also add the event handler killed to the crate instead