Program to generate ruins using the Numenera Ruin Mapping Engine

Ruin Generator

This is my attempt to build a program to generate ruins for Numenera using the rules from the Jade Colossus splatbook.

The output only contains the roll results from the ruin generator though, none of the text.

How This Works

This program generates a ruin using the Numenera Ruin Mapping Engine (RME).

It makes a few assumptions right off the bat:

  • there is a single entrance into the ruin
  • ruins don't go deeper than 10 levels

The reasons for those are pretty straightforward. Having a single entrance makes the code a lot easier to manage, as we're just building a tree data structure. Not going deeper than 10 levels is so that the ruins don't accidentally become massive sprawling affairs.

Features

There are 15 types of features that can be rolled in the RME:

  1. Corridor
  2. Chamber
  3. Creature
  4. Explorers
  5. Interstitial cavity
  6. Accessway
  7. Rupture
  8. Shaft
  9. Abhuman colony
  10. Integrated machine
  11. Matter leak
  12. Energy discharge
  13. Weird event
  14. Vault
  15. Relic chamber

However, not all of these results create new rooms or passageways -- some modify the previously created chamber.

As such, there are three 'types' of feature:

  • rooms ( chambers, interstitial cavities, etc )
  • passageways ( corridors, accessways, shafts )
  • modifiers ( weird events, etc )

However, as the only difference between a "room" and a "passageway" is shape, size, and function we'll only refer to "rooms" and "modifiers". The reason for this is that an empty chamber ( especially ones on the smaller side of things ) are functionally identical to a corridor.

Rooms

These are features that describe a room ( although interstitial cavities make "room" do a lot of work there ). Each room always has at least one exit -- the one that brought the adventurers into that room.

There are two "types" of room: 'base' room types and 'fancy' room types.

Base room types

  1. Corridor
  2. Accessway
  3. Shaft
  4. Chamber (15% have no defining feature or are otherwise empty)
  5. Interstitial cavity (+1d10 additional exits)
  6. Vault
  7. Relic chamber

Fancy room types

  1. Creature
  2. Explorers
  3. Abhuman colony
  4. Integrated machine
  5. Matter leak
  6. Energy discharge
  7. Rupture

"Fancy" rooms are ones that when you roll that result, you usually then make a secondary roll to determine what kind of base room the feature is contained within. For example, if a creature is rolled on the main feature table then the room it ends up in could be a corridor, chamber, interstitial cavity, shaft, or a rupture.

Additionally, rooms can have additional rules about what happens when they are generated. These include the fact that relic chambers have an 80% chance of containing a creature, or that the "chamber" room type has a 15% chance of being completely empty.

Modifiers

There's really only one "modifier" type of main feature: weird events.

These get added to the list of features for the previously generated room.

==============================

ruin creation process

