Re: Data and Calculations nodes in my latest D&D 3.5e sheet
So anyway you can see there's some fairrly sophisticated calculation going on in there although of course you can never model a complex system like D&D perfectly by any means. For example the calculation of AC goes like this.
The dexterity / dodge part of AC has a sub-calculation for where dodge bonuses apply and where they do not (flat footed).
For where dodge bonuses apply:
Code:
min(!@MaxDex@!,!@Dex_Base@!)
Here you can see that the dexterity is compared to the armor's max dexterity value so that id someone casts Cat's Grace and their Dex is boosted it automatically knows that that won't help someone in plate armor much. Now there's no mention of dodge here because dodge is a bonus that would apply to this value (called "Dodge", though I could have called it Dexterity_Aspect_Of_AC_when_Not_Flatfooted I suppose).
For when flat-footed the formula is different:
Note that this calculation says that people with dexterity less than ten don't get a better AC for being flat-footed!
There's a physical aspect to AC which is calculated as simply:
Code:
!@Armor@!+!@Shield@!+!@Natural@!
Those three are all values that can have bonuses applied to them. They also happen to all be ignored by touch attacks so it's convenient to group them together.
The four AC results are then simply 10+!@Dodge@!+!@Physical@! for regular AC and take either the didge bonus or the physical bonuses (or both) off for flat footed or touch attacks.
Another example of the power of the min/max is with applying strength bonuses to weapon damage. Let's say for a two handed weapon. the die roller is pretty simple:
Code:
MyName attacks with his weapon [q1d20+!@Melee@!] damage [1d6+!@2H_Damage@!]
Not sure if the square brakets are getting through. You get the idea.
!@Melee@! is defined as the sum of !@BAB@! and !@Str_Base@! (it is in a grid that sums columns automatically)
!@2H_Damage@! is defined as,
Code:
max(!@Str_Base@!, (!@Str_base@!*3/2))+!@Damage_Base@!
Looks like I have a uppercase/lowercase typo on one of those str_base's but case doesn't matter in my system. A huge improvement (IMO) I forgot to mention elsewhere. Note that again here if someone has a strength below 10 then fighting two handed doesn't do less damage than fighting one handed which would be silly so the house rule I have is that it does regular damage in that case. There's a global !@Damage_Base@! added to all damage so you can easily apply the effect of spells such as Bless (+1 damage to all friendly creatures).
it would be achieved by typing in to chat:
Code:
/bonus 1 damage_base
Except Bless also gives a +1 to hit so you'd also want:
And you could write both those into a node called Bless inside the character sheet and activate both effects for a single click or by typing in "Bless" (and nothing else) to chat while that PC's alias is selected (or when your player name matches the character name). You could even (I think!) type in /all Bless if you had a lot of PCs.