MapTool campaign frameworks

After I had done a lot of work to start building macros for my D&D game that I’m running in MapTool, I discovered something – it’s not necessary to reinvent the wheel if you don’t want to.  It turns out that a number of people on the MapTool forums have created what are known as campaign frameworks.

A campaign framework is a work of art.  It’s a MapTool campaign file that contains within it everything you need to run a campaign under a given rule set (D&D Fourth Edition, d20 System, as well as other RPGs).  The particular framework I’ve played around with is from a MapTool forum user called Rumble.  His framework for D&D 4th Edition is in this post.

The framework is basically a campaign template.  If you want to start a new campaign, you start with the template file.  When you open the file, you’ll see something like this:

Rumble FrameworkWhat you see here is several pre-made tokens on the top part of the screen, some campaign macros (including those that will let you import character or monster info), and some macros for the sample PC token that’s selected.  The campaign file has an extensive set of properties to keep track of the sort of things my properties do and then some.  For instance, I hadn’t thought of keeping track of action points or experience points in the character sheet, but this property set does it.

Furthermore, the macros that are built in for both PC and monster tokens are all-encompassing and way cool.  They include everything I’ve done (hit point management, attack powers, skills) as well a bunch of things I haven’t done (delaying one’s turn, pulling up a formatted character sheet and power cards).  There are even macros to make editing the character stats easier, rather than having to directly fiddle around with properties.  The attack macros take into account who the target is, figure out their defenses, establish whether the attack hits or not, and so on.  It’s very, very detailed, and from what I understand it all works!

So, I learned that I don’t have to write all of these macros from scratch – others have done it for me.  Macro-writing over, right?

Nope.

See, I LIKE writing macros!  I’m not a professional programmer, but I’m pretty good at programming.  When it’s for a hobby, it’s something I just enjoy doing.  Plus, I like the idea of being able to customize my macros for my players.

Now, I would be foolish if I completely ignored the existence of excellent MapTool frameworks like Rumble’s.  If I’m having trouble with my own macros, I can see how Rumble implemented something.  I’ll certainly take inspiration from some of his ideas (such as tracking XP and action points).  But I don’t feel like using a pre-packaged setup like this because then I would deprive myself of the fun of discovering how to write my own MapTool macros.

All that said, if you’re not into the idea of writing your own macros for the pleasure of writing them and you just want a bunch of macros that work for your D&D 4e game, start your campaign from a template like this one.  There are lots of others on the MapTool forum for a variety of games, and they look fantastic to me.  I love the MapTool community!

MapTool Macros – Damage and healing

Edit 7/19/2010: Since I first wrote this post, I have learned more about MapTool macros, and you can find the improved information at this post.  However, I’ve left the original post below for posterity – and as an example of how to learn how to improve your macro writing, rather than just giving the finished product.

During our first actual gaming session with MapTool, I was pleasantly surprised to discover that my players liked keeping track of their characters’ hit points within the program, right on the character sheet that pops up whenever they would mouse over their character’s token.  They did this despite the fact that changing their HP involved double-clicking the token, navigating to the Properties tab of the Edit Token dialog, deleting the current HitPoints value and entering the new value.

Given that they like keeping track of HP in MapTool, I figured the least I could do would be to make it easier for them.  I wanted to create a button that would let them decrease their HP and another button that would let them heal.  And while I COULD have stopped there, I got into it and wanted to make this even slicker.

Before I could put the new macros into action, I had to edit my characters’ properties.  I needed the MaxHP value (so that healing couldn’t take the character above it).  And while I didn’t technically NEED the Bloodied value to be on the character sheet (macros could calculate it based on MaxHP), I discovered that MapTool will let you specify factors that are derived from other factors.  Here are the properties I now use for the Health section of my characters’ stat sheets:

Health properties

*@—–HealthStats—–:-
*@HitPoints:10
*@TempHP:0
*@MaxHP:10
@BloodiedHP:{FLOOR(MaxHP/2)}
*@SurgesLeft:6
*@SurgeValue:{FLOOR(MaxHP/4)}
@DailySurges:6

Note that the * means that the variable will be displayed on the mouse-over character sheet and the @ means that it will be visible only by the token’s owner and the GM.  (Side note: This means that my players won’t be able to see stats for monsters, since they don’t own the monster tokens – this is good.)  The header line (HealthStats) is technically a property with an assigned value of “-“, which I’ve added just for looks on the pop-up sheet (there’s a separate section now for defenses and so on).  SurgeValue isn’t used in my macros, but I wanted it on the sheet so my players could look it up easily whenever they spend a surge.

These macros ended up getting more complex than I intended for them to be, so I’ll just put the finished versions below and then discuss each one.  I’ll start with the macro that adds temporary hit points, as it’s the simplest.

Temporary hit points macro

[h: TempsAdded=AmountOfTempHPGained]
[h: CurTemps=getProperty(“TempHP”)]

[if(CurTemps>=TempsAdded), CODE:
{Already has [CurTemps] temporary hit points, so no temps were  added.};
{[h: setProperty(“TempHP”,TempsAdded)]
Now has [TempsAdded] temporary hit points.}
]

This macro first creates a prompt that asks the player to enter a value for AmountOfTempHPGained.  There are ways using the INPUT command to make this look prettier, but I haven’t bothered with them yet.  Once the player has said how many temps they’re gaining (let’s say 3), that’s stored as TempsAdded.  The macro finds out how many temps the player has at the moment (CurTemps) and then checks to see if the new temps are greater than the old.  Since temporary hit points don’t stack in D&D 4e (if you have 5 and gain 3 more, you just have 5, not 8), the macro simply prints a “no new temps for you” message if they already have at least as many as they’re adding.  Otherwise, it sets the TempHP value on the character sheet to the amount of temps that were added and tells the player the new total.  Not too hard.

Next up is the macro to gain actual hit points – the healing macro.

Healing macro

[h: Heal=AmountOfHPGained]
[h: CurHP=getProperty(“HitPoints”)]
[h, if(CurHP>=0), CODE:
{[NewHP=CurHP+Heal]};
{[NewHP=Heal]}
]

[h, if(NewHP>getProperty(“MaxHP”)), CODE:
{[NewHP=MaxHP]
[Heal=MaxHP-CurHP]};{}
]

[h: setProperty(“HitPoints”,NewHP)]
[h: Bloodied=getProperty(“BloodiedHP”)]

Gains [Heal] hit points and is at <b>[NewHP]</b> hit points.

[if(NewHP>Bloodied && CurHP<=Bloodied && CurHP>0), CODE:
{She is no longer bloodied.
[h: setState(“Bloodied”,0)]};
{}
]
[if(CurHP<=0 && NewHP<=Bloodied), CODE:
{She is no longer dying, but she is still bloodied.
[h: setState(“Unconscious”,0)]};
{}
]
[if(CurHP<=0 && NewHP>Bloodied), CODE:
{She is no longer dying, and she is no longer bloodied.
[h: setState(“Unconscious”,0)]
[h: setState(“Bloodied”,0)]};
{}
]

[if(NewHP==MaxHP), CODE: {She is at maximum health.}; {}]

