I was frustrated with the existing Dolmenwood character generator, because it doesn’t allow me to iterate levels, and doesn’t show the levels on the character creation screen. I did like the backgrounds though. So, armed with a sense of purpose – a quest, if you may – I set out to see if I could use Replit to build a better character generator for Dolmenwood. I had the PDF of the Dolmenwood Player’s Book, which I purchased from Necrotic Gnome, so with that in hand, I got started.
- I thought it would use less tokens if I avoided uploading the PDF, so I copied the Dolmenwood Player’s Book into a text file
- Got the prompt from Perplexity
- Loaded the prompt and the text file into Replit; did not work after multiple tries. Kept getting an error that I was disconnected, even though everything else worked.
- Loaded the PDF instead, which I initially avoided since it’s 37 MB.
- Realized my prompt was incorrect (it was contradictory to starting gold rules / starting equipment rules) – Replit prompted the change, which I fixed.
- Was prompted to upgrade to a more powerful model, was going to do it ($20/month) but was only given an option to buy yearly for $240. When I returned, I received a 404 error on existing work.
- Did a partial implementation instead, but got a message I’ve used up the day’s free credits. No luck on round one – but then – I got an option to upgrade and pay monthly at $25 per month.
- The app crashed, so I debugged and fixed it.
- Partial success! Round one looks like this:

10. But choosing an Enchanter as the class with INT 9 as the primary score requires some work. Plus I want the option to increase the level, and add saving throws.
11. I started small, with the prompt:
Add saving throws and starting level (1)
12. Nice! Replit now updated the sheet nicely:

13. What is missing is combat equipment (weapons, armor). Also, that HOLD saving throw is wrong, even though the rest are accurate. Not sure why, but I’ll come back to that. The next prompt was:
Add starting equipment “weapons”, “armor”
14. Nice! Looking better:

15. Replit added weapons and armor, but not in a combat section with all the bonuses. I should have specified that. The sheet will also need Armor class. I’m going to treat these as separate problems, because I’m not experienced with Replit and not sure if a single prompt is better.
Separate the weapons and armor into their own combat section. Add the damage and any bonuses so that it’s clear to the player what type of damage they can deal.
16. I like the way this looks so far! And Replit added an Armor Class automatically, which is great. However, it needs attack bonuses and strength modifiers where applicable (and with a strength of 6, this will be negative modifier.

17. Sticking with one thing at a time (still have to address the decisions around class choices, and the incorrect saves), I typed in this prompt:
Add any attack bonus and strength and dexterity modifiers (as specified in the “Attack Rolls” section)
18. Replit stated that this requires updating complex data structures and UI logic, and suggested I continue with “Autonomous Agent.” Not sure what that means, but there doesn’t seem to be an increase in price, so agreed to continue. At this point, Replit continued building, and periodically refreshed. This hadn’t happened before (maybe it is because the Autonomous Agent was deployed).
19. After multiple refreshes as the building continued, the Autonomous Agent presented a new version, which looks great and gets the bonuses right. Replit does state that this is a partial implementation as going through the full rules would require extracting more data. That’s fine for the time being. Really happy with how this is proceeding:

20. A couple of new challenges, but it’s starting to get to a working prototype. Some upcoming challenges are: a/ spells will need to be added for magic users; b/ the class and race traits need to be added; c/ auto generated names and some background information would be helpful; d/ will need to be able to iterate the level.
21. At this point I’m starting to wish I used the free, basic rules as it seems like it would be a better starting point, but I’m all in. So next, I’m going to start with spells.
Please add a random selection of spells for magic users, according to the number of spells per day
22. This is really cool. As Replit works, it talks through its steps. It is repeatedly generating a character until it gets a “Magician” class, and then checking the spell book, and known spells, and then doublechecking. Once Replit finds a Magician, it moves to a Cleric, and then searches for a Friar. Then it checks a Fighter (which has no magic spells) to ensure that magic spells don’t show up for them.
23. Neat. Replit indicates known spells, rolls for the randomized Magician spell book, and indicates spells per day:

23. Next, I’m going back to class and race traits.
Please add class and race traits.

24. This is really good. I would like if it adds the fairy glamour, and with a STR modifier of -1, the melee attack should have a -1 and not a 0. I’ll start there, although not sure if that will work.
With a strength of -1, should the melee attack be a -1 (not a +0)?
25. Replit replies that the issue is likely the string to number conversion. Not sure what that is, but it’s cool that Replit states it, before creating a cleaner numeric modifier version.
25. Replit fixed that issue nicely. Now to work on the logic behind the starting choices. This one strikes me as harder, but Dolmenwood does make it easier by listing “Prime Abilities” in the class description, so I’ll start there. This one is hard to write, and I’m not sure I got it correct. For the first time, I’m wondering what happens if I need to roll back a prompt.
Please assign a class by comparing highest ability scores to “Prime Abilities.” The highest scores in these Prime Abilities should be used to choose a class.
26. Wow! That worked. No more fighters with six strength.

27. Next problems are thorny. a/ Character sheets keep exporting as .json files (I’ll need PDF or txt files to make this work) and b/ I want to be able iterate the character’s level. I’ll start with the export.
Can the export function produce a .txt instead of a .json file?
28. That worked like a charm. This is getting to the point where this is getting better than most generators online. Very impressed:

29. The text file is missing the Weapons section, so let’s add it back in:
Please add the Weapons section into the .txt file export
30. Worked like a charm. This is a beautiful .txt file. Just one more area of cleanup:
Can you name the file based on the character name and class? Example: Name_Friar.txt
31. That worked. Now it’s time to start adding a random name generator. Open challenges are: a/ checking the math; b/ iterate the level.
I would like to add a random name for each character
Please display the name on the sheet in front of the race and class. Example: Thorvin, Elf Bard
Please make the names variations on the race names
32. Those are great. I prefer the Replit names to the official names in the Dolmenwood generator. Now to add backgrounds.
Please add kindred backgrounds to each character.
33. Interesting! Replit created its own backgrounds, which are more inventive than the Kindred backgrounds in the book. I could change this, but they are good, so what the heck, let’s let them stay.

34. I want to add the different descriptions included in the book, but this time I’m going to specify exactly to draw from the book:
Using the Kindred tables, please add “demeanor,” “desires” and “beliefs”
Moving some things around:
Please put Demeanor, Desire, and Belief up top, underneath the alignment section
Please add alignment to .txt export
Please add a top border to the “Demeanor” “Desire” “Belief” section and keep it below the alignment section
Please make “Demeanor” “Desire” and “Belief” section separate from the alignment section; this will prevent the level and hit points section from getting compressed.
Great – can you remove the top border of the demeanor, desire and belief section?
Please add the alignment in front of the Kindred background? For example: “A neutral wanderer spreading beneficial spores”
Please make the attributes into two rows of three

35. Now it’s time to make it so that a user can increase the level. I’ve been putting it off because it seems like it’s the hardest part. I’m going to try it step by step instead of all at once.
Even though the characters start at level one, I want to make it to so a player can increase the level of the character. When they do, the character’s hit points should increase based on the advancement table.

36. That worked incredible. Now I’ll update the save targets, the spells, the attack bonus, and updating the class and race traits:
When the level increases, update the save targets
37. That produced the first error. Replit iterated the save targets based on its own logic, instead of using the Save Target tables. Unlike the backgrounds, this is mechanically specific, so it needs to be changed.
That is not correct. The saves should update according to the save target table associated with each class (Doom, Ray, Hold, Blast, Spell) follow a specific progression based on level. Please update.
That is not correct. For instance, the cleric’s doom save improves at level 3. Please update save targets according to the class advancement table.
38. Wow again! This looks incredible. At this point, this is better than anything online. Plus, this fixed two problems at once – the save targets were not perfect, and neither was the progression. This update has fixed all that. Now moving to update attack tables, ensuring the prompt references to use the advancement tables.
When the level increases, update the attack bonus according to the advancement table with each class.
39. And now spells. Concerned that this will be a difficult one.
When the level increases, update the spells based on the class progression (where appropriate).
As the level progresses, choose a spell of the appropriate rank and class from the spell lists.
40. At this stage, Replit tells me that I’ve used up all my credits, and need to move to a per usage model. That’s perfect timing, because this is done. I’m really happy with the way this turned out! Not only is it functional, it does exactly what I want, it looks great, I love that I can export to a text file and it works better than any of the existing generators. I think I’ll make a lot of characters of different levels and post them online as pregens. Really impressed with Replit!
