OK, I have looked at this and it is quite convoluted.
Adding (extra) support for this would require some bigger changes, which I don't want to do, so I will just describe the existing state as I understand it and propose how to possibly un-hardcode it.
There IS already support for extinguishing fire on tiles.
If the fire (resp. its associated smoke) is not "too big", you can extinguish it using smoke.
Step by step:
1. Flamethrower (or anything else) sets a tile on fire. Based on several things the fire value (which represents also turns to be on fire at the same time) will be set to something bigger than zero
2. Based on some other stuff (e.g. flammability of objects on the tile), the tile will ALSO be set on smoke (value between 1 and 12)
3. Now fire extinguisher hits the tile... some technical stuff will be checked, but most importantly it will also check how bad the tile is smoking already
--> if it is already smoking too much (value 10 or more) NOTHING will happen
--> if it is not smoking too much (value 9 or less), it will extinguish fire and also set tile on smoke
I guess you already noticed, that in case a flamethrower set the tile on big fire and big smoke (10, 11 or 12), then extinguishing it will not work for 3, 2 or 1 turn respectively.
And now the proposals:
a/ I can either move the fire extinguishing before the "am I smoking too much already?" check and make it all the time
b/ or un-hardcode the threshold so that you can mod it to something bigger than 10, so that the "do nothing" option will never trigger
I don't have any strong feelings about this, probably option B is better, because that way it won't break the vanilla behavior (until you mod it).
PS: some suggestions for the new threshold:
threshold=13... everything that was set on fire&smoke by fire can be extinguished
threshold=16... everything that was set on smoke by smoke and then on fire by fire can be extinguished... basically everything can be extinguished