This one starts like the last one, popping up an input box that asks the player to say how many hit points they’re gaining, saving that number as Heal.  It then gets the character’s current HP.

  • If current HP is greater than zero, the macro sets the player’s HP to the current HP plus the healed amount.
  • If current HP is less than zero, the macro follows D&D 4e rules by setting the player’s life total to the healed amount (healing starting from zero rather than from a negative number).

The macro also checks to see if the healing would put the character’s hit points at or above their maximum hit points; if so, it only heals up to the maximum.  It prints a message with the amount of HP healed and the new HP total.

The macro also gets the PC’s bloodied value from the character sheet and prints out some additional messages depending on where the character started with HP and where they ended up.

  • If the PC was conscious but bloodied and is not bloodied any more, the macro prints a message saying as much and then removes the “Bloodied” state from the character (which shows up in my campaign as a little red icon in the corner of the token).
  • If the PC started off dying and ended up not dying but still bloodied, the macro says as much and then removes the “Unconscious” state from the character (which shows up in my campaign as a gray X across the character’s portrait).
  • If the PC started off dying and ended up unbloodied, the macro says so and removes both the “Bloodied” and “Unconscious” states from the character.

Finally, if the PC ends up at maximum hit points, the macro says that, too.  This is helpful in cases where the amount healed is less than the amount entered because the full amount would have put the PC above their max HP.  This way, the player understands what happened.

Now for the damage macro.  I originally wrote this one before the healing macros, and I forgot about temporary hit points when I wrote it, so it had to be re-done.  This has made it rather complex in appearance.

Damage macro

[h: Dmg=AmountOfDamageTaken]
[h: CurHP=getProperty(“HitPoints”)]
[h: CurTemps=getProperty(“TempHP”)]
[h: Bloodied=getProperty(“BloodiedHP”)]
[h: Dead=-1*Bloodied]

[if(CurTemps==0),CODE:
{
[h: NewHP=CurHP-Dmg]
Takes [Dmg] damage and is at <b>[NewHP]</b> hit points.
[h: setProperty(“HitPoints”,NewHP)]
};
{
[if(Dmg<=CurTemps), CODE:
{
[h: setProperty(“TempHP”,CurTemps-Dmg)]
[h: NewHP=CurHP]
Takes [Dmg] damage, losing [Dmg] temporary hit points.  She how has [CurTemps-Dmg] temporary hit points and <b>[CurHP]</b> regular hit points.
};
{
[h: HPDmg=Dmg-CurTemps]
[h: NewHP=CurHP-HPDmg]
[h: setProperty(“TempHP”,0)]
[h: setProperty(“HitPoints”,CurHP-HPDmg)]
Takes [Dmg] damage, losing [CurTemps] temporary hit points and [HPDmg] regular hit points.  She now has no temporary hit points and <b>[NewHP]</b> regular hit points.
}
]
}
]

[if(NewHP<=Bloodied && CurHP>Bloodied && NewHP>0), CODE:
{She becomes bloodied.
[h: setState(“Bloodied”,1)]};
{}
]

[if(NewHP<=0 && NewHP>Dead && CurHP>0), CODE:
{She is now dying.
[h: setState(“Unconscious”,1)]};
{}
]

[if(NewHP<Dead), CODE:
{She is dead.
[h: setAllStates(0)]
[h: setState(“Dead”,1)]};
{}
]

All right, let’s break this down.  This macro starts by asking the player how much damage they’re taking.  It pulls in the current hit points, current temporary hit points and bloodied value from the character sheet and calculates the “Dead” HP value (the negative of the bloodied value).  The code then branches.

  • If the player doesn’t have any temps right now, the new HP is set to the old HP minus the damage taken, and the player is told how much damage is taken and where their hit points stand now.
  • If the player does have temporary hit points, the macro checks to see whether they’ll all be used up by the damage or not.
  • If they have more temps than they’re taking in damage, the damage is subtracted from the temps and the player is told how much damage they took, how many temps they have left and what their total HP is.
  • If the damage is enough to eat all of the temps and then some, the temps are wiped out, the remainder is subtracted from the actual hit points, and a message tells the player what happened.

Now the branches are done (the player has gotten a message telling them how much damage they took and where their HP situation is now).  The rest of the code checks to see if the character went from unbloodied to bloodied, conscious to unconscious, or alive to dead.  If any of those happen, the proper states are set and the proper messages are sent to the text window.

Finally, I realized that players will probably want to keep track of their healing surges as well, so I created a simple little macro to let them remove a surge from their total (note that actually gaining hit points is handled independently through the healing macro above).  Having done that, I figured I might as well create a macro to let them add a surge back (useful in case they click the “spend a surge” button by accident or take an extended rest).  The code for these is as follows:

Remove a surge:

[h: CurSurges=getProperty(“SurgesLeft”)]

[if(CurSurges>0), CODE:
{[h: setProperty(“SurgesLeft”,CurSurges-1)]
Spends 1 healing surge.  She has [CurSurges-1] [if(CurSurges!=2, “surges”, “surge”)] remaining.
};
{Has no healing surges left to spend.}
]

Regain a surge:

[h: CurSurges=getProperty(“SurgesLeft”)]

[if(CurSurges<getProperty(“DailySurges”)), CODE:
{[h: setProperty(“SurgesLeft”,CurSurges+1)]
Regains 1 healing surge.  She has [CurSurges+1] [if(CurSurges!=0, “surges”, “surge”)] remaining.
};
{Already has her full daily allotment of [CurSurges] healing surges.}
]

You’ll note that these macros do a couple of minorly fancy things.  First, they check to make sure that the player either has a surge left to spend or isn’t already at their maximum surge value on the adding side.  Second, they appropriately handle the singular/plural on surge/surges.  I didn’t bother with this on the hit points macro, so there you can see things like “Violet: Takes 10 damage and is at 1 hit points.”  Annoying, but not worth fixing because the code is messy enough already!

In case you were wondering, yes, I did use feminine pronouns throughout these macros because all three of my players are using female characters (despite the fact that one player is male).  If this were not the case, I could:

  • Awkwardly switch to gender-neutral pronouns
  • Edit the pronouns in the macros independently for each character
  • Create a property that indicates whether the character is male or female and then edits the pronouns appropriately

If I were doing this for broad distribution, I’d take the latter approach.  In my small game, though, I’ll probably go with the second approach if a male character ever comes up.

I’ve stored these macros in a package (along with skill checks, which I’ll cover in a later post) in case you’re interested (available here or on the downloads page).  I’m excited to see how my players will like them!

Chaos Scar campaign begins

At long last, my in-person D&D group has begun its second campaign.  Last time Nate served as our DM and we began with an adventure from the Dungeon Delve book that Nate adapted to his own setting and that went into home brew territory fairly quickly.  We ended up stopping that campaign after a few months when my wizard died and the rest of the party wasn’t feeling all that enthusiastic about their characters (except for Bree, who was fine with her character but was itching to try her hand as dungeon master).

