Print Page

Tuesday, December 30, 2014

Home for the Holidays 3: Caves of the Unknown

Another run this morning in Eric Hoffman's  Keep on the Borderlands holiday mini-campaign using Labyrinth Lord basic, a pleasure as always.

This was the third expedition. I was in the first in which we fought bandits and captured a tower and orcs or hobgoblins that were in the woods pretty close to town.  The second run that I missed started to explore Eric's Caves of the Unknown, and encountered Myconids, Piercers, and a Shrieker. This time we were back to the caves and cleared out the Shrieker and quite a few Myconids and a fungally infested wizard.

I was Brother Duncan McTrews, a cleric who is stronger than he in wise, and he's been a pretty entertaining character. Graki the Dwarf and Sara the Elf were my partners in adventuring, two other Eds for players, and we had three hirelings, Morn (who we lost to the Myconids boiling out through a door), Morghild who did good execution with bow and sword, and one whose name I forget, that stayed back with the mule and a couple wardogs below the low cliff we climbed in the cave.

It got dicey but we managed to survive with the loss of just Morn, and we escaped with quite a bit of loot. Looks like Duncan might survive to 2nd, as he is over 2/3 of the way there.

Eric's trying for another run Friday but unfortunately, I'll be at work. (He's +Eric H in G+ gaming circles if you're interested in a bit of OSR action.)


Monday, December 29, 2014

Short Attention Span Theatre

Haven't posted for awhile. Here is a catch-all catch up post on what I've been up to.

CRAFTING
Working on the other two panels of my deluxe DM screen that fits in with dungeon scenics. Post coming soon on the construction, hooking together the G+ posts about it.

Also did a trial mosaic floor tile and may make a few more floor/wall sections with mosaics of the seashell bits from the craft store.



There's always more minis to paint. Did a bit of basing and base terraining yesterday on a couple of zombie miners and a dwarf gambler rogue from Reaper.

MAPS
I'm starting to collect a backlog of map drawings that need scanning. Thinking to populate them using a mix of edited Dungen output and actual writing.

DUNGEN
 Worked a bit today on Dungen. Next rev will probably have two new features: A notes field that saves with the dungeon for putting in general notes, and a dialog for setting some additional parameters on generation, especially selecting monster tags from which to generate the main monsters for the level, to make for more thematic levels. Another pass will do the same for locations so you will be able to dial in mostly undead in a mostly crypts and tombs level or mostly goblinoids in a mostly caves level, etc. Probably with a D6 roll selector for each, so you can set a batch of tags and say how often to use them for narrowing the randomization from 1/6 to 6/6.  With this rev in place it will do what I want for populating a level, aside from a bit of rounding out some of the sparser tables and maybe the addition of a relations table between factions.

 Doc Grognard had a nice idea when I showed it to him about adding a control to adjust magic treasure levels up and down before generation. May implement that too.

 Another feature I am starting to work on is saving to a server, with a couple of UUIDs so you can give yourself a URL to use from another device to pick up the saved dungeon for additional work, or give out a public one that other people can see your level but not overwrite it. That will probably be awhile before it is done, since I will have to set up a server with a Rails or Node backend and a DB, and work through syncing. This is going on a bit independently, did the provisioning of a MySQL DB this morning, next up is beginning some server coding.

CAMPAIGNS
I need to get some more work in on both my D&D 5e and Barbarians of Lemuria campaigns. Lots of thinking lately, not much committed to paper or bits. Will put in to run a game at Dundracon if I get motivated enough. Have a few more holiday vacation days to cobble something together.

For a bit of real content, here is a magic item I came up with this morning:

The Flask of Issek
This slightly battered flask is inscribed with several prayers to Issek of the Jug. It will be found full of a Potion of Healing. When empty it glows faintly, showing the flask itself is magical. If water or other drinkable fluids are added to it, a day later the contents will be purified of poison, disease or taint and imbued with the effects of holy water. After another day it will have the effect of a weak healing potion curing 1D2 of damage, and this will increase each day for the rest of the week until it is a full healing potion. If holy water is put in, it will double the rate of becoming a healing potion. A bless spell cast upon it will make it become a potion of healing after a single day. Potions from the flask are unstable and will not last more than a day after decanting, so it cannot be used to accumulate a number of potions.

BOOKS
I've been rereading Leigh Brackett's The Ginger Star, first of the Skaith trilogy in the Eric John Stark series. It is '50s - '70s Sword and Planet stuff that feels midway between Edgar Rice Burroughs and such later worlds as the gaming worlds of Dark Sun and Carcosa. Good stuff, I recommend it, especially to GMs looking for a darkish setting.



WAR THUNDER
When I'm not getting anything done on projects, as often as not it is because I am back to playing War Thunder on the PC, usually flying planes as Argg, sometimes driving tanks. Today I had one of those "yeah I'm getting the hang of this" games in which I accidentally went out into an arcade battle where I would usually have a series of six planes to fly with a single Spitfire IIb on a list I was using for duels last night. Had to play very carefully as everyone else had several lives and I had one. Ended the game with six kills and four assists before I finally died, the best performance I've had in that plane. I guess having one life had a nice focusing effect on not taking extra risks. It is quite an addictive game if you like WWII planes and tanks and slowly developing skills. Here's a replay screenshot of the first of those kills:



Had the graphics spazz out one day last week, and spent an entire bomber run looking like this:













Wednesday, December 3, 2014

DunGen - Hoards for the Hordes!

Big treasure update in DunGen released - most of the magic types are pretty filled in now, Jewelry and special items of value are in, gems have more value options. Scrolls and books are still basic and will get attention next. Yeah, some of it got a bit silly, but hey, that's the kind of thing the edit and reroll functionality is for.

Next time I'll work one one of these aspects: Make the Delete from Storage button work. Get some detail in on scrolls and books. Add some more layout options. Give the monsters some attitude.

The URL once again is:
http://www.meta-studios.com/dg/dungen.html

Have fun!

Monday, December 1, 2014

New DunGen Release - Room editing that doesn't suck

Updated DunGen tonight and I'm very happy with the improvements.

It now has the dialog box room editor I've been meaning to get in there for awhile now. This will get expanded and improved now that it is basically in place. I anticipate adding name and contents re-rollers to the dialog box, and converting BR tags to line breaks in the textarea and back again for handier editing soon. With this editor in place as is, it rounds out the basic editability so that you can randomly generate a level and tweak the contents to your satisfaction, and save it for use later for another editing session or a game.

