summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--DND/PsionicSchools.html495
-rw-r--r--DND/SoP.txt226
-rw-r--r--HACKING.md1
-rw-r--r--Makefile46
m---------WaterdeepBazaar (renamed from DND/WaterdeepBazaar)0
-rwxr-xr-xbin/index14
-rw-r--r--bin/index.atom.erb25
-rw-r--r--bin/index.md.erb13
-rwxr-xr-xbin/page10
-rw-r--r--bin/page.html.erb32
-rw-r--r--bin/pandoc.rb95
-rwxr-xr-xbin/post-commit25
-rw-r--r--bin/util.rb111
-rwxr-xr-xbin/write-atomic21
-rwxr-xr-xbin/write-ifchanged25
-rwxr-xr-xgit-setup6
-rw-r--r--index.html79
-rw-r--r--src/Andrew.md (renamed from Andrew.txt)0
-rw-r--r--src/DND/Background.orig.png (renamed from images/Background.png)bin4791704 -> 4791704 bytes
-rw-r--r--src/DND/Background.orig.small.png (renamed from DND/Background2.png)bin1302911 -> 1302911 bytes
-rw-r--r--src/DND/Background.png (renamed from DND/Background3.png)bin2403525 -> 2403525 bytes
-rw-r--r--src/DND/PsionicSchools.css9
-rw-r--r--src/DND/PsionicSchools.org (renamed from org/PsionicSchools.org)9
-rw-r--r--src/DND/Psionist.html (renamed from DND/Psionist.html)0
-rw-r--r--src/DND/SpellGauntlet.org (renamed from DND/SpellGauntlet.txt)0
-rw-r--r--src/DND/Tastavi.html (renamed from DND/Tastavi.html)0
-rw-r--r--src/favicon.gif (renamed from ADM.gif)bin260 -> 260 bytes
-rw-r--r--src/favicon.ico (renamed from ADM.ico)bin626 -> 626 bytes
-rw-r--r--src/index.md30
-rw-r--r--src/main.css (renamed from main.css)27
-rw-r--r--src/main.js (renamed from main.js)14
32 files changed, 472 insertions, 842 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6a3417b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/out/
diff --git a/DND/PsionicSchools.html b/DND/PsionicSchools.html
deleted file mode 100644
index 9ba00dc..0000000
--- a/DND/PsionicSchools.html
+++ /dev/null
@@ -1,495 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
-<head>
-<title>PsionicSchools</title>
-<!-- 2016-12-28 Wed 21:09 -->
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<meta name="generator" content="Org-mode" />
-<style type="text/css">
- <!--/*--><![CDATA[/*><!--*/
- .title { text-align: center; }
- .todo { font-family: monospace; color: red; }
- .done { color: green; }
- .tag { background-color: #eee; font-family: monospace;
- padding: 2px; font-size: 80%; font-weight: normal; }
- .timestamp { color: #bebebe; }
- .timestamp-kwd { color: #5f9ea0; }
- .right { margin-left: auto; margin-right: 0px; text-align: right; }
- .left { margin-left: 0px; margin-right: auto; text-align: left; }
- .center { margin-left: auto; margin-right: auto; text-align: center; }
- .underline { text-decoration: underline; }
- #postamble p, #preamble p { font-size: 90%; margin: .2em; }
- p.verse { margin-left: 3%; }
- pre {
- border: 1px solid #ccc;
- box-shadow: 3px 3px 3px #eee;
- padding: 8pt;
- font-family: monospace;
- overflow: auto;
- margin: 1.2em;
- }
- pre.src {
- position: relative;
- overflow: visible;
- padding-top: 1.2em;
- }
- pre.src:before {
- display: none;
- position: absolute;
- background-color: white;
- top: -10px;
- right: 10px;
- padding: 3px;
- border: 1px solid black;
- }
- pre.src:hover:before { display: inline;}
- pre.src-sh:before { content: 'sh'; }
- pre.src-bash:before { content: 'sh'; }
- pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
- pre.src-R:before { content: 'R'; }
- pre.src-perl:before { content: 'Perl'; }
- pre.src-java:before { content: 'Java'; }
- pre.src-sql:before { content: 'SQL'; }
-
- table { border-collapse:collapse; }
- caption.t-above { caption-side: top; }
- caption.t-bottom { caption-side: bottom; }
- td, th { vertical-align:top; }
- th.right { text-align: center; }
- th.left { text-align: center; }
- th.center { text-align: center; }
- td.right { text-align: right; }
- td.left { text-align: left; }
- td.center { text-align: center; }
- dt { font-weight: bold; }
- .footpara:nth-child(2) { display: inline; }
- .footpara { display: block; }
- .footdef { margin-bottom: 1em; }
- .figure { padding: 1em; }
- .figure p { text-align: center; }
- .inlinetask {
- padding: 10px;
- border: 2px solid gray;
- margin: 10px;
- background: #ffffcc;
- }
- #org-div-home-and-up
- { text-align: right; font-size: 70%; white-space: nowrap; }
- textarea { overflow-x: auto; }
- .linenr { font-size: smaller }
- .code-highlighted { background-color: #ffff00; }
- .org-info-js_info-navigation { border-style: none; }
- #org-info-js_console-label
- { font-size: 10px; font-weight: bold; white-space: nowrap; }
- .org-info-js_search-highlight
- { background-color: #ffff00; color: #000000; font-weight: bold; }
- /*]]>*/-->
-</style>
-<style type="text/css">#content { padding: 0px 16%; width: 68%; } body { background: url(Background3.png) repeat-y; background-size: 100%;} </style>
-<script type="text/javascript">
-/*
-@licstart The following is the entire license notice for the
-JavaScript code in this tag.
-
-Copyright (C) 2012-2013 Free Software Foundation, Inc.
-
-The JavaScript code in this tag is free software: you can
-redistribute it and/or modify it under the terms of the GNU
-General Public License (GNU GPL) as published by the Free Software
-Foundation, either version 3 of the License, or (at your option)
-any later version. The code is distributed WITHOUT ANY WARRANTY;
-without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
-
-As additional permission under GNU GPL version 3 section 7, you
-may distribute non-source (e.g., minimized or compacted) forms of
-that code without the copy of the GNU GPL normally required by
-section 4, provided you include this license notice and a URL
-through which recipients can access the Corresponding Source.
-
-
-@licend The above is the entire license notice
-for the JavaScript code in this tag.
-*/
-<!--/*--><![CDATA[/*><!--*/
- function CodeHighlightOn(elem, id)
- {
- var target = document.getElementById(id);
- if(null != target) {
- elem.cacheClassElem = elem.className;
- elem.cacheClassTarget = target.className;
- target.className = "code-highlighted";
- elem.className = "code-highlighted";
- }
- }
- function CodeHighlightOff(elem, id)
- {
- var target = document.getElementById(id);
- if(elem.cacheClassElem)
- elem.className = elem.cacheClassElem;
- if(elem.cacheClassTarget)
- target.className = elem.cacheClassTarget;
- }
-/*]]>*///-->
-</script>
-</head>
-<body>
-<div id="content">
-<h1 class="title">PsionicSchools</h1>
-<p>
-<code>=</code> Schools of Psionics <code>=</code>
-</p>
-
-<p>
-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&#x2013;or rather
-not COMPLETELY because of the mechanics. Mechanics for psionics have
-always been weird, and the 5e style is good for D&amp;D, so maintaining
-that is good and won't get any gripes from me.
-</p>
-
-<p>
-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&#x2013;something that helps us grasp Psionics in the same
-way we grasp Magic: with a complete and intuitive system.
-</p>
-
-<p>
-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&#x2013;mine notwithstanding), 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).
-</p>
-
-<p>
-What I mean is this:
-</p>
-
-<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
-
-
-<colgroup>
-<col class="left" />
-
-<col class="left" />
-
-<col class="left" />
-</colgroup>
-<thead>
-<tr>
-<th scope="col" class="left">&#xa0;</th>
-<th scope="col" class="left">Introvertion (a)</th>
-<th scope="col" class="left">Extroversion (b)</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="left">Mind (1)</td>
-<td class="left">Cogitation</td>
-<td class="left">Domination</td>
-</tr>
-
-<tr>
-<td class="left">Body (2)</td>
-<td class="left">Sympathy</td>
-<td class="left">Manifestation</td>
-</tr>
-
-<tr>
-<td class="left">Time (3)</td>
-<td class="left">Prescience</td>
-<td class="left">Anticipation</td>
-</tr>
-
-<tr>
-<td class="left">Space (4)</td>
-<td class="left">Metapsionics</td>
-<td class="left">Apportation</td>
-</tr>
-</tbody>
-</table>
-
-<p>
-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&amp;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.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-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&#x2013;and in that light
-perhaps the Psionic Field is not so foreign after all).
-</p>
-
-<p>
-With that medium in place, the world of Psionics slowly falls into
-place as well. Detailed descriptions of the eight schools follow:
-</p>
-
-<p>
-1a) Cogitation - Clarity of thought, memory, action, and connection to
-the Psionic Field.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-1b) Domination - Exert dominating willpower over other minds.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-Examples of Domination include "Command", "Suggestion", and "Dominate
-Person".
-</p>
-
-<p>
-2a) Sympathy - Exerting influence upon sympathetic objects.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-Examples of Sympathy include "Psychometry", "Animate Objects", and
-"Guards and Wards".
-</p>
-
-<p>
-2b) Manifestion - Creating both illusory and physically manipulable
-constructs of pure thought.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-Examples of Manifestation include "Mage Hand", "Conjure Astral
-Construct", and "Programmed Illusion"
-</p>
-
-<p>
-3a) Prescience - See and feel other places and times.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-Examples of Prescience include "Detect Poison and Disease", "Scrying",
-and "Foresight".
-</p>
-
-<p>
-3b) Anticipation - Solidify expectation and possibility into reality.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-Examples of Anticipation include "Heat Metal", "Telekinesis", "Reverse
-Gravity", and "Time Stop".
-</p>
-
-<p>
-4a) Metapsionics - Manipulating sources of Psionism and their direct
-effects.
-</p>
-
-<p>
-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).
-</p>
-
-<p>
-Examples of Metapsionics include "Detect Magic", "Counterspell", and
-"Awaken"
-</p>
-
-<p>
-4b) Apportation - Pulling and pushing on planar boundaries with the
-Psionic Field.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-Examples of Apportation include "Dimension Door", "Banishment", and
-"Whitefire Portal"
-</p>
-
-<p>
-<code>= Post Script =</code>
-</p>
-
-<p>
-Q: Specifics (where do these fit in?) - A: Answer
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-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&#x2026; just a really overloaded
-term really. Psionist sounds the best to me as a general term like
-"mage."
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-Apportation includes an allusion to "Whitefire Portal". What's that? -
-Oh, just this cool thing I made:
-</p>
-
-<p>
-<b>Whitefire Portal</b>: 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.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-&#x2013;
-</p>
-
-<p>
-Thanks for Reading!
-Andrew Murrell
-ImFromNASA@gmail.com
-</p>
-</div>
-<div id="postamble" class="status">
-<p class="date">Created: 2016-12-28 Wed 21:09</p>
-<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 24.5.1 (<a href="http://orgmode.org">Org</a> mode 8.2.10)</p>
-<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
-</div>
-</body>
-</html>
diff --git a/DND/SoP.txt b/DND/SoP.txt
deleted file mode 100644
index 8ea569b..0000000
--- a/DND/SoP.txt
+++ /dev/null
@@ -1,226 +0,0 @@
-Possibly easier to read but automatically converted HTML version (if you're into that): http://AndrewDM.me/DND/PsionicSchools.html
-
-=== Schools of Psionics ===
-
-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), 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.
-
---
-
-Thanks for Reading!
-Andrew Murrell
-ImFromNASA@gmail.com
diff --git a/HACKING.md b/HACKING.md
new file mode 100644
index 0000000..1333ed7
--- /dev/null
+++ b/HACKING.md
@@ -0,0 +1 @@
+TODO
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..a9b703b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,46 @@
+SHELL = bash -o pipefail
+
+RUBYLIB=$(realpath .)/bin
+export RUBYLIB
+
+# Usage: $(call patsubst,PATTERN1 PATTERN2...,REPLACEMENT,TEXT)
+#
+# Like $(patsubst), but takes multiple patterns that are all replaced
+# with the same replacement.
+patsubst-all = $(if $1,$(call patsubst-all,$(wordlist 2,$(words $1),$1),$2,$(patsubst $(firstword $1),$2,$3)),$3)
+
+# Which suffixes can we turn in to HTML?
+html.suffixes = md org
+# Find all source files with those suffixes
+html.src = $(shell find src -type f \( -false $(foreach s,$(html.suffixes), -o -name '*.$s' ) \))
+# Translate the source filenames into output filenames
+html.out = $(call patsubst-all,$(addprefix src/%.,$(html.suffixes)),out/%.html,$(html.src))
+
+all: $(html.out)
+
+bin/page = bin/page bin/util.rb bin/pandoc.rb
+
+# We have to repeat each `src/% -> out/%` rule twice; where once we
+# write it as `out/% -> out/%`. This allows us to chain rules.
+
+# Markdown
+out/%.html: src/%.md $(bin/page) bin/page.html.erb bin/write-atomic
+ mkdir -p $(@D)
+ bin/page html $< | bin/write-atomic $@
+out/%.html: out/%.md $(bin/page) bin/page.html.erb bin/write-atomic
+ bin/page html $< | bin/write-atomic $@
+
+# Org-Mode
+out/%.html: src/%.org $(bin/page) bin/page.html.erb bin/write-atomic
+ mkdir -p $(@D)
+ bin/page html $< | bin/write-atomic $@
+out/%.html: out/%.org $(bin/page) bin/page.html.erb bin/write-atomic
+ bin/page html $< | bin/write-atomic $@
+
+#out/index.md : index index.md.erb .var.articles $(addsuffix .md,$(articles)) util.rb Makefile write-atomic
+# ./index md $(filter %.md,$^) | ./write-atomic $@
+#out/index.atom: index index.atom.erb .var.articles $(addsuffix .md,$(articles)) util.rb Makefile write-atomic
+# ./index atom $(filter %.md,$^) | ./write-atomic $@
+
+.DELETE_ON_ERROR:
+.SECONDARY:
diff --git a/DND/WaterdeepBazaar b/WaterdeepBazaar
-Subproject ea56414e75f88838f98a053369f09aa2b3607b6
+Subproject ea56414e75f88838f98a053369f09aa2b3607b6
diff --git a/bin/index b/bin/index
new file mode 100755
index 0000000..44cdc35
--- /dev/null
+++ b/bin/index
@@ -0,0 +1,14 @@
+#!/usr/bin/env ruby
+# -*- coding: utf-8 -*-
+load 'util.rb'
+
+template = "index.#{ARGV.shift}.erb"
+
+@pages = []
+for filename in ARGV do
+ @pages.push(Page.new(filename))
+end
+
+erb = ERB.new(File.read(template));
+erb.filename = template
+erb.run()
diff --git a/bin/index.atom.erb b/bin/index.atom.erb
new file mode 100644
index 0000000..a5e1586
--- /dev/null
+++ b/bin/index.atom.erb
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+
+ <title>Luke Shumaker's Web Log</title>
+ <link rel="self" type="application/atom+xml" href="./index.atom"/>
+ <link rel="alternate" type="text/html" href="./"/>
+ <link rel="alternate" type="text/markdown" href="./index.md"/>
+ <updated><%= @pages.map{|p|p.date}.sort.last.rfc3339 %></updated>
+ <author><%= Person.new("Luke Shumaker").atom %></author>
+ <id>https://lukeshu.com/blog/</id>
+
+ <% @pages.sort_by{|p| p.date}.reverse.each do |page| %>
+ <entry xmlns="http://www.w3.org/2005/Atom">
+ <link rel="alternate" type="text/html" href="./<%= page.slug %>.html"/>
+ <link rel="alternate" type="text/markdown" href="./<%= page.slug %>.md"/>
+ <id>https://lukeshu.com/blog/<%= page.slug %>.html</id>
+ <updated><%= page.date.rfc3339 %></updated>
+ <published><%= page.date.rfc3339 %></published>
+ <title><%= page.title %></title>
+ <content type="html"><%= html_escape(page.content) %></content>
+ <author><%= page.author.atom %></author>
+ <rights type="html"><%= html_escape(page.rights) %></rights>
+ </entry>
+ <% end %>
+</feed>
diff --git a/bin/index.md.erb b/bin/index.md.erb
new file mode 100644
index 0000000..4da9a5d
--- /dev/null
+++ b/bin/index.md.erb
@@ -0,0 +1,13 @@
+Web log entries
+===============
+<style>
+li {
+ list-style-type: none;
+}
+time {
+ color: #AAAAAA;
+ font-family: monospace;
+}
+</style>
+<% @pages.sort_by{|p| p.date}.reverse.each do |a| %>
+ * <time><%= a.date.strftime('%Y-%m-%d') %></time> - [<%= a.title %>](./<%= a.slug %>.html)<% end %>
diff --git a/bin/page b/bin/page
new file mode 100755
index 0000000..ca8b5bd
--- /dev/null
+++ b/bin/page
@@ -0,0 +1,10 @@
+#!/usr/bin/env ruby
+# -*- coding: utf-8 -*-
+load 'util.rb'
+
+template = "bin/page.#{ARGV[0]}.erb"
+@page = Page.new(ARGV[1])
+
+erb = ERB.new(File.read(template));
+erb.filename = template
+erb.run()
diff --git a/bin/page.html.erb b/bin/page.html.erb
new file mode 100644
index 0000000..2dee55e
--- /dev/null
+++ b/bin/page.html.erb
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title><%= @page.title %></title>
+ <link rel="stylesheet" href="/main.css">
+ <link rel="alternate" type="application/atom+xml" href="./index.atom" name="web log entries"/>
+ <%= @page.head %>
+ </head>
+ <body>
+ <header><%= @page.breadcrumbs %></header>
+ <header id="logobar">
+ <h1>Andrew DM</h1>
+ <ul>
+ <li><a href="">Projects</a></li>
+ <li><a href="blahg/CHANGELOG.html"><abbr title="Blog">Blahg</abbr></a></li>
+ <li><a href="Andrew.html">Andrew</a></li>
+ <li>
+ <form class="headerlink" method="GET" action="index.html#">
+ <input id="search" style="hidden" type="text" name="searchbar" size="0" placeholder="Search" />
+ </form>
+ </li>
+ </header>
+ <article>
+ <h1><%= @page.title %></h1>
+ <%= @page.content %>
+ </article>
+ <footer>
+ <%= @page.rights %>
+ </footer>
+ </body>
+</html>
diff --git a/bin/pandoc.rb b/bin/pandoc.rb
new file mode 100644
index 0000000..155ddde
--- /dev/null
+++ b/bin/pandoc.rb
@@ -0,0 +1,95 @@
+require 'open3'
+require 'json'
+
+module Pandoc
+ def self.prog
+ @prog ||= 'pandoc'
+ end
+ def self.prog=(val)
+ @prog = val
+ end
+ def self.load(fmt, input)
+ cmd = Pandoc::prog + " -t json"
+ unless fmt.nil?
+ cmd += " -f " + fmt
+ end
+ str = input
+ if str.respond_to? :read
+ str = str.read
+ end
+ json = ''
+ errors = ''
+ Open3::popen3(cmd) do |stdin, stdout, stderr|
+ stdin.puts(str)
+ stdin.close
+ json = stdout.read
+ errors = stderr.read
+ end
+ unless errors.empty?
+ raise errors
+ end
+ return Pandoc::AST::new(json)
+ end
+
+ class AST
+ def initialize(json)
+ @js = JSON::parse(json)
+ end
+
+ def [](key)
+ Pandoc::AST::js2sane(@js["meta"][key])
+ end
+
+ def js
+ @js
+ end
+
+ def to(format)
+ cmd = Pandoc::prog + " -f json -t " + format.to_s
+ output = ''
+ errors = ''
+ Open3::popen3(cmd) do |stdin, stdout, stderr|
+ stdin.puts @js.to_json
+ stdin.close
+ output = stdout.read
+ errors = stderr.read
+ end
+ unless errors.empty?
+ raise errors
+ end
+ return output
+ end
+
+ def self.js2sane(js)
+ if js.nil?
+ return js
+ end
+ case js["t"]
+ when "MetaMap"
+ Hash[js["c"].map{|k,v| [k, js2sane(v)]}]
+ when "MetaList"
+ js["c"].map{|c| js2sane(c)}
+ when "MetaBool"
+ js["c"]
+ when "MetaString"
+ js["c"]
+ when "MetaInlines"
+ js["c"].map{|c| js2sane(c)}.join()
+ when "MetaBlocks"
+ js["c"].map{|c| js2sane(c)}.join("\n")
+ when "Str"
+ js["c"]
+ when "Space"
+ " "
+ when "RawInline"
+ js["c"][1]
+ when "RawBlock"
+ js["c"][1]
+ when "Para"
+ js["c"].map{|c| js2sane(c)}.join()
+ else
+ throw js["t"]
+ end
+ end
+ end
+end
diff --git a/bin/post-commit b/bin/post-commit
new file mode 100755
index 0000000..6b72bd2
--- /dev/null
+++ b/bin/post-commit
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+
+branch=$(git name-rev --name-only HEAD)
+if [[ $branch == master ]]; then
+
+ stash=false
+ if [[ -n "$(git status --porcelain)" ]]; then
+ stash=true
+ git add .
+ git stash
+ fi
+
+ git checkout pre-generated
+ git merge master -m 'bogus'
+ rm -rf out
+ make --always-make -j12
+ git add .
+ git commit --amend -m "make: $(git log -n1 master --pretty=format:%B)"
+ git checkout master
+
+ if $stash; then
+ git stash pop
+ fi
+
+fi
diff --git a/bin/util.rb b/bin/util.rb
new file mode 100644
index 0000000..ce91007
--- /dev/null
+++ b/bin/util.rb
@@ -0,0 +1,111 @@
+# coding: utf-8
+load 'pandoc.rb'
+require 'erb'
+require 'date'
+
+$license_urls = {
+ "CC BY-SA-3.0" => 'https://creativecommons.org/licenses/by-sa/3.0/',
+ 'WTFPL-2' => "http://www.wtfpl.net/txt/copying/",
+}
+$person_uris = {
+ "Luke Shumaker" => "https://lukeshu.com/",
+ "Andrew Murrell" => "https://andrewdm.me/",
+}
+$person_emails = {
+ "Luke Shumaker" => "lukeshu@parabola.nu",
+ "Andrew Murrell" => "ImFromNASA@gmail.com",
+}
+
+class Person
+ def initialize(name)
+ @name = name
+ end
+ def name
+ @name
+ end
+ def uri
+ $person_uris[@name]
+ end
+ def email
+ $person_emails[@name]
+ end
+ def html
+ if not email.nil?
+ return "<a href=\"mailto:#{email}\">#{name}</a>"
+ elsif not uri.nil?
+ return "<a href=\"#{uri}\">#{name}</a>"
+ else
+ return @name
+ end
+ end
+ def atom
+ ret = ""
+ ret += "<name>#{name}</name>" unless name.nil?
+ ret += "<uri>#{uri}</uri>" unless uri.nil?
+ ret += "<email>#{email}</email>" unless email.nil?
+ end
+end
+
+class License
+ def initialize(name)
+ @name = name
+ end
+ def name
+ @name
+ end
+ def url
+ $license_urls[@name]
+ end
+ def html
+ "<a href=\"#{url}\">#{name}</a>"
+ end
+end
+
+class Page
+ def initialize(infile)
+ @infile = infile
+ end
+
+ def infile ; @infile ; end
+ def input ; @input ||= File.read(infile) ; end
+ def pandoc
+ if @pandoc.nil?
+ types = {
+ 'md' => 'markdown'
+ }
+
+ ext = File.extname(infile).gsub(/^[.]/, '')
+ type = types[ext] || ext
+ @pandoc = Pandoc::load(type, input)
+
+ if @pandoc['pandoc_format']
+ @pandoc = Pandoc::load(@pandoc['pandoc_format'], input)
+ end
+ end
+ @pandoc
+ end
+
+ def title ; @title ||= pandoc['title'] || input.split("\n",2).first ; end
+ def author ; @author ||= Person.new( pandoc['author'] || "Andrew Murrell") ; end
+ def license ; @license ||= License.new(pandoc['license'] || "CC BY-SA-3.0") ; end
+ def date ; @date ||= Date.parse(pandoc['date']) unless pandoc['date'].nil? ; end
+ def slug ; @slug ||= infile.sub(/\..*$/,'').sub(/^.*\//,'') ; end
+ def content ; @content ||= pandoc.to('html5 '+(pandoc['pandoc_flags']||'')) ; end
+ def head ; @head ||= pandoc['html_head_extra'] ; end
+
+ def rights
+ @rights ||= "<p>The content of this page is Copyright © #{date.year unless date.nil?} #{author.html}.</p>\n" +
+ "<p>This page is licensed under the #{license.html} license.</p>"
+ end
+
+ def breadcrumbs
+ @breadcrumbs ||= '<a href="/">Andrew Murrell</a> » ' + ( (slug == 'index') ? "blog" : "<a href=/blog>blog</a> » #{slug}" )
+ end
+end
+
+def html_escape(html)
+ html
+ .gsub('&', '&amp;')
+ .gsub('>', '&gt;')
+ .gsub('<', '&lt;')
+end
diff --git a/bin/write-atomic b/bin/write-atomic
new file mode 100755
index 0000000..efb2551
--- /dev/null
+++ b/bin/write-atomic
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+# Copyright (C) 2015-2016 Luke Shumaker
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+outfile=$1
+tmpfile="$(dirname "$outfile")/.tmp${outfile##*/}"
+
+cat > "$tmpfile" || { r=$?; rm -f "$tmpfile"; exit $r; }
+mv -f "$tmpfile" "$outfile"
diff --git a/bin/write-ifchanged b/bin/write-ifchanged
new file mode 100755
index 0000000..185ceb0
--- /dev/null
+++ b/bin/write-ifchanged
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+# Copyright (C) 2015 Luke Shumaker
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+outfile=$1
+tmpfile="$(dirname "$outfile")/.tmp${outfile##*/}"
+
+cat > "$tmpfile" || exit $?
+if cmp -s "$tmpfile" "$outfile"; then
+ rm -f "$tmpfile" || :
+else
+ mv -f "$tmpfile" "$outfile"
+fi
diff --git a/git-setup b/git-setup
new file mode 100755
index 0000000..e968cf5
--- /dev/null
+++ b/git-setup
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+set -e
+cd "$(dirname -- "$(readlink -f -- "$0")")"
+if ! [[ -x .git/hooks/post-commit ]]; then
+ ln -sf bin/post-commit .git/hooks/post-commit
+fi
diff --git a/index.html b/index.html
deleted file mode 100644
index 6c8a7e4..0000000
--- a/index.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<html lang="en">
- <head>
- <meta charset="UTF-8"/>
- <!--<meta http-equiv="refresh" content="5; url=redirect.html"/>-->
- <meta name="description" content="AndrewDM.me: Personal Blogs, Projects,
- and Portfolios of Andrew
- Murrell."/>
- <meta name="keywords" content="" />
- <meta name="robots" content="noindex,nofollow"/>
-
- <!-- See main.js for Copyright details. --->
- <script type="text/javascript" src="main.js"></script>
- <link rel="stylesheet" href="main.css"/>
- <link rel="icon" type="image/ico" href="ADM.ico"/>
- <title>AndrewDM</title>
- </head>
- <body>
- <header id="logobar">
- <h1>Andrew DM</h1>
- <div class="headercontainer">
- <a class="headerlink" href="">Projects</a>
- </div>
- <div class="headercontainer">
- <a class="headerlink"
- href="blahg/CHANGELOG.html"><abbr title="Blog">Blahg</abbr></a>
- </div>
- <div class="headercontainer">
- <a class="headerlink"
- href="Andrew.txt">Andrew</a>
- </div>
- <div class="headercontainer">
- <form class="headerlink" method="GET" action="index.html#">
- <input id="search" style="hidden" type="text" name="searchbar" size="0"
- maxlength="0" value="Search" />
- </form>
- </div>
- </header>
-
- <!-- Content cross, bubbles with project page links, surrounded by --
- -- navigation and information rectangles. -->
-
- <main id="content">
- <section id="sidebar">
- <div>
- <h3>Coming Soon!</h3>
- <ul>
- <li>Better CSS!</li>
- <li>Better <span style="color:red;"</span>Colors</span> [help!]</li>
- <li>Magic is Magic [1.5/5 complete!]
- <a href="?s=SS" class="tag SS">Short Story </a>
- </li>
- <li>
- Search functionality that actually searches the text!
- </li>
- </ul>
- </div>
- </section>
- <section id="topbar">
- <!--<div id="constructionBanner">
- <h1 id="constructionMessage">Website Under Construction:
- I'm not a web dev, please don't mind the colors and blocky edges.</h1>
- </div>-->
- <br>
- <div id="links">
- </div>
- </section>
- <br><br><hr>
- <section>
- <!--<a href="staticindex.html">CS Major Mode</a>-->
- </section>
- </main>
- <br>
- <footer id="copyright">
- <address>AndrewDM.me</address>
- <small>Copyright 2016 Andrew Murrell</small>
- </footer>
- </body>
-</html>
-
diff --git a/Andrew.txt b/src/Andrew.md
index ddca263..ddca263 100644
--- a/Andrew.txt
+++ b/src/Andrew.md
diff --git a/images/Background.png b/src/DND/Background.orig.png
index 837ce8c..837ce8c 100644
--- a/images/Background.png
+++ b/src/DND/Background.orig.png
Binary files differ
diff --git a/DND/Background2.png b/src/DND/Background.orig.small.png
index becc4c1..becc4c1 100644
--- a/DND/Background2.png
+++ b/src/DND/Background.orig.small.png
Binary files differ
diff --git a/DND/Background3.png b/src/DND/Background.png
index c932f67..c932f67 100644
--- a/DND/Background3.png
+++ b/src/DND/Background.png
Binary files differ
diff --git a/src/DND/PsionicSchools.css b/src/DND/PsionicSchools.css
new file mode 100644
index 0000000..b258cd1
--- /dev/null
+++ b/src/DND/PsionicSchools.css
@@ -0,0 +1,9 @@
+#content {
+ padding: 0px 16%;
+ width: 68%;
+}
+
+body {
+ background: url(Background3.png) repeat-y;
+ background-size: 100%;
+}
diff --git a/org/PsionicSchools.org b/src/DND/PsionicSchools.org
index 871abd2..eb18786 100644
--- a/org/PsionicSchools.org
+++ b/src/DND/PsionicSchools.org
@@ -1,5 +1,4 @@
-#+HTML_HEAD_EXTRA: <style type="text/css">#content { padding: 0px 16%; width: 68%; } body { background: url(Background3.png) repeat-y; background-size: 100%;} </style>
-=== Schools of Psionics ===
+#+TITLE: Schools of Psionics
From what I've seen, the most recent few 5e Unearthed Arcana dealing
with "Psionics and the Mystic" have been getting somewhat mixed
@@ -217,9 +216,3 @@ 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.
-
---
-
-Thanks for Reading!
-Andrew Murrell
-ImFromNASA@gmail.com
diff --git a/DND/Psionist.html b/src/DND/Psionist.html
index f6aedfb..f6aedfb 100644
--- a/DND/Psionist.html
+++ b/src/DND/Psionist.html
diff --git a/DND/SpellGauntlet.txt b/src/DND/SpellGauntlet.org
index 22ff498..22ff498 100644
--- a/DND/SpellGauntlet.txt
+++ b/src/DND/SpellGauntlet.org
diff --git a/DND/Tastavi.html b/src/DND/Tastavi.html
index 199f8f4..199f8f4 100644
--- a/DND/Tastavi.html
+++ b/src/DND/Tastavi.html
diff --git a/ADM.gif b/src/favicon.gif
index 6441028..6441028 100644
--- a/ADM.gif
+++ b/src/favicon.gif
Binary files differ
diff --git a/ADM.ico b/src/favicon.ico
index 0ab067d..0ab067d 100644
--- a/ADM.ico
+++ b/src/favicon.ico
Binary files differ
diff --git a/src/index.md b/src/index.md
new file mode 100644
index 0000000..a4cc5a7
--- /dev/null
+++ b/src/index.md
@@ -0,0 +1,30 @@
+---
+title: AndrewDM
+html_head_extra: |
+ <script src=main.js></script>
+ <meta name="description" content="AndrewDM.me: Personal Blogs, Projects, and Portfolios of Andrew Murrell."/>
+---
+
+<section id="sidebar">
+ <h3>Coming Soon!</h3>
+ <ul>
+ <li>Better CSS!</li>
+ <li>Better <span style="color:red;">Colors</span> [help!]</li>
+ <li>Magic is Magic [1.5/5 complete!]
+ <a href="?s=SS" class="tag SS">Short Story </a>
+ </li>
+ <li>Search functionality that actually searches the text!</li>
+ </ul>
+</section>
+<section id="topbar">
+ <!--<div id="constructionBanner">
+ <h1 id="constructionMessage">Website Under Construction:
+ I'm not a web dev, please don't mind the colors and blocky edges.</h1>
+ </div>-->
+ <div id="links">
+ </div>
+</section>
+<hr>
+<section>
+ <!--<a href="staticindex.html">CS Major Mode</a>-->
+</section>
diff --git a/main.css b/src/main.css
index a6c18ed..1e0d2b9 100644
--- a/main.css
+++ b/src/main.css
@@ -3,27 +3,12 @@ body {
background: white;
}
-/* background-color: #b94a48; other colors: #f89406, #468847, #3a87ad */
-
header {
width: 100%;
height: 100px;
background-color: black;
}
-header:before, header:after {
- content: "";
- display: table;
-}
-
-header:after {
- clear: both;
-}
-
-header {
- *zoom: 1;
-}
-
header h1 {
color: white;
font-size: 50px;
@@ -80,10 +65,6 @@ header h1 {
float: right;
}
-main {
-
-}
-
li {
font-size: 14px;
}
@@ -110,11 +91,3 @@ li {
.HB { background: DimGray; }
.DM { background: DarkSlateGray; }
.WP { background: GhostWhite; color: black; }
-
-/*
-
-
-
-
-
-*/
diff --git a/main.js b/src/main.js
index a1de93b..99c9821 100644
--- a/main.js
+++ b/src/main.js
@@ -40,37 +40,37 @@ function initSections() {
"365 Tomorrows: A Simple Lament",
[["FF", "Flash Fiction"]]));
addItem("Writing",
- mkItem("https://AndrewDM.me/DND/Tastavi.html",
+ mkItem("./DND/Tastavi.html",
"Tastavi's Backstory",
[["SS", "Short Story"]]));
addItem("Writing",
- mkItem("https://AndrewDM.me/DND/SpellGauntlet.txt",
+ mkItem("./DND/SpellGauntlet.txt",
"Spell Gauntlet: Practical Spellcasting",
[["FF", "Flash Fiction"],
["SS", "Short Story"],
["WP", "WIP"]]));
addItem("Writing",
- mkItem("https://AndrewDM.me/DND/SoP.txt",
+ mkItem("./DND/SoP.txt",
"Psionic Schools for D&D",
[["ES", "Essay"],
["HB", "Homebrew"]]));
/*addItem("Writing",
- mkItem("https://AndrewDM.me/DND/Psionist.html",
+ mkItem("./DND/Psionist.html",
"D&D 5e Psionist Class",
[//["ES", "Essay"],
["HB", "Homebrew"]]));*/
addSection("Programming");
addItem("Programming",
- mkItem("https://AndrewDM.me/DND/WaterdeepBazaar/WaterdeepBazaar.html",
+ mkItem("./DND/WaterdeepBazaar/WaterdeepBazaar.html",
"Waterdeep Bazaar: Marketplace Generator",
[["DM", "DMing Resource"],
["WP", "WIP"]]));
/*addSection("Music");
addItem("Music",
- mkItem("https://AndrewDM.me/Playlists.html",
+ mkItem("./Playlists.html",
"Playlists",
[["WP", "WIP"]]));*/
@@ -78,7 +78,7 @@ function initSections() {
/*addSection("Misc");
addItem("Misc",
- mkItem("https://AndrewDM.me/Reading_List.html",
+ mkItem("./Reading_List.html",
"Reading List",
[["WP", "WIP"]]));*/