With that campaign three weeks behind us, we entered the world of the Chaos Scar, which I believe is an adventure from Dungeon magazine.  The Chaos Scar is an area where a meteor had fallen and shards of the meteor were sending out evil energy that corrupted the land and creatures around them.  Bree was great about asking us to think about how our characters might fit into this world, how they got involved with the Chaos Scar, and how they’re connected to one another.  I love that.  Even better, when we got to the table she presented us each with an honest-to-goodness hand-made map on vellum paper!

Chaos Scar Map

How cool is that?  It’s probably worth mentioning here that Bree is studying to be a professional artist.  She knows what she’s doing.

Anyway, our party trekked into a cave in the Scar to try to wipe out a cult of Torog.  The first battle involved us fighting some constructs who could use ranged at-will attacks to daze us – ouch!  We took some licks but prevailed.  The second battle involved a rope bridge across a chasm with archers on the far side and some semi-sentient mushrooms below.  The two dextrous characters (my Avenger and Kyle’s Monk) crossed the bridge while the less-dextrous characters (Barbara’s Runepriest and Nate’s Fighter) crossed the chasm below.  We prevailed there, too, but I took a lot of damage and used up all of my surges.  The final encounter of the day saw us fighting the cultists and their leader in their little temple, during which time I mainly stayed out of the way and shot my ranged at-will attack that gave me temporary hit points.  Even with that, the cult leader hit me with a ranged attack that erased my temps and dropped me from 18 to 8 (remember, no surges).  Yikes.  We finished that battle and searched the cult leader’s chamber and ended the session.  We thought we were about to take an extended rest, but Bree informed us that the mushrooms were arising now that the cult leader was dead.  This could get ugly for my Avenger!

I don’t have a lot of DM lessons to share today, except to say that Bree is clearly going to be a lot of fun as a DM!  I did take away some player lessons, though I haven’t figured them all out just yet.  At the very least, I’m certain that having my Avenger just rush headlong into melee is not the way to go, despite the fact that he really wants to fight in melee in order to use his Oath of Enmity.  I have to let the tank characters get there first, I think, which is tough when I’m so mobile.  I’ll probably lower my Dexterity a little in order to pick up more Constitution.  That will lead to slightly lower armor class but higher hit points, more surges, and a greater surge value.  Good tradeoff?  I’d like to hear your opinions and suggestions in the comments about making a more effective Avenger.

Free RPG Day 2010

Since yesterday was Free RPG Day, I decided to head down to my friendly local game store to participate in the festivities.  Specifically, I knew from their Facebook feed and their podcast (yes, I listen to my local store’s podcast!) that they were running a free Dark Sun adventure.  Since I’m never able to play in D&D Encounters thanks to my Wednesday night bowling league, I thought this would be a good chance for me to experience Dark Sun.

I went to the store a little before the 9:00 AM start time for the game, and had no trouble getting a seat at the table.  We soon had the full six players, and a seventh showed up about 10 minutes after the hour, which the DM accommodated by handing her one of the player cards from Encounters.  She played a second healer, which turned out to be much needed!

My character was a goliath fighter, a former gladiator in the city of Tyr who was fleeing the chaos in the city along with his adopted cousin and a friend, both clandestine arcane spellcasters (apparently arcane magic is taboo in much of the Dark Sun setting).  We joined up with the other PCs, who were on a quest to get water for their people living in the mountains.  We all signed on with a elven caravan going from Tyr to Alderak, hired to protect the elves and their cargo.

The first part of the adventure was a loose skill challenge or two about surviving the desert and badlands, which we had no trouble with.  We were then set upon by raiders in a canyon for our first battle.  I enjoyed role-playing my fighter throughout – he had 10 Intelligence and 8 Wisdom, so he wasn’t too bright and he was quite gullible, very willing to go along with whatever his allies wanted to do.  He liked to smash bad guys with his sword and defend his buddies when they were in trouble.  It’s all mechanics, but you can totally role-play these things, which I loved doing.

The battle with the raiders was most interesting for me because of the guy sitting next to me, who had never played an RPG before but who had apparently read up on things a little bit before coming into the store.  His character was a wizard, and he found himself surrounded by minions before he could act, so he was thrown right into the fire of having to learn about opportunity attacks.  Every single power that his character had was either ranged or area, which means that if he cast them while standing next to a bad guy, the baddie would get an opportunity attack on him.  I believe he took Second Wind in the first round, then was able to shift away and start blasting in the second round after the rest of the group had pushed some of the minions away from him.  It was fun to see him learning what he could do, including trying to climb a cliff to get out of harm’s way (with 8 Strength, that didn’t go as well as he would have liked).

I did get a DM lesson out of this battle.  The DM generally did a great job all day, with lots of role-playing of the bad guys and description of the effects of attacks and so on.  However, he made one decision that I would have changed.  The minions in this particular battle only took one hit to kill, as with typical minions, but they would then keep fighting until the end of their next turns, at which point they would drop.  I have no problem with the mechanic, and the adventure writers tried to give some flavor for it.  Where I would have done things differently, though, is on critical hits.  Crits on these minions were treated just like any one-damage attack, and the minion still got its next round of actions before dying.  I think it would have made the players feel more awesome if a critical hit would kill one of those minions outright, rather than letting it fight on for another turn.  It’s a minor point, but it’s the type of thing that I would change on the fly to make the game more fun for the players.

After the canyon battle, the party arrived at Alderak and hung out in an elven marketplace while the guy who hired us went into a tent.  My guy, being rather dumb and oblivious, had no clue that anything was fishy, but some of the other PCs didn’t trust the elf who hired us and tried to follow him.  The DM basically said no – which was okay in this case, because the PCs in question happened to roll low on their Insight checks.

Sure enough, the party was soon ambushed by something like eight elven archers and four insects, all of whom acted in a surprise round while only one of our characters acted.  Then the bad guys went first in the first round of combat.  Before I had a chance to act (despite getting a 19 on initiative in this battle, after the 3 I rolled in the last one) I was on the ground making death saves, soon joined by another ally.  Our healer brought me back on her turn, at which point I was immediately dropped again.  The elf leader came back out of the tent, and he was soon killed by two of the other PCs, at which point the town guards showed up and sorted everything out.

This particular battle didn’t feel like it was very well designed.  Being able to take down two PCs (one of them twice) before they even have a chance to act seems far too harsh.  And then having the battle immediately end halfway through that round when the surviving PCs dropped the leader seemed anticlimactic.  I guess this was how this battle was intended to go, but two or three of our PCs didn’t even get to their spot in the initiative order before the battle ended.  It didn’t seem like much fun.

Anyway, the authorities established that we were in the right here, and so they arranged for our party to be paid what it was owed.  In addition, they let us face the elves in the arena games that were going on.  Here is where things got pretty cool.  Instead of a simple arena combat (which is what I think the written adventure called for), our DM modified things to make it an interesting game.  The two sides (the party and the wicked elves) started on opposite sides of the arena (east and west).  In the middle was a pile of seven huge ceramic coins – big enough that they required two hands to carry, but no check to pick them up or move them.  At the north end was a closed chest for our team, and at the south end was a closed chest for the elves.  The goal of the game was to have more coins in your chest than your opponents have in theirs when the battle ends at some unknown time in the future.