entrance -> roll on corridor table ( this corridor can't be modified, rolling a rupture or weird event causes a re-roll when rolling on this rooms exits ) -> roll on exit table ( min 1 for this roll ) -> for each exit: -> roll on main feature table -> result is a modifier? => yes -> add to 'modifier' list of previous room, roll again => no -> connect the new room and the previous one via the exit

Entrance ()

becomes (for example):

Entrance ( Corridor (type: 4, exits: [regular]) )

Start:

entrance -> corridor (roll) + exits (roll)

Node -> Node Node: Main Feature ( corridor, chamber, shaft, rupture, etc )

Owner
Sean Hagen
Mostly back-end developer. Loves Go.
Sean Hagen
Similar Resources

mackerel-agent is an agent program to post your hosts' metrics to mackerel.io.

mackerel-agent is an agent program to post your hosts' metrics to mackerel.io.

mackerel-agent mackerel-agent is a client software for Mackerel. Mackerel is an online visualization and monitoring service for servers. Once mackerel

Jan 7, 2023

Catfetch is a small and cute fetch program written in Go

 Catfetch is a small and cute fetch program written in Go

🐱Catfetch is a small and cute fetch program written in Go

Oct 30, 2022

Repositori untuk menyimpan project-capstone program immersive alterra academy

Project Airbnb Project Airbnb Program Immersive Back End Batch 4 Explore the docs Open API » About The Project Airbnb merupakan marketplace yang digun

Dec 27, 2021

Program to solve sudokus given in JSON Format, written in Go

Program to solve sudokus given in JSON Format, written in Go

May 2, 2022

QuickAbeHiroshi - The golang program to open a web site which is the fastest in the world

QuickAbeHiroshi - The golang program to open a web site which is the fastest in the world

The golang program to open a web site which is the fastest in the world.

Jan 2, 2022

Simple cross platform fetch program, written in Go

Simple cross platform fetch program, written in Go

nextfetch Simple cross platform fetch program, written in Go Prerequisites True color (24-bit) or 256-color (8-bit) compatible terminals go = 17 (bui

Oct 31, 2022

HTTP service to generate PDF from Json requests

pdfgen HTTP service to generate PDF from Json requests Install and run The recommended method is to use the docker container by mounting your template

Dec 2, 2022

Automatically generate Go test boilerplate from your source code.

Automatically generate Go test boilerplate from your source code.

gotests gotests makes writing Go tests easy. It's a Golang commandline tool that generates table driven tests based on its target source files' functi

Jan 3, 2023

generate fake data in go

Faker for Go Usage package main import ( "github.com/manveru/faker" ) func main() { fake, err := faker.New("en") if err != nil { panic(err

Sep 29, 2022
Visualize call graph of a Go program using Graphviz
Visualize call graph of a Go program using Graphviz

go-callvis go-callvis is a development tool to help visualize call graph of a Go program using interactive view. Introduction The purpose of this tool

Dec 31, 2022
Simple example program using CRUD operations to interface with azcosmos

Simple example program using CRUD operations to interface with azcosmos

Nov 15, 2021
generate my_github status using GitHub Actions
generate my_github status using GitHub Actions

generate my_github status using GitHub Actions

Sep 21, 2022
A BPMN engine, meant to be embedded in Go applications with minim hurdles, and a pleasant developer experience using it.

A BPMN engine, meant to be embedded in Go applications with minim hurdles, and a pleasant developer experience using it. This approach can increase transparency for non-developers.

Dec 29, 2022
The gofinder program is an acme user interface to search through Go projects.

The gofinder program is an acme user interface to search through Go projects.

Jun 14, 2021
Toy program for benchmarking safe and unsafe ways of saving a file

save-a-file benchmarks the many strategies an editor could use to save a file. Example output on a SSD: ext4: $ ./save-a-file ~/tmp/foo 29.195µs per s

Jan 4, 2023
Allows you to swap usernames at https://solo.to, I swapped @/city and @/lose with this program :)
Allows you to swap usernames at https://solo.to, I swapped @/city and @/lose with this program :)

Solo.To-Username-Swapper added the exe version for people who do not have Go installed, how ever I reccomend installing it at https://golang.org Getti

Sep 29, 2021
Joy2Mouse is a program that allows you to control your computer mouse with a joystick.
Joy2Mouse is a program that allows you to control your computer mouse with a joystick.

Joy2Mouse Joy2Mouse is a program that allows you to control your computer mouse with a joystick. Features Control your mouse with a joystick Mouse dow

Dec 26, 2021
A Golang program for a colleague to help in calculating the ratio between the points obtained in a test and the corresponding evaluation in tenths.
A Golang program for a colleague to help in calculating the ratio between the points obtained in a test and the corresponding evaluation in tenths.

A Golang program for a colleague to help in calculating the ratio between the points obtained in a test and the corresponding evaluation in tenths. If you have not the compiled file (.exe) you can build it with the Go compiler.

Jul 7, 2022
TLDR Page Creator is a program designed to help users make TLDR pages

TLDR Page Creator is a program designed to help users make TLDR pages, while avoiding syntax errors from TLDR-style markdown.

Dec 3, 2022