Wednesday, August 21, 2019

PALACE RUN 0.2

I wrote this game that I'm very pleased with. I'm hoping to enter it in the 200 word RPG competition when submissions are open. Until then, I'll be playtesting it and tweaking it on Discord, and you should hit me up for a link to the server if you're interested.

Rules

The current version, at time of writing.

One player is REFEREE. Others, CHARACTERS.
"d6" means "six-sided die". "d20", 20-sided.

CHARACTERS
===
Choose name, POSSESSION. STAT=18.
CHECK or SAVE: roll d20<=STAT.
(CHECKS do; SAVES avoid.)
Attacks auto-hit, d6 damage to STAT.
After 2+ damage, SAVE. Failure --> STAT=1.
STAT<=0 --> death.
REST --> STAT=18.

POSSESSIONS
  • Sword (+1 damage)
  • Hand-mirror
  • Marbles (100)
  • Chalk
  • Glue
  • Flute
  • Rope
  • Wine
  • Bucket
  • Hammer

ROOMS
===
d6ROOMCONTENTS
1.CourtyardPlants
2.GallerySculptures
3.BallroomPillows
4.BedroomBaskets
5.KitchenBanquet
6.LibraryFountain

d6EXITSFEATURE
1.N-EENCOUNTER
2.N-SGLINT
3.N-WTREASURE
4.S-ETWIST
5.S-WWay UP
6.E-WWay DOWN

ENCOUNTERS
===
2-in-6 whenever CHARACTERS dawdle, REST, or clamor.
Flight auto-succeeds, CHECK or become lost.
d6MoodEncounter
1.SleepyGuards
2.HappyNobles
3.SadAnimals
4.AfraidServants
5.HungryIntruders
6.AngrySupernatural

GLINTS
===
Encounter clues.

TREASURE (d6)
===
  1. Jewels
  2. Wine
  3. Porcelain
  4. Tapestry
  5. Letters
  6. Gold

TWIST (d6)
===
  1. 1 damage crossing (example: thorns).
  2. Secret Door: CHECK locates.
  3. Oubliette: SAVE or fall (d6 damage).
  4. Non-Euclidean: exits to far rooms.
  5. Unique room-type (example: laboratory).
  6. Palace exit.

(194 words!)

Inspirations

Sparks

Tables are rough to fit in the game because each number also counts as a word. A d6 table is a minimum of 14 words. So I put this together, but can't even begin to fit it in. I worry that some of the words are too similar anyway though.

d20Spark 1Spark 2
1ancientbanquet
2black-marketceremony
3crystalchandelier
4dancingchivalry
5decadentdiplomacy
6exoticeducation
7foreignespionage
8gamblingfaçade
9giltgift
10hiddenhistory
11honorablehunting
12illegitimateinheritance
13ivoryintrigue
14legalmarriage
15luxurymoney
16mahoganymusic
17marblepiety
18paintedtaxes
19socialtradition
20usurpingwar

Notes

It works well so far. I'm running a game on discord that's a mostly-straight whimsical fantasy palace. One of my players is putting together another game that's flavored after Darkest Dungeons. We haven't yet used the combat rules in anger, and running a game on Discord takes getting used to, but I'm optimistic.

Sunday, August 18, 2019

Black Ships and Bad Hydrodynamics

I was going to make a quick fun game about boats. Treasure Island, The Odyssey, One Piece. I wasn't going to get caught up in the details of how boats work. I told myself this at the outset, and believed it. I was going to borrow liberally from other, nicer rulesets, and not worry about realism. Now I'm writing about boat hydrodynamics.

When Viking explorers found new lands, they were usually about a week's sailing away. More distant lands were reached by following a chain of smaller stops. This is because they could survive for about two weeks at sea, so one week was the point of no return1. Rather than start with existing historic boats, we can take this type of exploration as our goal, and then work out how best achieve it.

Some Rules

I haven't playtested these, they're just draft rules.

  • Every week, the crew2 rolls against mishaps. An undercrewed ship rolls with disadvantage.
  • An overburdened ship moves at half speed.
  • When there are fewer sacks3 of supplies than people, the ship is at half rations. At half rations, all ability checks are rolled at disadvantage. For each additional week at half rations, an additional die is added to the disadvantage (e.g. on two weeks of half rations, an ability check is the worst result of three dice). This assumes some kind of subsistence fishing, scavenging, rationing, etc. This doesn't kill you directly, but you're going to die.