The real twist was that we were not allowed to deal any damage directly to one another – doing so would result in forfeit for the team that dealt the damage.  However, the arena was littered with lots of razor vine, which would deal 5 damage to any creature that began its turn in the vines.  Most of the elves were minions, so if we could push or pull them into the brambles, that would be fine within the rules and would kill them off.

The elves acted first and managed to get three coins into their chest right off the bat.  We had an ace in the hole, though – our wizard had Sleep prepared, which was awesome.  Our team grabbed some coins, shoved some minions into vines, etc.  The tide was about even, when suddenly three monster hounds of some sort were released into the arena and started attacking everyone.  Fortunately, we were allowed to fight back, but this would distract from the coin game.  Still, our team took the upper hand after taking a coin from the elves’ chest, putting it in ours (giving us four of the seven coins), closing the lid to out chest and then having a PC stand on top of the chest.

My fighter and our barbarian were keeping the hounds occupied, and the hounds had just dropped (but not totally killed) the barbarian when the elf leader saw the handwriting on the wall.  The evil elf knew that the game was lost, and since the DM said, “This is Dark Sun after all,” the elf decided to coup de grace our unconscious barbarian.  The authorities immediately declared our team the winners and said that we were free to fight to the death now (it’s worth noting that this was a one-shot game, and this was the final encounter).

I followed with what I thought was a winning move.  Surrounded by the two remaining hounds, both of which were bloodied, I Cleaved.  I critted on the attack roll, so I killed off one hound and dealt 5 damage to the other.  That wasn’t enough to kill the second hound, but since it was standing next to the elf leader and the hounds had a history of going after the closest person, I shifted away, figuring that the hound would kill the elf.  He almost did, but the DM decided that would be anticlimactic, so he had the hound come after me instead, which dropped me.  Then the elf coup de graced me as well.  Finally, our wizard killed the last hound and the elf with one spell.

Even though my character was killed off, I didn’t really mind.  It was the last battle, and I understood that it was appropriate for the Dark Sun setting.  I had a good time at the game and I think I picked up a couple of lessons.  I don’t think the Dark Sun setting is my particular cup of tea, but I know that lots of gamers out there love it, so good for them!

I do want to mention one final note about Free RPG Day.  The store was offering 20% off all RPG products, which I hadn’t realized until the afternoon when I was listening to the store’s podcast as I mowed the lawn.  They mentioned that the store was open from 7:00 AM until midnight on Free RPG Day, so I figured I’d stop on by in the evening to pick up Divine Power and Monster Manual 3, two books I’ve had my eye on.  I went to the store a little after 9:00 PM and saw that they didn’t have MM3 on the shelf, but they did have Divine Power.  I went to the register to buy my books, asking about MM3 and hoping to get a rain check (no luck).  When the cashier rang up Divine Power, it came up to full price plus tax.  I asked about the 20% discount for Free RPG Day that they had advertised, and she told me, “That ended at seven o’clock.”

Um, what?  The store’s web site and podcast clearly talked about Free RPG Day lasting until midnight.  I put the book back and left.  I’ve emailed the store owner, whom I know very well from having purchased lots of D&D and Magic stuff in the past, and I’m expecting that he’ll honor the discount.  Assuming he does (and I’ll post the resolution here, of course), I’ll trumpet this as the clear reason that you should support your friendly local game store – they’re not a faceless corporation, and they’ll make things right when problems come up.  If for some reason he fails to correct this, though, my faith in local stores will be shaken.  I really want to support them, but this is the sort of thing that will send me to Amazon with a clean conscience.  Here’s hoping the FLGS comes through!

Edit: I’m happy to say that the owner of the store got back to me promptly and said that this was indeed just a miscommunication with the employee, and that the discounts were supposed to be in place all day.  Even better, they DO have MM3 in stock and have set both it and Divine Power aside for me to come and get at 20% off.  The friendly local game store comes through with flying colors!

First MapTool session

The D&D drought is over!  Last night, after Barbara and I returned home from our business trip to the east coast, we got together with Lane and Zach (our friends in Florida) to continue our adventures in the Keep on the Shadowfell.  This time, we did it with MapTool.  It was, quite simply, a success.

I’ve already written about how much I love MapTool, and my players seemed to really enjoy it as well.  They liked the attack macros (even Barbara, who loves rolling physical dice, even used the attack macros from time to time), they liked being able to keep track of their hit points within their MapTool character sheets, and they LOVED the way MapTool shows the path that their character is taking and the number of squares they’re moving as they drag their token along the map.  One quick tip for playing D&D Fourth Edition in MapTool: Make sure all of the players go to Edit – Preferences and set the Movement Metric to “ONE-ONE-ONE.”  If they don’t do this, MapTool will calculate diagonal movement incorrectly for them.

We played for about two and a half hours, yet only went through one encounter.  This was partly because we spent the first 30 minutes catching up with one another from our recent trips and partly because we had to make sure everyone knew how to use MapTool.  The encounter was the battle with the giant rats and the ochre jelly in the caves beneath the Keep.  I wasn’t quite sure how many giant rats I wanted in the battle – the original adventure calls for 13 rats, but against a party of five characters rather than the three that we have.  I decided I’d start with six rats and add as needed to keep things interesting.  I think this was exactly the right approach, and I ended up with 11 rats in the end.  The rats ended up not being all that interesting; they generally missed with their bite attacks, and they had a lot of trouble isolating one character away from the others.  I realized that this battle didn’t have any enemies with either ranged attacks or area/burst/blast attacks.  Every single monster only had the ability to attack a single character at melee each round.  This made them not especially challenging, although the moment that the jelly split in two when it became bloodied was pretty cool.

The battle was an easy win for the party, and Kana (Lane’s druid) did catch a glimpse of a pillar of white light off to the south, which disappeared before too long.  Hmm, what could that be?  (This is one of the ideas that I want to discuss on the blog, but it looks like we’ll have to wait and see).  When the battle was over, the party decided to take an extended rest, as they were getting low on surges.  Not bad for having battled through all of the goblin areas of the Keep, plus the rat/jelly cave.  Rather than heading back to Winterhaven or just staying in the rat cave, they decided to close themselves into the bedchamber of Balgron the Fat, with Zach’s Eladrin rogue trancing and keeping watch.

Since this decision has already been made, I can talk a little bit about the consequences that the party will face when they resume play on Monday evening.  See, they’ve left the goblin area of the Keep strewn with dead goblins everywhere.  Now, no other monsters have traipsed through this area while the party was exploring, but that doesn’t mean that no one will be passing through any time in the next six to eight hours.  It’s quite possible that other inhabitants of the Keep may pass through the area, discover all of the dead goblins, deduce that there must be enemies about and get reinforcements.  I haven’t challenged the PCs yet.  But this time, with the bad guys knowing what’s coming, it might be different!

