Print Page

Saturday, November 29, 2014

Thanksgiving Caverns

Started painting Dwarven Forge caverns from the second Kickstarter Wednesday. My wife put up with me hogging the table for a few days* of furious painting and graciously asked me to return it to normal, and I was getting a bit tired anyway. So I cleared away the assembly line last night. Here is a quick layout of  everything painted so far. A few details left to go and I might give them all a polyurethane spray satin sealer coat after checking it on a piece.

(*Turkey dinner being at her mother's home)

Tuesday, November 25, 2014

Magic Item: Scroll of Spellstealing

A Scroll of Spellstealing can be found in any of three states: Discharged, Spellstealing, and Spellstolen. It can be either a Greater Scroll of Spellstealing that harms the spell book, or a Lesser one that merely copies from it.

When there is a spell on it, it can be used to cast that spell normally or transfer the spell to a wizard's spell book. This clears the stored as usual but unlike a conventional scroll, this does not destroy the scroll, instead it returns to the Discharged state.

Each Scroll of Spellstealing has a way of being recharged from the Discharged state to the Spellstealing state, and will show the required ritual in magical text when discharged.  Examples range from simple - cast a Detect Magic, a Read Magic, a Read Languages, and a Knock targetting the Scroll, to the complex and dangerous - 2D6 HP of blood from a summoned demon and the caster each have to be sacrificed in an hour long ritual consuming 200 GP plus the cost of the demon summoning.

In the Spellstealing state, a permanent spell upon the scroll can be read, targetting any spell book within 60 feet of the caster. This power takes time and the scroll must stay within 60 feet of the spell book for three full rounds in order to hack into the spell book and copy a random spell from it. The scroll user is using the "read scroll" action in the first round, and can take other actions in the following two rounds, while staying in range.

Spellstealing  Failures
If the target spell book is in the possession of its wizard, the wizard will get a save vs magic to resist the effect after the first round, and might then get a spellcraft check (or a roll of 1-3 on a D6 in OSR games) to discern what the threat was that needed resisting, especially useful in the case of failed resistance.  Successful understanding would allow other defensive measures. If the spell book is removed from the range of the scroll too soon or the power is resisted or otherwise interrupted by an effect like a Dispel Magic cast at it or the imposition of an Antimagic Shell, the scroll becomes Discharged and its user must save by rolling higher than the level of spell it was stealing on a D20 or the Scroll of Spellstealing is destroyed by the interrupted magical transmission. Save again in the case of destruction or the destruction is a violent burst of colorful magic side effects doing 1D6 damage per level of spell it was stealing in a radius of 5 feet per level of spell, Save vs Magic/Will Save/Wis Save depending on the edition to avoid damage, or a roll on the random magical effects table of the DM's choice in place of the raw damage.

Spellstealing Success
There are two versions, the Lesser Scroll of Spellstealing copies the spell from a spell book, leaving the spell book unharmed. The Greater Scroll of Spellstealing transfers the spell from the spell book, leaving behind a blank page, gibberish, an annoying message like "Thy Grimoire hast been Haxxored", or a subtly damaged version of the original spell that will backfire with a random magical effect on the caster if memorized and used, depending on the whim and effort expended by the creator in its crafting. The Lesser Scroll is thus more subtle and can be used to get an extra casting of a spell from your own spell book, while the Greater Scroll of Spellstealing is a weapon that will drive a targeted wizard to fits of anger and despair and a deep desire for vengeance. Greater Scroll is not much use to capture a spell from a wizard's own spell book, outside of a dire emergency, since it deletes the spell from the spell book and it would have to be used to restore the spell to the book or cast it and lose it permanently.

The easier the charging ritual is, the more expensive and valuable the scroll is. Greater Scrolls will have more difficult and expensive charging rituals than lesser scrolls.

Thursday, November 20, 2014

DunGen updated with edit and save working together

Yay! my refactoring to use the DataSet class worked great! So I have all the edit operations bound and working.

What just got done tonight:
You can now generate, edit and save dungeons done in DunGen and load them later in the same browser.

What's coming next:
Description editing is still at its most rudimentary in a prompt box for proof of concept. This is not too useful for long descriptions. Will expand to a full JS dialog box from some library. Will probably also add inline editing in the table.

Wednesday, November 19, 2014

DunGen 1st pass at Save and Load

Have dungeons saving and loading using LocalStorage. Still need to get some of the edits back into the data model so they can be saved.

Approximate order of next features:

Update deletes and edits in data model.
Add edit full node (room) contents to data model and graph.
Activate Delete dungeon button.
Have some fun growing the treasure randomizer.

Further down the road:
Add a couple more basic designs to the geometry choices.
Add a multi-level dungeon "side view" generator mode to the geometry choices.
Add either textfile export and import so you can move a dungeon to another device or get started on accounts and server sync so you can move from one device to another that way.
Add in an approach to list customization so you can select room and monster sets by tags.

Thursday, November 13, 2014

DunGen is starting to get good

DunGen dungeon generator

Here's a screenshot after tonight's work. I have addition of rooms and edges working now. Random pattern isn't leaving loose nodes. Rooms mention "hooks" that the DM can use as clue sources. There is a bit more to do on editing, like removing deleted nodes from the list, and adding editors that allow room descriptions to be changed, then I'll start on saving, or possibly on revamping room contents as data objects that render into strings rather than being saved as strings, to give more flexibility, before getting on to saving them. I want to avoid having saves be incompatible with later developments.

Minor refinements to do soon: the Redraw button does not change the canvas size when the window size changes and it should. Found a bit about that in the docs, but need to understand it better. Might want to play with the physics model and editing stuff to see about letting some edges be longer so their labels can be unhidden. Its probably a manual tweak. Alternatively, if I can toggle springs off and drag the nodes around to fixed locations, that would solve the issue too.

Sunday, November 9, 2014

Dungen Dungeon Generator is up!

It's very rough but online after two very busy days of hacking.


Leave comments here on the blog, on the Hobby Hovel, or on G+.

Haven't had this much fun programming in ages...

Working on a Dungeon Generator

Yesterday I started coding on a project that I have been mulling over for awhile. It's a JavaScript random dungeon generator that will produce both a graph linking location nodes with edges that are hallways or doors, and populate it, with OSR, D&D5e, Dungeon World and Barbarians of Lemuria as likely systems I would consider stocking for.

Here is an example of the current output using a branching algorithm to generate the edges. The names for nodes and edges are simply being randomized out of arrays so far and it is not yet stocking with monsters, traps, loot, and details. It will get smarter. I'm working now on an algorithm that will add some looping without making it too tangled.

Since I am using VisJS's graph drawing module, it will arrange itself with physics springs, with some manipulation available out of the box and with editing tweaks available, so you should be able to add/edit/move/remove links and rooms eventually.

It's pure JS/HTML/CSS, so I'll be able to put it up for you to play with pretty soon. I don't know yet the tech stack I'll be using beyond VisJS. I've been looking at Meteor lately, so that may be what I explore when I get to storage and server parts. Rails would be easiest for me serverside, but I'd like to do a project bigger than a toy that has a JavaScript server.

Here is the very rough plan, with the intention being that at the end of each sprint there is some usable new functionality, and if I should burn out, whatever is done can stand. The order of some pieces will likely change.

First sprint:
Generate a dungeon graph with some simple labelling on nodes and edges. Have a couple of selectable linking strategies, one that is more gridlike and one that builds clusters and adds sparse links between them.  Deploy to a web page for people to play with. This one is beyond half done. Should have a couple of decent algorithms for hooking things up by the end of the day.

Second sprint
Start stocking critters/traps/treasure. Include a table beneath the graph that lists the contents.  Push the repo to GitHub.

Third sprint
Flesh out editing so that changes get back to the models and include editing labels and descriptions.

Fourth sprint
Add local data saving and retrieval with an index listing of dungeons you have generated, so you can go back to them and use/edit them from the app.

Fifth sprint
Add a server layer and authentication so by making an account, you can save a dungeon to a server and retrieve it on another device. Publishing for shared/public editing?

Sixth sprint
Theming tables - modularize the randomization tables so that a level can be generated with themed sets, and add controls to dial up and down the ratios of empty/traps/monsters/treasure/features. Explore adjacency effects in the randomization, so that a level can have themed groups of areas with some coherency in how they are stocked, and possibly a layering of stuff that makes sense at the border vs the interior of a set, relations between neighbors, etc. Adding Wilderness hexcrawl theming tables would make great sense at this stage.

Seventh sprint
Open up random tables so users can create their own and "publish" tables that others could select for populating a dungeon. Or possibly hook to some of the other internet random dungeon population resources for contents, see if Abulafia has API access or accepts scraping, Dungeon Dozen links for specials, etc.

P.S. It is up and running at with most of Sprints 1 and 2 done. Further revision to balance treasure to monsters and allow level selection and refresh without page reload in the works. Also planning to make some of the rarer room and connection types be done deck of cards instead of dice table style so you can't get three gazebos like I saw once, and start towards theming by holding weaker monster types once rolled so they are more likely to reoccur. Then probably some fleshing out of the treasure and magic items tables before going on to sprints 3 and 4 for editing and saving.