Mishaps

  1. 1d4 sacks of supplies lost or spoiled
  2. ship damaged - move at half speed (rigging, rudder, etc.)
  3. you are lost
  4. injury among the crew
  5. disease among the crew
  6. stowaway found
  7. becalmed for 1d6 days
  8. ill omen - next mishap check at disadvantage unless the crew makes appropriate supplication

Encounters

Encounters at sea are never by surprise excepting with beasts, and evasion is down to chance (1d4 to evade: on a 1, success, on a 2, success but off-course or lost day).

  1. Global Faction
  2. Local Faction
  3. Foreign Faction
  4. Unaffiliated
  5. Wild
  6. Flotsam or sign

Exploration Sailing

Going back to "islands are a week away", we can interpret this two ways, which I will call the "dense ocean" assumption and the "sparse ocean" assumption. Given the distances and speeds involved, the classical 6-mile hex quickly becomes more hindrance than help, and instead everything is worked out in points and lines. Obviously all these assumptions are different for large ships with large crews, but I don't think those are conducive to the game I'm trying to make here. It's also worth noting that I'm explicitly fitting the geography to the type of game I want to run here, not to any kind of reality.

Visibility

A person can see d km away on a clear day at sea, where:

d = 13 h d = sqrt {13h}

and:
d is distance seen (km) and
h is the height above sea level (m).

This means:

  • A 2-meter person standing at roughly sea level can see 5 km.
  • A person standing atop a 30 m crow's nest can see 20 km.
  • In ideal conditions, smoke rises to a mixing height of 518 m, so can be seen from 82 km away.
  • A bird flying at 4000 m can see and be seen from 228 km.

The Dense Ocean

On average, there is an island one week's travel in any direction.

This means that each day of exploration, there is a 1-in-7 chance of finding an island. Call it 1-in-8 and be done with it.

The Sparse Ocean

On average, the nearest island is 1 week away.

This means that in a circle of radius one week's travel, there will be an expected two islands (start and destination). Here I will make a series of poor assumptions which allow me to simplify my calculations: Assume that the ship will sail in a straight line each day in one of eight directions, and that it will see everything there is to see in that direction. The area seen in one day is then:

A day = 1 8 π ( 1 7 r ) 2 A_day = {1} over {8} %pi ({1} over {7}r)^2

where:
Aday is the area of ocean seen in one day, and
r is the distance traveled in one week.

Then the probability of finding an island in a week is roughly:

P week = 2 × 7 ( 1 8 π ( 1 7 r ) 2 ) π r 2 = 1 28 P_week = 2 times {{7 (1 over 8 * %pi(1 over 7 r)^2)} over {%pi r^2}} = 1 over 28

and the probability of finding an island on any given day is:

P day = 1 7 × 1 28 = 1 196 P_day = {1 over 7} times {1 over 28} = 1 over 196

Exploration sailing is terrible using a sparse ocean.

What about Vikings?

The Draken Harald Hårfagre has a top speed of 14 knots or 25.928 km/hr. If the crew never rests, then the ship could travel 4356 km in a week. If they use birds to find land, then they explore a swath of ocean 4356 km x 2(228) km in one week. The probability of finding an island is then:

P week = 2 × 2 d × r π r 2 = 2 × 2 ( 228 ) × 4356 π ( 4356 ) 2 = 912 4356 π 0.0666 P_week = 2 times { {2d times r} over {%pi r^2} } = 2 times { {{2(228)} times {4356}} over{ %pi(4356)^2}} = 912 over { 4356 %pi } approx 0.0666

and

P day = 1 7 P week 0.01 P_day = 1 over 7 P_week approx 0.01

This is about twice as good odds as with worse assumptions, but still doesn't seem great. I'm sure that realistic exploration sailing had any number of other factors going for it and the math here is all wrong, but for my purposes the Dense Ocean seems more fun anyway.

How Much?

Assume a party of 5 people. We'll say that a week's supplies for one person is a sack, and in addition each person has a sack of tools and gear. So our small ship must now carry 20 sacks of weight (5 people, 10 supplies, 5 gear).

Old ships are measured in tonnage4, the number of tun-casks the ship could fit. From this random image I found, a tun cask takes four people to carry, so is equivalent to 4 sacks. Therefore our small ship is 5 tons.

How Fast?