Now, while the use of MapTool for the session was great, and I don’t plan to switch to anything else, I did learn a few lessons that I plan to implement before our next session.

  • I need a button for each character to be able to roll their own initiative.  While my macro that rolls initiative for everybody is cool and all, the players like to roll it themselves.
  • I need buttons for each character’s skill checks.  I think I’m going to implement this by adding skills to the character’s properties, but I’ll just have the number next to the skill be the number that gets added for training or any special skill bonuses (racial, item, etc.).  I’ll have the macro look up the appropriate ability modifier and half-level modifier from the character sheet so that I don’t have to touch the macros as characters level up.
  • I should allow the characters permission to edit the macros on their own character token.  I’ll trust them not to mess with the macros, but I want them to be able to look inside and see what’s going on if they’re interested (Zach is – he’s a programmer).
  • I need to figure out how I want to handle the bad guys’ tokens.  Right now, they use the same properties as the players’ tokens.  That’s not ideal, since it means that if I actually put numbers in for armor class, hit points, etc., the players would be able to see them.  I think I’ll create a separate set of properties for NPCs and make them invisible to players.
  • Similarly, I’d like to figure out how to hide the NPC macros from the players.  Strict Token Ownership might accomplish this, but I’m not sure yet.

All in all, it was a fun way to play D&D, and the players are psyched about playing again Monday evening.  Meanwhile, I played a Free RPG Day session this morning at my Friendly Local Game Store, and I’m playing the first session of the new campaign with my regular in-person group tomorrow.  The D&D drought is officially done!

When should I blog about campaign ideas?

I’m currently in the DC area on a business trip, so there hasn’t been time to devote to D&D this week.  I’m happy to say, though, that there’s a chance that we might be able to resume our online campaign into the Keep on the Shadowfell this Friday, after I get home to Colorado.

Over the past few weeks of online D&D hiatus, I’ve done a lot of thinking about our campaign (as explained in my last few posts).  I’ve discovered MapTool, my new virtual D&D tabletop of choice, and learned how to make lots of cool macros for it.  I’ve played in two Living Forgotten Realms games, learning more about other dungeon masters’ styles.  I’ve also been re-reading the Dungeon Master’s Guide and the Dungeon Master’s Guide 2 and pondering how to become a better DM myself.  Finally, I’ve been reading lots of D&D blogs and web sites, and I’ve listened to a bunch of episodes of NewbieDM‘s minicast (a cool little discovery – thanks NewbieDM!).

All of this pondering has led me to a question that’s really unique to dungeon masters who blog: At what point should I blog about ideas that I have for ongoing campaigns?  See, I know that some of my players read my blog, and I totally dig that.  I WANT them to be so into the game that they want to see what I’m writing.  At the same time, I’m coming up with ideas, big and small, for the campaign that I’m running for them.  I don’t want to ruin the surprise by writing about those ideas on my blog and having them read about them weeks before they ever encounter them in the game.  On the other hand, these are raw ideas from an inexperienced DM, and I’d like to get the input of other dungeon masters on these ideas before I try running with them.

What do you think?  Should I go it alone and then blog about my creations only after they’ve been put into action?  Should I go ahead and put them here, surprise factor be darned?  Should I discourage my players from reading my blog?  Or should I perhaps put spoiler alerts for my players and ask them to skip over the spoiler sections?  I’m looking for advice – please let me know what you think in the comments.

Living Forgotten Realms – Second attempt

Barbara and I were planning on dropping by our friendly local game store tonight to play some Living Forgotten Realms (LFR).  Since I wasn’t that crazy about the Paladin that I played at LFR a week ago, and since Barbara and I have already rolled up the characters that we’re going to be using in the new campaign we’re starting soon with Kyle, Nate and Bree, we planned to try out those new characters at LFR.  Unfortunately, Barbara wasn’t feeling well, so I went on my own and decided to stick with Rhogar, my half-elf paladin from last week.

Similarly to last week, I didn’t officially have a seat reserved at the table, but I was at least on the waiting list.  One of the other players hadn’t shown up by the start time and the DM said he was fine to play with seven players instead of six in case the other player did show up – which he did, about 10 minutes late.  So, we had seven players.  The DM, Doug, said that this module didn’t take long to run, so having the extra player wouldn’t slow us down significantly.

Last week’s session started with a combat encounter, then a lot of roleplaying, then a combat encounter.  This time was all roleplaying for a long stretch, then a random little combat encounter that took no time, then more roleplaying, then basically two back to back combat encounters to finish things off.  The party was hired to recover a sextant that had been stolen from the house of a noble family, along with some other conventionally valuable items.  The sextant was a family heirloom, which they believed would lead to their ruin if it were not returned.  Thus, we went off on a long series of roleplaying encounters to try to track down the thieves.

We went to taverns in sketchy parts of town, making lots of Streetwise, Diplomacy, Bluff and Intimidate checks.  Since my character is a heavily-armored good Paladin, he was a little out of place.  Thus, I hung back and didn’t say much.  The random battle with some drunk dockworkers was a bit of a waste of time, as it had nothing to do with the main plot.  We ended up having a battle with the were-rat thief who stole the goods, along with his bandit associates.  This battle was in the basement of a boot shop, and it led to some interesting movement and use of powers.  The thief told us how to find the gnome merchant to whom he had sold the sextant.

We went to the inn where this gnome was staying, hurrying there before he left town.  Here is where things got a little tense around the table.  Three of the seven players had played this module before, so when it came time to make decisions about what to do, they tried to stay out of it and let the other four of us decide.  I thought that sending four people upstairs and three people around to the alley below the gnome’s window was the way to go – that way, we could keep him from getting away.  This was voted down in favor of having six of us wait downstairs in the inn while one person (our pacifist dwarven Cleric) went to the alley to try to disable the gnome’s wagon.  Well, the gnome’s allies spotted the dwarf at work and fired at him from the window, thus starting combat with all of us downstairs and unable to do anything for the first turn except start to move upstairs while the gnome and his buddies took target practice on our Cleric.  It worked out okay in the end, and the battle of the inn room was an exciting one, but I think that my lesson is that I need to be more assertive around the table, even though I’m still a new player.

Doug wasn’t as engaging a DM as Aarrun from last week was, but he still ran a good game.  The lessons I’d take from playing with Doug are:

  • Feel free to make minor modifications to increase the fun of a battle (such as changing the pointless dockworkers from one-hit minions to two-hit minions)
  • Try hard to make sure all of the players have a chance to be heard (I didn’t feel heard tonight, and I don’t want my players to feel that way)
  • If the battle is well in hand, feel free to call it and wrap it up, even if there are still some baddies to mop up.

Barbara and I are going to be traveling for the next week, so it’s unlikely that I’ll be able to blog for a while. That’s a shame, because I’ve learned some really cool MapTool tips that I’m anxious to share, but I haven’t had the prep time to do so yet.  Soon, though!

MapTool initiative – This is how I roll

Edit 7/19/2010: Since I first wrote this post, I have learned more about MapTool macros, and you can find the improved information at this post.  However, I’ve left the original post below for posterity – and as an example of how to learn how to improve your macro writing, rather than just giving the finished product.

Now that I’ve discussed the attack macros I’ve created in MapTool, I thought I’d mention one other macro that I’ve written for my current campaign, one that involves some additional functions of the MapTool language.  This is a macro that rolls initiative.