Other features hacked in yesterday for today's release include:

  •  A 1 in 6 chance of a room "oddity", a bit of color text. This will probably get a reformat from the idea sketch to real sentences next time around.
  • Expanded treasures - there can now be more than one kind of loot in a room, and more than one magic item, with more likelihood at higher dungeon levels and bigger treasures tending to have more magic items. This will get further tweaking, especially the addition of jewelry and other kinds of valuables to the basic coinage and gems currently in place.
  • The random monster list for the level starts out by rolling for one to three "common" monster types for the level. This list is used for approximately half of the monsters of the level. So you might get an orc dominated level or a spiders and goblins level, etc. This is my first pass at giving a level a bit more thematic unity.
  • Potions get real descriptions now, the first type of magic item to get a more detailed treatment. Some are ones I like from OD&D, others made up on the fly or dredged up from other memory. I left out some of the OD&D list, ending up with an idiosyncratic list of potions I think might be fun to use. Notably, I left out a lot of the control and recon potions, and added more bad potions that are more interesting than save or die poisons. I'll be working my way through the other types of items with a similar mix of standard and added items in each list.
  • Traps have a couple of experimental additions. One third get a spelled out disarm and one half have a trigger mentioned. Since all three tables are used randomly, some combinations will be inappropriate, as a simple floor pit for instance is unlikely to have a way to "disarm" it, but it would take a lot more sophistication in the code to evaluate sensible combinations so for now, this is one of those things where you edit out the silly combinations that you don't want to rationalize.
  • The dialog box plugin I used (bootbox) needed the Bootstrap CSS library, which meant some styling changes. It's a good foundation for improving the look of the page in general, when I start taking more time on that aspect later. And it will give me a bit of practice at using Bootstrap, something I've been meaning to do for awhile.
  • If you dig into the JavaScript, you'll come across the beginnings of wilderness node and edge randomization lists, currently lying fallow like the trap triggers and disarms were before. Eventually, I'll have a toggle to generate wilderness area maps. The next step is to do another set of tables for creatures and people encountered for the wilderness, which will add some things that I didn't include in the dungeon lists.  After that will come cities. Both will probably take some thought about structuring sensible combinations of nodes and edges, so cities get coherent "neighborhoods" and the wilderness gets ports with links by sea to islands and stuff like that.






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.

Spellstolen
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.

Discharged
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.

Spellstealing
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.

DUNGEN

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 http://www.meta-studios.com/dg/dungen.html 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.


Monday, October 27, 2014

Restarting the Ed's Hobby Hovel site with a reposting of Rencounter

Finally got around to reposting my Rencounter skirmish rules to the web. Had started a bit of a site on Google Sites without any significant content, so getting Rencounter up is the first thing to make it worthwhile to reopen the doors.

Rencounter  Being a Set of Rules for Ambuscades, Skirmishes, Rencounters, Affrays and Divers Small Actions Conducted with Model Soldiers

Thanks to the Wayback Machine for being a more convenient archive than my dusty backup drive, and Walt O'Hara for the ePub copy he cobbled together awhile back.

Friday, October 24, 2014

Regular Expression Dialect Gotcha

I was recently updating a Rails application to Rails 4 and as part of that, went through and updated the regular expressions for checking some data inputs from /^ $/ for beginning and end to /\A \z/ to clean up the potential security hole in sneaky multiline inputs. This is fine in Ruby. JavaScript's Regular Expression engine shares the /^ and $/ but does not do the /\A \z/ style. I inadvertently introduced a bug by making that change in a JavaScript regexp that was not tested again until the user used it today. Fixed now, D'oh.

Sunday, October 19, 2014

How To Host a Dungeon

I've been playing a game of Tony Dowler's How to Host a Dungeon today and posting it in stages on G+. Will probably collect them together as a post here, but for now, if you are interested in a solo game for generating those classic side views of megadungeons with a history to them, check out my G+ posts or some of the various playthroughs and completed maps by other folks. Currently I am approaching the end of the Age of Civilizations, with the Demons having gone out in a blaze of war with the Angels and the Dwarves reaching the apogee of their civilization and bad portents of hubris looming. Here are some of the photos. The odd lighting and some of the fuzziness after the Primordial Age comes from putting the Primordial Age page on a lightbox and tracing over it in the Age of Civilization while still drawing on full thickness art paper, not tracing paper. Sorry, first one is sideways in the handy file. Will have to download and edit it or pull in a bit of CSS to rotate it.

Friday, October 10, 2014

The Boarcroc in 5e

The dinosaur hunting Boarcroc (link is to my previous post) needs to be a 5e monster. Because, Boarcroc. It's a pretty simple to introduce them. Take the Giant Crocodile - Monster Manual p324, and adjust the movement rates for the longer, fully terrestrial adapted legs, faster on land, slower swimming. Speed 45, swim 35.


That grapple mechanic needs something more to feel like the crocodilian death roll which is entirely more violent than simple restraint. The victim should be knocked prone like in Pathfinder, and suffer continuing damage (automatic or advantaged following attack rolls by the croc?) until the grapple is broken. I would probably roll ongoing damage as the bite damage, but split it between piercing and bludgeoning, since a lot of it comes from being smacked around like a rag doll. Add drowning effects too if in water.

With the longer legs and serious claws, I'd give it the option to swap in a claw attack in place of the tail attack, one target - grappled or other, +8 to hit, reach 5 ft, 2D8 + 5 slashing. Either tail or a claw in a particular turn.

I'd make it CR5 like parent Giant Crocodile or bump up to CR6 for faster terrestrial speed, more potent grapple rule and claw attack option. Would have to play a lot more before I know if those enhancements are worth a CR point.

One last horrifying thought for your PCs. Crocs can and do climb trees. Google it, it was all over the news last February. Probably disadvantaged while climbing with its claws busy holding on, but so are most fleeing PCs.

And I'm still waiting for a boarcroc model. May have to try sculpting one myself, maybe by adapting a 6" long toy croc by doing longer legs and the pairs of bigger teeth.

Wednesday, October 8, 2014

Megadungeon Level 1 Map

I'm planning to have three entry levels, with this being the main one. It's really big, so only legible if you click into it.


Who's On Deck? Expanding Wandering Monster Checks

