The idea of trading out immunities—at least where energy damage is concerned—for varying levels of resistance is one that’s been around for a while.
By itself, that’s no surprise. After all, what the d20 Systems calls “damage reduction” is itself an immunity-to-resistance changeover from how AD&D used to handle weapon damage. If a creature in AD&D required a +2 weapon to hit, for instance, then you weren’t going to inflict any damage at all if you hit it with a +1 longsword, regardless of how many bonuses you had.
The notion of treating energy damage the same way has been discussed across numerous message boards, blogs, and websites by everyone from GMs to professional game designers. But while there’s a lot of enthusiasm behind the idea, things tend to stall out when the discussion gets down to brass tacks:
How much energy resistance should immunities be replaced with?
Some suggestions are for static values, such as 30 points of resistance, 60 points, or even 100 or more points. Others eschew that in favor of a percentage reduction, e.g. trading fire immunity for ignoring 50% of fire damage. A few suggest tailoring the amount of resistance to each particular creature or option that offers immunity, though the sheer amount of work this would require tends to be enough to put all but the most dedicated of enthusiasts off.
To that end, here’s a simple guideline for trading out energy immunities for resistances in monster listings:
A creature with innate energy immunity instead has resistance to that energy type equal to twice their natural Hit Dice.
So under this paradigm (in D&D 3.5), a fire giant is going to have fire resistance 30, a balor demon will have fire resistance 40, and a great red wyrm will have fire resistance 80.
For the above, a 10d6 fireball (average 35 points of damage) will maybe singe a fire giant slightly (if he fails his saving throw), but do nothing to a balor unless you Maximize or Empower it, and you’ll need to do both of those together to have any chance whatsoever of injuring the great red wyrm this way. Which seems about right given the relative power of those enemies.
So what about other sources of energy immunity? After all, PCs can gain immunity too, and they (usually) don’t have natural Hit Dice. For that, we have the following corollary:
Energy immunity gained from class levels instead grants resistance to that energy type equal to twice a creature’s level in that class. If this immunity comes from a prestige class, it instead grants resistance equal to twice their level in that prestige class plus a single base class they possess.
For example, a human sorcerer 8/bard 2/dragon disciple (blue) 10 will have gained the dragon apotheosis ability from his 10th level of dragon disciple, which would normally make him immune to electricity damage. Under this system, he instead picks one of his base classes (opting to take the sorcerer), adds his levels in that to his levels in dragon disciple (for a total of 18), and doubles the result, giving him electricity resistance 36 (the same as a young adult blue dragon).
Of course, there’s also templates such as half-dragons to consider. So let’s come up with a rule for them too:
If a creature gains energy immunity from a template, it instead gains energy resistance equal to twice its natural Hit Dice or from twice its levels in a single class (or a single base class and a single prestige class, as outlined above), whichever is higher.
So a griffon with the half-dragon (white) template applied would have cold resistance 14 (i.e. twice its 7 natural Hit Dice). Whereas a lizardfolk with the half-dragon (black) template would start out with acid resistance 4 (for its 2 natural Hit Dice), with that value going up if it ever gained three or more levels in a class.
Finally, we want to deal with any instance of spells or magic items granting energy immunity:
If a spell or magic item grants energy immunity, it instead grants energy resistance equal to twice its caster level.
This one doesn’t come up too often, as there are fewer spells and magic items that offer total immunity to a particular energy type. But for something like a ring of energy immunity, this lets us set its value (e.g. resistance 40, since its caster level is 20).
Finally, these values follow the normal rules for having energy resistances from two or more sources (i.e. two different sources of resistance to the same energy will overlap, rather than stacking). So an ice mephit (having cold resistance 6 from its 3 natural Hit Dice) that receives a resist energy spell keyed to cold from a 5th-level spellcaster will have cold resistance 10, not cold resistance 16.
Of course, none of this deals with things like immunity to poison or mind-affecting effects, but those either have smaller damage ranges (e.g. poison) or don’t make use of numerical damage values (e.g. mind-affecting effects), so we can overlook them here.