I saved the file in an Open format. Here's the link to the new file. I use NOD32 Eset Smart Security. I have never had a problem with viruses. I guarantee it is a safe file (Wink) I just assume that anyone on the internet uses some type of virus protection, otherwise they aren't really using the internet very long before there stuff is messed.

Download Balance Issue Open Format.ods for free on uploading.com

Hehe, I'm not really worried about viruses, but some people are, so I was just saying that to let you know about what kind of response to expect. Also, thanks for the .ods, but for the record I never use .ods because then potentially Microsoft people will have a hard time viewing (go figure). So I would go with .xls (Microsoft Excel 97/2000/XP) instead of .xlsx or .ods.

Anyway I think I follow everything now. I'd rather count Demon killing Undead as 8 turns rather than 6, since it doesn't make things harder and is more correct.

I think it would be best instead of saying Demon vs Undead, to say rather Demon against Undead and Undead against Demon, so that way there's no confusion about which direction you're talking about in any circumstance (you could always look at the numbers, but why bother when there's a clearer way to specify?).

Also we might as well introduce a shorthand. Say f(X, Y) is the number of turns it takes character X to kill character Y; that is, X against Y. If we use abbreviations

H = Hunter

Wa = Warlock

We = Werewolf

D = Demon

U = Undead

V = Vampire

then

f(D, U) = 8

f(U, D) = 12

So obviously we want \(\displaystyle f(X,Y) \approx f(Y,X)\) for all X, Y.

As for solving your problem, it might help to use equations. If you're not familiar with the ceiling function, it looks like this: \(\displaystyle \lceil x \rceil\) and means the least integer greater than or equal to x. So

\(\displaystyle \lceil 4 \rceil = 4\)

\(\displaystyle \lceil 4.02 \rceil = 5\)

\(\displaystyle \lceil 4.9998 \rceil = 5\)

\(\displaystyle \lceil 5 \rceil = 5\)

Excel has the ceiling function, Ceiling(). Then, suppose we choose the following labels

A = Armor

H = Health

M = Meelee

R = Range

M2 = Meelee vs Armor

R2 = Range vs HP

So now, ignoring the special things like regeneration, and assuming we're only dealing with meelee, we can write

\(\displaystyle f(X,Y)=\left\lceil\frac{Y_A}{X_{M2}}\right\rceil + \left\lceil\frac{Y_H}{X_M}\right\rceil\)

For the \(\displaystyle 2^x\) stuff, we can use the fact that \(\displaystyle 2^1 + 2^2 + \cdots + 2^n = 2^{n+1}-2\) (how I got the equation is easy if you know binary, there are various ways to show it's true, anyway it works). So then we can write

\(\displaystyle f(U, Y) = \lceil \log_2(Y_A+2) \rceil - 1 + \lceil \log_2(Y_H+2) \rceil - 1 = \lceil \log_2(Y_A+2) \rceil + \lceil \log_2(Y_H+2) \rceil - 2\)

Anyway it's not too hard to make modifications to account for regeneration and whatnot.

I'm still a little unclear as to when you want to consider meelee and when you want to consider range. If we wanted, we could define \(\displaystyle f_M(X,Y)\) means meelee and \(\displaystyle f_R(X,Y)\) range. It looks like you always use meelee for your calculations.

Well it's taken me a while to write this up, I'll go take a break and come back later.