Some months ago I read a post with a brilliant set of tables for converting some wandering monster checks into foreshadowing with lots of details and two stages of foreshadowing. I'll have to hunt it down again to cite it properly.

Here is a simpler rule of thumb approach in the same general direction.

When doing old school wandering monster checks where a six would normally send you to the game's generic wandering monster chart or your dungeon's custom wandering monster table, invert the order of things a bit. Before any action gets going roll twice on your wandering monster tables.
The first roll is to identify who is lurking or hunting nearby. Besides the creatures lairing closest, this monster will be the first responder to noises made, magic emanations, and tracks made by the PCs. The second for a monster or group that has passed this way but is not an active threat. This info is just to prime you so you can think in background about suitable hints and signs, and in the case of the active monster, what's the right moment and approach for a dramatic entry.

When the time comes for a wandering monster check, roll the traditional D6:

4 - the PCs find a sign of the presence that the inactive monster has passed this way or is in the neighborhood. This could be things like tracks, scat, dried blood, dropped possessions, dried up bits of a victim/meal, shed hair or skin, or a faint and distant noise. Initiating tracking on the basis of this sign should be difficult or impossible, but the PCs get some hint of what they might face and maybe tension ratchets up a little. It's probably a red herring if acted on. Reroll now for the next inactive monster to be hinted at the next 4 rolled.

5 - the PCs get fresher and more direct sign, sound, or glimpse of the active monster. A tracker acting on it is likely to be able to track it with normal chances of success.

6 - The active monster attacks or engages with the party. Resolve the encounter as usual. If the PCs are at heightened alertness from a previous 5 roll for this monster, reduce the chances they are surprised. Roll to identify the next active monster when it's convenient.

Since you know the nearest wandering monster in advance, if the right moment to spring it becomes obvious, don't wait for the 6. But in fairness, that probably means skipping the next 6, turning it into a 5.

If going off of general random "could be anything" tables, record the inactive monsters and make it more likely than a completely random check off the table of turning up again, since they now have an instantiated history of having been present. Eventually as this list grows, it can become the list of likely wandering monsters (aside from statically placed ones that go roaming) for the dungeon level. Start using a lead in roll that opts between using the history list and generating a new, completely random monster that gets added to the history, which eventually favors the history list. At first it's 1 in 6 comes off the history list of previous inactive or (survived) active monsters. As the list grows, bump that up, until it is eventually 5 in 6 off the history list, with just the odd newcomer, bumping back down as unique ones get killed off. The history list should probably be seeded at the beginning with the types of monsters that are actually placed. Depending on your realism level, a wandering monster of the same type as a placed monster is that individual, so it potentially already dead or wounded if the PCs visit its lair or another unaccounted for "quantum" individual, so the lair is unaffected.

Pink trail of slime found on a 5.
The rubber band bits were a quick expedient for illustration, but the recent DM Craft video on water gives me an idea for doing various moveable slime trail tokens that should look awesome.

Sunday, October 5, 2014

Great Hall map

There are still some more digital edits I want to do to this one, but better to get a version of it up here now than wait any more. Previously posted versions in the relevant G+ groups.


Saturday, October 4, 2014

D&D 5e prep

Had a busy day preparing to run D&D 5e. Spent some time at the cafe with notebook working on the beginnings of a random dungeon generation scheme and some encounter notes. Then monopolized the dining room table again to put in some time scraping mold lines and cleaning sprue off a bunch of dungeon dressings. Cleared that mess away as the bits went outside for priming. Then picked out 4 figures to set up characters for test run, and wrote up their character sheets. Took about an hour per character for the full writeup but I wasn't rushing it. It's the traditional F/MU/C/TH party, with some minor wrinkles in the details of the characters.

Started with a cave entrance and the beginning of a Dwarven Forge dungeon, and my daughter sat down and laid out the rest of the dungeon behind the door from the pile of pieces for her own amusement. I'll go with her dungeon design, though I'll be adding some monsters, since she only had the little Cthulhu statues that were in the bag of DF pieces.

Leila and her dungeon

The party enters the cave with a balance of greed and trepidation.

Then they stop for portraits just before breaching the first door.

Gnigel the Gnome Rogue Raconteur - He'll be an Arcane Trickster if he survives to 3rd level. Upgrading his sling's performance to approach real world numbers may be my first 5e house rule. RPGs always underrate slings for range and damage while ignoring their real downsides. As a former slinger and student of the weapon, its one of my pet peeves.

Llewella of Kinholm - Noble Human Fighter in  mostly sensible armor. Greatsword armed and starting with the tanking feat Heavy Armor Master via the human starting feat option. Great weapon fighting is the obvious Fighting Style for her.

Ban Gundenson - Sage Mountain Dwarf Wizard - given his heritage, he'll either soon have armor under this robe or change to a more traditional dwarf figure. A wizard that can wear medium armor and has dwarf weapon training should be an interesting hybrid character.
Brother Kadros - Human Cleric, Acolyte of a war god. Shield and warhammer not depicted. Given the war god leanings that evolved with the character, and martial weapons proficiency, he'll probably move on to another figure soon.

Starting their adventure now as my shakedown cruise with the rules, then back to stitching together a megadungeon out of all those maps. Have the location picked out on the campaign map for Night's Dark Terror.

Postscript
First fight with 5 goblins ended totally in the party's favor. After two combat rounds, they were unscratched, four goblins were down and dying and one running away. Got a better sense of how some of the rules interacted and sketched out house rulings on morale checks for the goblins, fumble handling, random displacement by successfully dodging a Sacred Flame spell, etc.





Tuesday, September 30, 2014

Paperclip 4.11 / Climate_control 0.3 problem with Jenkins - postmortem

In case we need to deal with this again or somebody else bumps into it...

Situation:
Having just completed manual testing on a branch of our Proposals application that moves it from Rails 3.2 to 4.0.9, with other gems upgraded. Ruby is still on 1.9.3 in this project, with Ruby upgrade probably next on the list before dealing with remaining deprecations to lift Rails into the 4.1s or 4.2s. I merged the Rails4 branch into the dev branch and pushed, which means for us that as a deployment candidate, it starts getting run by the Jenkins continuous integration server. All the tests were succeeding there except for a set that had to do with file uploads using Paperclip. Paperclip and its dependencies from the Gemfile.lock:


    paperclip (4.1.1)
      activemodel (>= 3.0.0)
      activesupport (>= 3.0.0)
      cocaine (~> 0.5.3)
      mime-types

    cocaine (0.5.4)
      climate_control (>= 0.0.3, < 1.0)

   climate_control (0.0.3)

