The Issaries Inc. web site has a list of creatures and the ages, regions, and habitats in which they occur. I have converted that information into a table and a spreadsheet.
Here's the perl script that generates the grid.
My Statistics Calculator (MS-Dos app) is finally up-to-date! With C++ source code, too! It should be fairly portable.
Help
hw ?
Simple Contests
Syntax:
hw s[d] <skill1>[M<mastery>][+/-<bonus>] <skill2>etc.
Extended Contests
Syntax:
hw e[d][p][r<seed>][i<iteratons>] <skill1>[M<mastery>][+|-<bonus>][?<defaultbid>][_<minbid%][~<maxbid%>][T<target>][!<partingshot>]
<skill2>etc.
| [d] | Debug mode, this will print out a cryptic running commentary of what the program is doing |
| [p] | Phil's Variant, where incapacitated participants suffer an additional -5 penalty while below 0 AP |
| [r<seed>] | Sets the random seed |
| [i<iterations>] | Defaults to 1, number of times to simulate extended contests. If negative, suppresses results.txt output |
| <skilln> | Target number |
| [M<mastery>] | Number of levels of mastery (these are not yet corrected according to the new rules) |
| [+/-<bonus>] | Edge or Handicap |
| [?<defaultbid>] | Base bid number, defaults to 3 |
| [_<minbid>] | Minimum percentage of AP total to bid, default 1 |
| [~<maxbid>] | Maximum percentage of AP total to bid, default 100 |
| [T<target>] | AP level to knock opponent down to, default 0 |
| [!<partingshot>] | Maximum factor of current AP that the participant will risk in a parting shot, default 0 (no parting shots) |
Prints out the percentage chance of the first person getting each of
the three results, and the percentage advantage that one has over the other
- that is, when there is a winner, how often it is the first participant.
| Example: Skill 14, vs skill 2W1 with +1 edge | ![]() |
||
| Example: Skill 14 betting at least 75% of his APs on each exchange, vs skill 2W1 with +1 edge, default bid 5 | ![]() |
results.txt contains a log of the contests calculated, which may be of interest. This is not generated if the iterations parameter is negative.
target is always converted to a negative figure, so 20 means -20. This can be useful for calculating the chance of killing someone, or of getting a magical resistance down far enough to attempt a permanent magical effect.
The penalties for going below zero (half ability at -31) were too difficult to do properly, so it works like this: a defeated participant gets -1 per point below -10 that he has gone. If he recovers, he keeps the penalty. If he then goes back down below -10, he only suffers the worst penalty, it is not cummulative. This should work out to be very similar to the "real" rules.
Edges and Handicaps are not cancelled out. If both participants are doing powerful actions, then the action will just be over more quickly, and brutally. If they are both using feather dusters, then they will just have to wait for the opposition to screw up. Masteries are cancelled, and the system does not remember how many masteries each participant used to have - so if one participant goes down below 1, then the reduced ability becomes 20 and the opponent is "given back" a mastery even if they didn't have one in the first place. Working out what happens if someone goes below 1 is beyond the scope of this program, so this is a fudge to deal with that situation.
I typically use 10000 iterations, this averages out reasonably well and only takes a few seconds on a modern machine.