An early limitation on ship speed is the "hull speed", where:

V hull = 1.34 L WL V_hull ~= 1.34sqrt{L_WL}

and:
Vhull is the hull speed (knots), and
LWL is the length of the ship measured at the waterline (ft).
Strictly speaking this isn't a "limitation", but I must stress that we're talking about terrible boats here.

From the tonnage, we can back-calculate the length of the ship using the Builder's Old Measurement:

T = ( L OA 3 5 b ) × b × b 2 94 T = {(L_OA - 3 over 5 b)times b times {b over 2}} over 94

where:
T is the tonnage (tons burden),
LOA is the over-all length of the ship (from stem to sternpost, ft), and
b is the beam, or width of the ship (ft)
and also using a random rule-of-thumb found on Wikipedia somewhere:

b = L OA 2 3 + 1 b = nroot{3}{ L_OA^2 }+1

(LOA and b in ft.) Finally, we must assume that, for our purposes, the waterline length is equal to the overall length. This isn't a great assumption, but it's not terrible if our boat is built more like a bathtub than a canoe.

With all of this, I wrote a quick ocatve script to generate the following table:

T (tons)LOA (ft)Vhull (knots)
19.52554.1357
212.8374.8011
315.2945.2404
417.3195.5766
519.0745.8523
620.6396.0876
722.0616.2939
823.3726.4782
924.5936.6453
1025.7396.7983

At this point, I started to think I might have lost track of where I started, so I stopped. When someone asked "how fast do boats go" on a Discord server, I just pointed them at this table from Labyrinth Lord:

Underdark-Ocean Island Generator

One more in a continuing series.

Where to get it

The Manse

What is it

Six tables, d6-d12, giving approach, material, monster, hazards, treasures, and inhabitants (1-in-6).

Sample Output

Island 1

  • Well developed. Tons of range markers, buoys, shark nets and docks. If the island is inhabited, there is a steep dock fee. If the island is uninhabited, then this place is long abandoned.
  • Island of bones and insect shells; discarded for centuries as flotsam.
  • Dark-Elf Spellcaster. Very powerful, but water burns her like acid.
  • Glass Dog. It's lonely, but every time it jumps or licks you it deals 1 damage cause it's made of glass. If you managed to catch it and bring it to the mage's guild you'll get a hefty reward.
  • Pearl & Diamond Earring. The matching pair is lost at sea. Worth a few thousand gold.
  • Uninhabited

Island 2

  • Unnaturally calm. Feeling of dread. Roll a random encounter.
  • Island of bones and insect shells; discarded for centuries as flotsam.
  • Ogre Zombie, dressed head to toe in very thick armor. There's actually 1d8+1 of them, they're just all identically dressed, so rumors only ever speak of one.
  • There is a fairy grove on this island, unsual mushroom and lichen instead of trees and grass. But the fairies still play tricks on you, steal your map, make time pass faster, etc.
  • Magic warning sign. If a creature can read any language, then reading this sign forces them to make a morale check to proceed if they aren't in combat or chasing you or something.
  • Uninhabited

Island 3

  • Filled with dark, spooky seaweed. If you fall overboard, they pull you down and drown you.
  • Standard rocky island affair. Mushroom forest and lichen bog; very verdant for a place in the underdark. Elves probably lived here once.
  • Dark-Elf Spellcaster. Very powerful, but water burns her like acid.
  • Poisonous berries and fruits, tainted fresh water. No chance for resupply.
  • Bag of a hundred silver coins. If you spend an exploration turn tapping coins, you have a 1 in 6 chance to find a fake coin that's actually gold underneath a silver paint. About 20 of them are fake.
  • Uninhabited

Notes

I like these ones, they're detailed and evocative. They're definitely tied to a setting, and they might be just specific enough that it's weird to re-use one on a second island. I also think that only 1-in-6 islands being inhabited means the inhabitants table doesn't get enough use, similar to the "exotic materials" table on other generators.


1 This is what the tour guides of The Draken Harald Hårfagre told me, but I might be misremembering.back

2 Following from UVG, a "group" check rotates throughout the crew.back

3 Sacks are another useful abstraction from UVG. A sack is: as much as one person can carry unencumbered; all of a person's prefessional gear; one unconscious human; one unit of trade goods; or enough food, water, and consumables for one person to survive for one week.back