As you may recall from my last post, I use the token properties in MapTool to store values for hit points, character level, ability scores, melee weapon die, etc. for my PCs.  One of the properties that I store is Initiative – that is, the character’s initiative modifier.  I also have the ability to do this for monsters.  If I can write a macro that retrieves the initiative modifier from each token’s character sheet in MapTool, I can then roll up initiative.

I’ll start by mentioning that I like to roll initiative for each group of monsters only once (as I think is pretty standard in D&D 4e).  So, if I have my party of three PCs facing down ten goblins, I roll initiative once for each PC and once for the goblins as a group – four separate rolls.  If they’re facing 10 goblin warriors and 2 goblin dragonshields, I’ll roll separately for the warriors and dragonshields.

The macro that I’ve written looks at each token on the screen as I run it (whether visible to the players or covered by the fog of war – a topic for a future post), gets that token’s initiative modifier from its properties, and then rolls initiative.  Now, if every goblin on the map has an initiative modifier, my macro will roll initiative separately for each one.  My kludgy solution: Set the initiative modifier to the appropriate number for the FIRST monster of each group, and set the initiative modifier to the letter Z for all of the other monsters in the group.  I can make Z the default value for initiative in the Campaign Properties if I like, to make this easier.

I’ll present the finished macro in all its glory, and then I’ll break it down for you.

<font size = 10><b>Initiative!</b></font><br>

[h: TokenList = getVisibleTokenNames()]
[FOREACH(name, TokenList, “”), CODE:
{[IF(getProperty(“Initiative”,name)!=”Z”), CODE:
{<b>[name]:</b> [d20+getProperty(“Initiative”,name)]<br>};{}]
}
]

The first line is easy enough.  It prints the word “Initiative!” in large letters (the <font size=10></font> tags) and in bold face (the <b></b> tags).

The next line is a little more interesting.

  • The h: means that the result of this line will be hidden from the chat window (typical for background calculation commands in MapTool macros)
  • TokenList = means that we’re creating a variable called “TokenList” and then assigning it a value
  • getVisibleTokenNames() calls a MapTool function that creates a list of the names of all of the tokens on your screen.  If you zoom in to just one token, it will get just the name of that token.  If you zoom out and have 20 tokens on the screen, it will create a list of 20 names.  This list of names is assigned to the variable called “TokenList”.

Next we have a FOREACH function.  This says: For each name in the array called “TokenList”, I want you to execute whatever comes after the word CODE: in curly brackets.  When you’re done executing the code for the first name and then for each subsequent name, I want you to not put any separator showing that you’re done (that’s what the “” means).  If you don’t put the empty quotes there, MapTool will put a comma after the output of the CODE block when it’s done with each name.

Now we get into the first set of curly brackets (remember, I use indenting to help match up opening brackets with closing brackets to make the code easier to follow).  The line that begins with IF means:

  • Get the value of the property called “Intiative” for the token with the name that we’re currently working on from our FOREACH loop.
  • If the Initiative value for this token is not equal to “Z” (the != means “is not equal to”), then do some code (which is going to be in the next set of curly brackets).

The next line starts with some curly brackets that enclose what we’re going to do if the current token’s initiative isn’t equal to “Z”.  That is, it will print the name of the token in bold face (that’s the <b>[name]</b> bit).  It will then roll a d20 and add the value of the Initiative property of the current token and print the result in the chat window.  It will then print a line break (the <br>).

After that, you see the curly bracket close – which means that we’re done specifying what to do if the token’s Initiative value is not equal to “Z”.  What comes next – the semicolon followed by the empty curly brackets – tells MapTool what to do in case the token’s Initiative value IS equal to “Z”.  That is, nothing.  If the token has a Z for initiative, then don’t roll initiative for it.

