Skills are not shown in this code. However, you can modify the program to be able to chose them (based on your skill points and on the class skill list). This is as easy as searching for the string "// --SKILLS--" in the source code and uncommenting what comes a few lines of code.
A better implementation is on the way.
Code: 142KB RAR archive
Things I forgot:
- Hum. The Green Dragon. Can "Test" be considered as a valid colorful dragon?
- Height and weight are in USI. No inches, no lbs, just plain, simple centimeters and kilograms. I have the French SRD to help me, so that was easy [smile].
- the classes you can select depends on your alignment. ".class" files (in bin/rules/ contains a "requirements" section which can be populated to automate this. For example, the requirements for the druid class are: neutral (on either the law-chaos or good-evil axis). This is implemented by using:
The <alignment-concat /> tag is optional. In this case, it's used to say "consider at least one of these alignment requirements". If it's type is "and" or if it's not present, the system will match all alignments. For example, this is the one for the paladin (which muct be lawful-good):<requirements> <alignment-concat type="or" /> <alignment axis="LawChaos" min="33" max="65" /> <alignment axis="GoodEvil" min="33" max="65" /> </requirements>
As you guessed it, the alignment values are stored as a 0-100 value, 0 being chaotic or evil (depending on the axis), and 100 being lawful or good.<requirements> <alignment axis="LawChaos" min="66" max="100" /> <alignment axis="GoodEvil" min="66" max="100" /> </requirements>
- This requirements system shall be extended in the future. It already checks for ranks in skills, alignments, classes levels and (to some extent, as they are not implemented yet) feats. That means that you can add prestige classes quite easily: just create the correct .class file, and that's all.
- You can extend the race pool as well: add a .race file (the XML format is not very difficult; check elf.race for an example with nearly everything). This makes it easy to support monstruous races. Note that ELC are still not supported (but that's coming as well)
- multiclass! yep, you can select whatever class you want when you go to the next level; this makes multiclassing as easy as it should be.
- Every 4 level, you gain an ability point. True. That's in the rules [smile]
- ability score assignment - the user interface is quite weird (for each ability: type a number from 1 to 6+return, or type 'r'+return (reroll) or type return directly (take the first unassigned score) if you assign a score that was previously asigned, the system asks you to assign another score to the ability to which the score was assigned before). It must be changed to a better implementation, really. Anyway, the current implementation allows you to reroll 10 times and to select to which ability you want to assign which score.
- not all classes are implemented. In fact, the sorcerer and the wizard are not. it would not be difficult to add them (in fact, I could do it in less than 15 minutes). But I'm lazy. I will do it for the next release.
- The level builder is to be improved - design is quite poor.
- most of my string comparisons are strict (using operator==()). They should be case-independant (so I should use string.Compare(a,b,true)==0 instead).
- many small things...
Imrovements to come:
- a better handling for skills
- handling of feats, special abilities and spells. Each of these might require a good setup made of script files and xml files. That's going to be teh fun.
- combat management - AC, BAB, attack count, etc; this will come first, as everythign I need is already there