Ah... so the long answer is yes, there is currently one weird exception, but it's not one that's popular as a weapon?
Also, looking at the line you suggested putting in for melee weapon detection... is that right? It seems like the only switch(es) you can put it into in build_skillz would be either the damage one, or the "regular damage and still evaluating" one. Neither one should have its damage calculation skipped if it's not a moxie weapon, especially because depending on where that's placed, it would override the existing check.
But the underlying problem is that you want it to not be a moxie weapon to continue... and the "continue" is actually the STOP LOOKING AT THIS, not the thumbs-up in for-loops. I think what you actually want is to add
Code:
case 2003: case 2005: case 2015: case 2103: case 2105: case 2106: case 2107: if (weapon_type(equipped_item($slot[weapon])) == $stat[Moxie]) continue;
into the line just above the FIRST default.
By not having a break, it will bleed its consideration into the next case type, so that would be (the first) default. We could technically put it into any row below the spring raindrop attack in the first switch, or below the harpoon line in the second switch, but having it there reduces how much useless consideration it makes.
By having it continue on moxie weapons, it skips adding the skill as a valid option if you're using a moxie weapon, which is, I believe, the goal. If, for some reason, you're using the Wand of Nagamar as your weapon, it will still be wrong. If, because they can, another ranged mysticality IotM (or for that matter, ranged mysticality weapon of any sort) is added or converted, we'll probably need a proxy value for ranged/melee weapons. Probably melee, since that's the maximizer string...
Regarding staves... yeah, seems weird that apparently, what mages do with their magical staves is... bash people with them. Forget about spells, what do wizards do? Hulk Smash!