Month: May 2016


It takes 2k xp for a fighter to get to level 2.  If you take a common enemy at that level, a hobgoblin worth 35 xp, that fighter would have to kill 58 of them.  Now let’s average that out for a generic party of 6:  330 hobgoblins to kill for them all to get to level 2.  At an average encounter size of ~6 hobs, that’s 55 battles.  Even if you mix that up with the other low-level creatures like gibberlings, bandits, and kobolds, those things are really only going to increase the number of trash battles.  Where the most xp gains come from are “bosses” and quests, the latter sometimes worth more than all of the battles leading up to their conclusion.  Even the simplest of fetch quests are considerably more profitable xp-wise than combat.

What combat provides, generally, is loot.  Considering that any particular build of character is only going to progress through, at most, three iterations per equipment slot before achieving end-game gear (for BG1 and BG2 taken separately), the vast majority of loot is either kept as trophies or, more likely, sold in order to purchase consumables or gear unavailable through combat.  In other words, the essence of combat in BG is nothing more than violent haggling.

druid equipment

I preferred 1e druids over 2e, when they were a distinct subclass like paladin, rather than shoved into a cleric with a nature focus.  Oddly, though, some of the characteristics that were carried over intact remained opaque and arbitrary.  One of these is the equipment restrictions. 1e simply states that they have “an inability to wear protective armor of metal” (1e PH, p. 21).  Their weapons, without any explanation, are limited to “club, dagger, dart, hammer, scimitar, sling, spear, staff”.  For 2e, they tried a little harder to justify these same restrictions by stating explicitly a druid can only use “natural” armors, with weapons still unexplained (2e PH, p. 35).

I don’t see how iron is any different in “naturalness” than leather.  The distinction they seem to want to make is “organic” or “biological”, so let’s treat that as the reason.  Either way, it still shines no light on why this would apply to armor, when weapons like scimitars still violate the rule.  This is another example of trying to retrofit a somewhat rational design scheme onto a hodge-podge of peremptory rules:  It is incomplete, inconsistent, and unsatisfactory.

Magic Combat and AI

There are things that devs and modders have tried to implement, but haven’t really come close to being successful at.  One of the most obvious and saddest examples is the AI versus player’s spell protections.  When the AI casts a spell like Spell Deflection, the player sees both the name of the spell as the enemy’s action, and can tell by the graphic overlay if the spell is still functioning in later rounds.  He also knows whether this spell is deflection, reflection, or absorption, and can act accordingly.  He can also easily keep up with how much of a beating the protection has taken, and can tailor his actions.

Sadly, the AI cannot come close to this level of knowledge.  BG only has two conditions to check for spell protections, HasBounceEffect and HasImmunityEffect.  The first returns true if the target has any reflection effects; this would be fine, except that this also includes spells that reflect physical projectiles like arrows.  The AI can’t tell the difference between the 6th level priest spell Physical Mirror and the 5th level mage spell Minor Spell Turning.

The second trigger, HasImmunityEffect, is even worse.  It returns true if the target is immune or protected, not from just spells, but from secondary applied effects like icon displays, visual effects, and display strings.  This means that HasImmEff will return true even if the player has only cast Remove Fear on himself, since part of that spell is protecting from the Fear visual effect, the string that says “Charname panicked”, and the Panicked icon.  The AI is unable to distinguish between Remove Fear, Minor Globe of Invulnerability, Spell Immunity, or Chaotic Commands.

In many effects exists a hardcoded setting of a variable, either as STATE or STATS (IDS files), that can be checked by a script to help with targeting.  For example, charm effects automatically set the STATE_CHARMED as true, so that when the charm is ended, whether by duration or dispelling, the STATE is also reset to zero.  Spells that apply an effect that does not have this hardcoded convenience can use the simple workaround of manually setting a STATS as a part of the spell.  There’s even enough room in the STATS and STATE IDS files to add new entries.  The venerable Detectable Spells mod, in use by many AI mods, does this with Spell Deflection for the various deflecting anti-magic spells.

The problem with this — and it’s a big one — is that it cannot account for the spell running out by decrementation (being used up by spells cast at it), and so only resets by either duration or dispelling. What you get is the ultimate in inefficiency:  You’ll see AI mages wasting a 6th level Pierce Magic spell to take a down a 3rd level Minor Spell Deflection that only has 1 spell level of protection left.  These are crippling mistakes that only the AI can make, not the player, and as such, are yet another opportunity for the player to inadvertently (or not) exploit the suboptimal AI.  Even the better AI mods are unable to overcome this deficiency.