|Matt Quinton 4e8095532e Updating code to fit Emacs style-guide more closely||1 week ago|
|LICENSE||1 month ago|
|README.org||1 week ago|
|egme.el||1 week ago|
|egme.org||1 week ago|
EmacsGME is a gamesmaster emulator in the style of MythicGME/CRGE/etc, produced in emacs-lisp for playing solo-roleplaying games entirely within text/org-mode documents.
As this is my first real use of emacs-lisp, a lot of it is just me trying out different things in a literate-programming style, with my exploratory document eventually due to tangle into an emacs-lisp file for easy addition into any emacs-setup.
This will have to be manually added for the time being, as I want to flesh out more features before this is submitted to MELPA. For now, the simplest way to add this to your install is to clone this repo, and place the following into you emacs config:-
Be sure to put in the correct path for where your copy of
egme.el is saved.
Usage should be easy to gleam by reading the
egme.org - I have tried to heavily document each function as I write them, not just in how it works but how I hope to extend in the future.
This function keeps a history of rolls that have been made previoulsy - if you give it no input, then it will reroll the last dice type, or you can scroll back and forth with the up/down keys.
This features is the main driver of solo-roleplaying with EmacsGME, the yes/no oracle. This function is named "egme-y-n-oracle", and can be called interactively with "M-x egme-y-n-oracle", or with the default keybind of "C-c g q". Once called, it will ask the user what question is being asked. Here you can type a question into the minibuffer, which will be included with any output - this is optional. It will also scan the current line, and if a question is found it will be used as the initial input. Once a question has been set (or given blank input) then the function asks for probability. This is a sliding scale between +4 and -4, with a description ranging from "Near Certain" to "Near Impossible" - this will affect the likelihood of getting a yes or no, for tweaking probabilities on a per-question case.. Options are chosen by typing the modifier, or scrolling between them using left & right on the keyboard. The deafult option is "0 Even Odds" - just hit enter for a question with unclear probability. An example of this output is:-
Question: Is the door locked?
In some cases, these yes/no answers are extended with answer modifiers or random events...
The answers are further modified - in some cases there will be an extremely response, or a partial response. All the possible responses are:-
An example of that output is:-
Question: Does the guard notice me?
Probability: Even odds
Answer: Yes, and...
An "and..." implies the answer goes beyond the basic. So "Yes, and.." is exceptionally positive, and "No, and..." is exceptionally negative. Getting "but..." implies a partial success/failure. So "Yes, but..." is partially positive, and "No, but..." is only partially negative.
As time goes by, there is an ever-increasing chance of a random event occuring each time you ask a question. When a random event occurs, it is added to the output of the oracle. A random event consists of the focus (what/who is affected by the event), and the detail (a random Action & Subject word combined). Example of a random event occuring is:-
Question: Is the machine switched on?
Probability: Very Unlikely
Focus: NPC action
Detail: Divide / Jealousy
The player is left to interpret what these results mean in the context of their game.
All output is printed into the current buffer, braced by lines highlighting it as Games Master output. If the document that the player is playing in happens to be an org-mode document however, then the Games Master output will be placed into a quote-block. This still makes it clear that it is separate from the game text, but means it can be folded away, and will produce nicer output if using those functions from org-mode.
If not using org-mode however, the "braces" around Games Master output can be modified within
customize in emacs, or by changing the variables
The entire system is developed from a pen & paper system based on actual dice rolls, details of this system can be found within the
egme.org file against each function.
The following items are currently on the todo list - I am open to further suggestions of how this can be improved.
EmacsGME is licensed under the GPLv2, see included licence file for details.