4 These are tons burden (a volume measurement), as opposed to tons displacement (a weight measurement). As an engineer, it distresses me the number of meanings that "ton" can take, but here it is unavoidable.back

Monday, August 12, 2019

A Town Called January

The challenge this week on the GLOG Discord channel was to detail a city or village or quarter or similar. This is my attempt.

Apollo speaks through his oracle at Delphi, Aphrodite through Dodona, and even the gods of the Celts and the Norsemen all have their own seers. So Janus, among the highest of the Roman pantheon, he too has prophets, established in a town called January. Once, upon the discovery of this gift from Janus, the town grew at an enormous rate. Surely, visions from the gatekeeper of the gods himself must be of a purer, stronger sort, it was reasoned. And they are, for his oracles are two, and both prophecy only the truth. But one will only see the past and one the future, and even they do not know which is which. So the city fell into disrepair and is now mostly a curiosity.

Downtown

The core of January.

  • Joram runs an aging, but still upscale hotel, The Golden Fleece. He is also an expert on military defense and sieges.
  • Hiram is a mask maker who sells them from his cart every day. In the past, the locals would all wear masks on the backs of their heads, but these days it's mostly for tourists.
  • Mayors Miriam and Beelzebub won the least and the most votes for mayor respectively (that's how it works here). They get along together regardless.
  • Pam is the law and head priest around here. She will defer to the oracles on all matters, but they usually don't interfere.
  • Elam is a sculptor of growing renown. He claims not to know where the Wandering Adonises come from, but this is obviously a lie. His main income is sculpting large marble body parts to be offered to the temple (e.g. a large marble foot for foot for a foot problem).

The Temple

A short ways away up a small hill. Here there is a hot spring where people throw lead curse tablets, and then also drink the water for their health. You could probably get some good dirt on people from the accumulated curses, if you're willing to risk a god's disfavor.

  • Seppha and Piper are the two oracles, who all this fuss is about. They used to have more attendants and they're not pleased about the change.
  • Gerontus is the historian. For a not insubstantial fee, he can offer you some insight into which of the prophecies applies to the past, and by extension, which applies to your future.

The Old Town

The ruins of a massive city surrounding the core downtown. Unsavory sorts lurk here, but also just people trying to get by. There's a 50% chance that anything can be found here, albeit in rough shape (blacksmith, horse stable, observatory, waterpark, etc.).

The Quarry

An uncommon bright spot in January's future, Januarian marble is becoming trendy in some circles. The impurities give it distinctive purple veins.

The Orchards

Januarian farmers graft their trees relentlessly, such that something is always in season, and they can practically tell what day of the year it is by what's in bloom. Empty doorframes dot the landscape, but they are not magical and the locals will think it's very funny if people walk through them to check.

Encounters

  1. Boram, a political up-start. He's spreading positive propaganda about Miriam, hoping to snag last place in next year's election.
  2. Hephelot, a general of little renown. He can't afford the pricier oracles, but still wants to know about upcoming battles.
  3. A wandering marble Adonis. They don't speak. There's a few of them around.
  4. A caravan of pilgrims with various ailments, thirsty for the healing waters of the temple.
  5. Filiam, a disaffected local teen attempting to run away to a "real" city. Keeps getting lost in the ruins, but won't admit it. Claims instead that he's looking for something important.
  6. Poram, a massive quarryman. Wears the Janus mask on the back of his head, so looks quite frightening from behind. Needs people to check out a scary cave for him, but won't phrase it like that.

Other Cities

This is only my entry in a second GLOG challenge, these are some others:

Saturday, August 3, 2019

Restless Dreamer

A GLOG class for the cursed class challenge.

Now you've done it. Maybe you pricked your finger on a magic spinning wheel. Took a bite of an enchantress' apple. Stole a perfume from the wrong alchemist. Desecrated a fairy ring. Whatever it was, you're gonna be comatose for a while, so you might as well make the best of it.

This is a cursed class. Once you have a template in Restless Dreamer you can't gain templates in anything else until you wake up.

  1. Asleep, Beautiful, Well-Rested
  2. Somnambulant
  3. Sandman's Touch
  4. Manifestations

Asleep

You're asleep. You cannot move on your own and must be carried everywhere. You are still aware of your surroundings, but only what they dream themselves to be: you see the ruins on the hill as a glorious stately palace and the mayor's cat as a fearsome panther. The thief in the night is a smooth constellation of shadow and the paladin literally radiates sunlight. You can speak softly and coherently or loudly and incoherently.

Beautiful

Fortunately, you are a graceful sleeper. Whenever you gain a template in Restless Dreamer, add one to your Charisma. You are non-threatening to animals, if obviously vulnerable, and people will do things to help you or your companions when asked that they might not otherwise.

Well-Rested

If the curse is broken, you resume your normal sleep schedule. You can only use your Restless Dreamer templates while sleeping, but while awake, bonuses to Charisma from Beauty become bonuses to Constitution. (Such beauty could only last as an idea of a person, not a real person.)

Somnambulant

With great effort, you can move under your own power and take actions no sleeper could normally undertake—cast spells*, swing swords, sing songs, etc. Each round you are up and about you must make a Charisma save to avoid drifting off to dream again, and take a -1 penalty to this save for each preceding round you've been moving.

Sandman's Touch

Your stillness and calm are contagious. You can cast human and beast into a deep sleep at the touch of your hand whenever you so choose. The only limit to this ability is what you can reach.

Manifestations

You can call creatures of the dreaming to aid you in the waking world. They range from clever doormice to crawling vines to rolling nightmare machines. Each day you can call dream creatures with total HP equal to the total number of templates you have, and they have morale as retainers. They return to the dreams of others when they are needed (usually within the next 24 hours).

Methods of Waking

  • True love's kiss.
  • Find the little fairy that did this and wring their little fairy neck.
  • Dream a world so real it replaces the one you're asleep in.
  • Really a lot more ammonium salts than advisable.
  • Ride it out—you don't seem to be aging, so you might as well find out what the future is like.
  • Get yourself kicked out of the dreaming.
  • Bargain away your ability to sleep.
  • Have your corporeal form brought to the dreaming to take your place.

Notes

I was told it's easy to write GLOG classes and this did go fast. I haven't played the GLOG proper yet, so please let me know if I missed something obvious.

There are many other entries in this challenge. These are the ones I am currently aware of:


* How do you rest to regain spells when you're always asleep? Easy: you fall asleep in your dreams. Just be sure you don't only dream you fell asleep in your dreams, and be careful not to learn the spell that your spell dreams it is, which might be something else entirely…back

Tuesday, July 16, 2019

Misc. Notes

It's been a while, and I don't have any large projects to share, but I'd like to keep up the habit of writing here. So I'm writing up some notes I have lying around.

What's That Island

Another island generator in my growing collection.

Where to get it

The Oddvent Oddpendium

What is it

A pair of d100 tables for "Landmark" and "Twist" (38 entries each).

Sample Output

Island 1

Landmark: Blue Grass
Twist: Crashed Sky-Boat

Island 2

Landmark: Gusts of Wind
Twist: Metal Skeletons

Island 3

Landmark: Lone Mountain
Twist: No Time Passes Here

Island 4

Landmark: Huge Waterfall
Twist: Whispering Wind

Island 5

Landmark: Dense Cacti
Twist: Doomsday Device

Island 6

Landmark: Blue Grass
Twist: Metal Skeletons

Notes

This table uses the same type of terse entries as Chris McDowall's Spark Tables, but is just a little more specific. There is the obligatory "Island is a Turtle" entry, which should have been its own point in these roundups. Some things like "Misty" or "Underwater" aren't exactly "Landmarks", but they're evocative so I'll let it go.

Magic Mouth Mishaps

Currently I'm favoring simpler magic systems, but one thing I liked about the revised Lamentations spellcasting rules was that it made you consider a minimum number of distinct miscasts. I made a table of them for Magic Mouth. I tried to make them sufficiently LotFP-ish, but I'm still not sure if I got the timing of the miscasts right, as I have yet to actually play with the revised rules.

  1. Continued recording for double duration.
  2. No volume control. Playback causes sonic damage.
  3. Backmasked. Voice sounds demonic and words are gibberish.
  4. Fourth wall-breaking. Spell captures the caster's player's most recent voicemail.
  5. There is no trigger, the spell just plays on loop and can't be stopped.
  6. The intent of the recording is inverted (e.g. "not" is added in front of the right words).
  7. Actually records the caster confessing a secret.
  8. Actually records a secret about the campaign world, or a heresy. 50% chance true.

What is the volume of a gaseous human?

Assumptions:

  • A "standard" adult is 70 kg.
  • Standard temperature and pressure.
  • 68% of the body is water, and the remaining molecules are large enough to be relatively few in number and therefore negligible.
  • If the previous assumption is one extreme, then the other is that the body is 100% water. This will let us bound the possible values.

Then we do some dimensional analysis and bad math (18 ≈ 22.4, 68% ≈ 50%):

70 kg kg⋅mol 22.4 m3
18 kg kg⋅mol
70 kg kg⋅mol 22.4 m3 ≈ 70 m3
18 kg kg⋅mol

So if a human is 100% water,then they will take up ~70 m3 as a gas, but at the other extreme, they'll be about ~35 m3.

Spark Tables

I've become enamored of Into the Odd's spark tables (above). And I've been looking for them pre-assembled because I'm lazy. I was pleasantly surprised to find this list of 100 Adjectives Used in Basic English, and sad to discover that it only has 99 adjectives in it. I added the ubiquitous "roll twice and combine" to round it out to a d100 table, but this doesn't feel great if you were already rolling twice to find unexpected combinations. I might consider subsetting this list as a starting point for my own spark tables.

  1. able
  2. acid
  3. angry
  4. automatic
  5. beautiful
  6. black
  7. boiling
  8. bright
  9. broken
  10. brown
  11. cheap
  12. chemical
  13. chief
  14. clean
  15. clear
  16. common
  17. complex
  18. conscious
  19. cut
  20. deep
  21. dependent
  22. early
  23. elastic
  24. electric
  25. equal
  26. fat
  27. fertile
  28. fixed
  29. flat
  30. free
  31. frequent
  32. full
  33. general
  34. good
  35. great
  36. gray
  37. hanging
  38. happy
  39. hard
  40. healthy
  41. high
  42. hollow
  43. important
  44. kind
  45. like
  46. living
  47. long
  48. male
  49. married
  50. material
  51. medical
  52. military
  53. natural
  54. necessary
  55. new
  56. normal
  57. open
  58. parallel
  59. past
  60. physical
  61. political
  62. poor
  63. possible
  64. present
  65. private
  66. probable
  67. quick
  68. quiet
  69. ready
  70. red
  71. regular
  72. responsible
  73. right
  74. round
  75. same
  76. second
  77. separate
  78. serious
  79. sharp
  80. smooth
  81. sticky
  82. stiff
  83. straight
  84. strong
  85. sudden
  86. sweet
  87. tall
  88. thick
  89. tight
  90. tired
  91. true
  92. violent
  93. warm
  94. wet
  95. wide
  96. wise
  97. white
  98. yellow
  99. young
  100. roll twice, combine

Thursday, April 11, 2019

The Journey of the Grand Myconautical Society

I made a traincar for Skerples' indefinite train project. After all that brainstorming, I didn't use any of it directly, but I got to use this illustration from Rattlemayne, which was the reward for entering the ItO pocketmod contest. Traincar linked from the image below.

Tuesday, April 9, 2019

Mad With Power in the Gardens of Ynn

The Gardens of Ynn is one of the most immediately exciting RPG books that I've read in a long time. In general, Cavegirl is a brilliant and exciting writer, and you can give her money if you'd like to support her work (outside of buying her other things, which are also brilliant). But man, that book could really use an editor, and the PDF has some weirdness. Now that I've been playing with Ghostscript, I thought I'd try my hand at solving one of the more egregious problems (IMO).

Problem

The layout of Ynn is roughly like this: there's a handful of tables in the beginning of the book, and to generate locations you roll on them. Each of the results on those tables is expanded upon, usually at about a page-length, later in the book. But the real problem is flipping around the book: the tables don't have page numbers, nor are they cross-referenced. Changing the text of the book or adding cross references are possibly too advanced at the moment, but I can add a table of contents, and hopefully this will make the PDF more useful at the table.

Solution

I copied-and-pasted the table of contents in Ynn, and lightly edited it (for example, "Chronological Abberations" is now "Shepherd of the Trees"). Then I went through and converted it to pdfmark format. This process was unfortunately not very automated, excepting some find-and-replace tools. Finally, I ran a command that looks like:

$ gs -o Ynn.ann.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress Ynn.pdf Ynn.toc.pdfmark

Results

Now I get this nice sidebar on my PDF and I'm happy:

As a detail-oriented person, there are still lots of things in the book that bother me a little. But it's much more usable now.