Last weekend I DM'ed the fifth level of Dungeon Delve,Tomb of the Tiefling Empress, which features a selection of monsters with more different resistances and vulnerabilities than any other adventure I've seen to date. In addition to the usual damage types related to Undead creatures (radiant, necrotic, poison), my players had to think hard on how to use their fire and cold attacks. We also had the ideal party to show off these mechanics, as there were both a Seeker (who got frustrated by the uselessness of his poison attacks) and an Invoker (who ruled the day with Hand of Radiance and Invocation of Ice and Fire). There was a very satisfying moment, when the players managed to position their enemies so that they were devastated by their own damaging auras.
After the Delve was over (with most of the party knocked out, and the Elf Seeker puttign to good use his amazing mobility), I started thinking about resistances and vulnerabilities, and their effect on the game. The session had proved that these mechanics could serve to create fun challenges. However, it also confirmed my previous impressions about their effects being too extreme. It's not that you deal less damage against certain enemies and more against others - even the most humble of resistances (typically 5, at heroic tier) make attacks of the chosen element almost worthless. On the other hand, some attacks can deal more than double the usual amount because of vulnerabilities. And things only get worse when the damage comes in small packets, such as ongoing damage or auras.
I think resistances and vulnerabilities could be more interesting, without becoming irrelevant, if their effect was slightly subtler. I want a character to be able to use a power (say, one of their cool encounters or dailies) against a resistant enemy without completely wasting an action. Conversely, an at-will exploiting a vulnerability shouldn't be so good as to render encounters or dailies with different damage types pointless. So I've come up with a houserule, consisting on setting a cap for both resisted and vulnerated damage. It reads as follows:
Resist - Add: "The damage resisted from an enemy attack or an effect caused by an enemy can't be greater than half the original amount of damage dealt".
Vulnerable - Add: "The extra damage taken due to a vulnerability can't be greater than half the original amount of damage dealt. If multiple vulnerabilities apply, each one can cause damage up to this limit."
Although this ruling meets my objectives for most cases, we could go even further. Some damage types, and poison in particular, are really undesirable for players due to the fact that a huge number of monsters are Immune to them. Now, it's likely that you weren't familiar with the rules for Immunity (I wasn't). To put it bluntly, they are a mess. Against conditions, it more or less works as expected, preventing you from being affected by them. But then there's the Immunity to damage types, which prevents the damage but nothing else, and immunity to a series of keywords, which stops non-damaging effects without protecting against the actual damage. Finally, in case things weren't confusing enough, immunity to gaze (and gaze only) completely negates attacks with the keyword.
Since these Immunity rules are so lackluster, I changed my original idea of tweaking them a bit and have thought of a new, clearer definition. It may not be too rigorous, but I wanted attacks against immune creatures to deal some damage - again, half damage is a convenient amount. The protection against non-damaging effects can stay and, in fact, I like the idea of extending it to all kinds of immunity. So changing some functionality and adding some consistency, we are left with this:
Immune - A creature that is immune to a condition (such as dazed or petrified) or another specific effect (such as disease or forced movement) is not affected by it. A creature that is immune to a keyword is not affected by the nondamaging effects of a power that has that keyword, and only takes half damage from such a power.