I want to make a report on the add_spatter:
It seems to check the item for covered materials, and does not cover it again with the same one. So far so good. All other materials are ok for coating, so a weapon coated with "poison1" can still be coated with "poison2". That leads to immense gameplay/balance issues, as soon as several poisons are introduced. I tried to fix it with adding the not_improved tag to the reaction, and then improving the weapon in the same reaction that coats it with poison. This way every weapon that is coated would be impossible to be used in another coating reaction. The problem is that dfhack automatically adds the improvement to the weapon as a coating, instead of an improvement. This way the weapon will not be improved, and is still a valid item for another poison.
It would be great if a coated item would either be illegal to be used in any coating reaction, OR if the new coating replaces the old one. I personally would prefer the first, because the second would make micromanagement in fortress mode obviously very difficult.
Another solution would be to check the weapon coating for reaction_class, but from what I have been seeing in testing, it does use the material. One could give all poison coating materials an additional reaction_class, to avoid multiple coatings then.