There are those rare occasions where my love for an editor that can be extended while you’re using it – Emacs! – and my love for role-playing games come together.
I use big tables like the following on the status pages of my various campaign wikis:
|= Character |= Share |= XP |= Gold |= Level |= XP next |= Home / final rest |= Health |= Player | |[[Vangelis]] | 1 | 12367| 10033| thief 5| 20'001|[[Greyheim]] | |Sam | |[[Maram]] | ½ | 11793| 5324| halfling 4| 16’251|[[Greyheim]] | |Sam | |[[Magdalena]] | ½ | 13203| 1816| magic-user 4| 20'001|[[Greyheim]] | |Sam | |[[Delina]] | ½ | 6781| 4095| thief 3| 5'001|[[Greyheim]] | |Sam | |[[Eldakkar]] | 1 | 48013| 9938| magic-user 5| 40'001|[[Greyheim]] | |Flavio | |[[Ernst Ormott]] | ½ | 18158| 2626| fighter 4| 16250|[[Greyheim]] | |Flavio | |[[Mia]] | ½ | 6843| 108| Assistant 4| 10'001|[[Greyheim]] | |Flavio | |[[Anouk]] | 1 | 35001| 0| dwarf 6| 70'001|[[Stormhold]] | |Ben | |[[Strahl]] | ½ | 40001| 95| magic-user 6| 80'001|[[Stormhold]] | |Ben | |[[Kristina]] | ½ | 11188| 2740| fighter 4| 16'250|[[Stormhold]] | |Ben | |[[John Greene]] | ½ | 20001| 0| magic-user 5| 40'001|[[Stormhold]] | |Ben | |[[Dorn Ironfoot]] | ½ | 5501| 0| dwarf 3| 8'751|[[Stormhold]] | |Ben | |[[Yifan]] | 1 | 34219| 16450| elf 5| 65’001|[[Deathwatch Keep]] | |Grisha | |[[Annica]] | ½ | 18670| 8671| dwarf 5| 35’001|[[Greyheim]] | |Grisha | |[[Joana]] | ½ | 2643| 300| fighter 2| 4'065|[[Greyheim]] | |Grisha | |[[Lila-Marie]] | ½ | 52| 1792| elf 1| 4'065|[[Greyheim]] | |Grisha | |[[Sugo]] | 1 | 19895| 7073| fighter 5| 32'501|[[Greyheim]] | |Petr | |[[Slui]] | ½ | 5264| 1965| halfling 3| 8,125|[[Greyheim]] | |Petr | |[[Maxim]] | ½ | 6033| 243| fighter 3| 8'125|[[Greyheim]] | |Petr | |[[Saray]] | 1 | 1878| 2537| aquamancer 1| 2'501|[[Greyheim]] | |Natalie | |[[Pringles]] | 1 | 16468| 7577| fighter 5| 32'501|[[Greyheim]] | |Petr's wife | |[[Maximo]] | 1 | 2042| 885| thief 2| 2'501|[[Greyheim]] | |Giorgio | |[[Adrijana]] | | 4560| 1743| geomancer 2| 5'001|killed by bugbears | ☠ |Flavio | |[[Tugra]] | | 5272| -262| fighter 2| 4'065|petriefied by a basilisk | ⌛ |Adrian | |[[Sascha]] | 1 | 13554| 1704| cleric 5| 25'001|retired and runs a church | 💜 |Flavio | |[[Lothar]] | | 750| 41| dwarf 1| 2'187|[[Greyheim]] | 💜 |Chris | |[[Tiana]] | | 45| 118| halfling 1| 2'035|killed by a giant bat | ☠ |Sam | |[[Arbogast]] | | 260| 682| fighter 1| 2'035|ambushed by jackalweres | ☠ |Sam | |[[Marika]] | | 1953| 2119| magic-user 2| 5’001|[[Greyheim]] | ⌛ |Sam | |[[Simed]] | | 805| 1699| dwarf 1| 2'187|[[Greyheim]] | 💜 |Sam | |[[Neid]] | | 58| 694| elf 1| 4'065|shot by hobgoblins | ☠ |Sam | |[[Devd]] | | 694| 413| fighter 1| 2'035|shot by hobgoblins | ☠ |Sam | |[[Pietro]] | | 77| 11| pyromancer 1| 2'501|shared space whit a spear | ☠ |Andre | |[[Kim]] | | 3261| 1835| elf 1| 4'065|killed by ear seekers | ☠ |Sam | |[[Tristan]] | | 0| 0| halfling 1| - |killed by boring beatles | ☠ |Flavio | |[[Aiza]] | | 997| 113| halfling 1| - |fell into a concealed pit | ☠ |Luca | |[[Hiad]] | | 17| 1| dwarf 1| - |eaten by beatles | ☠ |Miae | |[[Honey]] | | 0| 0| halfling 1| - |eaten by kobolds | ☠ |Miae | |[[Sivan]] | | 0| 0| cleric 1| - |eaten by kobolds | ☠ |Sam | |[[Desi]] | | 3474| 1908| fighter 2| 4'065|held under the Freya temple | 🐺 💜 |Flavio |
I used Emacs to distribute gold and experience points because I’m not a big user of spreadsheets. For the longest time, I used a set of functions that created a form within Emacs, made up of widgets.
The code I had turned this into a form like the following:
XP total: 0 Gold zu XP: 0 Gold total: 0 [ ] [[Vangelis]] Share: [X] 1 [ ] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Maram]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Magdalena]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Delina]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Eldakkar]] Share: [X] 1 [ ] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Ernst Ormott]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Mia]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Anouk]] Share: [X] 1 [ ] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Strahl]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Kristina]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[John Greene]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Dorn Ironfoot]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Yifan]] Share: [X] 1 [ ] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Annica]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Joana]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Lila-Marie]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Sugo]] Share: [X] 1 [ ] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Slui]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Maxim]] Share: [ ] 1 [X] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Saray]] Share: [X] 1 [ ] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Pringles]] Share: [X] 1 [ ] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Maximo]] Share: [X] 1 [ ] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [ ] [[Sascha]] Share: [X] 1 [ ] ½ [ ] ⅓ Gold spent: 0 Transfer: 0 [Go!]
You could check those boxes, arrange for money transfers, arrange for gold to be spent (turning it into experience points), you could distribute gold found (distributed according to shares, one share per main player character, half a share for retainers), or experience points gained (based on monsters defeated and distributed equally among characters).
Sadly, there interface was clumsy. Checking the necessary boxes took more time than I was willing to spend.
Later, I tried to write something like a chat interface. I basically wanted a special RPG shell with which to interact. I imagined myself typing `parse <url>` to read the data from the campaign wiki, `filter Flavio Sam Ben` to tell the system who was present, `distribute 500 gold` and `distribute 200 xp` to distribute gold and experience points, and `save` to save the result back to the wiki.
I spent a lot of time writing code and did very little distributing of gold and experience points. I was also a bit frustrated. Why was I using rules that required me to use software again? That question remains unanswered.
My latest attempt at writing code involves simply marking numbers using `C-=`, distribute a certain amount among all the marked numbers using `M-C-=`, add a certain amount among all the markednumbers using `M-C-=`, and remembering that `C-+` already exists to increment the number at point.
My latest attempt at writing code
It needs a bunch of convenience functions to quickly mark all the numbers at a particular column for lines matching a particular regular expression, and then we should be good to go!
#Emacs #RPG