Representative error (43 more like it, testing various things about attachments):

 [1000D [?25l [31m1229/1464: 1.2k/1.4k, 83%, 2.4/s, elapsed: 00:05:54, ETA: 00:01:39
sh: file: No such file or directory
 [31mERROR [0m SupportingFileTest#test_supporting_file_passes_validation_with_unique_filename (0.07s) [K
  Errno::EINVAL:   Invalid argument - setenv
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/climate_control-0.0.3/lib/climate_control/modifier.rb:57:in `[]='
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/climate_control-0.0.3/lib/climate_control/modifier.rb:57:in `block in revert_changed_keys'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/climate_control-0.0.3/lib/climate_control/modifier.rb:56:in `each'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/climate_control-0.0.3/lib/climate_control/modifier.rb:56:in `revert_changed_keys'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/climate_control-0.0.3/lib/climate_control/modifier.rb:17:in `process'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/climate_control-0.0.3/lib/climate_control.rb:6:in `modify'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/cocaine-0.5.4/lib/cocaine/command_line/runners/process_runner.rb:44:in `with_modified_environment'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/cocaine-0.5.4/lib/cocaine/command_line/runners/process_runner.rb:21:in `call'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/cocaine-0.5.4/lib/cocaine/command_line.rb:122:in `execute'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/cocaine-0.5.4/lib/cocaine/command_line.rb:79:in `run'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/helpers.rb:31:in `run'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/file_command_content_type_detector.rb:18:in `type_from_file_command'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/file_command_content_type_detector.rb:10:in `detect'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/content_type_detector.rb:61:in `type_from_file_command'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/content_type_detector.rb:57:in `block in calculated_type_matches'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/content_type_detector.rb:57:in `select'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/content_type_detector.rb:57:in `calculated_type_matches'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/content_type_detector.rb:33:in `detect'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/io_adapters/file_adapter.rb:14:in `cache_current_values'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/io_adapters/file_adapter.rb:5:in `initialize'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/io_adapters/registry.rb:29:in `new'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/io_adapters/registry.rb:29:in `for'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:98:in `assign'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/vendor/ruby/1.9.1/gems/paperclip-4.1.1/lib/paperclip/has_attached_file.rb:66:in `block in define_setter'
  /scratch/rails/.hudson/jobs/wip_bb/workspace/test/unit/file_attachments/supporting_file_test.rb:14:in `setup'
 
 

Reading the trace and inspection of code around the error did not get me too far. Standard rake test from the workspace directory worked correctly, so it had something to do with Jenkins or its configuration.

Insertion of debug "puts" statements showed that the problem in climate_control revert_changed_keys where it was restoring potentially changed enviroment variables cropped up against an environment variable at the head of the array of keys, that had the key of "", which setenv behind ENV[]= could not handle. So where does the weird empty string key come from? This env var had PATH-like contents, but a lot at a level that appeared to be for Jenkins and not for our application. When we looked at the environment variables listing from the most recent Jenkins build of the app, it showed up at the head of the list, above the _ one. Looking at the environment variables lists for earlier runs it does not show up. So apparently it is there for Jenkins and only displays for the most recent run. Got Jenkins to run green again by hacking the vendored climate_control gem (bundle install --path vendor is a build step before running tests).

Here is the change to the gem that fixed it:
climate_control(v0.0.3)/lib/climate_control/modifier.rb line 56:

  (@original_env.keys - keys_changed_by_block).each do |key|
changed to
(@original_env.keys - [""] - keys_changed_by_block).each do |key|

Thanks to David Hays who paired with me on sorting this one out.

Tuesday, September 16, 2014

Aiming for D&D 5e with B10 Night's Dark Terror

After a lot of reading and wrestling with alternatives I have settled on how to get started at running 5th Edition. This time around I am going to be a lazy bastard and use the old Night's Dark Terror module as a wilderness sandbox with assorted bits reworked or bolted on as needed, and nestle a couple dungeons of my own creation into the map, giving me a target for populating some of these inked maps I've been knocking out since last Fall, and keeping the scope of the task manageable.

I'll aim to do something with it for upcoming conventions, and start running some sessions, probably on Sundays in person or on Roll20.

For a bit of graphics in my Wall'oText, here is a tiny dungeon I don't think I've posted yet. I like the experiment with the stairs but it's a bit out of place on this map, and a candidate for digital erasure.






















Monday, September 8, 2014

Stone Chain Walls - a Mapping Variation

I shared photos of two of these in progress on the G+ Map Making in Games Community. Here are final scans.

The inspiration was a desire to make the stonework I was wrapping around my outlines as part of making it prettier matter more by putting texture and intrusive shapes into the rooms and corridors, so there would be built in tactical nooks and crannies for thieves and stealthy monsters to hide in on otherwise plain walls, etc.


 Steps:
Pencil in guidelines against a straight edge. On the third one I used a rolling ruler that could double as a compass for curves.  Break up the simple grid by doing two or three of grids at angles, a stray extra guideline at an off angle, a spray of radii out from a point, or some arcs.

Mostly running along grid lines draw chains of stones. Vary size and shape both in runs and patterns to maintain visual interest. Wiggle off the lines, and occasionally meander a diagonal or curve for more interest. I used a 0.3 Staedtler Pigment Liner for these. Have started also experimenting with the 0.1 for stonework.

Do some minimal stippling to show what is solid. I used the Staedtler 0.1 for this.

Erase the guidelines with a good white artist's eraser.

These were done on a big pad of Canson 1557 Drawing paper.

It is a surprisingly easy style to do and goes pretty quickly since the stippling is so little it kind of makes up for doing the chains of stones instead of simple lines. It it both pretty forgiving of minor goofs and the slower pace of making a line as a chain of stones puts me in a contemplative mood for where the lines should go, and there is an inherent roughness to the resulting stonework so I don't find myself regretting a misplaced line as often as with more conventional draw the outline and then stone + stipple or hatch around it.




















All three will get further detailing when I stock them. For now they are missing doors, floor textures, statues, objects, etc. I like them as is, since they have such a ruin look to them. Kind of an archaeological sketch vibe, Put in a few ways to go from one level to the another and they'll make a nice midsized dungeon.

I'll probably stock them for D&D 5E. Also thinking about making some 2.5D terrain pieces that would fit together to depict parts of these for miniatures.

Wednesday, September 3, 2014

Pacificon

I went to Pacificon this past weekend. Had a great time on Saturday, was too tired Sunday to hit similar highs. After an aborted Dungeon World game I signed up for, but with no one else showing up to play except for the GM, I mostly hung out with friends I don't see often enough. Didn't do my usual Pacificon thing of playing lots of miniatures games, or run any official minis or RPG games.

The games we played:

Gone a Viking - Spades with Norse Gods and points accumulated in trade goods that can be taxed by the Jarl to change it up. Fun.

Comrade Koba - A game kind of like Guillotine, even darker and funnier, with Stalin's purges of rivals as the theme.

Barbarians of Lemuria - Saturday night after dinner until about one - this was the highlight of the con for me. I volunteered to run just before dinner. Had the options of either D&D 5e Phandelver, or BoL off the cuff. BoL got a rousing yes from Martin, who I had run in it once before, so we went with that. Prep time consisted of some mulling it over during dinner. It was improv game of BoL for 8: both Jims, Barry, Zoe, Kira, Martin, Pete, and Julie.

 Fleeing a burning caravan destroyed by savages on a jungle road, our intrepid adventurers had a grueling escape through the jungle  and encountered ghostly spirits and the Apemen of the Lost City of Qar, ending in a battle with the terrible duck headed dinosaur that had terrorized the ape men. BoL proved its merit as a game to run with minimal prep. I had run one previous adventure in Qar, so I had an idea of how I wanted the city to be, but no notes, and only the Mythic playtest rules on my tablet. Up front I knew I wanted to get them into Qar and use the Apemen and one of the temples at the center of the city as foci of the adventure. Possibly with the Blood cult in the Temple like the previous time, possibly something else, which is how it played out with just a bit of foreshadowing about the cult at the end, in case there is a next time. The rest was call and response and weaving in their ideas. I figure there are three or four big structures at the center of the city and the Ziggurat this time is a different one from the Temple last time, so they must have approached from a different side of the city to it to be the dominant building seen at the center. The game came off very well and everyone seemed to be having fun.

 BoL is an excellent light system for winging it. Offhand I can think of three play aids that would help: the campaign map (Martin pulled it off the web using his iPad, since I didn't have my Legendary book along and the playtest rules I was running are text only), careers list and names lists for making NPCs and for places, assuming the book is not to hand and running from PDF, and a tropes checklist to spur ideas that might answer "What's next?".

Serenissima - Sunday morning, was very sleepy, handed off my position during turn 2 to Cyrus who had shown up a bit late, introducing him to the rules by co-playing most of the turn, and wished him well.

Nuclear War - Sunday - a couple of hands of Nuke War were about right for my reduced capacity.

I missed the epic double map Formula De game that was getting under way as I headed off home.

Wednesday, August 20, 2014

Books, books, books

I have been reading several things lately, with reading mostly winning the time conflict with gaming prep and computer gaming:

 The new D&D PHB of course, which I am mostly liking so far. I wish they had gone with less subtle page numbering and larger type in the index, but at least they toned down the background texture this time around. Aging eyes and all that. I mostly like the art, aside from the giant-headed, tiny-footed mutant halflings. The remix of the rules is interesting and nowhere too deeply annoying so far, though I'm sure I'd fiddle with it a bit if I were to run it much. I've knocked together a sorcerer and a rogue so far in running through character generation to drive rules reading. Of the Hasbro/Wizards D&D versions, its the one I'd most likely want to run at this point. I'm happy playing Pathfinder when somebody else runs it, and also enjoy the Labyrinth Lord games I've played in on Roll20. I'm still a big fan of dragging out my tattered LBBs and ancillary stuff and riffing with impromptu variants.

 Just finished 1636: The Devil's Opera, yet another in the Eric Flint 1632 series. Good enough. If you like the series you'll like it, but it isn't the place to start.

  The Science of Discworld: reading more of the Pratchett interludes than the science bits, but both are pretty good.

 Still slowly reabsorbing EPT, as I grind out more dungeon contents and start to think about where to plunk the thing down on the map and what sort of cursory scenario to wrap the dungeon crawl in.

 Getting close to the end of Black Halo, Sam Sykes second of the Aeon's Gate series. I'd read the first, Tome of the Undergates, a couple years ago and rather enjoyed it. Black Halo gets a bit repetitive of some of the themes, but overall is a fun take on the D&D adventurers as misfit outsiders that society barely tolerates, and a bickering, dysfunctional party of PCs. It strikes me as more of a DCC than D&D setting, with characters afflicted by various curses and personality issues, nasty side effects for overtaxed wizards, and a world that leans towards the swords and sorcery end of the spectrum.

 The other night my daughter and I watched an Italian/Polish (TV?) movie about the siege of Vienna in 1683, which got me thinking to re-read Tim Powers's Drawing of the Dark a historical fantasy about the first siege in 1529. The book holds up well, at least for the first 40 pages or so, as much as I read tonight. It might make a good setting for Lamentations of the Flame Princess or Honor + Intrigue in its more fantastical guise, or maybe Savage Worlds/Solomon Kane.

 My copy of Honor + Intrigue turned back up yesterday in a bit of housecleaning, so I've been paging through it again. It's really quite a nice swashbuckling rules set based on the rules engine from Barbarians of Lemuria. Some friends and I have been batting back and forth the idea of running a game, not sure whose campaign idea will win out, probably whoever actually implements a starter scenario first.

 Lastly, over the weekend I was reading a rather dry history book with some serious possibilities as source material for use in either of those last two games or anything with a strong historical element from late medieval through at least the pike and shot period, A History of Greek Fire and Gunpowder, by J.R. Partington. Mine is an old, used, deaccessioned library copy, but you can buy the paperback reprint on Amazon and it is worth it if you want authentic pyrotechnic recipes and delivery devices for your alchemists, or details of historical manuscripts and period books on the topic. It's also been scanned by Google if you just want a taste of it.

 And while I haven't read more than the beginning of the G.R.R. Martin's first Song of Ice and Fire book, some years ago, I have been binge watching the Game of Thrones series in a few bouts of several episodes at a time, and plowed through another three episodes in season three about a week and a half ago. Good stuff.

Tuesday, August 12, 2014

Ruby on Rails: Ajax upload form loses form params - debugging post mortem

Situation:
In a rails application I work on, I encountered a form that stopped submitting correctly after it had previously been working. It was a rarely used web form last used in production some months ago.

Fill in the form, submit, get back a validation error on a field that was filled in being blank.

Start investigating and find the params posted to the controller include the authentication token, but not any of the values filled in on the form.

The form is submitted via Ajax, using the Malsup jquery.form.js plugin to jQuery and includes a file input field.

The bug reproduces in both Firefox and Chrome. Looking at the post in Firebug and Chrome's Developer Tools shows a Request Payload of
[object FormData]&authenticity_token=our_auth_token_string

This I initially mistook as being an object that wasn't parsing in the tool for some reason, but when I added
puts "content_length: " + request.content_length.to_s puts "raw_post: " + request.raw_post.to_s
to the controller's create method I saw that it was literally receiving the form payload as the string "[object FormData]".

That is what cracked it open. I went to the old bit of JavaScript where we put the authenticity token in for Ajax requests:

  $(document).ajaxSend(function(event, request, settings) {
    if (settings.contentType === "application/json") return;
    if (typeof(AUTH_TOKEN) == "undefined") return;

    settings.data = settings.data || "";
    settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
  });


And sure enough, we were expecting a string there, to which the authenticity token argument could be concatenated. Since it is now a formData object after updating the jQuery version from 1.7.x to current recently, the concatenation was casting it to the object as a string form that you tend to see first when alerting variable contents in debugging and the variable happens to hold an object. Rails only kept the parseable portion as params.

So that function needs revision to only add the authenticity token to settings.data if it is a string and it needs one. Off to write the Karma Jasmine test that should catch this and then fix it...

Sunday, August 10, 2014

Empire of the Petal Throne dungeon take two getting traction

 That temple level was not shaking out as interesting enough the way I conceived it so it's going on the backburner for awhile, until it morphs into something more amusing. Another map IS in the works and today I got a third of the rooms detailed, before and after drawing up Shadowkarst, yay for progress!  Looking forward to running it and eventually posting it, fully keyed. This time, the map is staying rough until I write it up, and then the pens will come out for detailing, as carrot to drive the write up.

Anybody up for some old school EPT on Google Hangouts/Roll20 later this month?

Shadowkarst


Breaking out of a map drawing rut and posting hiatus, here is one I like enough to post.

Friday, July 11, 2014

EPT dungeon level in progress

Started designing an EPT dungeon level tonight based on the map "Temple of the Weeping Moon". I hope it comes out worth posting.

Thursday, July 10, 2014

Variant Character Creation for Empire of the Petal Throne

I have still been mucking about with EPT at a low level. After that character creation experiment a few weeks ago, I came across a blog post in which the author talked about stat roll mirroring as an approach to use instead of something like 4D6 and drop lowest for D&D. I forget the author or blog, but he called it twinning. Under this scheme if you don't like your rolls, you can subtract ALL of them from the max roll possible + 1, no picking and choosing, and get that set of inverted rolls.

 Another way to add some flexibility between the roll X stats and assign the rolls as you like and roll for each stat in order is to write down an ordered set of rolls and then pick any stat as the first stat and apply them in order starting there, and wrapping around at the end of the list until all are filled.

 Taking these two together, there are nine percentile rolls to make to set up a starting EPT character, the six basic stats, original skills, professional skills, and starting Kaitars. Throwing the last three in there as an additional minor help. It is nice to have a good skills roll, and Kaitars may be a handy "dump stat".

 For example:
Here is our template:
STR
INT
CON
PSY
DEX
COM
Original Skills
Professional Skills
Kaitars
 With percentile rolls: 34 12 13 90 75 73 35 96 55
 Interesting mixed bag there, the average is 53.7, so not going to mirror it.
Let's say we want a Warrior, and are more interested in attributes than skills.
So we start with the 90 for Strength
STR 90
INT 75
CON 73
PSY 35
DEX 96
COM 55
Original Skills 34
Professional Skills 12
Kaitars 13
 This character will be a peasant or other relatively untrained fighter at first, but has a good attributes profile for a non-caster and will be good once levelled up.

 A high professional skills character that might be decent from these rolls:
STR 73
INT 35
CON 96
PSY 55
DEX 34
COM 12
Original Skills 12
Professional Skills 90
Kaitars 75

 Rescuing one of the lamers from the previous set of roll-ups, need to roll three more:
Dorik hiAkaliyalalu
STR 07
INT 19
CON 21
PSY 96
DEX 02
COM 49
Or Sk 45
Pr Sk 19
Kai 13

This is a perfect character to mirror the rolls, subtracting each from 101:

Kirod hiAkaliyalalu
STR 94
INT 82
CON 80
PSY 5
DEX 99
COM 51
Or Sk 56
Pr Sk 82
Kai 88

That's very powerful as is, or could be slid some to improve the PSY stat if planning to be a caster.

Tuesday, July 1, 2014

Tried out Dominions 4

My son David has been following the computer game Dominions 4 for several weeks lately. It is a complex fantasy themed classic turn based 4X game, heavy on game, light on graphics and glitz. He was extolling to me its depth of play so I took an interest too and bought us a couple copies in the Steam sale. Last night he gave me a tutorial on the basics of play in which we played Ulm, a heavy armored kingdom, on a midsized map in the middle period. We played for about four hours, and had fought several battles and captured one "Throne" by the time we had to stop. It was interesting. I now have a handle on the basics, but he assures me we have only scratched the surface, and I can see that from all the stuff in there I have already seen but not done yet. So far, it has been a fun game and I could see playing quite a lot of it. I look forward to playing against him once I have a bit of a handle on strategy.

Sunday, June 15, 2014

Empire of the Petal Throne refactored experience points table

In rule 600, it is clear that the basic experience system is based on OD&D. You get one experience point for each Kaitar obtained, with an exclusion for winnings from betting in the Hirlakte arenas, an obvious patch for some player that tried it. And 50 points for each HD of each slain hostile being.

Kill XPs only go to the last one to hit the target, explicitly not to the one doing the most damage.  It's curious as this leads to infighting regarding kill stealing and the like. It's probably not a big deal, since kill rewards are likely to be swamped by treasure XPs even at the 50/HD rate.

Treasure sharing is also discussed in rule 600 on experience points, perhaps because treasure is the main source of XPs.

Rule 630 gives a classic, D&D like upscaling by doubling XP progression table. There are two oddities. One is that after doing the doubling progression all the way up to level 9 (with a bit of flattening to reach levels VIII and IX, oddly only for Magic Users, given the D&D antecedents where they were deemed to need the most per level), the table does not just flatten out to needing the same for each subsequent level, it drops precipitously to a flat 10,000 for each subsequent level (though affected by rule 620). That is a huge drop, even accounting for rule 620.

Rule 620 appears to be a variant on D&D's rule about high level characters fighting low level foes having their experience points reduced for it. But instead it applies more simply to all experience points gained at the level, so the characters get a double whammy going up to level IX, both a doubling of the amount needed and a scaling divisor that makes it even harder. A campaign played straight up is going to have to pour gold through the PCs' hands to keep them levelling up to IX. Since it is a flat effect, there is really no good reason to bolt rule 620 onto the table in 630, other than to make 630 look more like D&D. You have two rules doing the same thing, the intrinsic doubling and then the experience point reduction patch.

It all says to me that MAR Barker was not a systems guy. I'm wondering if the rule about levels X and higher being so much easier than IX is intended or a bug. If it is intended, why?

Here is the refactored combination of rules 620 and 630, run up for a few more levels, following the algorithm specified.
I am rounding away the awkward 1's at the beginning of each level, for simplicity. Add them back, with the appropriate multipliers to account for 620 if you care.
Level Total XPS Needed New XPs needed to reach next level
I02,000
II2,0002,000
III4,0004,000
IV8,00016,000
V24,00032,000
VI56,000128,000
VII184,000224,000 (184,000 for MUs)
VIII408,000 (368,000 for MUs)1,200,000 (900,000 for MUs)
IX1,608,000(1,268,000 for MUs)100,000
X1,708,000 (1,368,000 for MUs)200,000
XI1,908,000 (1,568,000 for MUs)200,000
XII2,108,000 (1,768,000 for MUs)200,000
So level X is the easiest level to get since level VI. But then it bounces back up and XI, XII, etc take almost as many each as VIII. Overall it strikes me as the sort of hodgepodge you get when layering systems without thinking about it too hard, instead of actually designing software or game rules. The trailing comment about how the seeming impossibility of getting enough to go from X to XI, is another hint, when VII to VIII and VIII to IX are the really hard levels, since you have fewer assets and tougher goals. Trying to come up with a rationalization, maybe the trudge to level IX represents your character getting into the upper reaches of society/administration, but once in, your path becomes easier to accrue more power?

Saturday, June 14, 2014

Hit location percentages from real data

In his article "Fact-checking fight-books: comparing historic injury patterns to strikes in modern European sword arts" on the martial arts blog Tameshigiri.ca | The Art of Cutting, Randy McCall summarizes the results from a paper by Johann Keller Wheelock Matzke in which the injured skeletons from 5 battlefield mass burials are statistically evaluated for the location and degree of injuries due to weapon trauma. He has a link there to the PDF of the Matzke paper as well

Looks useful to me for the crunchier sort of RPG or skirmish game, if you want a hit location diagram that mirrors reality, with variation by weapon types involved. The hit location percentage diagrams on skeletons are particularly evocative.


Wednesday, June 11, 2014

An Alternate Professional Skills list for Fighting Men/Warriors in Empire of the Petal Throne

After yesterday's run through of character creation, the thing that really stuck with me is that the skill list for fighters is broken. Melee skills except for sword and dagger all come before missile skills, and plain old bowman will take the fighter that rolls a 50 6th level and 51-80 5th level.

So taking a leaf from history, I'll organize skills along military battlefield roles, instead of specific weapons. It is not that different using an axe and a mace in terms of the skills and biomechanics, for example. By reorganizing this way, the progression is more natural, toward more heavily drilled and specialized combat forms and then leadership. A character will have all the basic combat skills a bit earlier, and the missile skills considerably earlier, with leadership skills a bit more fine grained at the top end. Later combat skills supercede earlier ones regarding weapons use, armor, morale, ability to lead, etc.

1  Skirmisher - Many ancient armies had their youngest members in the lightest infantry role, expected to throw things like javelins or rocks, and maybe melee briefly against other lights or disorganized/demoralized heavies. They can use bucklers, daggers, and clubs in melee, but not well, -1 to hit and damage with these. They can select one of the serious missile weapons in addition to the above. With archery, bolas, staff slings or slings they are -1 to hit and to damage. Crossbows are -1 to hit and an extra turn to reload. Reduce their range with all of these missile weapons by 1/2. They are not yet armor trained. -2 on morale rolls in melee situations. Simple maneuvers only, but are used to swarm outward and back and take advantage of defensive terrain.

2  Levy Spearman OR Warband: Levy spearman - Leather armor training, can fight in close order and use full shields. Decent at combat with a spear, a poleaxe or one handed weapons without particular skill or subtlety. -1 to hit with these.  Not particularly skillful in maneuvers. Not very steady. -1 on morale in melee. Can serve as sapper crew but not lead.    Warband, same but very poorly drilled and impetuous, no penalty with one hand weapons, no penalty on melee morale, -1 morale when subjected to missile fire. Cannot be a sapper crew.

3  Missiles - Armor training up to chainmail, can initially fight with full skill with one missile weapon, and -1 to hit and 3/4 range with others, gaining one additional weapon at full to hit and range at each character level after the first in which the skill is first gained. Trained to execute simple battlefield maneuvers. Can use bows, crossbows, slings, staff slings, bolas.  One handed melee sidearms without shield can be used at -1 to hit. -1 on morale in melee. Can serve as artillery crew. Can lead a squad of missile troops or skirmishers.

4  Phalanx - well drilled, all armor trained, close order. No penalties with spear or pike. Can use any shields. -1 to hit with one hand sidearms like swords, axes, maces, or two handed special pole arms like flails and halberds. Normal morale in melee. Can lead a squad of Phalanx or levy.

5  Legionary - extremely well drilled, capable of complex maneuvers like formation changes to allow line replacement without disorder, forming the tortoise or opening lanes to pass large enemies through their formation. All armor trained. Any shields. No penalties with one handed melee weapons, spears, javelins. +1 morale in melee. Can lead a squad of legionaries or any earlier skill type. Can be sapper crew.

6  Shock Troops - Fully skilled with two handed heavy weapons, any armor, well drilled. Skilled in breaking up spear and pike formations. +1 morale in melee. Grappling at +1. Can lead any combat infantry squad.

7  Fencer - +1 to hit, parry, and damage with a single sword or dagger and off hand empty. Can fight with sword and dagger together per the standard rules. Formed combat is not an issue. Armor is addressed by other skills by the time. +2 morale in melee. Not about leadership.

8  Junior Officer - lead a company sized formation up to around 100. More in a pinch at a penalty.

9 Sapper OR Logistics Officer - can manage entrenchment, mining operations, build mantlets, siege rams and towers OR  manage accounting for and supplying large formations

10 Catapult-Artillery Officer - as per the catapult/artilleryman skill in the book. Can command, target, and build artillery siege engines  OR Intelligence and Planning Officer

11 Command Officer - can lead a battalion sized formation, and includes whichever skill was skipped from 9.

12 Strategist - skilled in leading whole legions and armies, and includes whichever skill was skipped from 10.





Rolling up some Empire of the Petal Throne characters

So, in the interest of shaking off the rust and locking in what I've been re-reading, I'm going to make a few characters for use as NPCs or Flailsnails or whatever.

Starting off with a run through Brett Slocum's Tekumel Word and Name generator we get a list of names:

Qalunurr hiChum
Ulgu hiZishalengha
Mu’arrin hiTurmork
Chi hiTsoru’or
Mritlonu’u hiFres
Ganti hiZanomun
Dorik hiAkaliyalalu
Zaggaya hiSrin


The first three will be level 1 characters of the three classes, the simplest thing  possible with mechanics. Stats in EPT are percentile rolls.

Qalunurr hiChum
STR 63
INT 24
CON 30
PSY 15
DEX 02
COM 30

Well, that's an inauspicious beginning. A fighter, but one to cull or use as a mook NPC.

Ulgu hiZishalengha
STR 89
INT 58
CON 91
PSY 67
DEX 95
COM 58

Ulgu is a character with possibilities. Probably a fighter or mage. 

Mu’arrin hiTurmork
STR 86
INT 47
CON 42
PSY 49
DEX 01
COM 41

Well, at least he's strong. But another abysmal DEX. Something in the water...

I think I'll roll a couple more before fleshing out one in each class.

Chi hiTsoru’or
STR 51
INT 42
CON 20
PSY 39
DEX 22 
COM 77
Another mediocrity, but handsome or pretty this time.

Mritlonu’u hiFres
STR 76
INT 32
CON 38
PSY 21
DEX 74
COM 22
263 Total

Below average overall but with a couple of good stats, Mritlonu is a keeper in this sad company.

Ganti hiZanomun
STR 35
INT 57
CON 09
PSY 02
DEX 12
COM 19

It may be time to execute my tens die pour encourager les autres.

Dorik hiAkaliyalalu
STR 07
INT 19
CON 21
PSY 96
DEX 02  Again the feeblest DEX!!! Aaggh...
COM 49
Doesn't even break 200 pt. Ouch.

So let's flesh out the best of the lot:

Ulgu hiZishalengha 
STR 89 Powerful (+1 to hit and damage)
INT 58 Average
CON 91 Very Healthy (+1 to hit and damage dice)
PSY 67 Somewhat Psychic (+5% chance to spells working, can use all spell levels)
DEX 95 Dextrous (+1 to hit and damage dice)
COM 58 Goodlooking

So, are bonuses to hit dice to the roll for hit points or to hit bonuses or both, since they appear on multiple stats? As far as I can tell, it's to hit, even for CON, but I'd probably house rule it as a per hit die bonus in CON, instead of to hit. He's at +3 to hit, +3 damage, or +2 to hit, +3 damage, +1 per hit die under the house rule. He will make a formidable Warrior.

Original Skills: 57, so one group I and one group II.
Tanner and Smith-Armourer - He built up his physique in the smithy.
Professional Skills: 72 - 4 among the first 5.
Spearman, Axeman, Swordsman, Slinger

This table has some oddities to it, since the range from which you can pick means that no one can be an archer at 1st level, and even crossbowmen are very rare. When levelling up, you have to fill in the unchosen ones, so there is little variety among characters of the same class after a couple levels except in the overall progression from the initial roll. I'd houserule this a bit to allow for more variety. Given the descriptions, I'd say sapper and catapult artilleryman skills make you capable to organize and lead these two areas, and not be required for basic squad members in these activities.

[Edit] Using my variant from the next post: Skirmisher(Bow), Levy, Missiles(Bow, Sling), Legionary


Hit points: rolled a 3 so 4 (or 5 by house rule on CON)

Money - 95 Kaitars
Spending that for gear:
sword 10
javelin 4
leather armor 30
helmet 13
shield 10
backpack 5
waterskin 1
rope 3
10 torches 2
flint & steel & tinder 3
sling 3
20 lead pellets 1
remainder for food 1 week underworld 10

Fleshing out a Mage:
Dorik hiAkaliyalalu, Level 1 Mage
STR 07 Weak -1 To Hit
INT 19 Stupid, -1 To Hit, -1 Damage
CON 21 Puny, -1 To Hit,. 40% Revive, 20% Magic heals fail
PSY 96 Highly Psychic +15% spell working
DEX 02  All Thumbs, -1 To Hit, -1 Damage
COM 49
With -4 to Hit and -2 to Damage or -1HP/die, -3 to Hit and -2 Damage, Dorik had better avoid combat and really focus on magic.
45% chance of spell failure.
HP 6, or 5 if CON house ruled
Original Skills: 81, 2 Group I, 2 Group II, 1 Group 3
Glass blower, Paper-ink maker, scribe-accountant, bird-trainer, alchemist
Profession skills: 01, Choose 2 of first 3. Control of Self, Illusion

99 Kaitars, of course his best roll would come here... x-(
Fresh garments 30
Warm cloak 15
pole 1
small sack 1
5 flasks of oil 5
Flint and steel 3
lantern, 5
Cage with 2 homing birds 10 (price guesstimated)
Charting paper and pen 3
waterskin 1
Dagger 5
Rations, outdoor- 15
Has some money left.