diff options
author | Andrew Murrell <merl@neo.andrewdm.me> | 2017-12-26 08:43:24 +0000 |
---|---|---|
committer | Andrew Murrell <merl@neo.andrewdm.me> | 2017-12-26 08:43:24 +0000 |
commit | bc78567716a106042356053d556f57c1ddc13cfc (patch) | |
tree | 0c008bddb47699a9dcd62cdeb2e7131a137f64ee | |
parent | db410594baa4bb507aaa23ff98bf8853056b0823 (diff) | |
parent | 50830151e8168b8be0100da349ba7e3576054dc3 (diff) |
Merge branch 'master' of https://git.andrewdm.me/www
38 files changed, 1055 insertions, 959 deletions
@@ -1,7 +1,9 @@ MAKEFLAGS += -j1 +pdfjs = https://github.com/mozilla/pdf.js/releases/download/v1.9.426/pdfjs-1.9.426-dist.zip + # Default target -all: out/index.html out/main.css +all: out/index.html out/main.css out/pdfjs phony += all # Boilerplate @@ -25,7 +27,13 @@ out/%.css: src/%.scss @mkdir -p $(@D) scss --stdin < $< > $@ -targets = $(phony) %.css +out/$(notdir $(pdfjs)): + wget -c --no-use-server-timestamp -O $@ $(pdfjs) +out/pdfjs: out/$(notdir $(pdfjs)) + rm -rf -- $@ + mkdir -- $@ && bsdtar -xf $(abspath $<) -C $@ --exclude '*.pdf' || { rm -rf -- $@; false; } + +targets = $(phony) %.css out/pdfjs% $(sort $(filter-out $(targets),out/index.html $(MAKECMDGOALS))): FORCE ./bin/sitegen @@ -54,20 +54,29 @@ Those dependencies are: * Authoring pages -Currently supported are Markdown (~.md~) and Org-mode (~.org~) files. -Each of these format supports embedding metadata in the document -(well, Markdown doesn't really, but the Pandoc syntax extension -~yaml_metadata_block~ adds it). +If you drop a file in the ~src/~ folder, the site generator will try +to turn it into usable HTML. The big caveat is that files *MUST* to +be in all lower case (this is to efficiently handle the requirement +that URLs be case-insensitive)! -In Org-mode, this looks like +Currently supported formats are: -#+BEGIN_SRC -#+KEY: value + - Markdown (~.md~) : converted with Pandoc + - Org-mode (~.org~) : converted with Pandoc + - PDF (~.pdf~) : embedded with PDF.js -...rest of document... -#+END_SRC +I don't need to tell you how to make these types of files. + +In addition to the raw content of the files, you'll want/need to set +metadata about the page. Each of these format supports embedding +metadata in the document. -In Markdown, this looks like +** Setting metadata: Markdown + +Metadata for Markdown files can be set by adding a block of YAML at +the beginning of the document, terminated with "---". This isn't +"standard" markdown, but is a common syntax extension (Pandoc calls it +~yaml_metadata_block~). #+BEGIN_SRC --- @@ -79,16 +88,47 @@ key2: ...rest of document... #+END_SRC +Pandoc may make use of some of these metadata attributes internally +when converting to HTML. See the Pandoc documentation. + +** Setting metadata: Org-mode + +Metadata for Org-mode files can be set by adding ~#+KEY: value~ lines +at the beginning of the document. + +#+BEGIN_SRC +#+KEY: value + +...rest of document... +#+END_SRC + +Pandoc may make use of some of these metadata attributes internally +when converting to HTML. See the Org-mode and Pandoc documentation. + AFAIK, unfortunately Org-mode only has values as strings, no structured data. -Pandoc may make use of some of these values internally when converting -to HTML. See the Org-mode and Pandoc documentation. +** Setting metadata: PDF + +PDF files natively support embedding certain bits of metadata. The +bits that we use are: + + - title + - author + - creation date + - modification date + +If you need to set any other metadata attributes, or want to override +the values in the PDF (since setting them can be difficult), create +YAML file with the same name as the PDF file, but with the ~.yaml~ +file extension instead of ~.pdf~. + +** Metadata attributes that are handles specially -However, there are some of these that are used specially by the site +There are some metadata attributes that are used specially by the site generator: -| attribute | default | standard | format | +| attribute | default value | standard | format | |------------------+---------------------------------+----------+-------------------------------------------------| | title | the first line of the file | Pandoc | string | | author | ~config.yaml:default_author~ | Pandoc | string +or list+ [fn:1] | @@ -98,16 +138,16 @@ generator: | html_head_extra | "" | Org-mode | string | | class | "" | no | string (CSS class to apply to ~<body>~) | | categories[fn:2] | "" | no | string ("ES HB") or list (["ES", "HB"]) | -| published[fn:2] | most recent git commit for file | no | string (Ruby ~DateTime::parse()~) or date[fn:3] | -| updated[fn:2] | first git commit for file | no | string (Ruby ~DateTime::parse()~) or date[fn:3] | +| published[fn:2] | first git commit for file | no | string (Ruby ~DateTime::parse()~) or date[fn:3] | +| updated[fn:2] | most recent git commit for file | no | string (Ruby ~DateTime::parse()~) or date[fn:3] | [fn:1] We don't support lists of authors, though the Pandoc "standard" does. [fn:2] The "published"/"updated"/"categories" terminology is borrowed from the Atom specification (RFC 4287), and I intend them to have the -same semantics. For "published"/"updated", there is a "standard" -variable name is "date", but I thought that was dreadfully ambiguous +same semantics. For "published"/"updated", the Pandoc "standard" +variable name is "date"; but I thought that was dreadfully ambiguous and confusing when the site generator deals with two distinct dates. [fn:3] At various times there have been bugs in the YAML parser @@ -134,7 +174,7 @@ files: In the directory you wish for the externally hosted pages to appear in, add the metadata to the page to external list. -For example, adding "356 Tomorrows: A Simple Lament" to the "writing" +For example, adding "365 Tomorrows: A Simple Lament" to the "writing" directory: #+BEGIN_SRC @@ -155,7 +195,7 @@ attributes for local pages, but with fewer defaults: | title | mandatory | string | | author | ~config.yaml:default_author~ | string | | categories | "" | string ("ES HB") or list (["ES", "HB"]) | -| published | value of ~updated~ [fn:4] | string (Ruby ~DateTime::parse()~) or date[fn:b3] | +| published | value of ~updated~ [fn:4] | string (Ruby ~DateTime::parse()~) or date[fn:3] | | updated | value of ~published~ [fn:4] | string (Ruby ~DateTime::parse()~) or date[fn:3] | [fn:4] It is mandatory to set at least one of ~published~ or diff --git a/bin/auto-changelog b/bin/auto-changelog index 64d15e9..b374fda 100755 --- a/bin/auto-changelog +++ b/bin/auto-changelog @@ -14,11 +14,18 @@ should-insert() { } generate-entry() { - git log -n1 --stat --date='format:%Y-%m-%d' --format=$'## %ad %an <%ae>\n\n%B' | cat -s + git log -n1 --date='format:%Y-%m-%d' --format=$'## %ad %an <%ae>\n\n%B' | cat -s } html_escape() { - sed -e 's/&/\&/g' -e 's/</\</g' -e 's/>/\>/g' -e 's/^ \S/ &/' + sed ' +/^\S/ { + s/&/\&/g + s/</\</g + s/>/\>/g +} +s/^ \S/ &/ +' } insert() { diff --git a/config.yaml b/config.yaml index 267ccb0..daf9625 100644 --- a/config.yaml +++ b/config.yaml @@ -1,8 +1,7 @@ url: "https://www.andrewdm.me/" -html_suffixes: ["md", "org"] # Licenses -default_license: "CC BS-SA-3.0" +default_license: "CC BY-SA-3.0" license_uris: "CC BY-SA-3.0": "https://creativecommons.org/licenses/by-sa/3.0/" "WTFPL-2": "http://www.wtfpl.net/txt/copying/" @@ -13,7 +12,7 @@ person_uris: "Luke Shumaker": "https://lukeshu.com/" "Andrew Murrell": "https://andrewdm.me/" person_emails: - "Luke Shumaker": "lukeshu@parabola.nu" + "Luke Shumaker": "lukeshu@lukeshu.com" "Andrew Murrell": "ImFromNASA@gmail.com" # Categories @@ -24,3 +23,8 @@ categories: "HB": "Homebrew" "SS": "Short Story" "WP": "WIP" + "WB": "Worldbuilding Prompt" + "AP": "Apocrypha" + "FR": "Forgotten Realms" + "PF": ".PDF" + "LD": "Lore Doc"
\ No newline at end of file diff --git a/lib/category.rb b/lib/category.rb index e0ed8e0..8f14153 100644 --- a/lib/category.rb +++ b/lib/category.rb @@ -9,7 +9,7 @@ class Category @abbr.downcase end def name - Config::get.category_name(@abbr) + Config::get.category_name(abbr) end def html return "<a class=\"tag #{abbr}\" href=\"/tags/#{abbr}.html\">#{name}</a>" diff --git a/lib/config.rb b/lib/config.rb index 4690559..944acc3 100644 --- a/lib/config.rb +++ b/lib/config.rb @@ -21,11 +21,7 @@ class Config return @default_license ||= @data['default_license'] end def license_uri(name) - str = @data['license_uris'][name] - if str.nil? - return nil - end - return URI::parse(str) + return URI::parse(@data['license_uris'][name]) end # People def default_author @@ -42,10 +38,8 @@ class Config return @data['person_emails'][name] end # Categories - def categories - return @data['categories'].keys - end def category_name(abbr) - return @data['categories'][abbr] + @categories ||= (@data['categories'] || {}).map{|k,v|[k.downcase,v]}.to_h + return @categories[abbr.downcase] end end diff --git a/lib/page.rb b/lib/page.rb index b349dc8..ebc123b 100644 --- a/lib/page.rb +++ b/lib/page.rb @@ -91,11 +91,11 @@ class Page end def index_link(cururl, depth) # FIXME: This code is super gross. - ret = " * <span><a class=\"#{index_class}\" href=\"#{cururl.route_to(url)}\" title=\"Published on #{atom_published.strftime('%Y-%m-%d')}" + ret = " * <span class=link-main><a class=\"#{index_class}\" href=\"#{cururl.route_to(url)}\" title=\"Published on #{atom_published.strftime('%Y-%m-%d')}" if atom_updated != atom_published ret += " (updated on #{atom_updated.strftime('%Y-%m-%d')})" end - ret += "\">#{atom_title}</a></span><span>" + ret += "\">#{atom_title}</a></span><span class=link-categories>" atom_categories.each do |t| ret += t.html end diff --git a/lib/page_index.rb b/lib/page_index.rb index 43bf367..31d4682 100644 --- a/lib/page_index.rb +++ b/lib/page_index.rb @@ -28,13 +28,15 @@ class IndexPage < LocalPage @ls ||= Dir::entries(local_infile) .select{|fname|not fname.start_with?(".")} .map{|fname|"#{local_infile}/#{fname}"} - .select{|path|Dir::exist?(path) or Config::get.html_suffixes.include?(File::extname(path).gsub(/^[.]/, ''))} end def index_pages if @pages.nil? @pages = Set[] for path in _ls - @pages.add( Dir::exist?(path) ? IndexPage::new(path) : LocalPage::new(path) ) + page = LocalPage::load(path) + unless page.nil? + @pages.add(page) + end end for data in (_metadata['external'] || []) @pages.add(RemotePage::new(data)) @@ -57,9 +59,9 @@ class IndexPage < LocalPage def index_link(cururl, depth) ret = '' unless depth <= 1 - ret += "<h#{depth}>[#{atom_title}](#{cururl.route_to(url)})</h#{depth}>\n\n" + ret += "<section><h#{depth}>[#{atom_title}](#{cururl.route_to(url)})</h#{depth}>\n\n" end - for page in index_pages.select{|page|not page.is_a?(IndexPage)}.sort_by{|page|page.atom_published} + for page in index_pages.select{|page|not page.is_a?(IndexPage)}.sort_by{|page|page.atom_updated}.reverse ret += page.index_link(cururl, depth+1) end ret += "\n" @@ -67,6 +69,9 @@ class IndexPage < LocalPage ret += page.index_link(cururl, depth+1) end ret += "\n" + unless depth <= 1 + ret += "</section>\n\n" + end return ret.gsub(/\n\n+/, "\n\n") end def index_title diff --git a/lib/page_local.rb b/lib/page_local.rb index e13fa33..6c70ac3 100644 --- a/lib/page_local.rb +++ b/lib/page_local.rb @@ -9,6 +9,21 @@ require 'pandoc' require 'person' class LocalPage < Page + def self.load(inpath) + case + when Dir::exist?(inpath) + require 'page_index' + return IndexPage::new(inpath) + when [".md", ".org"].include?(File::extname(inpath)) + return LocalPage::new(inpath) + when ".pdf" == File::extname(inpath) + require 'page_pdf' + return PdfPage::new(inpath) + else + return nil + end + end + def initialize(infile) @infile = infile super() diff --git a/lib/page_pdf.rb b/lib/page_pdf.rb new file mode 100644 index 0000000..e70c887 --- /dev/null +++ b/lib/page_pdf.rb @@ -0,0 +1,62 @@ +# coding: utf-8 +require 'erb' +require 'open3' +require 'yaml' + +require 'page_local' + +class PdfPage < LocalPage + def initialize(filename) + super(filename) + end + + def pdf_metadata + if @metadata.nil? + stdout, stderr, status = Open3::capture3("pdfinfo", "--", local_infile) + unless stderr.empty? + raise stderr + end + unless status.success? + raise status + end + raw_metadata = stdout.split("\n").map{|l|l.split(":", 2).map{|c|c.strip}}.to_h + + # Transform the PDF property names to match our metadata names + key_map = { + "Title" => "title", + "Author" => "author", + "CreationDate" => "published", + "ModDate" => "updated", + # "Keywords" => "categories", + } + @metadata = raw_metadata.map{|k,v|[key_map[k]||k,v]}.to_h + + yamlfile = local_infile.sub(/\.pdf$/, '.yaml') + if File::exist?(yamlfile) + @metadata = @metadata.merge(YAML::load(File::read(yamlfile))) + end + end + @metadata + end + def pdf_js_url + @@pdjfs ||= Config::get.url + 'pdfjs/web/viewer.html' + end + def pdf_viewer_url + @viewer_url ||= pdf_js_url + ('?file=' + URI::encode_www_form_component(pdf_js_url.route_to(local_srcurl))) + end + + def local_intype + return 'markdown' + end + def local_depends + if @depends.nil? + yamlfile = local_infile.sub(/\.pdf$/, '.yaml') + metafile = File::exist?(yamlfile) ? yamlfile : File::dirname(yamlfile) + tmplfile = "tmpl/pdf.md.erb" + @depends = super.map{|k,v|[k,v.merge([metafile, tmplfile])]}.to_h + end + @depends + end +end + +ERB::new(File::read("tmpl/pdf.md.erb")).def_method(PdfPage, 'local_input()', "tmpl/pdf.md.erb") diff --git a/lib/sitegen.rb b/lib/sitegen.rb index 78222a3..4a3dd48 100644 --- a/lib/sitegen.rb +++ b/lib/sitegen.rb @@ -40,7 +40,7 @@ module Sitegen end @deps end - def self.Makefile() + def self.Makefile str = '' dependencies.each do |target, deps| str += "#{target.to_s}: #{deps.sort.join(' ')}\n" diff --git a/src/about.md b/src/about.md index ddca263..8385ffe 100644 --- a/src/about.md +++ b/src/about.md @@ -1,10 +1,54 @@ -Hello Internet Person! +Epigraph -I'm Andrew D. Murrell, and I'm a DM. +Every great adventure begins with a departure. -Though I hold a degree in Physics, am currently working as a manager -and editor at a small tech firm. I write, mostly to teach my players -about the whatever they want to know about the Forgotten Realms, but -also because I think stories make the world a better place. I can be -contacted at ImFromNASA@gmail.com and would love to hear from you! +The young hero, the country lass,<br> +the bored noble, each is called to<br> +leave home and step into the wider<br> +world beyond. +These untested newcomers are<br> +confronted by the winds and wilds,<br> +by highwaymen and heathens, and by the<br> +deeper dangers of their own making. + +They may fall.<br> +They most certainly will fail.<br> +And yet they fight,<br> +taking strides ever forward,<br> +ever farther from the places they called home. + +But should they rise,<br> +and so defeat their enemies<br> +as they do their insecurities,<br> +they shall rise as heroes. + +And as the bard weaves their tales of fortune and of fate—<br> +of voyages, departures, and returns—<br> +we listen to their stories,<br> +and are likewise taken far, far, from home. + +Come with me then,<br> +upon a great adventure,<br> +a great departure,<br> +and a new beginning. + +—Andrew Murrell (/u/ImFromNASA on reddit). + +<hr> + +Welcome wanderers! + +This site is a resource for all you wanderers, seeking your place +among immortal wonders, your eyes filled deep with dreams and souls +set on seeking larger purpose. May you here find a window into worlds +and a invitation into imagination. + +My name is Andrew Murrell (/u/ImFromNASA on Reddit), currently most +well known for YARV, Dynamic Initiative (Drew's Rules), and the Patron +prestige class on /r/UnearthedArcana and its discord, the DoMT. + +I make D&D 5e homebrew, write short stories, build worlds, and also +haphazardly design heartbreaker TRPGs. + +I know more than any sane person should about the Forgotten Realms.
\ No newline at end of file diff --git a/src/apocrypha/anintroductiontoapocrypha.md b/src/apocrypha/anintroductiontoapocrypha.md new file mode 100644 index 0000000..a850552 --- /dev/null +++ b/src/apocrypha/anintroductiontoapocrypha.md @@ -0,0 +1,86 @@ +--- +title: "An Introduction to Apocrypha" +updated: "2017-12-25 Mon 14:22" +categories: AP +--- + +Apocrypha is a world of mystery and forgotten history, built from +first principles and the realization that even simple truths have +consequences. + +My goal with building the world of Apocrypha is to create a generic +fantasy world which is both suitable for books and for use with TRPGs, +and is designed somewhere on the coherency spectrum between the +Forgotten Realms and Discworld. + +Though it is being designed to function with the 5th edition of <a +href="https://en.wikipedia.org/wiki/Dungeons_%26_Dragons">Dungeons & +Dragons</a> in mind, I am also haphazardly designing a TRPG of my own +which may be abandoned along the way, but draws inspiration from +Apocrypha as well as breathing life back into it. Over the last 2 +months, I've found that working on one usually generates ideas that +are applicable to the other, and overall energy for both projects +benefits from this dynamic. + +Occasionally Asked Questions + +1. From a Forgotten Realms standpoint, "does the Weave still matter?" + +There is no Weave, nor are gods' domains delineated in the same way as FR. + +3. "Why in a D&D 5e-esque world have the elves and spellcasters not + taken over despite the advanced age of the former and the quadratic + power curve of the latter?" + +My previous answer to this was chopped up and dumped in several +dumpsters in several different states, so I'll expand below. + +Creatures don't have DNA. Alchemy is not chemistry because there are +no chemicals. Plutonium isn't an element: fire is. + +All creatures share a common ancestry. From the primal elementals, to +the mischievous fey, to the inscrutable nim, all are born by the +spontaneous generation of the physical from an immortal and unchanging +essence. I'm working on how they are all related, but their forms are +determined by their essential natures. + +The "planes" are just reality through a broken prism (in that they +started out with a common starting place for the condition of the +world, but since each has slightly different properties, due to the +absence of certain things (like say, gravity) or their distortion +(like the duration of magical effects lingering twice as long), they +each have developed differently (and different kinds of creatures have +been born there). + +Magic comes in as many forms as creatures do. + +Since creatures and magic and the elements and planes all have the +same ancestry in the grand scheme of things. + +Wizardry, specifically, is the capturing of a specific magical essence in the form of a spell. + +This 'bottling' allows you to take magic with you from place to +place. and release it. But the power of most non-wizardry magic ebbs +and flows based on large geographical region (which I'm still working +out, since I don't have most of the other magic systems worked out +yet). For example, druids can produce effects much more powerful than +those of a wizard if they are within their grove. So high level +wizards trying to take over an area and being repulsed by the locals +is a fairly common trope. + +As is practitioners of various regional magics attempting t extend +their influence by changing the lands around them. The Song of +Conquest is a kind of regional magic (or more like ancestral magic, +because it comes from the people, not the land), that has spread quite +far and is the power behind the empire (in addition to them +discovering wizardry and having a big army and the largest navy). + +So, the reason that elves/wizards haven't taken over the Empire is +because of the Song of Conquest (which only +humans/halflings/faunus/orcs have access to) and the nation state +(because it's a #human empire which isn't racist towards elves per se, +but you know). + +Also, "there's always a bigger fish." There are dragons and nim and +patrons and icons that are more powerful than wizards, and gods above +those. diff --git a/src/apocrypha/index.yaml b/src/apocrypha/index.yaml new file mode 100644 index 0000000..e54860e --- /dev/null +++ b/src/apocrypha/index.yaml @@ -0,0 +1 @@ +title: "Apocrypha"
\ No newline at end of file diff --git a/src/apocrypha/region_thecentersea.md b/src/apocrypha/region_thecentersea.md new file mode 100644 index 0000000..be49016 --- /dev/null +++ b/src/apocrypha/region_thecentersea.md @@ -0,0 +1,13 @@ +--- +title: "Regions of the Center Sea" +updated: "2017-12-25 Mon 00:13" +categories: AP LD +--- + +# The Center Sea +The Center Sea is the beating heart of the civilized world. +Tributaries from all directions meet and mix here, bringing ships +together from all the nations of the world, laden with goods and with +ideas. + + diff --git a/src/apocrypha/region_theempire.md b/src/apocrypha/region_theempire.md new file mode 100644 index 0000000..bc269f3 --- /dev/null +++ b/src/apocrypha/region_theempire.md @@ -0,0 +1,153 @@ +--- +title: "Regions of the Empire" +updated: "2017-12-24 Mon 00:14" +categories: AP LD +--- + +# A Brief Overview of the Empire +The Etracian Empire is the largest empire in the world, and the second +largest in history (only falling behind that of the dominion of the +giants during the Days of Thunder). + +Though in past ages, the empire grew through conquest, in the modern +days, the holdings and influence of the empire expand primarily +through colonization and diplomacy. + +#### Q & A +>How long has the Empire been around? + +The current count places the empire's history into 111 ages, but how +many is that? The current age has lasted 62 years, but some have been +less than a year, and some longer than a century. + +The best tax records in the oldest provinces say the empire is about +30 generations of elves (or 3000 years) old. The average length of an +'age' is therefore, about 100 years. + +>What is the General Edict? + +The General Edict is a system of laws and codes given by Josef IV. It +has been in place for a little over 60 years. + +As a legal system, the GE has done a better job of keeping the nation +running than the previous code did (the previous Emperor's reign was +rife with civil war, do in large part to the Emperor's power to easily +disenfranchise noble families that "showed disloyalty"). + +>Who is the current Emperor? + +Emperor Josef IV is the official name for Lady Lizbeth Yates, the +eldest daughter and only remaining survivor of the Yates line. Though +technically, only a man may claim the title of Emperor [what kind of +primogeniture is this?], few complain that the Lady Lizbeth legally +declared herself a man (or rather, few who complained about the matter +remain among the living). + +## Regions of the Empire +The Empire is a massive, powerful, and infinitely subdivided nation +with an exceptional record for stability matched only by its +inimitable bureaucracy. + +It contains three major geographic and political classifications for +its lands: states, provinces, and colonies. + +### The Continental States + +[I don't the upper bound on states, but there are at least three, +known collectively as the Midlands] + +#### The Midlands +North of the Marble Isle + +[I need to figure out the bodies of water to get more details.] + +Etra, Vala, Isla [transcribe from notebooks] + +### The Provinces + +There are several provinces which are much less wealthy than the +central states, but contain the majority of the empire's population. + +#### The North +There is a great difference between the area of the north claimed by +the Empire, and that controlled by the Empire. The only area of the +North from which the Empire has ever successfully collected taxes is +the southernmost border settlements in the Chill-Lands (of which there +are 12) and the narrow strip of land directly surrounding Fort North. + +It is often said that a single southern town could more than match the +value of the entire Northern province of the Empire, and that may be +true in terms of wealth or resources, but in reality few forts +anywhere in the Empire can brag the same quality of recruits brought +into the Imperial Legion as from the tiny northern province and +outlying regions. + +The occasional goliath barbarian or glacier dwarf fighter making their +way south and wanting to try their hands (and axes) at Legion life is +more than enough incentive to keep the Empire's northern holdings +fully staffed, supplied, and cared for. + +#### The Midwood +The Northwestern-most stretch of the Deepwood, this is the most +'civilized' area of that great forest, or at least that most citizens +of the Empire could ever hope to reach. + +Full of elves, gnomes, florans, faunus, halflings, and their kin, the +Midwood is one of the most ethically non-human locations in the +empire. Regiments of the Empire's military raised from the Midwood +are often called 'menageries' and use strange, but undoubtedly +effective, tactics in combat. + +[The ghostwise halflings come from an ancient ruin just outside the +midwood.] + +### The Colonies +Colonization is the empire's newest tool for expansion. + +#### Cover Islands +Oft beset by pirates and even more often by deadly storms, the Covers +are an expensive and dangerous colony to keep. That said, the islands +remain one of the few places for the empire to acquire rare volcanic +minerals and alchemical agents useful in the development of magical +weapons. + +After the Black Tongues were disbanded in the Empire, many fled to the +islands, where they find, fewer and more lax regulations on their +activities. + +### The Golden Road + +Running from the Citadel of Ice in the North to the Feet of the Last +King in the South and twisting, diverging, merging, and turning around +all sorts of places in between, the Gold Road is revered as sacred, +and it's tireless, invisible creator worshiped by those who would +seek safety traveling along its many gleaming golden cobblestones. + +The Golden Road belongs to the Golden God, though it is claimed by the +Empire where it overlaps land claimed by the Empire. That said, the +Golden Guides maintain control of the road regardless of the claims. + +You need a Golden Guide for the golden road, or you'll travel 100 +miles and never lose sight of where you started, or worse, you'll go +90 miles to see your destination right ahead of you, then 90 more +without it seeming to get any closer. + +The Golden Guides are either Travel Domain Clerics or (Fiend or +Celestial) Warlocks. Despite the ambiguity, the Golden God himself is +actually an Icon and a Fiend, a powerful one at that, and was involved +in the discovery of the spell which created the tiefling pact. Once a +gnome, the Golden God can be built as a [Gnome (Fine) Wizard 15 +(Transmutation)/Patron 5/Icon 5]. + +The Golden God always needs more gold for the road, and the standing +orders of the Golden Guides are to find and aid parties that can +supply large quantities of gold. The Golden God builds the road +daily, moving it slowly towards an unknown end. + +#### Lair + +The whole of the Golden Road is the Golden God's Lair. The gnome +himself is cloaked in a Perpetual Greater Invisibility spell (via +level 5 Icon power) and can cast *fabricate* at will. + + diff --git a/src/apocrypha/region_thenorth.md b/src/apocrypha/region_thenorth.md new file mode 100644 index 0000000..d9423a5 --- /dev/null +++ b/src/apocrypha/region_thenorth.md @@ -0,0 +1,91 @@ +--- +title: "Regions of the North" +updated: "2017-12-23 Sat 14:21" +categories: AP LD +--- + +## Regions of the North +The North is comprised of seven major areas, the White, the Wall, the +Wastes (or Spiritlands), the Chill-Lands, Fort North, the Vast, and +the Sunpeaks. + +### The White +The White is a region of bitter cold at the northern edge of the +world. It is constantly snowing from an eternal blizzard that swirls +around the edge of the world. It's chilling winds and subzero +temperatures make the White one of the most inhospitable places in +existence. But it is not empty. + +Ice wights roam the icy plane, remnants of those who knew the land +before the coming of the storm. But even these are benign compared to +the greatest danger of the frozen north, The White Death. + +Her lair lies hidden in mountain crag, covered deep with snow. The +greatest of her kind, the White Death is an ice dragon of unspeakable +size and power. It is said that she has seen beyond the boundary of +the world and glimpsed the great beyond. She wants to forget. + +Her presence in the cavern inadvertently protects one of the eight +Shadefalls (the permanent anchor and gateway to one of the eight +shades, in this case, the Icebright), from which she also is able to +draw energy to heal herself and power her Icy Breath, which magnified +by the power of the Shadefall, has the ability to turn creatures fully +caught in it to ice. + +### The Wall +TODO - Goblins, Giants, and the Throne on the Golden Road + +### The Wastes (the Spiritlands) +Roving tribes of frost goliath and half-frost goliath barbarians roam +the area known as the Wastes. Drawn to the area by the presence of +the Giants to the north, the barbarians are always alert to the +dangers of the Frozen Throne and regularly form war parties to destroy +whatever designs or advances are made by the Frost Giant kingdom. + +They do not do so out of any loyalty to the empire, but out of a sense +of reverence to the land itself and for some, a sense of paternalist +duty towards the unknowing smallfolk to the south. + +The tribes come together for the biennial meeting at the ancient +circle of stone known as 'gianthome'. It is a sacred location and is +said to be the location of the ancient ritual which created the first +goliath. + +TODO - Gianthome Circle, non-goliath inhabitants, faunus, spirits + +### The Chill-Lands +TODO - Twelve-Towns + +### Fort North +The only part of the north which can accurately be described as being +controlled by the Empire. + +TODO - Fort North + +### The Vast +The mountain plateau of swirling frozen wind and thousands of natural +shifting gateways into the Icebright. The entire area is suffused +with magic, which causes creatures that spend too long inside the area +to grow in size and risk becoming shaded. + +A creature shaded by the Icebright, cannot leave the Icebright or the +Vast without suffering penalties [???]. A creature born in the Vast +which has resistance to either Radiant or Cold damage may be able to +gain the benefits to size given by the Vast without becoming shaded. + +TODO - magic of the vast, geography, peoples + +#### Cities in the Vast: +##### Monastery of the North Wind +TODO +##### City of Glass +Home to a powerful sorcerer [Air Genasai Frozen Heart Sorcerer 18/Patron 5] who TODO + +### The Sunpeaks +Huge mountains. Connected to the Upperlight. Sun-soul monks and +clerics of Tabor. Conflict with the Coastal Colonies (and Black +Tongues, who have tried to take it over) . Not officially part of the +empire, though not for lack of trying on the part of the Emperor and +the nearby barons. + +TODO - Description of warming due to gateway, sunlight, constant daytime diff --git a/src/apocrypha/thegournalgeographicaffairs.md b/src/apocrypha/thegournalgeographicaffairs.md new file mode 100644 index 0000000..17387a6 --- /dev/null +++ b/src/apocrypha/thegournalgeographicaffairs.md @@ -0,0 +1,133 @@ +--- +title: "The Gournal of Geographic Affairs: The Sun-Touched Mountain" +updated: "2017-12-23 Sat 14:20" +categories: AP WB +--- + +# The Gournal of Geographic Affairs: The Sun-Touched Mountain + +Welcome Readers, to the second Special Edition of our illustrious +catalog of facts and figures. + +Last year, after our exploration of the Lowerdark's Cragmag Caverns +proved such a fantastic success, we set our sights higher: to answer a +[nagging] reader's question. Lola, age 8, from the Valanacian city of +Florora, has been sending us letters. Over two hundred letters to be +precise. Each has asked the same question, + +"Deer GGE, what is the talest mowntun [sic] in the world?" + +And while we don't usually reward improper spelling, her insistence, +and the fact that no expert in the world seemed to know a precise +answer, convinced us to settle it once and for all. Who knew that +simple question one year ago would spark a fantastic journey of +discovery and collaboration that may have ramifications beyond what we +dreamed possible. Returning laden with treasures only one month ago, +the GEE (& co.) Expedition has brought us the greatest treasure of +all: an answer. + +Dear Lola, + +The greatest mountain in the world stands atop the far-northern range +of snowy mountains known as the Sunpeaks. + +Since the entire northern ridge is filled with enormous mountains +dwarfing (or maybe even gnoming) all other mountains found elsewhere, +it was rather difficult for our sages here at the Imperial Center for +Geographical Excellence to locate the general area of the range in +which the peak might exist, much less its correlative parallel, and +the sheer size of the range combined with its namesake ever-present +blinding sunlight made clairvoyance and scrying spells of little use +above 50,000 ft. + +Yes, you read that right. 50,000. That's almost three times the +height of Mount Pang and twice that of the Skyknife, but in the +Sunpeaks, that's barely passing for average. + +But fear not dear readers. The Geournal for Geographical Excellence +is here to quench your thirst for knowledge. For comparing the several +dozen peaks which form the Upper Cluster, we had to go to extreme +lengths (and heights). Simply put, we had to go there. + +With our collaborative sponsors, The Community Climber, Aerial +Affairs, Snowpeak Tea, and a grant from the Ministry of Maps, we +raised 1.3 million Imperial silver swans (a little more than the +monthly taxpayer cost to support an entire legion of cavalry), to +finance a voyage into the unknown, staking both our reserves and our +reputation on the Expedition. + +We spared no cost, hiring only the best of the best. Trackers, +weatherworkers, guards, and guides, we set out into the Plateau of the +Sun to find our answer. + +Six months we searched the pockets of mountains that exceeded our +50,000 mark, listening to local legends, sending up balloons, and +using a combination of our savvy and our ability to take small arcane +gateways to cross from peak to peak. And those were fruitful months, +even though we had yet to locate our quarry, days spent mapping and +drawing, nights spent gazing into the clearest sky anywhere in the +world (and then mapping and drawing it too)! + +We had found mountains. Tall ones. But had we found the tallest? + +We wouldn't know for almost three more months. The answer, it seemed, +was always no. We would crest a peak, only to find another rising +above us on the horizon. We had to to maintain a constant litany of +darksight spells to see (without going blind) and frost spells to +avoid melting (while in the sun) and fire spells to avoid freezing +(while in the shade). + +We had to conjure air to breathe. + +And it was in these inhospitable conditions that we found them. Not +mountains, those would come later, but our guides and our salvation. + +We were somewhere precisely north of the 47th parallel, when one of our +forward seers called for a halt. He had found a body. We assumed the +worst, and began to prepare a frost-bag for storing it to take back +with us when we came down the mountain (as we'd had to do with most of +our veritable zoo of animals by this point). + +Imagine our surprise when the body rose to greet us with a smile. + +He was a bald human man, and no more than a few years into his young +adulthood, and was absolutely blind, and fairly near naked. He led us +to his small mountain abode, filled with others like him. They called +themselves monks, but when I asked them about their order, they had +none! + +Though I would have offered the poor unregistered fellows use of my +official quill and Imperial ink (had it not been alternatively frozen +and then boiled) to register with an approved order, they assured me +that they had no interest in the ways of the 'folk from down +below'. Upon our request (and a few oddities accepted in exchange, +namely a small bowl made of True Timber and a pair of hollow diamonds) +the unregistered 'monks' agreed to aid us towards our goal (though I +gathered the distinct impression that they very much acquiesced +primarily in order to rid themselves of us). + +Two weeks after meeting with the 'monks' we had found it. + +The Sun-Touched Mountain. + +So, Lola, I'm sure you're lost interest by now, being the petulant and +insistent child that you are, but deep within the Sunpeaks, beyond the +ken of the civilized peoples, stands the tallest mountain in the +world. + +We didn't climb it; we didn't dare. And our humble guides requested +that we saved ourselves the trouble. For we had found it. High above +the world, on a ridge of mountains the locals call 'The Edge' stands +the impossibly massive peak. + +Shrouded from below by almost constant cloud-cover and the jutting +cliffs of that massive ridge, we only dared observe it from afar. The +expanse between the ridge and the cluster we found ourselves on was +measured in miles. + +Our best calculations put the height of the Sun-Touched Mountain at a +staggering 179,400 ft. And at it's peak, a brilliant day's Sun. + +I'll never forget the sight. + +Thank you Lola. Now please stop writing us. diff --git a/src/changelog.md b/src/changelog.md index 8b2becd..8cd5ee5 100644 --- a/src/changelog.md +++ b/src/changelog.md @@ -1,37 +1,95 @@ ChangeLog ========= +## 2017-12-26 AndrewMurrell <ImFromNASA@gmail.com> + +Added PDFs, moved tastavi to writing, and added more apocrypha worldbuilding docs + + +## 2017-12-25 AndrewMurrell <ImFromNASA@gmail.com> + +converted org to md + + +## 2017-12-24 AndrewMurrell <ImFromNASA@gmail.com> + +started the center sea and the empire + + config.yaml | 4 +- + src/apocrypha/region_thecentersea.org | 8 +++ + src/apocrypha/region_theempire.org | 120 +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 130 insertions(+), 2 deletions(-) + +## 2017-12-23 AndrewMurrell <ImFromNASA@gmail.com> + +link fix + + src/apocrypha/region_thenorth.org | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +## 2017-12-23 AndrewMurrell <ImFromNASA@gmail.com> + +Region: The North + + src/apocrypha/region_thenorth.org | 85 ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 85 insertions(+) + +## 2017-12-23 AndrewMurrell <ImFromNASA@gmail.com> + +Fix a 404. + + src/apocrypha/{AnIntroductionToApocrypha.org => anintroductiontoapocrypha.org} | 0 + .../{TheGournalGeographicAffairs.org => thegournalgeographicaffairs.org} | 0 + 2 files changed, 0 insertions(+), 0 deletions(-) + +## 2017-12-23 AndrewMurrell <ImFromNASA@gmail.com> + +updated the categories for the apocrypha items + + src/apocrypha/AnIntroductionToApocrypha.org | 12 ++++++++++++ + src/apocrypha/TheGournalGeographicAffairs.org | 12 ++++++++++++ + 2 files changed, 24 insertions(+) + +## 2017-12-23 AndrewMurrell <ImFromNASA@gmail.com> + +removed some janky psionics + + src/dnd/psionic-schools.org | 220 ------------------- + src/dnd/psionist.org | 570 ------------------------------------------------- + 2 files changed, 790 deletions(-) + +## 2017-12-23 AndrewMurrell <ImFromNASA@gmail.com> + +Added the start of the apocrypha. + + src/apocrypha/AnIntroductionToApocrypha.org | 17 +++++ + src/apocrypha/TheGournalGeographicAffairs.org | 125 +++++++++++++++++++++++++++++++ + src/apocrypha/index.yaml | 1 + + 3 files changed, 143 insertions(+) + +## 2017-12-23 AndrewMurrell <ImFromNASA@gmail.com> + +Updated the About with an Epigraph + + src/about.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 51 insertions(+), 7 deletions(-) + ## 2017-01-24 AndrewMurrell <ImFromNASA@gmail.com> remove unfinished sources - src/dnd/psionist-class.md | 1504 ------------------------------- - src/dnd/{psionist2.org => psionist.org} | 0 - src/dnd/spell-gauntlet.org | 683 -------------- - 3 files changed, 2187 deletions(-) - ## 2017-01-14 Andrew Murrell <merl@neo.andrewdm.me> updated Psionist Title page - bin/pre-generate | 2 ++ - src/dnd/{Psionist2.org => psionist2.org} | 4 ++++ - 2 files changed, 6 insertions(+) - ## 2017-01-14 Andrew Murrell <merl@neo.andrewdm.me> Added an updated Psionist class with more complete domains, but no mind powers yet. - src/dnd/Psionist2.org | 566 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 566 insertions(+) - -## 2017-01-04 Luke Shumaker <lukeshu@sbcglobal.net> +## 2017-01-04 Luke Shumaker <lukeshu@lukeshu.com> Change the title of "Psionist" -> "Psionist Class [5e]" - src/dnd/Psionist.md | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ## 31 August 2016 Decided that the 1/5th of 'Magic is Magic' that was 'finished' was diff --git a/src/dnd/Collaborative_Gestalt_Leveling_v0.1.pdf b/src/dnd/Collaborative_Gestalt_Leveling_v0.1.pdf Binary files differnew file mode 100644 index 0000000..d9bea85 --- /dev/null +++ b/src/dnd/Collaborative_Gestalt_Leveling_v0.1.pdf diff --git a/src/dnd/Collaborative_Gestalt_Leveling_v0.1.yaml b/src/dnd/Collaborative_Gestalt_Leveling_v0.1.yaml new file mode 100644 index 0000000..2e90f01 --- /dev/null +++ b/src/dnd/Collaborative_Gestalt_Leveling_v0.1.yaml @@ -0,0 +1,4 @@ +--- +author: "Andrew Murrell" +title: "Collaborative Gestalt Leveling" +categores: "HB"
\ No newline at end of file diff --git a/src/dnd/Learning_a_Language_v1.0.pdf b/src/dnd/Learning_a_Language_v1.0.pdf Binary files differnew file mode 100644 index 0000000..e79ab04 --- /dev/null +++ b/src/dnd/Learning_a_Language_v1.0.pdf diff --git a/src/dnd/Learning_a_Language_v1.0.yaml b/src/dnd/Learning_a_Language_v1.0.yaml new file mode 100644 index 0000000..23fef4d --- /dev/null +++ b/src/dnd/Learning_a_Language_v1.0.yaml @@ -0,0 +1,4 @@ +--- +author: "Andrew Murrell" +title: "Learning a Language" +categores: "HB"
\ No newline at end of file diff --git a/src/dnd/OracleSorc1_0.pdf b/src/dnd/OracleSorc1_0.pdf Binary files differnew file mode 100644 index 0000000..375a105 --- /dev/null +++ b/src/dnd/OracleSorc1_0.pdf diff --git a/src/dnd/OracleSorc1_0.yaml b/src/dnd/OracleSorc1_0.yaml new file mode 100644 index 0000000..0828e54 --- /dev/null +++ b/src/dnd/OracleSorc1_0.yaml @@ -0,0 +1,5 @@ +--- +author: "Andrew Murrell" +title: "Sorcererous Origin: Oracle" +categores: "HB" +---
\ No newline at end of file diff --git a/src/dnd/ThePatron_1.1.pdf b/src/dnd/ThePatron_1.1.pdf Binary files differnew file mode 100644 index 0000000..5a4fb79 --- /dev/null +++ b/src/dnd/ThePatron_1.1.pdf diff --git a/src/dnd/ThePatron_1.1.yaml b/src/dnd/ThePatron_1.1.yaml new file mode 100644 index 0000000..fac431c --- /dev/null +++ b/src/dnd/ThePatron_1.1.yaml @@ -0,0 +1,4 @@ +--- +author: "Andrew Murrell" +title: "The Patron Prestige Class" +categores: "HB" diff --git a/src/dnd/YARV_Ranger_1.2_with_Community_Subclasses_1.1.pdf b/src/dnd/YARV_Ranger_1.2_with_Community_Subclasses_1.1.pdf Binary files differnew file mode 100644 index 0000000..68db5ef --- /dev/null +++ b/src/dnd/YARV_Ranger_1.2_with_Community_Subclasses_1.1.pdf diff --git a/src/dnd/YARV_Ranger_1.2_with_Community_Subclasses_1.1.yaml b/src/dnd/YARV_Ranger_1.2_with_Community_Subclasses_1.1.yaml new file mode 100644 index 0000000..a6a0670 --- /dev/null +++ b/src/dnd/YARV_Ranger_1.2_with_Community_Subclasses_1.1.yaml @@ -0,0 +1,4 @@ +--- +author: "Andrew Murrell" +title: "Yet Another Ranger Variant (YARV)" +categores: "HB"
\ No newline at end of file diff --git a/src/dnd/drews_rules.pdf b/src/dnd/drews_rules.pdf Binary files differnew file mode 100644 index 0000000..65ffb89 --- /dev/null +++ b/src/dnd/drews_rules.pdf diff --git a/src/dnd/drews_rules.yaml b/src/dnd/drews_rules.yaml new file mode 100644 index 0000000..70a57e6 --- /dev/null +++ b/src/dnd/drews_rules.yaml @@ -0,0 +1,4 @@ +--- +author: "Andrew Murrell" +title: "Drew's Rules" +categories: "HB" diff --git a/src/dnd/psionic-schools.org b/src/dnd/psionic-schools.org deleted file mode 100644 index 9f71b15..0000000 --- a/src/dnd/psionic-schools.org +++ /dev/null @@ -1,220 +0,0 @@ -#+TITLE: Schools of Psionics
-#+CLASS: dnd
-#+CATEGORIES: ES HB
-
-From what I've seen, the most recent few 5e Unearthed Arcana dealing
-with "Psionics and the Mystic" have been getting somewhat mixed
-reviews. I don't think this is because of the mechanics--or rather
-not COMPLETELY because of the mechanics. Mechanics for psionics have
-always been weird, and the 5e style is good for D&D, so maintaining
-that is good and won't get any gripes from me.
-
-But I think that no matter what purely mechanical tweaks the UA team
-has planned for the Mystic, the general lukewarm reception isn't going
-to change unless we get something else squared away first. Something
-a little deeper--something that helps us grasp Psionics in the same
-way we grasp Magic: with a complete and intuitive system.
-
-With Weave-based magic there are schools which somewhat delineate
-magical effects (conjuration, divination, etc), but that's not exactly
-what I mean. Not to bash the magical schools (any system will have
-inconsistencies--mine notwithstanding), but few people really
-understand what it means to be a wizard by what school of magic they
-specialize in. An enchantment wizard isn't fundamentally different
-from an evocation one. But a wizard is different than a bard or a
-warlock. These "Schools of Psionics" are as much about the state of
-mind of the manifester and the method for manifestation as they are
-about the outcome of the manifestation (there are several of my
-Psionic "schools" that may each manifest effects in the transmutation
-school of magic for instance, but each according to its own particular
-rules).
-
-What I mean is this:
-
-| | Introvertion (a) | Extroversion (b) |
-|-----------+------------------+------------------|
-| Mind (1) | Cogitation | Domination |
-| Body (2) | Sympathy | Manifestation |
-| Time (3) | Prescience | Anticipation |
-| Space (4) | Metapsionics | Apportation |
-
-There are eight categories split into two primary focuses and four
-topical domains, and each of the eight describes HOW a power is
-manifested. It tells us what our character is DOING to get the
-blasted power to work. As a D&D culture, we know how wizards do it,
-careful study and recitation, memorization, etc. We know how Bards do
-it, they hear the music of creation and wrap their words in it. All
-these effects are propagated through Mystra's Weave and are bound by
-it's limitations. But nobody has a clue how Psionics works. Or
-rather, we all have half-baked ideas that don't jive.
-
-In order for this to work, we need to know in canon, what it means to
-BE A PSIONIST and manifest powers. I'm probably no different than
-anybody else in my half-baked understanding, but as a Physicist and an
-editor I feel it is my duty to try to make sense of this mess.
-
-First off, since we don't have a Weave, but all magic needs a medium,
-lets make one. Lets call it the Psionic Field. Created spontaneously
-from the first thinking being (or Source), the Psionic Field exists on
-any plane containing thought. Some sources of psionic power are
-stronger than others, but all thinking things produce some connection
-to the field (some might wonder if magic and the Weave itself is
-naught but an echo of Mystra's or Auppenser's mind--and in that light
-perhaps the Psionic Field is not so foreign after all).
-
-With that medium in place, the world of Psionics slowly falls into
-place as well. Detailed descriptions of the eight schools follow:
-
-1a) Cogitation - Clarity of thought, memory, action, and connection to
-the Psionic Field.
-
-Cogitation is often one's first exposure to Psionics. It's a
-clear-mindedness that opens up your own mind to see itself for the
-first time, and beyond that, to sense the edges of the minds of
-others. It includes the stereotypical bloody-nosed mind reading,
-mimicry, and perfect recall.
-
-Examples of Cogitation include "Detect Thoughts" and "Mind Meld" and
-the ability to learn or borrow skills and proficiencies directly from
-the minds of others.
-
-1b) Domination - Exert dominating willpower over other minds.
-
-Once you've encountered sources outside yourself it is only natural to
-try to influence or even dominate them. Exerting your will into the
-minds of others isn't the same as reading their thoughts, you might
-not know what your target is thinking, only that it will succumb.
-
-Examples of Domination include "Command", "Suggestion", and "Dominate
-Person".
-
-2a) Sympathy - Exerting influence upon sympathetic objects.
-
-The Psionic Field is produced by thinking creatures, but it can leave
-an imprint on even mundane objects and materials. Objects may be
-imbued with Psionic energy to produce a variety of effects, and may
-soak up ambient energy by just sitting within the Psionic Field which
-can be later be discerned by a Psionist to know about an object's
-history. This is done by expanding your sense of self outward from
-your mind and body and into the object.
-
-Examples of Sympathy include "Psychometry", "Animate Objects", and
-"Guards and Wards".
-
-2b) Manifestion - Creating both illusory and physically manipulable
-constructs of pure thought.
-
-By focusing and condensing ideas down to their most concrete forms,
-Psionists can manifest the essence of a thing as either an illusion or
-as a real physical object made of Astral matter (ectoplasm). Astral
-matter is most commonly associated with the Astral plane (or plane of
-thought) where it occurs naturally, but can exist anywhere with a
-sufficient psionic field for a Psionist to conjure it.
-
-Examples of Manifestation include "Mage Hand", "Conjure Astral
-Construct", and "Programmed Illusion"
-
-3a) Prescience - See and feel other places and times.
-
-Because the actions of thinking things (sources of psionics) are not
-stagnant, their movements create ripples in the Psionic Field.
-Births, deaths, and exchanges of knowledge leave their marks. By
-studying these echos and patterns, Psionists can discern events that
-occurred in distant parts of the world or even in the past or future.
-
-Examples of Prescience include "Detect Poison and Disease", "Scrying",
-and "Foresight".
-
-3b) Anticipation - Solidify expectation and possibility into reality.
-
-In many ways the Universe itself is just composed of the interactions
-of groups of sources of psionism and the objects being pulled in their
-wake (albeit a rather large number of each). With an awareness of the
-way ripples propagate in the Psionic Field and by using the techniques
-of Sympathy but directing them outwards, a Psionist can begin to
-subtly manipulate expectation and the laws of Physics themselves.
-
-Examples of Anticipation include "Heat Metal", "Telekinesis", "Reverse
-Gravity", and "Time Stop".
-
-4a) Metapsionics - Manipulating sources of Psionism and their direct
-effects.
-
-The way that thinking creatures interact with the Psionic Field is
-complicated and diverse, just as the creatures which produce it are
-themselves. By studying how the minds of Psionically-attuned
-creatures create Psionic and even Magical Weave-based effects, a
-Psionist can learn to imitate or manipulate psionic effects as they
-see them (and sometimes use what they've learned to imbue limited
-psionic potential into others).
-
-Examples of Metapsionics include "Detect Magic", "Counterspell", and
-"Awaken"
-
-4b) Apportation - Pulling and pushing on planar boundaries with the
-Psionic Field.
-
-Since the material plane is not the only one with thinking creatures,
-some far-minded Psionists can detect the Psionic Field existing on
-other planes of existence and pull on these remote fields of power.
-Doing so can banish alien creatures, abjure harmful elemental effects,
-or even tear open portals to distant planes and places.
-
-Examples of Apportation include "Dimension Door", "Banishment", and
-"Whitefire Portal"
-
-== Post Script ==
-
-Q: Specifics (where do these fit in?) - A: Answer
-
-What about Soul Knives??? - A soul knife is just an adept who uses a
-combination of Manifestation and Sympathy to conjure a blade and imbue
-it with different Sympathetic effects. In a similar way, you can use
-these eight to extend specific domains on to different classes.
-Psionic warrior? Uses Sympathy to strengthen his body and Prescience
-to predict the strikes of his enemy. Psionic rogue? Apportation to
-teleport around or Cogitation to read minds to cheat at cards (or
-memorize the deck). Once the system is in place, the variations build
-themselves because you know what's possible and what isn't.
-Restriction breeds Creativity. You gotta know the rules to use them.
-
-What's all this about "Psionist?" Isn't it "Psion" - In my
-understanding a "Psion" is a mystic who uses metapsionics to
-manipulate her own mind into casting spells with the Weave. It is
-also a term that gets some use for a general practitioner of psionics.
-It is also one of those 4e tattoo addicts... just a really overloaded
-term really. Psionist sounds the best to me as a general term like
-"mage."
-
-What's the difference between Sympathy and Anticipation when
-moving/lifting things? - In Sympathy, you convince the object to move
-by extending your sense of self into it and lifting it yourself, in
-Anticipation, it moves because you trick the Universe into thinking
-the object should already be moving and so the Universe does it for
-you. Expanding self is all monk-like vs. essentially casting Luck
-Bending spells.
-
-Apportation includes an allusion to "Whitefire Portal". What's that? -
-Oh, just this cool thing I made:
-
-*Whitefire Portal*: You burn a temporary hole through the Astral Plane
-and into another plane of your choice. Once per long rest, centered on
-a point within 300 ft of you, you summon raw Astral ectoplasm which
-burns with hellish, white-hot fury. Any creature standing within 20
-feet of the whitefire must make a Dexterity saving throw or take 12d10
-fire damage or half on a successful save. Inanimate objects in the
-area also take the damage and flammable objects may catch on fire. A
-portal then opens to the chosen plane as with a Gate spell and remains
-open for 1 minute as the planes slowly knit themselves back
-together. Alternatively, instead of a specific location on a plane of
-your choice, you may choose to have your portal open into a generally
-inhospitable location in one of the elemental planes or the planes of
-positive or negative energy. If you do so, creatures who enter or
-begin their turns within 20 feet of the portal take 6d10 damage of the
-appropriate elemental or energy type.
-
-I'm actually working on an entire Psionist class for eventual
-publication on the Dungeon Master's Guild (or as part of my
-"MagnumOpis-MagicOfTheMultiverse" which covers EVERYTHING magical as I
-understand it). Of course if somebody #wotcstaff wants to buy it
-and/or hire me, I'd be totally up for #theorycrafting for a living.
diff --git a/src/dnd/psionist.org b/src/dnd/psionist.org deleted file mode 100644 index accd563..0000000 --- a/src/dnd/psionist.org +++ /dev/null @@ -1,570 +0,0 @@ -#+TITLE: [5e] Psionist Class - Rewrite [ALPHA] -#+CLASS: dnd -#+CATEGORIES: HB - -#+HTML_HEAD_EXTRA: <style type="text/css">#content { padding: 0px 16%; width: 68%; } body { background: url(Background3.png) repeat-y; background-size: 100%;} </style> - -* Introduction to the Psionist Class [5e] - -* The Psionist - - As a Psionist, you gain the following class features. - -** Hit Points - * *Hit Dice*: 1d6 per psionist level - * *Hit Points at 1st Level*: 6 + your Constitution modifier - * *Hit Points at Higher Levels*: 1d6 (or 4) + your Constitution modifier per psionist level after 1st - -** Proficiencies - * *Armor*: Light armor - * *Weapons*: Simple Weapons - * *Tools*: None - * *Saving Throws*: Intelligence, Wisdom - * *Skills*: Choose two skills from History, Insight, Investigation, - Medicine, Perception, or Religion - -** Equipment -You start with the following equipment, in addition to the equipment -granted by your background: - - * (a) a spear or (b) a mace - * (a) leather armor - * (a) light crossbow and 20 bolts or (b) any simple weapon - * (a) a scholar's pack or (b) an explorer's pack - -** Psionist Class Progression Table - -| | Prof. | | | Max | | | -| Level | Bonus | Features | Psi | Power | Cantrips | Powers | -| | | | Points | Level | Known | Known | -|-------+-------+----------------------------------+--------+-------+----------+--------| -| 1 | +2 | [[Mind Powers][Mind Powers]], [[Thought Sensitivity][Thought Sensitivity]] | 4 | 1st | 3 | 2 | -| 2 | +2 | [[Psionic Focus][Psionic Focus]] | 6 | 1st | 3 | 3 | -| 3 | +2 | Psionic Discipline Feature | 14 | 2nd | 3 | 4 | -| 4 | +3 | Ability Score Improvement | 17 | 2nd | 3 | 4 | -| 5 | +3 | | 27 | 3rd | 4 | 5 | -| 6 | +3 | Psionic Discipline Feature | 32 | 3rd | 4 | 6 | -| 7 | +3 | | 38 | 4th | 4 | 7 | -| 8 | +3 | Ability Score Improvement | 44 | 4th | 4 | 7 | -| 9 | +4 | | 57 | 5th | 4 | 8 | -| 10 | +4 | [[Psionic Domain][Psionic Domain]] | 64 | 5th | 5 | 9 | -| 11 | +4 | | 73 | 6th | 5 | 10 | -| 12 | +5 | Ability Score Improvement | 73 | 6th | 5 | 10 | -| 13 | +5 | | 83 | 7th | 5 | 11 | -| 14 | +5 | Psionic Discipline Feature | 83 | 7th | 5 | 12 | -| 15 | +5 | | 94 | 8th | 5 | 13 | -| 16 | +5 | Ability Score Improvement | 94 | 8th | 5 | 13 | -| 17 | +6 | | 107 | 9th | 5 | 14 | -| 18 | +6 | Psionic Discipline Feature | 114 | 9th | 5 | 15 | -| 19 | +6 | Ability Score Improvement | 123 | 9th | 5 | 16 | -| 20 | +6 | [[Perfect Mind][Perfect Mind]] | 133 | 9th | 5 | 17 | - -** Mind Powers - -All Psionic abilities except those that cast spells are mind -powers. Intelligence is your psionic ability for your mind -powers. Your intellect determines the strength of the psionic effects -you manifest. In addition, you use your Intelligence modifier when -setting the saving throw DC for a mind power or when making an attack -roll with one. Manifesting mind powers does not require verbal, -somatic, or material components unless those components have an -explicit cost associated with them or are consumed. - - * *Restriction on High Level Powers*: Psionic Powers of sixth level - and higher take a drastic mental toll when manifested. You may only - manifest one sixth, one seventh, one eighth, and one ninth level - power per day. - -*** Psi Points - -Psi points represent a Psionist's pool of mental energy. It expands as -she gains levels in the Psionist class and becomes more powerful. When -manifesting powers, she uses a number of psi points according to the -table below. - -| Power Level | Point Cost | -|-------------+------------| -| 1 | 2 | -| 2 | 3 | -| 3 | 5 | -| 4 | 6 | -| 5 | 7 | -| 6 | 9 | -| 7 | 10 | -| 8 | 11 | -| 9 | 13 | - -All spent psi points are recovered after a long rest. - -*** Psionic Ability - -*Mind Powers Save DC* = 8 + your proficiency bonus + your Intelligence -modifier - -*Mind Power Attack Modifier* = your proficiency bonus + your -Intelligence modifier - -** Thought Sensitivity - -As a Psionist, you are attuned to the thoughts and feelings of -others, as well as the concentration of psionic energy in an area. - - * It is more difficult for a group of people to surprise you. If - you enter an area with a group of five or more hidden creatures, - you feel their presence and cannot be surprised by them. You can - not determine their location relative to you or where they are - hiding. - * As an action you can examine an object or creature within 10 feet - of you to psionically determine whether or not it has a mind. You - cannot determine this if it is shielded or immune to having its - mind read. - -** Psionic Focus - -When you reach 2nd level, you may choose to focus your psionic -potential in one of two directions: inward or outward. - -*** Internal Focus - -*Psionic Recovery*: Once per day when you finish a short rest you may -regain a number of psi points equal to your Psionist level (up to 9). - -*** External Focus - -*Force of Will*: Once per short rest when manifesting a mind power you -may add your proficiency bonus to your Mind Power Attack Modifier or -Mind Power Save DC. You must choose to do so before the roll is made. - -** Psionic Domain - -When you reach 10th level, you may choose to focus your psionic -potential towards an aspect of reality: mind, body, time, or space. - -*** Mind Domain - -*Psionic Restoration*: Once per short rest on your turn you may remove -a mind-altering condition from yourself. Alternatively, you may use an -action to end a mind-altering condition from a creature you -touch. These may be Charmed or Frightened. - -*** Body Domain - -*Psychoportation*: Your movement speed is increased by 10 ft and you -gain proficiency in dexterity saving throws. - -*** Time Domain - -*Chronostutter*: Once per short rest on your turn you gain an -additional bonus action. - -*** Space Domain - -*Far Manifestation*: The max range of your psionic powers with ranges -greater than self is increased by 20 ft. - -** Perfect Mind - -Over years of study and experience in the Hidden Art, you have -mastered the use of your most powerful psionic powers. Upon reaching -20th level, the restriction on manifesting high level powers no longer -applies to sixth and seventh level powers. - -** Psionic Disciplines - -Psionic Disciplines represent the ways in which Psionists interact -with the Psionic Field and manifest their powers. You select a -discipline at 3rd level and it grants abilities at 3rd, 6th, 14th, and -18th levels. - -| | Internal | External | -|-------+--------------+---------------| -| Mind | Cogitation | Domination | -| Body | Sympathy | Manifestation | -| Time | Prescience | Anticipation | -| Space | Metapsionics | Apportation | - -*** Cogitation [4/4] - -Clarity of thought, memory, action and connection to thinking creatures. - -*Mimic Skill*: At 3rd level, you learn to tap into the minds of those -around you to temporarily mimic their skills. As an action, you may -target a creature within 30 feet of you. An unwilling creature makes -an wisdom saving throw or is affected. You may learn a skill, armor, -weapon, or tool proficiency from the targeted creature. You may only -mimic one proficiency with this ability at a time, but may target a -new creature at will. The targeted creature must have the chosen -proficiency for you to gain it. You retain the proficiency while in -the presence of the mimicked creature, but the proficiency disappears -when the creature moves more than 30 feet from you. - -*Touch of Tongues*: If a creature speaks at least one language, as an -action you may concentrate to translate their intentions, though not -their exact wording, into a language you know. This uses your -concentration for manifesting mind powers or casting spells and the -effect ends when you cease concentrating on it. - -*Tactician*: You learn to use sensory information from those around -you when aiming your manifestations. When determining if you can see a -creature or object for a spell, mind power, or other ability, you may -use the senses of any creatures within 60 feet of you instead of your -own. An unwilling creature makes a wisdom saving throw or is -affected. - -*One With All*: You thrive in areas of high density psionic -energy. Once per long rest, you may enter a psionic trance which -provides a variety of benefits. While in the trance you gain -proficiency in all skills, languages, and saving throws, automatically -succeed concentration checks, and any psionic abilities that you -manifest or spells you cast are considered to be manifested or cast -from one level higher (maximum of 9th level). This effect lasts a -number of minutes equal to the number of thinking creatures within 60 -feet of you when you enter the trance (maximum 10 minutes). Your own -senses are considered blinded and deafened for the duration. After -the trance ends you gain 1 level of exhaustion. - -*** Sympathy [4/4] - -*Psionic Blade Ward*: You learn to ready your body to withstand -damaging strikes. As a bonus action, you may spend a psi point to -manifest the psionic cantrip Blade Ward (you don't have to be able to -manifest that cantrip normally). - -*Empower Object*: You learn to imbue objects with psionic energy to -produce a minor effect. As a bonus action, you may touch an object of -size small or smaller and choose to imbue it with one of the following -effects until the beginning of your next turn: - - * Light: The object gives off a faint glow which illuminates 30 - feet of the surrounding area in dim or bright light (your choice). - * Heat: The object gives off extreme heat. Touching the object deals - 2d8 fire damage. - * Silence: All sounds within 5 feet of the object are silenced as - with a Silence spell. - * Pain: Touching the object produces an illusory sense of pain which - deals 3d4 psychic damage. - * Weight: The object's weight is reduced by 10 pounds. If this would - reduce the object's weight to 0, the object floats in the air. - -If a chosen affect applied to an object would deal damage, you and any -number of chosen creatures are immune to taking that damage from that -effect. - -*Reliable Psychometry*: You may manifest the 2nd level mind power -Psychometry at will without spending psi points. Additionally, while -in the attunement trance you may choose to move to the perspectives of -nearby objects within line of sight of the object you hold. The effect -ends if your chosen object ever leaves line of sight of the original -object. - -*Kinetic Avatar*: You extend your sense of self into the world around -you, animating and controlling objects and structures in your -vicinity, then pulling them around you in a swirling cocoon of -armor. The effect lasts for 1 minute. After the effect ends, you gain -one level of exhaustion. - - * You gain a flying speed equal to your normal speed for the - duration. - * Your armor class increases by 10 for the duration, though this - bonus decays as parts of your Avatar armor are destroyed. - * You gain a number of temporary hit points equal to your Psionist - level for the duration. Whenever you take damage your bonus armor - class decreases by 1 as part of the armor is sheared away. - * As an action you may shed 5 points of bonus AC to manifest the 5th - level psionic power Animate Objects without spending psi - points. The animated objects can fly. Maintaining control of the - animated objects requires concentration. - -*** Prescience [4/4] - -*Detect Strike*: You sense when an opponent decides to strike you and -can mentally prepare yourself. When you are attacked by a creature you -can see, you may use your reaction to get a +2 bonus to armor class -against that creature until your next turn. At 14th level, this -increases to a +4 bonus. You may use this feature a number of times -equal to your Intelligence modifier (minimum 2) per short rest. - -*Predict Disaster*: Once per short rest, when you make a roll at -disadvantage, you may choose to roll normally instead. - -*Read the Past*: If you would roll less than a 20 on a History check, -you roll a 20 instead. If a person you hear makes a statement about a -past event, you can tell if they are lying. - -*Grand Oracle*: The Myriad possibilities of time: past, present, and -future are laid bare before you. Through communing with the remnant -collective consciousnesses present within the Psionic Field, you gain -the following features: - - * You cannot be surprised. - * You may manifest the 2nd level mind power Augury at will without - requiring components or spending psi points. The cumulative 25% - change of failure does not apply for the first manifestation of - this power each day via this feature. - * You may manifest the 5th level mind power Commune once per day - without spending any psi points. - * You may manifest the 6th level mind power Truesight once per day - without spending any psi points. - -*** Metapsionics [4/4] - -*Extended Focus*: You may choose both options of the Psionic Focus -feature (both Internal and External). - -*Diminish/Enhance Psionics*: You have learned the deep secrets of the -Hidden Art. Once per short rest, when you or a creature you can see -manifests a psionic power or you encounter an existing psionic effect, -you may choose to apply one of the following effects to modify it as a -reaction. - - * _Fork/Merge_: You may increase or decrease the number of affected - creatures by 1 (this may not reduce the number of affected - creatures to 0). - * _Expand/Contract_: You may enlarge or reduce the area of effect by 5 - feet. - * _Extend/Curtail_: You may increase or decrease the duration by 1 - minute (this doesn't apply to instantaneous effects). - * _Shape_: You may change the shape of the area of effect (but not - the direction). For example you could change a line to a cone. - -*Advanced Metapsionics*: You gain an additional use of your -Diminish/Enhance Psionics feature per short rest and the following -additional options. - - * _Counter_: You may make an Intelligence (Psionics) check against - 10 + the power's level to end the effect. - * _Splice_: When you manifest a psionic effect or see one being - manifested, as a reaction, you may to choose a psionic power of 2nd - level or lower that you know and add its effects (choosing targets - separately within the area of effect or list of targets if - applicable) to the manifestation. Doing so requires spending an - appropriate number of psi points as if you were manifesting that - power normally. You may not manifest that power at a level higher - than its level. - * _Reflect_: If a psionic effect would target just you, you may have - it target the originator of the effect instead. - -*Unleash Potential*: Once per long rest as an action you plant a seed -of psionic ability in a willing creature you touch. For 24 hours they -gain the ability to manifest a psionic power of your choice of 2nd -level or lower (or a cantrip) and gain 6 psi points. If you manifest -this ability on the same target every day for a month (30 days), the -change becomes permanent and the creature is considered to be able to -innately manifest that ability. You may not grant more than one -ability to a creature, nor can you target a creature that already can -manifest psionic abilities. It's Mind Power Save DC and Attack -Modifier are determined by its Intelligence. - -*** Domination [4/4] - -*Deep Suggestion*: You may manifest the second level mind power -Suggestion once per long rest without expending any psi points. When -you do, the creature you target has disadvantage on the saving throw. - -*Psychic Potency*: When you deal psychic damage to a target that is -stunned, you may deal damage as though it were a critical strike. - -*Psychic Entity*: When you die, you may attempt to force your way into -another creature's body to continue living. To do so, a target -creature within 30 feet of you makes a Charisma saving throw. On a -success, you die, otherwise, you take control of the target's body and -force their consciousness into dormancy. You gain their physical -features (Strength, Dexterity, Constitution) but retain all of your -other traits. Once every 24 hours, or whenever you take damage greater -than 50% of your max hit points, the dormant consciousness may attempt -to resume control of the body by making a Charisma saving throw. On a -success, you are forced out of the body and must either attempt to use -this feature again on a different target or die. - -*Enslave*: Once per long rest as an action you may target a creature -you can see within 30 feet of you. The target must succeed on a Wisdom -saving throw or be charmed by you until you die or are on a different -plane of existence from it. The charmed target is under your control -and can't take reactions, and you and the target can communicate -telepathically with each other over any distance. Whenever the charmed -target takes damage, it can repeat its saving throw. On a success, the -effect ends. No more than once every 24 hours, the target can also -repeat the saving throw when it is at least one mile away from you. - -*** Manifestation [4/4] - -*Astral Armor*: As an action, you may conjure a coating of astral -matter which covers the skin. This coating lasts for 1 hour and -radiates dim light. Your AC becomes 13 + your Dexterity modifier for -the duration. As a reaction, you may explicitly harden the coating, -which temporarily increases your AC to 15 + Dex, but destroys the -armor afterwards in a flash of bright light. Creatures within 5 feet -of you when the armor is destroyed must make a Constitution saving -throw or be blinded until your next turn. - -*Astral Weapon*: You learn to emulate the effects of the 2nd level -Cleric spell Spiritual Weapon as a 2nd level mind power except the -conjured weapon is considered to be made of Astral matter and radiates -dim light. Additionally, the first time you manifest your Astral -weapon each day, you may do so without spending psi points. - -*Durable Manifestation*: When you create or conjure a creature it -gains 20 temporary hit points. While you are wearing your Astral -Armor, you gain 20 temporary hit points. - -*Astral Affinity*: Powers and effects that create creatures or -manifestations made of astral matter cost half as much to manifest and -last twice as long (this includes those created by your Astral Armor -and Astral Weapon features). - -*** Anticipation [4/4] - -*Force Repulsion*: As an action you may have target creature within 60 -feet of you makes a Strength saving throw. If it fails, it is pushed -up to 30 feet away from you and requires spending twice its movement -to approach you until your next turn. - -*Kinematics*: You learn the Minor Kinematics Cantrip with the slight -differences noted below. - - * It does not count against the number of Cantrips known. - * The number of objects or creatures that can be levitated is doubled. - * The maximum weight of an object or creature that can be levitated is doubled. - * When lifting objects with the Minor Kinematics psionic cantrip, you - may attempt to attack a creature in range that you can see with - those objects. This attack can be made as either an action or a - bonus action using your Int modifier + your proficiency bonus to - hit. You are considered proficient with these attacks and their - damage is determined by the statistics of the objects being - levitated (e.g. a longsword would deal 1d8 + your Intelligence - modifier slashing damage and a levitated metal bucket would deal - 1 + Intelligence bludgeoning damage). Floating objects can be - attacked or pulled downwards, which causes the cantrip's effect - holding them aloft to fail. If you attempt to make a ranged attack - with a floating object, it must have the loading property and be - loaded and such an attack may not be performed as a bonus - action. You cannot load a weapon or activate a magic item using the - Minor Kinematics cantrip. - -*Phasing*: Once per short rest, as an action on your turn, you may -become intangible until your next turn. You may pass through solid -objects and are invulnerable to nonmagical bludgeoning, slashing, and -piercing damage, but not structures, boundaries, or weapons created by -magical force. Your gear may become intangible with you. If you would -end your turn inside an object, you take 6d8 bludgeoning damage and -are ejected to the nearest unoccupied space. If you end your turn -inside another creature, you both take this damage. - -*Time Skip*: Once per long rest you may target a creature within 60 -feet of you. That creature makes a Charisma saving throw. If it -fails, that creature skips its next round of combat. - -*** Apportation [4/4] - -*Call Energy*: You feel the cosmic pull of the planes of Positive and -Negative Energy. Once per long rest, as an action you may cover an -20-ft radius sphere centered at a point you can see in planar -energy. Choose either a) the Positive Energy Plane or b) the Negative -Energy Plane. The covered area is either a) bathed in a dull glow or -b) shrouded in a misty shadow which a) heals each living creature in -range by 1 hp at the end of each creature's turn or b) deals 1 damage -per turn to all living things in range and the end of each creature's -turn. Maintaining this effect requires concentration and may last no -longer than a minute. - -*Planar Abjuration*: Once per short rest, as a reaction to a spell or -effect within 30 ft of you that would deal fire, cold, lightning, -thunder, radiant, or necrotic damage, you channel the powers of the -elemental and outer planes to reduce the damage dealt by an amount -equal to your Intelligence modifier + your Psionist level. If the -spell or effect has an area of effect, the damage each affected -creature takes is reduced by this much. Damage reduction is applied -before applying resistances. - -*Banishing Blasts*: Once per short rest, when a creature native to a -different plane of existence than the one it is on takes damage from -one of your mind powers, you may have it make a Charisma saving -throw. If it fails this saving throw, it is banished to its plane of -origin sound for 1 minute with a faint popping sound. While there, the -target is incapacitated. When the minute is finished, it returns to -the nearest unoccupied space from where it left. - -*Whitefire Portal*: You burn a temporary hole through the Astral Plane -and into another plane of your choice. Once per long rest, centered on -a point within 300 ft of you, you summon raw Astral ectoplasm which -burns with hellish, white-hot fury. Any creature standing within 20 -feet of the whitefire must make a Dexterity saving throw or take 12d10 -fire damage or half on a successful save. Inanimate objects in the -area also take the damage and flammable objects may catch on fire. A -portal then opens to a plane of your choice as with a Gate spell and -remains open for 1 minute as the planes slowly knit themselves back -together. Alternatively, instead of a specific location on a plane of -your choice, you may choose to have your portal open into a general -location in one of the elemental planes or the planes of positive or -negative energy. If you do so, creatures who enter or begin their -turns within 20 feet of the portal take 6d10 damage of the appropriate -elemental or energy type. - - -* MIND POWERS: - -*Mind Blast*: You magically emit psychic energy in a 60-foot cone. -Each creature in that area must succeed on a Intelligence saving throw -or take 5d8 psychic damage and be stunned for 1 minute. A creature may -repeat the saving throw at the end of each of its turns, ending the -effect on itself on a success. - -*Mind Meld*: As an action, you may touch a creature with an -Intelligence of 5 or greater and attempt to meld your consciousnesses -together. Doing so can be dangerous. If you attempt to meld with an -unwilling creature, it makes a Wisdom saving throw to block the mental -intrusion, otherwise a link is established. While the link is active, -thoughts, emotions, and memories are shared freely between yourself -and the creature. During a mind meld, since your minds are linked, it -is more difficult to lie or to hide information. To do so requires a -Concentration (Intelligence) contest for each lie or omission. Either -party may attempt to leave the mind meld by repeating the wisdom -saving throw (if you attempt to leave, you must also make a wisdom -saving throw against your Mind Power save DC). If the link is broken -in this way, or in any other way (such as the death of one of its -participants or being physically torn from touching one another) -before both parties explicitly agree to do so, both parties take 10d6 -psychic damage. You may only use this feature once per long rest. - -*Conjure Astral Construct*: Once per long rest, as an action, you may -create an Astral construct from Astral matter pulled from the Astral -Plane. - -Though you may customize the exact form of the construct to your -liking, the statistics for the Astral Construct are the same as that -of the Helmed Horror (page 183 in the Monster Manual) with the -following exceptions: - -It gains up to three additional options from the list below (you may -choose the same option more than once): - - * Extra Attack - * See Invisibility - * Flash and Bellow Attack (Creatures within 30 ft make DC 15 Con - saves or are blinded and deafened for 1 minute. They may repeat the - saving throw at the end of each of their turns. Once a creature - succeeds, it cannot be affected again.) - * 5d8 (22) Extra Hit Points - * Extra Spell Immunity (Two additional spells) - * +3 Damage on Hit - * +1 AC - -*Imprisonment*: You learn the 9th level Wizard spell Imprisonment as a -ninth level mind power. It does not count against the number of powers -known, but costs the normal number of psi points to manifest. As a -Mind Master, Imprisonment gains an additional option: Mind Prison. You -may choose to Imprison the creature directly in your mind. There is no -material component needed for this option. If you die or your -consciousness leaves your body for a period longer than 8 hours (as -with an Astral Projection spell), the prisoner is released. While -imprisoned in your mind, the creature may sense what you allow it to -sense and you may read the creature's surface thoughts as with a -Detect Thoughts spell. No more than one creature may be imprisoned -this way at a time. - -*Impose Will*: Once per short rest, you may cause a creature making a -saving throw against one of your mind powers, abilities, or your -psionic blast to have disadvantage on that saving throw. You must do -so before the roll is made. Once you've used this feature on a -creature, you may not do so again on that same creature until you -finish a long rest. diff --git a/src/feed.svg b/src/feed.svg new file mode 100644 index 0000000..f12aab2 --- /dev/null +++ b/src/feed.svg @@ -0,0 +1,41 @@ +<?xml version="1.0"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- + This file was downloaded from feedicons.com. The contents of this + file originally appeared as part of Firefox and are owned by + Mozilla. This license header was inserted by Luke Shumaker, as to + be in compliance with the original license. + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Alternatively, the contents of this file may be used under the terms of + either the GNU General Public License Version 2 or later (the "GPL"), or + the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + in which case the provisions of the GPL or the LGPL are applicable instead + of those above. If you wish to allow use of your version of this file only + under the terms of either the GPL or the LGPL, and not to allow others to + use your version of this file under the terms of the MPL, indicate your + decision by deleting the provisions above and replace them with the notice + and other provisions required by the GPL or the LGPL. If you do not delete + the provisions above, a recipient may use your version of this file under + the terms of any one of the MPL, the GPL or the LGPL. +--> +<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="128px" height="128px" id="RSSicon" viewBox="0 0 256 256"> +<defs> +<linearGradient x1="0.085" y1="0.085" x2="0.915" y2="0.915" id="RSSg"> +<stop offset="0.0" stop-color="#E3702D"/><stop offset="0.1071" stop-color="#EA7D31"/> +<stop offset="0.3503" stop-color="#F69537"/><stop offset="0.5" stop-color="#FB9E3A"/> +<stop offset="0.7016" stop-color="#EA7C31"/><stop offset="0.8866" stop-color="#DE642B"/> +<stop offset="1.0" stop-color="#D95B29"/> +</linearGradient> +</defs> +<rect width="256" height="256" rx="55" ry="55" x="0" y="0" fill="#CC5D15"/> +<rect width="246" height="246" rx="50" ry="50" x="5" y="5" fill="#F49C52"/> +<rect width="236" height="236" rx="47" ry="47" x="10" y="10" fill="url(#RSSg)"/> +<circle cx="68" cy="189" r="24" fill="#FFF"/> +<path d="M160 213h-34a82 82 0 0 0 -82 -82v-34a116 116 0 0 1 116 116z" fill="#FFF"/> +<path d="M184 213A140 140 0 0 0 44 73 V 38a175 175 0 0 1 175 175z" fill="#FFF"/> +</svg> diff --git a/src/main.scss b/src/main.scss index d32d6ee..0c5f0d5 100644 --- a/src/main.scss +++ b/src/main.scss @@ -1,159 +1,229 @@ +@import url(https://fonts.googleapis.com/css?family=Neucha|Patrick+Hand+SC); + +* { + box-sizing: border-box; +} + body { margin: 0; padding: 0; - font-family: Baskerville, "Goudy Old Style", "Palatino", "Book Antiqua", "Warnock Pro", serif; + background: rgb(255,255,240); + + a { + text-decoration: none; + color: #1963b6; + &:hover, &:focus { + text-decoration: underline; + } + &:visited { + color: #460fb3; + } + + &.external { + background-position: center right; + background-repeat: no-repeat; + background-image: url(external.svg); + background-size: 12px 12px; + padding-right: 13px; + } + &.feed { + background-position: center left; + background-repeat: no-repeat; + background-image: url(feed.svg); + background-size: 0.65em 0.65em; + padding-left: 0.8em; + } + } } header { - width: 100%; + width: 20%; + position: fixed; + height: 100%; + left: 0; + top: 0; + + display: flex; + flex-direction: column; + + text-align: center; + font-family: 'Patrick Hand SC', sans-serif; + + background-color: rgb(200,200,160); h1 { + background-color: #ce795e; + padding: 0.5em 0; margin: 0; - background-color: rgba(0, 0, 0, 0.6); - padding: 4px; - padding-bottom: 0; - - text-align: middle; - a:first-child { - font-size: 50px; - color: white; - } - &, a:not(:first-child) { - color: white; - font-size: 15px; - color: white; - } a { - text-decoration: none; - } - a:hover, a:focus { - text-decoration: underline; + color: black !important; } } nav { - /* layout */ - line-height: 1; - width: 100%; ul { - padding: 0; + display: flex; + flex-direction: column; margin: 0; - list-style: none; - } - li { - display: inline-block; - } - a { - display: block; - } - - /* pretty */ - background-color: Maroon; - a { - padding: 0.2em 1em; - font-size: 40px; - color: GoldenRod; - text-decoration: none; + padding: 0; + li { + display: block; + font-size: 2em; + margin: 0.25em 0.5em; - &:hover, &:focus { - background-color: white; - } - &:hover, &:visited { - color: GoldenRod; - } - &:active { - color: Black; - } - } + border: 2px solid #41403e; + border-top-left-radius: 255px 15px; + border-top-right-radius: 15px 225px; + border-bottom-right-radius: 225px 15px; + border-bottom-left-radius: 15px 255px; - form { - padding: 0.2em 0; - font-size: 40px; - display: block; + background-color: rgb(240,240,240); + transition: background-color 0.5s ease; + &:hover { + background-color: rgb(200,200,200); + } - input { - font-size: 25px; - border: solid 1px #333333; - vertical-align: middle; - } - input[type="search"] { - max-width: 10em; - } - input:first-child { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - } - input:not(:last-child) { - border-right: 0; - } - input:last-child { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; + form { + display: inline-block; + width: calc(100% - 0.5em); + line-height: 0; + margin: 0.25em 0; + input { + width: 100%; + } + } } } } } +article, footer { + width: 80%; + margin-left: 20%; + + font-family: 'Neucha', sans-serif; + padding: 1em; +} + article { - max-width: 6.5in; - margin: 0 auto; + overflow: hidden; .tag { font-size: 60%; - // this should work! - font-family: Baskerville, "Goudy Old Style", "Palatino", "Book Antiqua", "Warnock Pro", serif; - color: white; - text-decoration: none; + color: white !important; text-align: center; + margin-left: 2px; padding: 4px 7px 5px 7px; - border-radius: 2px; + border-top-left-radius: 255px 15px; + border-top-right-radius: 15px 225px; + border-bottom-right-radius: 225px 15px; + border-bottom-left-radius: 15px 255px; } .tag.ff { background: FireBrick; } .tag.ss { background: SeaGreen; } .tag.es { background: DarkViolet; } .tag.hb { background: DimGray; } .tag.dm { background: DarkSlateGray; } - .tag.wp { background: GhostWhite; color: black; } + .tag.wp { background: GhostWhite; color: black !important; border-color: Gray; border: solid 1.2px LightGray; } + .tag.ap { background: #C00000; } + .tag.wb { background: #CC3399; } + .tag.fr { background: #003300; } + .tag.pf { background: #FF0000; } + .tag.ld { background: #CCCC00; } - border-bottom: solid 1px #333333; + border-bottom: solid 1px #c9cacc; } footer { - max-width: 6.5in; - margin: 0 auto; - padding: 1em 0; - font-size: 60%; + font-size: 70%; p { margin: 0; } } + +/* Index pages ****************************************************************/ + body.index { + @mixin card-container { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: flex-start; + } + + @mixin card { + display: block; + background-color: white; + border: 2px solid #e6e7e9; + padding: 1em; + margin: 1em; + + box-shadow: 15px 28px 25px -18px rgba(0,0,0,.2); + transition: box-shadow .5s ease; + &:hover { + box-shadow:2px 8px 4px -6px rgba(0,0,0,.3) + } + } + article { - ul { - list-style: none; - display: table; + @include card-container; + font-family: 'Patrick Hand SC', sans-serif; + + & > h1 { + display: block; + width: 100%; + text-align: center; + margin: 0; + } + & > ul { + @include card-container; + width: 100%; padding: 0; + margin: 0; li { - display: table-row; - line-height: 1.3em; - & > * { - display: table-cell; - padding-right: 0.1em; - } + @include card; } } - a.external { - background-position: center right; - background-repeat: no-repeat; - background-image: url(external.svg); - background-size: 12px 12px; - padding-right: 13px; + & > section { + @include card; + h2 { + margin-top: 0; + } + ul { + display: flex; + flex-direction: column; + + padding: 0; + margin: 0; + li { + display: flex; + flex-direction: row; + justify-content: space-between; + + padding: 0.5em 0; + border-top: 1px dashed #d9d9d8; + .link-main { + display: inline-block; + max-width: 12em; + line-height: 1.5em; + } + .link-categories { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-end; + align-items: flex-start; + } + } + } } } } +/* D&D-style pages ************************************************************/ + body.dnd { background: url(dnd/background.png) repeat-y; background-size: 100%; @@ -222,3 +292,33 @@ body.dnd { font-weight:bold; } } } + +/* D&D-style pages ************************************************************/ + +body.pdf { + position: absolute; + width: 100%; + height: 100%; + bottom: 0; + + display: flex; + flex-direction: column; + + article { + flex-grow: 2; + padding: 0; + + p { + float: left; + margin: 0.25em -100% 0.25em 0.25em; + } + h1 { + text-align: center; + margin: 0.25em 0; + } + iframe { + width: 100%; + height: 100%; + } + } +} diff --git a/src/dnd/tastavi.md b/src/writing/tastavi.md index 77efda6..d499fdb 100644 --- a/src/dnd/tastavi.md +++ b/src/writing/tastavi.md @@ -2,7 +2,7 @@ title: "Tastavi D'Maelnor of Llolethane" updated: "2016-08-30 Tue 23:56" class: "dnd" -categories: SS +categories: SS FR --- <p> diff --git a/tmpl/page.html.erb b/tmpl/page.html.erb index 883ce9e..9d265e5 100644 --- a/tmpl/page.html.erb +++ b/tmpl/page.html.erb @@ -9,7 +9,7 @@ </head> <body class="<%= html_class %>"> <header> - <h1 class=breadcrumbs><%= Sitegen::breadcrumbs(url) %></h1> + <h1><a href="/">AndrewDM.me</a></h1> <nav> <ul> <li><a href="/">Projects</a> @@ -19,6 +19,7 @@ <form method="GET" action="/search.html"> <input type=search name="s" placeholder="Search" /><input type=submit value="🔍" /> </form> + <li><a class=feed href="/index.atom">Feed</a> </ul> </nav> </header> diff --git a/tmpl/pdf.md.erb b/tmpl/pdf.md.erb new file mode 100644 index 0000000..2ce7327 --- /dev/null +++ b/tmpl/pdf.md.erb @@ -0,0 +1,5 @@ +<%= pdf_metadata.to_yaml %> +class: pdf +--- + +<iframe src="<%= url.route_to(pdf_viewer_url) %>" ></iframe> |