Here, I fixed it just now. It's back to the way it was, by default, but I hardly changed anything.
For the laymen, any weaon whose table entry includes "pierce shields" will pierce shields, just like the classical beams. Beams themselves pierce shields by default now, unless their table entry includes a "no pierce shields" flag. On the other hand, using the command-line argument -nobeampierce overrides the entire thing and beams will not ever pierce shields. This is for those who will use it as a difficulty setting.
For coders (Bobboau in particular), the way I did that was to add the pierce flag at the same time as the beam flag. If "beam" was found in the flag list, not only was WIF_BEAM added but WIF2_PIERCE was added as well. Where you added the test for "pierce shields" I added a test for "no pierce shields", and if that came true, I unset the pierce flag. Then at the end of all that, I had the command line thing override it if necessary.