If you go to a physics-based sound system, I would recommend using a unitless sound power factor, F=(sound at 1m in dB)^10, rather than dB, for everything except for output to the player, so that it can be added, subtracted, and multiplied without jumping through logarithm hoops. Then you can just have:
Sound_n = (1+X)F/(r^2+(k*z)^2)
Total Sound = sum of all Sound_n’s being heard in a given move
Sound_dB = log(total Sound)
where
X is a circumstance-determined fudge factor to approximate reverberation and damping effects using a brief if/and/else block instead of a mountain of acoustic engineer code.
r is the distance to the source in tiles, plus 1 (for the tile you’re standing on)
z is the distance to the source in z-levels, plus 1
k is a factor for converting z-levels to tile-equivalents