We then see a closing square bracket (matching the square bracket that opened right before the IF statement), then a closing curly bracket (matching the curly bracket that opened right before the IF statement), then a closing square bracket (matching the square bracket that opened right before the FOREACH statement.  The result of this macro would look something like this:

Initiative!

Blue Slime: 3
Naivara: 23
Kana: 11
Ochre Jelly: 9
Surina: 7
Rat 1: 22

This is how I like to roll initiative in MapTool, though I know there are other ways.  What is your preferred method?

OnlineDM: Initiative!

MapTool Macros – Multi-Target Attacks

Edit 7/19/2010: Since I first wrote this post, I have learned more about MapTool macros, and you can find the improved information at this post.  However, I’ve left the original post below for posterity – and as an example of how to learn how to improve your macro writing, rather than just giving the finished product.

Building on my recent post in which I described how to create a rather complicated macro to accurately run a basic attack, it’s time to talk about a somewhat more complicated attack – one that targets multiple enemies.  Some characters in D&D Fourth Edition might only rarely have one of these attacks, but a controller like a Wizard or Druid or even a character like Barbara’s Swordmage with her close burst 1 attacks will run into these a lot.

If you have an attack that targets every enemy within a given burst, you could program the attack a few different ways.  The simple approach would be to click the button once per enemy, and only use the damage roll from either the first or the last click (since in D&D 4e multi-target attacks generally only have a single damage roll).  Alternatively, you could create separate macro buttons for the attack (which you would click once per enemy) and the damage roll (which you would only click one time at the end).  You might prefer this latter approach to begin with – separate attack rolls and damage rolls – even for single-target attacks, since lots of players do it that way in real life (only rolling damage if they hit).

My preferred approach is a little more elegant, I think.  It’s a macro that you click one time for the multi-target attack, which then asks you how many targets you’re attacking.  It then gives you an attack roll for each target and a single damage roll.  It also handles telling you the the max damage amount for any attack rolls that are critical hits.  The macro essentially starts with the basic attack macro from my earlier post and builds from there.

First, a recap of the basic attack macro:

[h: SkillMod=FLOOR((getProperty(“Strength”)-10)/2)]

[h: DamageDie=getProperty(“MeleeDamageDie”)]
[h: HalfLevel=FLOOR(getProperty(“Level”)/2)]
[h: Prof=getProperty(“MeleeProficiency”)]
[h: Enh=getProperty(“MeleeEnhancement”)]

[h: AttackBonus=SkillMod+HalfLevel+Prof+Enh]
[h: DamageBonus=SkillMod+Enh]

[h: d20roll=d20]
[h: DamageRoll=roll(1,DamageDie)]

[h: AttackRoll=d20roll+AttackBonus]
[h: MaxDamage=DamageDie+DamageBonus]
[h: RegularDamage=DamageRoll+DamageBonus]

<b>Melee Basic Attack</b><br>
Attack: [d20roll] + [AttackBonus] = <b>[AttackRoll]</b> versus AC<br>
[if(d20roll==20), CODE:
{<font color=Red>–CRITICAL HIT–</font><br>
Damage: [DamageDie] + [DamageBonus] = <b>[MaxDamage]</b> damage
};
{Damage: [DamageRoll] + [DamageBonus] = <b>[RegularDamage]</b> damage}
]

This macro figures out the attack bonus based on the appropriate skill modifier, weapon proficiency bonus, weapon enhancement and character level.  It gets the weapon damage die, and it calculates the damage bonus based on the skill modifier, weapon enhancement and character level.  It rolls the attack and the normal damage as well as calculating the max damage for a crit.  It tells you what the result of the attack roll was.  If it was a crit, it tells you so and gives the max damage amount.  If it wasn’t a crit, it just tells you the rolled damage amount.

The guts of the multi-attack macro will be the same.  It gets the appropriate skill modifier (which may be something other than Strength, of course), proficiency, enhancement, level and damage die.  It calculates regular and max damage in just the same way.  The difference only comes on the attack roll – it has to generate one attack roll per target.

To do this, we define a variable with no value – and MapTool will then ask the user to input a value.  Here’s what this part of the macro looks like (for the Sword Burst attack from Barbara’s Swordmage named Surina):

<b>Sword Burst</b><br>
[h: x=NumberOfTargets]
Attacking [x] adjacent
[if(x==1,”enemy.”,”enemies.”)]
<br>

When MapTool executes the line that reads [h: x=NumberOfTargets], it will pop up a box that looks like this:

Input BoxThe user then enters a number.  If you enter something else (like a word), you’ll get an error message.  Assuming you do enter a valid number – let’s say 4 – MapTool will store this as the value of x. It then confirms for the user the number that was entered for x and has a little extra piece of code to say that you’re attacking “5 enemies” but “1 enemy” (the first version I wrote could have you attacking “1 enemies,” which annoyed me).

It then moves on to the following bit of code:

[h: i=1]
[WHILE(i <= x, “<br>”), CODE:
{
…MORE CODE WILL GO HERE IN A MINUTE…
}
]

As you may have guessed, where you see “…MORE CODE WILL GO HERE IN A MINUTE…” we will soon be putting more code.  First, though, I wanted to show you the structure of this loop.  I begin by introducing a new variable, i (for “iteration”) and set its value to 1.  The first open bracket before the word “WHILE” is paired with the closed bracket at the very end of the code above.  The open curly bracket on the line below the WHILE statement is paired with the closed curly bracket two lines below it.  The expression [WHILE(i <= x, “<br>”, CODE: {…}] means:

  • Check to see if i is less than or equal to x
  • If i is indeed less than or equal to x, then do whatever is in the {…} section (note that you had better have something in the {…} section that increases the value of i!)
  • Put in a line break (that’s the “<br>”)
  • Come back to check and see if i is still less than or equal to x
  • If so, repeat what’s in the {…} section, then insert another line break
  • Do this process up until i is greater than x, then move on past the closed square bracket

This is what’s often known in other programming languages as a DO loop.  MapTool also has a FOR…NEXT loop function as well as a COUNT function that can also handle looping through lines multiple times, but this WHILE loop is the easiest to explain (the numbering on the other versions gets a little weird).

Now that we’ve set up the structure of the loop and we know it will keep repeating until we don’t want it to repeat any more, we need to put the guts of the attack roll and its result in between those curly brackets.  That means we need to roll an attack and print out the result of that attack roll first:

[h: d20roll=d20]
[h: AttackRoll=d20roll+AttackBonus]
Target [i]:   [d20roll] + [AttackBonus] = <b>[AttackRoll]</b> versus Reflex

Simple enough.  The only thing different here from our basic attack macro, aside from the fact that this particular power goes after Reflex instead of AC, is that we have it print “Target [i]” instead of just “Attack” before the attack roll.  The [i] in brackets will show whatever the value of i currently is – starting at 1, and going up from there (Target 1, then Target 2, and so on).

Next, we put in the same type of code that we saw in the basic attack to check for a critical hit, only this time we’ll put a line with the max damage right next to the attack result (no line break) since the crit will only apply to that particular attack roll:

[if(d20roll==20), CODE:
{<font color=Red>  –CRITICAL HIT–</font> [DamageDie] + [DamageBonus] = <b>[MaxDamage]</b> force damage};{}
]

Finally, we need to increase the value of i by 1 so that the loop will eventually end (otherwise it would repeat infinitely with i=1):

[h: i=i+1]

At this point, we’ve reached the end of the looping code, so we have the closed curly bracket and the closed square bracket to end the loop.  We then move on to printing out the regular damage roll, with a couple of line breaks before it:

<br><br>
Damage: [DamageRoll] +[DamageBonus] = <b>[RegularDamage]</b> force damage

Putting it all together, the macro looks like this:

[h: SkillMod=FLOOR((getProperty(“Intelligence”)-10)/2)]

[h: DamageDie=6]
[h: HalfLevel=FLOOR(getProperty(“Level”)/2)]
[h:Prof=getProperty(“MeleeProficiency”)]
[h: Enh=getProperty(“MeleeEnhancement”)]

[h: AttackBonus=SkillMod+HalfLevel+Enh]
[h: DamageBonus=SkillMod+Enh]

[h: d20roll=d20]
[h: DamageRoll=roll(1,DamageDie)]

[h: MaxDamage=DamageDie+DamageBonus]
[h: RegularDamage=DamageRoll+DamageBonus]

<b>Sword Burst</b><br>
[h: x=NumberOfTargets]
Attacking [x] adjacent
[if(x==1,”enemy.”,”enemies.”)]
<br>
[h: i=1]
[WHILE(i <= x, “<br>”), CODE:
{
[h: d20roll=d20]
[h: AttackRoll=d20roll+AttackBonus]
Target [i]:   [d20roll] + [AttackBonus] = <b>[AttackRoll]</b> versus Reflex
[if(d20roll==20), CODE:
{<font color=Red>  –CRITICAL HIT–</font> [DamageDie] + [DamageBonus] = <b>[MaxDamage]</b> force damage};{}
]
[h: i=i+1]
}
]
<br><br>
Damage: [DamageRoll] +[DamageBonus] = <b>[RegularDamage]</b> force damage

You’ll note that it’s a little different from the basic attack macro in that it doesn’t check the character sheet to get the size of the weapon damage die, since the damage die is defined in the power itself.  That’s typical for a lot of multi-target attacks in D&D 4e.  This particular macro can have pretty much any value you want for NumberOfTargets (it’s fun to run with 50 attacks, for instance), but for a number such as 4, the output will look something like this:

Sword Burst
Attacking 4 adjacent enemies.
Target 1: 20 + 4 = 24 versus Reflex –CRITICAL HIT– 6 + 3 = 9 force damage
Target 2: 3 + 4 = 7 versus Reflex
Target 3: 17 + 4 = 21 versus Reflex
Target 4: 1 + 4 = 5 versus Reflex

Damage: 5 +3 = 8 force damage

I hope this macro is helpful for you. You can use the same structure for monster multi-attacks, of course, though I wouldn’t bother with looking up attack and damage bonuses from the monster’s character sheet since there’s not much point in HAVING a monster character sheet!  Just hard-code those values in.

I’m always interested to hear about other people’s macros, and I’m also interesting in helping to program other MapTool macros that I haven’t thought of yet.  If you have macros of your own to share or would like some help in writing new macros, please leave a comment below or send me a message via email.

Living Forgotten Realms – my first time

While I mainly use this blog to talk about my efforts at serving as a Dungeon Master for my own online games of D&D, I do like to play D&D, too.  At the moment I am between campaigns in real life.  I don’t mean that I have no prospects for my next campaign – the next one will start in a couple of weeks with my same play group, just with a different person taking a turn as DM (as I discussed in my post about the death of my wizard character, Zod).  The online game that I DM is also on hiatus as two of the three players are currently on vacation.  This has given me lots of time to learn about MapTool, for instance, which is great – but I miss playing D&D.

Fortunately for me, I live within walking distance of a fantastic local game store called Enchanted Grounds.  This is a game store / coffeehouse.  I mainly go for the games – formerly a lot of Magic: The Gathering and German-style board games like Pandemic and Settlers of Catan, and more recently of course for Dungeons and Dragons books and dice.  In addition to selling D&D stuff, Enchanted Grounds also runs organized D&D events.  They’ve been running D&D Encounters on Wednesday nights, which I’d love to check out but which unfortunately conflicts with the bowling league that Barbara and I are in (yes, we both play D&D and bowl).  They also have Living Forgotten Realms, or LFR, which I only vaguely understood.  I knew it was a D&D Fourth Edition game, but it’s set in a campaign world that I know nothing about.  Also, I wasn’t sure about the rules for creating a character, getting into a game, etc.  When I finished work Thursday evening, I had a hankering to play some D&D, so I printed out the character sheet for one of the three potential characters I had rolled up for the campaign that we’ll be starting with our friends in a couple of weeks (a character that I was pretty sure I was not going to play in that campaign) and headed off to the store.

I had checked the store’s web site and their LFR Yahoo Group before leaving, and I knew that players had to basically reserve their spots in the game in advance.  There were going to be two tables of players – one in an adventure for level 4-7 characters and one for level 1-4 characters.  I introduced myself to Rich, the man who coordinates the LFR games at Enchanted Grounds, and said that I had never played LFR before and would be watching and learning this evening.  However, when game time rolled around, one of the six seats at the low-level game table was empty because one of the scheduled players hadn’t shown up.  Lucky me – I would get to play!

I introduced myself and my character (Rohgar, the half-elf Paladin) to the group, and we were on our way.  The group had five first-level characters and one second-level.  We were a technically balanced party, though a little heavy on healing.  My Paladin was the only defender, and he was a healing-focused guy.  We also had two Clerics, one of which was a mega-healing pacifist.  We had a controller – a Psion, which I hadn’t seen in action before – and two strikers (a Ranger and an Avenger).

The adventure began with the local king charging our group with the task of investigating some evil activities in the area around the city, and we soon encountered an old man with a broken cart by the side of the road.  As we approached to help him, some shadow creatures came out of the trees and attacked us.  We beat them up without much trouble, fixed the man’s cart, then headed off in pursuit of a black-clad knight we had seen on a nearby ridge during the battle.

From here, the night turned into a long stretch of role playing, which was kind of fun (though mixing in a combat encounter along the way might have been more fun).  We were on horses and had to follow the knight’s trail down a steep slope, which was problematic for me as I was terrible at Athletics.  Most of us ended up breaking our horses’ legs in the descent (so sorry, Starshine!) and had to continue on foot.  We found the knight, who had a skull for a face, in a glade of white-painted trees, which a Religion check revealed were designed to ward off evil spirits.  We talked to the knight instead of attacking, and it turned out that he was a guy from town who had been falsely accused of treason, cursed by his father, and banished from the city.  The skull face was just a mask he used to hide his identity from the townsfolk who hated him (smart choice, going with a skull face).  We wanted to help him clear his name, so we took him back to town with us.

We arrived to find a big, torch-wielding mob freaking out about the evil activities and the approaching (unscheduled) lunar eclipse.  Our knight friend skedaddled.  We dispersed the crowd, repaired a holy obelisk, talked to the knight’s father (who definitely seemed fishy to us), tracked town the town official who had banished the knight (he was incompetent), tracked down some reports about the evil activities that the town official had hidden (they would help to clear the knight’s name) and finally ended up at a temple to an evil goddess.  The cult leader, naturally, was the knight’s father.  We dispersed the cultists and engaged the leader, who was about to sacrifice his baby son on the altar.  Our strikers teamed up on the cult leader while the rest of us handled the shadow creatures that were trying to get into the temple.  Again, it was a fairly easy combat.  We saved the baby, got a new hearing for the knight (I’m sure he’ll win) and were awarded the king’s favor.

My verdict on Living Forgotten Realms as a player is that it’s definitely a way to get that D&D fix when I can’t get it any other way.  I believe this store runs games three times a week, so there are plenty of opportunities to play if I so desire.  I was surprised at the low level of challenge in the battles, but the role playing was quite fun.  Our pacifist Cleric basically stood up and gave a fire-and-brimstone speech to the mob in the city, which had the odd effect of convincing the townsfolk to try to incinerate their lamps, but it was way cool.  My Paladin was supposed to be quite diplomatic, but I sort of stunk when it came to actually talking rather than rolling dice.  I’ll work on it, though.  I definitely prefer the home games with friends, but LFR is something I could see myself playing from time to time.

The magic item system for LFR is a little confusing.  During the adventure we came across a few different magic items, and we had to divvy them up for use during the adventure.  However, at the END of the adventure we could each take one magic item, and multiple players could pick the same thing.  To make matters more complicated, you can only USE a magic item up to four levels higher than your character (so, as a first-level character I could use up to a fifth-level magic item), but you can HAVE any level magic item.  Also, if it’s an enchanted weapon of a particular type, you can transfer the enchantment to any weapon you want.  In my Paladin’s case, I took a seventh-level magical dagger and transferred its enchantment to my longsword, but I can’t actually use that enchantment until I move up to level three.  Confusing, I know.

I could see myself playing LFR again in the future – hopefully with Barbara joining me – but I’m pretty sure I don’t want to play my Paladin again.  He did exactly what he was supposed to do – bring the enemies to himself, absorb damage, dish out healing, punish the enemies he calls out when they attack his allies – but it just wasn’t that much fun.  I really didn’t move around at all in either battle – I stood there and traded blows with bad guys.  It worked for the party, but it was kind of dull.  I know I’m going to play an Avenger in my main campaign with my friends, so I might try LFR again with a Warlord that I’ve rolled up.  We shall see.

How about DM lessons?  Aarrun, the DM for the game Thursday night, was a great DM in my opinion, and I feel like I could learn a lot from him.

  • He knew the rules forward and backward.  For instance, he knew what my Paladin’s powers could do much better than I did.
  • He kept the game moving, letting the table know whose turn it was and who would be up next.
  • He got into the role playing in a good way.  He had a favorite NPC – a batty old lady who ran a book and bird shop – who really came alive with Aarrun’s acting.
  • He let the players try whatever they wanted, even if it was stupid.  Hilarity often ensued.

I have a long way to go before I can be a DM on par with Aarrun, but I feel like I can get there one day.