nereare_grimoire 1.18.2 → 1.21.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 964d714a040713d64260467fee4bbac52d3db69336d02b6b2ab1d19df79585f2
4
- data.tar.gz: 40d9dd381247affb2057168f14a399fc1010f1c0e128ab22ae196cf6bfcbdff2
3
+ metadata.gz: c1ba3f01e049d8dc1b97d5529ccc30bfde0ce0d9f1a76b34a7225730d4631492
4
+ data.tar.gz: f9345e5a54ddb3f5778a5b3456c8f33709d4ab7f62e09c8ddbca37f1423d9279
5
5
  SHA512:
6
- metadata.gz: d853ea58983c6abd84d7d86a2b74cadfd859b4edaccd34d5f288249ce5feaea4c3164c7043fb8e081db7fe3d3a18df7d3a5d3990603e3ce7a6f677d8a37f6e40
7
- data.tar.gz: bfb1d671e918ba139c1c0c06da38a224610c7dfa898e0f05d6a95b2f721b7959e49f553f1a47a0213bace70ed5b2f26244193beca28d9d82f6da9b0abd5ea0b1
6
+ metadata.gz: 26456fe4fdae4cd0be7e0de3702460c03c1e8287fdb53a0db757f0a4cc4695fe6a5e23c7a11f3fd945db78f1bbacdb0293b75752d88fa88cf6b834ea2980e6c2
7
+ data.tar.gz: cc583b5175661c795e90ff66b1b1df2d84b5bc38a2b4b76fe262b47e5c010dfb9bd4af878c98b81454955bb8f9b479909e2dbf95e6b52d8e0a5791eb42f87ef0
data/404.html CHANGED
@@ -6,5 +6,5 @@ layout: default
6
6
  <img alt="d20 with a natural one" src="{{ 'assets/404.png' | absolute_url }}" />
7
7
 
8
8
  <h2>Page not Found</h2>
9
- <p>Oops, this page doesn't seem to be on this site. :no_mouth:</p>
9
+ <p>Oops, this page doesn't seem to be on this site.</p>
10
10
  </div>
data/CHANGELOG.md ADDED
@@ -0,0 +1,172 @@
1
+ # [Grimoire](https://github.com/Nereare/Grimoire) Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+ ### Added
10
+ - First letter golden gradient.
11
+ - Standalone page option for displaying collections.
12
+ - Search mechanism.
13
+ ### Changed
14
+ - Change the demographics' class and subclass to customizable.
15
+
16
+ ## [1.18.2] - `2022-08-05`
17
+ ### Fixed
18
+ - Missing CSS rule for image width.
19
+ - Change the `wealth` and `gp-limit` parameters in settlements to optional.
20
+
21
+ ## [1.18.0] - `2022-08-02`
22
+ ### Added
23
+ - Support for 5th Edition on all available layouts.
24
+ ### Changed
25
+ - Bumped some dependency versions:
26
+ - `html-proofer` to `3.16.0`; and
27
+ - `zeitwerk` to `2.4.1`.
28
+ - Bumped some `docs/` dependency versions:
29
+ - `activesupport` to `6.0.3.4`;
30
+ - `em-websocket` to `0.5.2`;
31
+ - `faraday` to `1.1.0`;
32
+ - `github-pages` to `209`;
33
+ - `jemoji` to `0.12.0`;
34
+ - `rouge` to `3.23.0`;
35
+ - `jekyll-feed` to `0.15.1`;
36
+ - `just-the-docs` to `0.3.3`;
37
+ - `octokit` to `4.19.0`; and
38
+ - `zeitwerk` to `2.4.1`.
39
+
40
+ ## [1.13.13] - `2020-09-18`
41
+ ### Changed
42
+ - Level for NPCs no Settlement layout now optional, for 5th-Edition compatibility.
43
+ - Shops' owner information is now optional.
44
+ ### Fixed
45
+ - Documentation page display names.
46
+
47
+ ## [1.13.10] - `2020-09-12`
48
+ ### Added
49
+ - Age layout.
50
+ - Animal layout.
51
+ - Armor layout.
52
+ - Item layout.
53
+ - Plant layout.
54
+ - Weapon layout.
55
+ - To-do list with future plans to be implemented.
56
+ ### Fixed
57
+ - Miscellaneous dependencies.
58
+ ### Removed
59
+ - GitHub Actions CI.
60
+
61
+ ## [1.7.6] - `2020-02-26`
62
+ ### Changed
63
+ - Version, Copyright, and License texts now customizable.
64
+ - Version, Copyright, and License now regular text.
65
+ ### Fixed
66
+ - Liquid syntax for Version, Copyright and License display.
67
+
68
+ ## [1.6.5] - `2020-02-26`
69
+ ### Added
70
+ - Version displaying on header.
71
+ - Copyright notice display on header.
72
+ - License display on header.
73
+ ### Changed
74
+ - [Hippocratic License](https://firstdonoharm.dev/) to version `2.0`.
75
+ ### Fixed
76
+ - `nokogiri` version to `~> 1.10.8`.
77
+
78
+ ## [1.4.5] - `2019-11-02`
79
+ ### Changed
80
+ - Changed license to [Hippocratic](https://firstdonoharm.dev/).
81
+
82
+ ## [1.4.4] - `2019-10-04`
83
+ ### Fixed
84
+ - Fix some layout issues with `Adventure` and `Settlement` - #3.
85
+
86
+ ## 1.4.3 - `2019-09-26`
87
+ ### Changed
88
+ - Moved documentation from makeshift `_drafts/` folder into proper `docs/` - see [them online](https://nereare.github.io/Grimoire/).
89
+ ### Fixed
90
+ - Moved `css/` folder into the `assets/` folder, for proper inclusion.
91
+
92
+ ## [1.4.2] - `2019-09-26`
93
+ ### Added
94
+ - Installation instructions to [ReadMe file](README.md).
95
+ ### Changed
96
+ - Update Changelog format to [1.0.0](https://keepachangelog.com/en/1.0.0/).
97
+ - Stylesheet and font dependencies from Yarn to CDN sources.
98
+ - Ignore `script/` folder, since it contains only Travis CI-related scripts.
99
+ - Bump [Jekyll](https://jekyllrb.com/) version to `4.0.0`.
100
+ - Bump HTML-Proofer version to `3.13.0`.
101
+ ### Removed
102
+ - [Yarn](https://yarnpkg.com/) dependency.
103
+ - [jekyll-relative-links](https://github.com/benbalter/jekyll-relative-links) plugin, due to incompatibility with Jekyll `4.0.0`.
104
+
105
+ ## [1.3.2] - `2019-09-06`
106
+ ### Added
107
+ - Release to [RubyGems](https://rubygems.org/) as [`nereare_grimoire`](https://rubygems.org/gems/nereare_grimoire).
108
+ ### Changed
109
+ - Gemfile dependencies to gemspec file.
110
+ ### Fixed
111
+ - Added missing Ruby version to gemspec.
112
+
113
+ ## [1.2.1] - `2019-08-26`
114
+ ### Added
115
+ - Detailed demographics to Settlement layout.
116
+ - Update tutorial for detailed demographics.
117
+
118
+ ## [1.0.0] - `2019-08-22`
119
+ ### Added
120
+ - Code of Conduct from [Contributor Covenant v1.4.1](https://www.contributor-covenant.org/).
121
+ - [License](LICENSE.md).
122
+ - Git metafiles (`.gitignore` and `.gitattributes`).
123
+ - GitHub templates:
124
+ - Issues;
125
+ - Feature request;
126
+ - User question;
127
+ - Pull request.
128
+ - ReadMe file.
129
+ - Changelog file.
130
+ - Add [Jekyll](https://jekyllrb.com/) and [Yarn](https://yarnpkg.com/).
131
+ - Yarn dependencies:
132
+ - [Libre Baskerville](https://yarnpkg.com/en/package/typeface-libre-baskerville) font, `^0.0.72`;
133
+ - [Material Design Icons](https://yarnpkg.com/en/package/@mdi/font), `^4.1.95`;
134
+ - [Montserrat](https://yarnpkg.com/en/package/typeface-montserrat) font, `^0.0.75`;
135
+ - [Normalize.css](https://yarnpkg.com/en/package/normalize.css), `^8.0.1`;
136
+ - [Noto Sans](https://yarnpkg.com/en/package/typeface-noto-sans) font, `^0.0.72`;
137
+ - [Skeleton](https://yarnpkg.com/en/package/getskeleton), `^2.0.4`;
138
+ - [UnifrakturCook](https://yarnpkg.com/en/package/typeface-unifrakturcook) font, `^0.0.71`.
139
+ - Layouts:
140
+ - Adventure;
141
+ - Chapter;
142
+ - Default;
143
+ - Index;
144
+ - Monster;
145
+ - Non-Epic Spell;
146
+ - Post;
147
+ - Settlement.
148
+ - Layouts tutorial.
149
+ - Custom filters:
150
+ - `AbbrAlignFilter` for getting the abbreviation for alignments;
151
+ - `AbilityModFilter` for appending modifiers to ability scores;
152
+ - `AddSignFilter` for prepending `+` on positive modifiers;
153
+ - `ArticulateFilter` for prepending either *a* or *an* to a word, based on its first word only;
154
+ - `OrdinalFilter` for appenging the ordinal suffix to the number (*e.g.* `th`, `st`);
155
+ - `PluralizeFilter` for appending the singular or plural word, depending on the number given (the code must list both forms of the word);
156
+ - `PrettyNumberFilter` for adding thousands separators.
157
+ ### Change
158
+ - Bump `nokogiri` to `>= 1.10.4`.
159
+
160
+ [Unreleased]: https://github.com/Nereare/Grimoire/compare/1.18.2...HEAD
161
+ [1.18.2]: https://github.com/Nereare/Grimoire/compare/1.18.0...1.18.2
162
+ [1.18.0]: https://github.com/Nereare/Grimoire/compare/1.13.13...1.18.0
163
+ [1.13.13]: https://github.com/Nereare/Grimoire/compare/1.13.10...1.13.13
164
+ [1.13.10]: https://github.com/Nereare/Grimoire/compare/1.7.6...1.13.10
165
+ [1.7.6]: https://github.com/Nereare/Grimoire/compare/1.6.5...1.7.6
166
+ [1.6.5]: https://github.com/Nereare/Grimoire/compare/1.4.5...1.6.5
167
+ [1.4.4]: https://github.com/Nereare/Grimoire/compare/1.4.4...1.4.5
168
+ [1.4.4]: https://github.com/Nereare/Grimoire/compare/1.4.2...1.4.4
169
+ [1.4.2]: https://github.com/Nereare/Grimoire/compare/1.3.2...1.4.2
170
+ [1.3.2]: https://github.com/Nereare/Grimoire/compare/1.2.1...1.3.2
171
+ [1.2.1]: https://github.com/Nereare/Grimoire/compare/1.0.0...1.2.1
172
+ [1.0.0]: https://github.com/Nereare/Grimoire/releases/tag/1.0.0
data/OGL.md ADDED
@@ -0,0 +1,45 @@
1
+ # Open Game License Version 1.0a
2
+
3
+ The following text is the property of Wizards of the Coast, Inc. and is Copyright 2000 Wizards of the Coast, Inc ("Wizards"). All Rights Reserved.
4
+
5
+ 1. **Definitions:**
6
+ 1. "Contributors" means the copyright and/or trademark owners who have contributed Open Game Content;
7
+ 2. "Derivative Material" means copyrighted material including derivative works and translations (including into other computer languages), potation, modification, correction, addition, extension, upgrade, improvement, compilation, abridgment or other form in which an existing work may be recast, transformed or adapted;
8
+ 3. "Distribute" means to reproduce, license, rent, lease, sell, broadcast, publicly display, transmit or otherwise distribute;
9
+ 4. "Open Game Content" means the game mechanic and includes the methods, procedures, processes and routines to the extent such content does not embody the Product Identity and is an enhancement over the prior art and any additional content clearly identified as Open Game Content by the Contributor, and means any work covered by this License, including translations and derivative works under copyright law, but specifically excludes Product Identity.
10
+ 5. "Product Identity" means product and product line names, logos and identifying marks including trade dress; artifacts; creatures characters; stories, storylines, plots, thematic elements, dialogue, incidents, language, artwork, symbols, designs, depictions, likenesses, formats, poses, concepts, themes and graphic, photographic and other visual or audio representations; names and descriptions of characters, spells, enchantments, personalities, teams, personas, likenesses and special abilities; places, locations, environments, creatures, equipment, magical or supernatural abilities or effects, logos, symbols, or graphic designs; and any other trademark or registered trademark clearly identified as Product identity by the owner of the Product Identity, and which specifically excludes the Open Game Content;
11
+ 6. "Trademark" means the logos, names, mark, sign, motto, designs that are used by a Contributor to identify itself or its products or the associated products contributed to the Open Game License by the Contributor
12
+ 7. "Use", "Used" or "Using" means to use, Distribute, copy, edit, format, modify, translate and otherwise create Derivative Material of Open Game Content.
13
+ 8. "You" or "Your" means the licensee in terms of this agreement.
14
+ 2. **The License:** This License applies to any Open Game Content that contains a notice indicating that the Open Game Content may only be Used under and in terms of this License. You must affix such a notice to any Open Game Content that you Use. No terms may be added to or subtracted from this License except as described by the License itself. No other terms or conditions may be applied to any Open Game Content distributed using this License.
15
+ 3. **Offer and Acceptance:** By Using the Open Game Content You indicate Your acceptance of the terms of this License.
16
+ 4. **Grant and Consideration:** In consideration for agreeing to use this License, the Contributors grant You a perpetual, worldwide, royalty-free, non-exclusive license with the exact terms of this License to Use, the Open Game Content.
17
+ 5. **Representation of Authority to Contribute:** If You are contributing original material as Open Game Content, You represent that Your Contributions are Your original creation and/or You have sufficient rights to grant the rights conveyed by this License.
18
+ 6. **Notice of License Copyright:** You must update the COPYRIGHT NOTICE portion of this License to include the exact text of the COPYRIGHT NOTICE of any Open Game Content You are copying, modifying or distributing, and You must add the title, the copyright date, and the copyright holder's name to the COPYRIGHT NOTICE of any original Open Game Content you Distribute.
19
+ 7. **Use of Product Identity:** You agree not to Use any Product Identity, including as an indication as to compatibility, except as expressly licensed in another, independent Agreement with the owner of each element of that Product Identity. You agree not to indicate compatibility or co-adaptability with any Trademark or Registered Trademark in conjunction with a work containing Open Game Content except as expressly licensed in another, independent Agreement with the owner of such Trademark or Registered Trademark. The use of any Product Identity in Open Game Content does not constitute a challenge to the ownership of that Product Identity. The owner of any Product Identity used in Open Game Content shall retain all rights, title and interest in and to that Product Identity.
20
+ 8. **Identification:** If you distribute Open Game Content You must clearly indicate which portions of the work that you are distributing are Open Game Content.
21
+ 9. **Updating the License:** Wizards or its designated Agents may publish updated versions of this License. You may use any authorized version of this License to copy, modify and distribute any Open Game Content originally distributed under any version of this License.
22
+ 10. **Copy of this License:** You MUST include a copy of this License with every copy of the Open Game Content You Distribute.
23
+ 11. **Use of Contributor Credits:** You may not market or advertise the Open Game Content using the name of any Contributor unless You have written permission from the Contributor to do so.
24
+ 12. **Inability to Comply:** If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Open Game Content due to statute, judicial order, or governmental regulation then You may not Use any Open Game Material so affected.
25
+ 13. **Termination:** This License will terminate automatically if You fail to comply with all terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses shall survive the termination of this License.
26
+ 14. **Reformation:** If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
27
+ 15. ### COPYRIGHT NOTICE
28
+
29
+ > Open Game License v 1.0a Copyright 2000, Wizards of the Coast, Inc.
30
+ >
31
+ > _System Reference Document_ Copyright 2000-2003, Wizards of the Coast, Inc.; Authors Jonathan Tweet, Monte Cook, Skip Williams, Rich Baker, Andy Collins, David Noonan, Rich Redman, Bruce R. Cordell, John D. Rateliff, Thomas Reid, James Wyatt, based on original material by E. Gary Gygax and Dave Arneson.
32
+ >
33
+ > _Creature Collection Volume 1_ Copyright 2000, Clark Peterson.
34
+ >
35
+ > _Modern System Reference Document_ Copyright 2002, Wizards of the Coast, Inc.; Authors Bill Slavicsek, Jeff Grubb, Rich Redman, Charles Ryan, based on material by Jonathan Tweet, Monte Cook, Skip Williams, Richard Baker,Peter Adkison, Bruce R. Cordell, John Tynes, Andy Collins, and JD Wiker
36
+ >
37
+ > _Monster Manual II_ Copyright 2002, Wizards of the Coast, Inc.
38
+ >
39
+ > _Swords of Our Fathers_ Copyright 2003, The Game Mechanics.
40
+ >
41
+ > _Mutants & Masterminds_ Copyright 2002, Green Ronin Publishing.
42
+ >
43
+ > _Unearthed Arcana_ Copyright 2004, Wizards of the Coast, Inc.; Andy Collins, Jesse Decker, David Noonan, Rich Redman.
44
+
45
+ END OF LICENSE
@@ -46,20 +46,27 @@
46
46
  <header>
47
47
  <div class="container">
48
48
  <div class="row">
49
- <h1><a href="{{ '/' | absolute_url }}">{{ site.title }}</a></h1>
50
- <p class="subtitle">{{ site.description }}</p>
51
- {% if site.version or copy or site.license %}
52
- <p class="version">
53
- {% if site.version %}{{ site.version.text | default: 'Version' }} {{ site.version.version }}.{% endif %}
54
- {% if site.version and site.copyright %} {% endif %}
55
- {% if site.copyright %}{{ site.copyright.text | default: '&copy;' }} {{ site.copyright.year }} {{ site.copyright.name }}.{% endif %}
56
- {% if site.version or site.copyright %}
57
- {% assign: version-or-copy = true %}
49
+ <div class="eight columns">
50
+ <h1><a href="{{ '/' | absolute_url }}">{{ site.title }}</a></h1>
51
+ <p class="subtitle">{{ site.description }}</p>
52
+ {% if site.version or copy or site.license %}
53
+ <p class="version">
54
+ {% if site.version %}{{ site.version.text | default: 'Version' }} {{ site.version.version }}.{% endif %}
55
+ {% if site.version and site.copyright %} {% endif %}
56
+ {% if site.copyright %}{{ site.copyright.text | default: '&copy;' }} {{ site.copyright.year }} {{ site.copyright.name }}.{% endif %}
57
+ {% if site.version or site.copyright %}
58
+ {% assign: version-or-copy = true %}
59
+ {% endif %}
60
+ {% if version-or-copy and site.license %} {% endif %}
61
+ {% if site.license %}{{ site.license.text | default: 'Distributed under the' }} {% if site.license.link %}<a href="{{ site.license.link }}">{% endif %}{{ site.license.name }}{% if site.license.link %}</a>{% endif %}.{% endif %}
62
+ </p>
58
63
  {% endif %}
59
- {% if version-or-copy and site.license %} {% endif %}
60
- {% if site.license %}{{ site.license.text | default: 'Distributed under the' }} {% if site.license.link %}<a href="{{ site.license.link }}">{% endif %}{{ site.license.name }}{% if site.license.link %}</a>{% endif %}.{% endif %}
61
- </p>
62
- {% endif %}
64
+ </div>
65
+ <div class="four columns">
66
+ <form action="search.html" method="get">
67
+ <input type="text" class="u-full-width" name="text" placeholder="Search...">
68
+ </form>
69
+ </div>
63
70
  </div>
64
71
  </div>
65
72
  </header>
data/_layouts/index.html CHANGED
@@ -14,18 +14,21 @@ layout: default
14
14
  {% assign: ages = site.ages | join: '' %}
15
15
  {% assign: animals = site.animals | join: '' %}
16
16
  {% assign: plants = site.plants | join: '' %}
17
+ {% assign: items = site.items | join: '' %}
17
18
 
18
- {% if adventures != '' or chapters != '' or monsters != '' or posts != '' or settlements != '' or spells != '' or ages != '' or animals != '' or plants != '' %}
19
+ {% if adventures != '' or chapters != '' or monsters != '' or posts != '' or settlements != '' or spells != '' or ages != '' or animals != '' or plants != '' or items != '' %}
19
20
  <h2 class="collections">Collections</h2>
20
21
  {% endif %}
21
22
 
23
+ {% if site.collect_short %}
24
+ <!-- Collection In-Page Display -->
22
25
  <!-- Adventure List -->
23
26
  {% if adventures != '' %}
24
27
  <div class="collection">
25
28
  <h5>Adventures</h5>
26
29
  <ul>
27
30
  {% for adventure in site.adventures %}
28
- <li><strong><a href="{{ adventure.url }}">{{ adventure.adventure.name }}</a>:</strong> {{ adventure.adventure.type | articulate: true }} for {{ adventure.adventure.char-num | default: 4 | pluralize: 'player character', 'player characters' }} of {% if adventure.adventure.lvl.range %}levels {{ adventure.adventure.lvl.min | ordinal }} through {{ adventure.adventure.lvl.max | ordinal }}{% else %}{{ adventure.adventure.lvl.lvl | ordinal }} level{% endif %}.</li>
31
+ <li><strong><a href="{{ adventure.url }}">{{ adventure.adventure.name }}</a>:</strong> {{ adventure.adventure.type | articulate }} for {{ adventure.adventure.char-num | default: 4 | pluralize: 'player character', 'player characters' }} of {% if adventure.adventure.lvl.range %}levels {{ adventure.adventure.lvl.min | ordinal }} through {{ adventure.adventure.lvl.max | ordinal }}{% else %}{{ adventure.adventure.lvl.lvl | ordinal }} level{% endif %}.</li>
29
32
  {% endfor %}
30
33
  </ul>
31
34
  </div>
@@ -37,7 +40,7 @@ layout: default
37
40
  <h5>Chapters</h5>
38
41
  <ul>
39
42
  {% for chapter in site.chapters %}
40
- <li><strong><a href="{{ chapter.url }}">{{ chapter.title }}</a>:</strong> Chapter {{ chapter.chapter.number }} from {{ chapter.chapter.book }}.</li>
43
+ <li><strong><a href="{{ chapter.url }}">{{ chapter.title }}</a>:</strong> chapter {{ chapter.chapter.number }} from {{ chapter.chapter.book }}.</li>
41
44
  {% endfor %}
42
45
  </ul>
43
46
  </div>
@@ -49,7 +52,8 @@ layout: default
49
52
  <h5>Monsters</h5>
50
53
  <ul>
51
54
  {% for monster in site.monsters %}
52
- <li><strong><a href="{{ monster.url }}">{{ monster.monster.name }}</a>:</strong> {{ monster.monster.size | articulate: true }} {{ monster.monster.type }}, CR {{ monster.monster.cr }}.</li>
55
+ {% if monster.monster.e5.cr %}{% assign: cr = monster.monster.e5.cr %}{% else %}{% assign: cr = monster.monster.e35.cr %}{% endif %}
56
+ <li><strong><a href="{{ monster.url }}">{{ monster.monster.name }}</a>:</strong> {{ monster.monster.size | articulate }} {{ monster.monster.type }}, CR {{ cr }}.</li>
53
57
  {% endfor %}
54
58
  </ul>
55
59
  </div>
@@ -61,7 +65,7 @@ layout: default
61
65
  <h5>Posts</h5>
62
66
  <ul>
63
67
  {% for post in site.posts %}
64
- <li><strong><a href="{{ post.url }}">{{ post.title }}</a>:</strong> {{ post.excerpt | strip_html | truncatewords: 50 }}(...)</li>
68
+ <li><strong><a href="{{ post.url }}">{{ post.title }}</a>:</strong> {{ post.excerpt | strip_html | truncatewords: 50 }}</li>
65
69
  {% endfor %}
66
70
  </ul>
67
71
  </div>
@@ -73,7 +77,7 @@ layout: default
73
77
  <h5>Settlements</h5>
74
78
  <ul>
75
79
  {% for settlement in site.settlements %}
76
- <li><strong><a href="{{ settlement.url }}">{{ settlement.settlement.name }}</a>:</strong> {{ settlement.settlement.type | articulate: true }}.</li>
80
+ <li><strong><a href="{{ settlement.url }}">{{ settlement.settlement.name }}</a>:</strong> {{ settlement.settlement.type | articulate }}.</li>
77
81
  {% endfor %}
78
82
  </ul>
79
83
  </div>
@@ -85,7 +89,7 @@ layout: default
85
89
  <h5>Spells</h5>
86
90
  <ul>
87
91
  {% for spell in site.spells %}
88
- <li><strong><a href="{{ spell.url }}">{{ spell.spell.name }}</a>:</strong> {{ spell.spell.school | articulate: true }}{% if spell.spell.subschool %} ({{ spell.spell.subschool }}){% endif %}{% assign: descs = spell.spell.descriptor | join: '' %}{% if descs != '' %} [{{ spell.spell.descriptor | join: ', ' }}]{% endif %} for {{ spell.spell.level | join: ', ' }}.</li>
92
+ <li><strong><a href="{{ spell.url }}">{{ spell.spell.name }}</a>:</strong> {% if spell.spell.e5.level %}{{ spell.spell.e5.level | ordinal }}-level {% endif %}{{ spell.spell.school }}{% if spell.spell.subschool %} ({{ spell.spell.subschool }}){% endif %}{% assign: descs = spell.spell.descriptor | join: '' %}{% if descs != '' %} [{{ spell.spell.descriptor | join: ', ' }}]{% endif %}{% if spell.spell.e35.level %} for {{ spell.spell.e35.level | join: ', ' }}{% endif %}.</li>
89
93
  {% endfor %}
90
94
  </ul>
91
95
  </div>
@@ -126,3 +130,54 @@ layout: default
126
130
  </ul>
127
131
  </div>
128
132
  {% endif %}
133
+
134
+ <!-- Items List -->
135
+ {% if items != '' %}
136
+ <div class="collection">
137
+ <h5>Items</h5>
138
+ <ul>
139
+ {% for item in site.items %}
140
+ <li><strong><a href="{{ item.url }}">{{ item.title }}</a></li>
141
+ {% endfor %}
142
+ </ul>
143
+ </div>
144
+ {% endif %}
145
+
146
+ {% else %}
147
+
148
+ <!-- Collection Standalone Display -->
149
+ <div class="collection long">
150
+ <ul>
151
+ {% if adventures %}
152
+ <li><a href="adventures_collection.html">Adventures</a></li>
153
+ {% endif %}
154
+ {% if chapters %}
155
+ <li><a href="chapters_collection.html">Chapters</a></li>
156
+ {% endif %}
157
+ {% if monsters %}
158
+ <li><a href="monsters_collection.html">Monsters</a></li>
159
+ {% endif %}
160
+ {% if posts %}
161
+ <li><a href="posts_collection.html">Posts</a></li>
162
+ {% endif %}
163
+ {% if settlements %}
164
+ <li><a href="settlements_collection.html">Settlements</a></li>
165
+ {% endif %}
166
+ {% if spells %}
167
+ <li><a href="spells_collection.html">Spells</a></li>
168
+ {% endif %}
169
+ {% if ages %}
170
+ <li><a href="ages_collection.html">Ages</a></li>
171
+ {% endif %}
172
+ {% if animals %}
173
+ <li><a href="animals_collection.html">Animals</a></li>
174
+ {% endif %}
175
+ {% if plants %}
176
+ <li><a href="plants_collection.html">Plants</a></li>
177
+ {% endif %}
178
+ {% if items %}
179
+ <li><a href="items_collection.html">Items</a></li>
180
+ {% endif %}
181
+ </ul>
182
+ </div>
183
+ {% endif %}
@@ -119,192 +119,25 @@ layout: default
119
119
  {% if ds != '' %}
120
120
  <h6>Demographics</h6>
121
121
 
122
+ {% for class in page.demographics %}
122
123
  <details>
123
- <summary>Overview</summary>
124
+ <summary>{{ class.title }}</summary>
124
125
  <ul>
125
- <li><strong>Nobles:</strong> {{ page.demographics.overview.nobles | pretty_number }}</li>
126
- <li><strong>Officers:</strong> {{ page.demographics.overview.officers | pretty_number }}</li>
127
- <li><strong>Clergy:</strong> {{ page.demographics.overview.clergy | pretty_number }}</li>
128
- <li><strong>Freeholders:</strong> {{ page.demographics.overview.freeholders | pretty_number }}</li>
129
- <li><strong>Citizens:</strong> {{ page.demographics.overview.citizens | pretty_number }}</li>
130
- <li><strong>Hirelings:</strong> {{ page.demographics.overview.hirelings | pretty_number }}</li>
126
+ {% for subclass in class.desc %}
127
+ <li><strong>{{ subclass.title }}:</strong> {{ subclass.qtt | pretty_number }}</li>
128
+ {% endfor %}
131
129
  </ul>
132
130
  </details>
131
+ {% endfor %}
132
+ {% endif %}
133
133
 
134
- <details>
135
- <summary>Nobility</summary>
136
- <p><strong>Ruling House</strong></p>
137
- <ul>
138
- <li><strong>Nobles:</strong> {{ page.demographics.ruling-house.nobles | pretty_number }}</li>
139
- <li><strong>Relatives:</strong> {{ page.demographics.ruling-house.relatives | pretty_number }}</li>
140
- <li><strong>Servants:</strong> {{ page.demographics.ruling-house.servants | pretty_number }}</li>
141
- <li><strong>Guards:</strong> {{ page.demographics.ruling-house.guards | pretty_number }}</li>
142
- <li><strong>Serjaants:</strong> {{ page.demographics.ruling-house.serjaants | pretty_number }}</li>
143
- </ul>
144
- <p><strong>Other Noble Houses</strong></p>
145
- <ul>
146
- <li><strong>Houses:</strong> {{ page.demographics.other-houses.houses | pretty_number }}</li>
147
- <li><strong>Population:</strong> {{ page.demographics.other-houses.population | pretty_number }}</li>
148
- </ul>
149
- </details>
150
-
151
- <details>
152
- <summary>Officers</summary>
153
- <ul>
154
- <li><strong>Reeves:</strong> {{ page.demographics.officers.reeves | pretty_number }}</li>
155
- <li><strong>Messors:</strong> {{ page.demographics.officers.messors | pretty_number }}</li>
156
- <li><strong>Woodwards:</strong> {{ page.demographics.officers.woodwards | pretty_number }}</li>
157
- <li><strong>Constables:</strong> {{ page.demographics.officers.constables | pretty_number }}</li>
158
- <li><strong>Guards:</strong> {{ page.demographics.officers.guards | pretty_number }}</li>
159
- </ul>
160
- </details>
161
-
162
- <details>
163
- <summary>Clergy</summary>
164
- <ul>
165
- <li><strong>Clerics:</strong> {{ page.demographics.clergy.clerics | pretty_number }}</li>
166
- <li><strong>Priests:</strong> {{ page.demographics.clergy.priests | pretty_number }}</li>
167
- </ul>
168
- </details>
169
-
170
- <details>
171
- <summary>Freeholders</summary>
172
- <ul>
173
- {% if page.demographics.freeholders.adventures != 0 and page.demographics.freeholders.adventures != '' %}
174
- <li><strong>Adventures:</strong> {{ page.demographics.freeholders.adventures | pretty_number }}</li>
175
- {% endif %}
176
- {% if page.demographics.freeholders.apothecaries != 0 and page.demographics.freeholders.apothecaries != '' %}
177
- <li><strong>Apothecaries:</strong> {{ page.demographics.freeholders.apothecaries | pretty_number }}</li>
178
- {% endif %}
179
- {% if page.demographics.freeholders.armourers != 0 and page.demographics.freeholders.armourers != '' %}
180
- <li><strong>Armourers&ast;:</strong> {{ page.demographics.freeholders.armourers | pretty_number }}</li>
181
- {% endif %}
182
- {% if page.demographics.freeholders.artists != 0 and page.demographics.freeholders.artists != '' %}
183
- <li><strong>Artists:</strong> {{ page.demographics.freeholders.artists | pretty_number }}</li>
184
- {% endif %}
185
- {% if page.demographics.freeholders.butchers != 0 and page.demographics.freeholders.butchers != '' %}
186
- <li><strong>Butchers&ast;:</strong> {{ page.demographics.freeholders.butchers | pretty_number }}</li>
187
- {% endif %}
188
- {% if page.demographics.freeholders.chandlers != 0 and page.demographics.freeholders.chandlers != '' %}
189
- <li><strong>Chandlers:</strong> {{ page.demographics.freeholders.chandlers | pretty_number }}</li>
190
- {% endif %}
191
- {% if page.demographics.freeholders.charcoalers != 0 and page.demographics.freeholders.charcoalers != '' %}
192
- <li><strong>Charcoalers:</strong> {{ page.demographics.freeholders.charcoalers | pretty_number }}</li>
193
- {% endif %}
194
- {% if page.demographics.freeholders.cobblers != 0 and page.demographics.freeholders.cobblers != '' %}
195
- <li><strong>Cobblers:</strong> {{ page.demographics.freeholders.cobblers | pretty_number }}</li>
196
- {% endif %}
197
- {% if page.demographics.freeholders.entertainers != 0 and page.demographics.freeholders.entertainers != '' %}
198
- <li><strong>Entertainers:</strong> {{ page.demographics.freeholders.entertainers | pretty_number }}</li>
199
- {% endif %}
200
- {% if page.demographics.freeholders.foresters != 0 and page.demographics.freeholders.foresters != '' %}
201
- <li><strong>Foresters:</strong> {{ page.demographics.freeholders.foresters | pretty_number }}</li>
202
- {% endif %}
203
- {% if page.demographics.freeholders.furriers != 0 and page.demographics.freeholders.furriers != '' %}
204
- <li><strong>Furriers:</strong> {{ page.demographics.freeholders.furriers | pretty_number }}</li>
205
- {% endif %}
206
- {% if page.demographics.freeholders.glassworkers != 0 and page.demographics.freeholders.glassworkers != '' %}
207
- <li><strong>Glassworkers:</strong> {{ page.demographics.freeholders.glassworkers | pretty_number }}</li>
208
- {% endif %}
209
- {% if page.demographics.freeholders.innkeepers != 0 and page.demographics.freeholders.innkeepers != '' %}
210
- <li><strong>Innkeepers:</strong> {{ page.demographics.freeholders.innkeepers | pretty_number }}</li>
211
- {% endif %}
212
- {% if page.demographics.freeholders.jewelers != 0 and page.demographics.freeholders.jewelers != '' %}
213
- <li><strong>Jewelers:</strong> {{ page.demographics.freeholders.jewelers | pretty_number }}</li>
214
- {% endif %}
215
- {% if page.demographics.freeholders.litigants != 0 and page.demographics.freeholders.litigants != '' %}
216
- <li><strong>Litigants:</strong> {{ page.demographics.freeholders.litigants | pretty_number }}</li>
217
- {% endif %}
218
- {% if page.demographics.freeholders.locksmiths != 0 and page.demographics.freeholders.locksmiths != '' %}
219
- <li><strong>Locksmiths:</strong> {{ page.demographics.freeholders.locksmiths | pretty_number }}</li>
220
- {% endif %}
221
- {% if page.demographics.freeholders.masons != 0 and page.demographics.freeholders.masons != '' %}
222
- <li><strong>Masons:</strong> {{ page.demographics.freeholders.masons | pretty_number }}</li>
223
- {% endif %}
224
- {% if page.demographics.freeholders.metalsmiths != 0 and page.demographics.freeholders.metalsmiths != '' %}
225
- <li><strong>Metalsmiths&ast;:</strong> {{ page.demographics.freeholders.metalsmiths | pretty_number }}</li>
226
- {% endif %}
227
- {% if page.demographics.freeholders.bakers != 0 and page.demographics.freeholders.bakers != '' %}
228
- <li><strong>Bakers&ast;:</strong> {{ page.demographics.freeholders.bakers | pretty_number }}</li>
229
- {% endif %}
230
- {% if page.demographics.freeholders.ostlers != 0 and page.demographics.freeholders.ostlers != '' %}
231
- <li><strong>Ostlers&ast;:</strong> {{ page.demographics.freeholders.ostlers | pretty_number }}</li>
232
- {% endif %}
233
- {% if page.demographics.freeholders.outfitters != 0 and page.demographics.freeholders.outfitters != '' %}
234
- <li><strong>Outfitters:</strong> {{ page.demographics.freeholders.outfitters | pretty_number }}</li>
235
- {% endif %}
236
- {% if page.demographics.freeholders.physicians != 0 and page.demographics.freeholders.physicians != '' %}
237
- <li><strong>Physicians:</strong> {{ page.demographics.freeholders.physicians | pretty_number }}</li>
238
- {% endif %}
239
- {% if page.demographics.freeholders.potters != 0 and page.demographics.freeholders.potters != '' %}
240
- <li><strong>Potters:</strong> {{ page.demographics.freeholders.potters | pretty_number }}</li>
241
- {% endif %}
242
- {% if page.demographics.freeholders.roofers != 0 and page.demographics.freeholders.roofers != '' %}
243
- <li><strong>Roofers:</strong> {{ page.demographics.freeholders.roofers | pretty_number }}</li>
244
- {% endif %}
245
- {% if page.demographics.freeholders.ropemakers != 0 and page.demographics.freeholders.ropemakers != '' %}
246
- <li><strong>Ropemakers:</strong> {{ page.demographics.freeholders.ropemakers | pretty_number }}</li>
247
- {% endif %}
248
- {% if page.demographics.freeholders.sages != 0 and page.demographics.freeholders.sages != '' %}
249
- <li><strong>Sages:</strong> {{ page.demographics.freeholders.sages | pretty_number }}</li>
250
- {% endif %}
251
- {% if page.demographics.freeholders.salters != 0 and page.demographics.freeholders.salters != '' %}
252
- <li><strong>Salters&ast;:</strong> {{ page.demographics.freeholders.salters | pretty_number }}</li>
253
- {% endif %}
254
- {% if page.demographics.freeholders.scribes != 0 and page.demographics.freeholders.scribes != '' %}
255
- <li><strong>Scribes:</strong> {{ page.demographics.freeholders.scribes | pretty_number }}</li>
256
- {% endif %}
257
- {% if page.demographics.freeholders.shipwrights != 0 and page.demographics.freeholders.shipwrights != '' %}
258
- <li><strong>Shipwrights&ast;:</strong> {{ page.demographics.freeholders.shipwrights | pretty_number }}</li>
259
- {% endif %}
260
- {% if page.demographics.freeholders.tailors != 0 and page.demographics.freeholders.tailors != '' %}
261
- <li><strong>Tailors:</strong> {{ page.demographics.freeholders.tailors | pretty_number }}</li>
262
- {% endif %}
263
- {% if page.demographics.freeholders.tanners != 0 and page.demographics.freeholders.tanners != '' %}
264
- <li><strong>Tanners&ast;:</strong> {{ page.demographics.freeholders.tanners | pretty_number }}</li>
265
- {% endif %}
266
- {% if page.demographics.freeholders.taverners != 0 and page.demographics.freeholders.taverners != '' %}
267
- <li><strong>Taverners:</strong> {{ page.demographics.freeholders.taverners | pretty_number }}</li>
268
- {% endif %}
269
- {% if page.demographics.freeholders.teamsters != 0 and page.demographics.freeholders.teamsters != '' %}
270
- <li><strong>Teamsters:</strong> {{ page.demographics.freeholders.teamsters | pretty_number }}</li>
271
- {% endif %}
272
- {% if page.demographics.freeholders.timberwrights != 0 and page.demographics.freeholders.timberwrights != '' %}
273
- <li><strong>Timberwrights&ast;:</strong> {{ page.demographics.freeholders.timberwrights | pretty_number }}</li>
274
- {% endif %}
275
- {% if page.demographics.freeholders.tinkers != 0 and page.demographics.freeholders.tinkers != '' %}
276
- <li><strong>Tinkers:</strong> {{ page.demographics.freeholders.tinkers | pretty_number }}</li>
277
- {% endif %}
278
- {% if page.demographics.freeholders.vintners != 0 and page.demographics.freeholders.vintners != '' %}
279
- <li><strong>Vintners:</strong> {{ page.demographics.freeholders.vintners | pretty_number }}</li>
280
- {% endif %}
281
- {% if page.demographics.freeholders.weaponcrafters != 0 and page.demographics.freeholders.weaponcrafters != '' %}
282
- <li><strong>Weaponcrafters&ast;:</strong> {{ page.demographics.freeholders.weaponcrafters | pretty_number }}</li>
283
- {% endif %}
284
- {% if page.demographics.freeholders.weavers != 0 and page.demographics.freeholders.weavers != '' %}
285
- <li><strong>Weavers:</strong> {{ page.demographics.freeholders.weavers | pretty_number }}</li>
286
- {% endif %}
287
- {% if page.demographics.freeholders.woodcrafters != 0 and page.demographics.freeholders.woodcrafters != '' %}
288
- <li><strong>Woodcrafters:</strong> {{ page.demographics.freeholders.woodcrafters | pretty_number }}</li>
289
- {% endif %}
290
- {% if page.demographics.freeholders.yeomen != 0 and page.demographics.freeholders.yeomen != '' %}
291
- <li><strong>Yeomen:</strong> {{ page.demographics.freeholders.yeomen | pretty_number }}</li>
292
- {% endif %}
293
- </ul>
294
- <p>Freeholders typically live in the same building as their shop, unless marked with an asterisk (&ast;), in which case their dwelling is separate from their place of business.</p>
295
- </details>
296
-
297
- <details>
298
- <summary>Buildings</summary>
299
- <ul>
300
- <li><strong>Mansions:</strong> {{ page.demographics.buildings.mansions | pretty_number }}</li>
301
- <li><strong>Churches:</strong> {{ page.demographics.buildings.churches | pretty_number }}</li>
302
- <li><strong>Businesses:</strong> {{ page.demographics.buildings.businesses | pretty_number }}</li>
303
- <li><strong>Municipal:</strong> {{ page.demographics.buildings.municipal | pretty_number }}</li>
304
- <li><strong>Homes:</strong> {{ page.demographics.buildings.homes | pretty_number }}</li>
305
- <li><strong>Total:</strong> {{ page.demographics.buildings.total | pretty_number }}</li>
306
- </ul>
307
- </details>
134
+ {% if page.buildings %}
135
+ <h6>Buildings</h6>
136
+ <ul>
137
+ {% for building in page.buildings %}
138
+ <li><strong>{{ building.title }}:</strong> {{ building.qtt | pretty_number }}</li>
139
+ {% endfor %}
140
+ </ul>
308
141
  {% endif %}
309
142
  </blockquote>
310
143
  </div>
data/_layouts/weapon.html CHANGED
@@ -16,7 +16,7 @@ layout: default
16
16
  <p>{{ page.item.type | default: 'Melee' }}{% if page.item.e5.rarity %}, {{ page.item.e5.rarity }}{% endif %}{% if page.item.e5.attunement %} (Requires attunement by {{ page.item.e5.attunement }}){% endif %}</p>
17
17
  <p><strong>Weight:</strong> {{ page.item.weight }}</p>
18
18
  <p><strong>Base Value:</strong> {{ page.item.value | pretty_number }}gp</p>
19
- {% assing: damages = page.item.damage | join: ' &bull; ' %}
19
+ {% assign: damages = page.item.damage | join: ' &bull; ' %}
20
20
  <p><strong>Damage:</strong> {{ damages }}</p>
21
21
  {% if page.item.e35 %}
22
22
  <!-- 3.5e Specific -->
@@ -0,0 +1,15 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ {% assign: adventures = site.adventures | join: '' %}
6
+ {% if adventures != '' %}
7
+ <div class="collection">
8
+ <h1>Adventures</h1>
9
+ <ul>
10
+ {% for adventure in site.adventures %}
11
+ <li><strong><a href="{{ adventure.url }}">{{ adventure.adventure.name }}</a>:</strong> {{ adventure.adventure.type | articulate }} for {{ adventure.adventure.char-num | default: 4 | pluralize: 'player character', 'player characters' }} of {% if adventure.adventure.lvl.range %}levels {{ adventure.adventure.lvl.min | ordinal }} through {{ adventure.adventure.lvl.max | ordinal }}{% else %}{{ adventure.adventure.lvl.lvl | ordinal }} level{% endif %}.</li>
12
+ {% endfor %}
13
+ </ul>
14
+ </div>
15
+ {% endif %}
@@ -0,0 +1,15 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ {% assign: ages = site.ages | join: '' %}
6
+ {% if ages != '' %}
7
+ <div class="collection">
8
+ <h1>Ages</h1>
9
+ <ul>
10
+ {% for age in site.ages %}
11
+ <li><strong><a href="{{ age.url }}">{{ age.title }}</a> ({{ age.age.abbr }})</li>
12
+ {% endfor %}
13
+ </ul>
14
+ </div>
15
+ {% endif %}
@@ -0,0 +1,15 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ {% assign: animals = site.animals | join: '' %}
6
+ {% if animals != '' %}
7
+ <div class="collection">
8
+ <h1>Animals</h1>
9
+ <ul>
10
+ {% for animal in site.animals %}
11
+ <li><strong><a href="{{ animal.url }}">{{ animal.title }}</a> (<em>{{ animal.animal.species }}</em>)</li>
12
+ {% endfor %}
13
+ </ul>
14
+ </div>
15
+ {% endif %}
@@ -25,6 +25,8 @@ html, body {
25
25
  text-align: justify;
26
26
  color: $body;
27
27
  }
28
+ button { background-color: white; }
29
+ form { margin: 2rem 0 0 0; }
28
30
 
29
31
  h1, h2, h3, h4 {
30
32
  font-family: 'Libre Baskerville', serif;
@@ -50,6 +52,10 @@ h1 {
50
52
  line-height: 1em;
51
53
  margin-right: .1em;
52
54
  text-transform: uppercase;
55
+ background-image: radial-gradient(ellipse farthest-corner at right bottom, #FEDB37 0%, #FDB931 8%, #9f7928 30%, #8A6E2F 40%, transparent 80%),
56
+ radial-gradient(ellipse farthest-corner at left top, #FFFFFF 0%, #FFFFAC 8%, #D1B464 25%, #5d4a1f 62.5%, #5d4a1f 100%);
57
+ color: transparent;
58
+ -webkit-background-clip: text;
53
59
  }
54
60
  & + p.subtitle {
55
61
  margin-top: -1.5em;
@@ -244,4 +250,17 @@ h2.collections {
244
250
  margin-left: 1.5em;
245
251
  margin-bottom: 0.3em;
246
252
  }
253
+
254
+ &.long {
255
+ width: 100%;
256
+ li { float: left; }
257
+ }
258
+ }
259
+
260
+ nav.posts {
261
+ li {
262
+ list-style: none;
263
+ margin-left: 1.5em;
264
+ margin-bottom: 0.3em;
265
+ }
247
266
  }
@@ -0,0 +1,34 @@
1
+ $(document).ready(function() {
2
+ console.log("App ready!");
3
+
4
+ // Hide non-default divs
5
+ $("#tags, #categories").css("display", "none");
6
+
7
+ // Show alphabetically
8
+ $("#go-alphabetical").on("click", function() {
9
+ if ( !$(this).hasClass("button-primary") ) {
10
+ $("#go-tags, #go-categories").removeClass("button-primary");
11
+ $(this).addClass("button-primary");
12
+ $("#alphabetical").css("display", "block");
13
+ $("#tags, #categories").css("display", "none");
14
+ }
15
+ });
16
+ // Show tags
17
+ $("#go-tags").on("click", function() {
18
+ if ( !$(this).hasClass("button-primary") ) {
19
+ $("#go-alphabetical, #go-categories").removeClass("button-primary");
20
+ $(this).addClass("button-primary");
21
+ $("#tags").css("display", "block");
22
+ $("#alphabetical, #categories").css("display", "none");
23
+ }
24
+ });
25
+ // Show categories
26
+ $("#go-categories").on("click", function() {
27
+ if ( !$(this).hasClass("button-primary") ) {
28
+ $("#go-alphabetical, #go-tags").removeClass("button-primary");
29
+ $(this).addClass("button-primary");
30
+ $("#categories").css("display", "block");
31
+ $("#alphabetical, #tags").css("display", "none");
32
+ }
33
+ });
34
+ });
data/assets/search.js ADDED
@@ -0,0 +1,58 @@
1
+ $(document).ready(function() {
2
+ console.log("App ready!");
3
+
4
+ // Get search parameter
5
+ let searchParams = new URLSearchParams(window.location.search)
6
+ let search = searchParams.get("text");
7
+
8
+ // Get searchable fields
9
+ let fields = null;
10
+ let results = [];
11
+ let unique_results = [];
12
+ $.getJSON("/search.json")
13
+ .done(function(json) {
14
+ console.log("Got searchable fields.");
15
+ fields = json;
16
+ })
17
+ .fail(function() {
18
+ console.log("There was a problem retrieving searchable fields.");
19
+ })
20
+ .always(function() {
21
+ console.log("Begining search...");
22
+ // Parse it there is any results
23
+ $.each(fields, function(index, value) {
24
+ if ( value["title"].toLowerCase().includes( search ) ||
25
+ value["date"].toLowerCase().includes( search ) ||
26
+ value["content"].toLowerCase().includes( search ) ) {
27
+ results.push( index );
28
+ }
29
+ });
30
+ // Remove duplicate results
31
+ unique_results = results.filter( onlyUnique );
32
+ // Check if there are any results
33
+ if ( unique_results.length > 0 ) {
34
+ $.each(unique_results, function(index, value) {
35
+ let link = $("<a>");
36
+ link.html( fields[value]["title"] );
37
+ link.attr("href", fields[value]["url"]);
38
+ let strong = $("<strong>");
39
+ strong.append( link );
40
+ let span = $("<span>");
41
+ let date = new Date( fields[value]["date"] );
42
+ let options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
43
+ span.html( " (" + date.toLocaleDateString("en-US", options) + ")" );
44
+ let result = $("<li>");
45
+ result.append( strong );
46
+ result.append( span );
47
+ $("#results").append( result );
48
+ });
49
+ } else {
50
+ let meh = $("<li>").html("No results were found...");
51
+ $("#results").append( meh );
52
+ }
53
+ });
54
+ });
55
+
56
+ function onlyUnique(value, index, self) {
57
+ return self.indexOf(value) === index;
58
+ }
@@ -0,0 +1,15 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ {% assign: chapters = site.chapters | join: '' %}
6
+ {% if chapters != '' %}
7
+ <div class="collection">
8
+ <h1>Chapters</h1>
9
+ <ul>
10
+ {% for chapter in site.chapters %}
11
+ <li><strong><a href="{{ chapter.url }}">{{ chapter.title }}</a>:</strong> chapter {{ chapter.chapter.number }} from {{ chapter.chapter.book }}.</li>
12
+ {% endfor %}
13
+ </ul>
14
+ </div>
15
+ {% endif %}
data/docs/404.html ADDED
@@ -0,0 +1,25 @@
1
+ ---
2
+ permalink: /404.html
3
+ layout: default
4
+ ---
5
+
6
+ <style type="text/css" media="screen">
7
+ .container {
8
+ margin: 10px auto;
9
+ max-width: 600px;
10
+ text-align: center;
11
+ }
12
+ h1 {
13
+ margin: 30px 0;
14
+ font-size: 4em;
15
+ line-height: 1;
16
+ letter-spacing: -1px;
17
+ }
18
+ </style>
19
+
20
+ <div class="container">
21
+ <h1>404</h1>
22
+
23
+ <p><strong>Page not found :(</strong></p>
24
+ <p>The requested page could not be found.</p>
25
+ </div>
@@ -0,0 +1,15 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ {% assign: items = site.items | join: '' %}
6
+ {% if items != '' %}
7
+ <div class="collection">
8
+ <h1>Items</h1>
9
+ <ul>
10
+ {% for item in site.items %}
11
+ <li><strong><a href="{{ item.url }}">{{ item.title }}</a></li>
12
+ {% endfor %}
13
+ </ul>
14
+ </div>
15
+ {% endif %}
@@ -0,0 +1,16 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ {% assign: monsters = site.monsters | join: '' %}
6
+ {% if monsters != '' %}
7
+ <div class="collection">
8
+ <h1>Monsters</h1>
9
+ <ul>
10
+ {% for monster in site.monsters %}
11
+ {% if monster.monster.e5.cr %}{% assign: cr = monster.monster.e5.cr %}{% else %}{% assign: cr = monster.monster.e35.cr %}{% endif %}
12
+ <li><strong><a href="{{ monster.url }}">{{ monster.monster.name }}</a>:</strong> {{ monster.monster.size | articulate }} {{ monster.monster.type }}, CR {{ cr }}.</li>
13
+ {% endfor %}
14
+ </ul>
15
+ </div>
16
+ {% endif %}
@@ -0,0 +1,15 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ {% assign: plants = site.plants | join: '' %}
6
+ {% if plants != '' %}
7
+ <div class="collection">
8
+ <h1>Plants</h1>
9
+ <ul>
10
+ {% for plant in site.plants %}
11
+ <li><strong><a href="{{ plant.url }}">{{ plant.title }}</a> (<em>{{ plant.plant.species }}</em>)</li>
12
+ {% endfor %}
13
+ </ul>
14
+ </div>
15
+ {% endif %}
@@ -0,0 +1,47 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ {% assign: posts = site.posts | join: '' %}
6
+ {% if posts != '' %}
7
+ <h1>Posts</h1>
8
+ <nav class="posts">
9
+ <ul class="columns">
10
+ <li class="four columns"><button class="u-full-width button-primary" id="go-alphabetical">Alphabetical</button></li>
11
+ <li class="four columns"><button class="u-full-width" id="go-tags">Tags</button></li>
12
+ <li class="four columns"><button class="u-full-width" id="go-categories">Categories</button></li>
13
+ </ul>
14
+ </nav>
15
+ <div class="collection" id="alphabetical">
16
+ <ul>
17
+ {% for post in site.posts %}
18
+ <li><strong><a href="{{ post.url }}">{{ post.title }}</a>:</strong> {{ post.excerpt | strip_html | truncatewords: 50 }}</li>
19
+ {% endfor %}
20
+ </ul>
21
+ </div>
22
+ <div class="collection" id="tags">
23
+ <h2>Tags</h2>
24
+ {% for tag in site.tags %}
25
+ <h3>{{ tag[0] }}</h3>
26
+ <ul>
27
+ {% for post in tag[1] %}
28
+ <li><strong><a href="{{ post.url }}">{{ post.title }}</a>:</strong> {{ post.excerpt | strip_html | truncatewords: 50 }}</li>
29
+ {% endfor %}
30
+ </ul>
31
+ {% endfor %}
32
+ </div>
33
+ <div class="collection" id="categories">
34
+ <h2>Categories</h2>
35
+ {% for cat in site.categories %}
36
+ <h3>{{ cat[0] }}</h3>
37
+ <ul>
38
+ {% for post in cat[1] %}
39
+ <li><strong><a href="{{ post.url }}">{{ post.title }}</a>:</strong> {{ post.excerpt | strip_html | truncatewords: 50 }}</li>
40
+ {% endfor %}
41
+ </ul>
42
+ {% endfor %}
43
+ </div>
44
+ {% endif %}
45
+
46
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
47
+ <script type="text/javascript" src="/assets/posts_collection.js"></script>
data/search.html ADDED
@@ -0,0 +1,12 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <h1>Results</h1>
6
+
7
+ <div class="collection">
8
+ <ul id="results"></ul>
9
+ </div>
10
+
11
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
12
+ <script type="text/javascript" src="/assets/search.js"></script>
data/search.json ADDED
@@ -0,0 +1,22 @@
1
+ ---
2
+ layout: none
3
+ ---
4
+ {% assign: searchables = site.adventures | concat: site.ages %}
5
+ {% assign: searchables = searchables | concat: site.animals %}
6
+ {% assign: searchables = searchables | concat: site.chapters %}
7
+ {% assign: searchables = searchables | concat: site.items %}
8
+ {% assign: searchables = searchables | concat: site.monsters %}
9
+ {% assign: searchables = searchables | concat: site.plants %}
10
+ {% assign: searchables = searchables | concat: site.posts %}
11
+ {% assign: searchables = searchables | concat: site.settlements %}
12
+ {% assign: searchables = searchables | concat: site.spells %}
13
+ [
14
+ {% for item in searchables %}
15
+ {
16
+ "title" : "{{ item.title | escape }}",
17
+ "url" : "{{ site.baseurl }}{{ item.url }}",
18
+ "date" : "{{ item.date }}",
19
+ "content" : "{{ item.content | strip_html | escape | strip }}"
20
+ }{% unless forloop.last %},{% endunless %}
21
+ {% endfor %}
22
+ ]
@@ -0,0 +1,15 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ {% assign: settlements = site.settlements | join: '' %}
6
+ {% if settlements != '' %}
7
+ <div class="collection">
8
+ <h1>Settlements</h1>
9
+ <ul>
10
+ {% for settlement in site.settlements %}
11
+ <li><strong><a href="{{ settlement.url }}">{{ settlement.settlement.name }}</a>:</strong> {{ settlement.settlement.type | articulate }} with {{ settlement.settlement.population | pretty_number }} souls.</li>
12
+ {% endfor %}
13
+ </ul>
14
+ </div>
15
+ {% endif %}
@@ -0,0 +1,15 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ {% assign: spells = site.spells | join: '' %}
6
+ {% if spells != '' %}
7
+ <div class="collection">
8
+ <h1>Spells</h1>
9
+ <ul>
10
+ {% for spell in site.spells %}
11
+ <li><strong><a href="{{ spell.url }}">{{ spell.spell.name }}</a>:</strong> {% if spell.spell.e5.level %}{{ spell.spell.e5.level | ordinal }}-level {% endif %}{{ spell.spell.school }}{% if spell.spell.subschool %} ({{ spell.spell.subschool }}){% endif %}{% assign: descs = spell.spell.descriptor | join: '' %}{% if descs != '' %} [{{ spell.spell.descriptor | join: ', ' }}]{% endif %}{% if spell.spell.e35.level %} for {{ spell.spell.e35.level | join: ', ' }}{% endif %}.</li>
12
+ {% endfor %}
13
+ </ul>
14
+ </div>
15
+ {% endif %}
metadata CHANGED
@@ -1,33 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nereare_grimoire
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.18.2
4
+ version: 1.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Padoim
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-06 00:00:00.000000000 Z
11
+ date: 2022-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: html-proofer
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.3'
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
- version: 3.18.5
22
+ version: 4.3.1
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '4.3'
24
30
  - - ">="
25
31
  - !ruby/object:Gem::Version
26
- version: 3.18.5
32
+ version: 4.3.1
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: nokogiri
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.12'
31
40
  - - ">="
32
41
  - !ruby/object:Gem::Version
33
42
  version: 1.12.5
@@ -35,6 +44,9 @@ dependencies:
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.12'
38
50
  - - ">="
39
51
  - !ruby/object:Gem::Version
40
52
  version: 1.12.5
@@ -42,20 +54,29 @@ dependencies:
42
54
  name: webrick
43
55
  requirement: !ruby/object:Gem::Requirement
44
56
  requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.7'
45
60
  - - ">="
46
61
  - !ruby/object:Gem::Version
47
- version: '0'
62
+ version: 1.7.0
48
63
  type: :development
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.7'
52
70
  - - ">="
53
71
  - !ruby/object:Gem::Version
54
- version: '0'
72
+ version: 1.7.0
55
73
  - !ruby/object:Gem::Dependency
56
74
  name: jekyll-feed
57
75
  requirement: !ruby/object:Gem::Requirement
58
76
  requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '0.12'
59
80
  - - ">="
60
81
  - !ruby/object:Gem::Version
61
82
  version: 0.12.1
@@ -63,6 +84,9 @@ dependencies:
63
84
  prerelease: false
64
85
  version_requirements: !ruby/object:Gem::Requirement
65
86
  requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.12'
66
90
  - - ">="
67
91
  - !ruby/object:Gem::Version
68
92
  version: 0.12.1
@@ -70,34 +94,49 @@ dependencies:
70
94
  name: jekyll
71
95
  requirement: !ruby/object:Gem::Requirement
72
96
  requirements:
73
- - - ">="
97
+ - - "~>"
74
98
  - !ruby/object:Gem::Version
75
99
  version: '4.0'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 4.0.0
76
103
  type: :runtime
77
104
  prerelease: false
78
105
  version_requirements: !ruby/object:Gem::Requirement
79
106
  requirements:
80
- - - ">="
107
+ - - "~>"
81
108
  - !ruby/object:Gem::Version
82
109
  version: '4.0'
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 4.0.0
83
113
  - !ruby/object:Gem::Dependency
84
114
  name: jekyll-redirect-from
85
115
  requirement: !ruby/object:Gem::Requirement
86
116
  requirements:
87
- - - ">="
117
+ - - "~>"
88
118
  - !ruby/object:Gem::Version
89
119
  version: '0.15'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 0.15.0
90
123
  type: :runtime
91
124
  prerelease: false
92
125
  version_requirements: !ruby/object:Gem::Requirement
93
126
  requirements:
94
- - - ">="
127
+ - - "~>"
95
128
  - !ruby/object:Gem::Version
96
129
  version: '0.15'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 0.15.0
97
133
  - !ruby/object:Gem::Dependency
98
134
  name: jekyll-seo-tag
99
135
  requirement: !ruby/object:Gem::Requirement
100
136
  requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '2.6'
101
140
  - - ">="
102
141
  - !ruby/object:Gem::Version
103
142
  version: 2.6.1
@@ -105,6 +144,9 @@ dependencies:
105
144
  prerelease: false
106
145
  version_requirements: !ruby/object:Gem::Requirement
107
146
  requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '2.6'
108
150
  - - ">="
109
151
  - !ruby/object:Gem::Version
110
152
  version: 2.6.1
@@ -112,6 +154,9 @@ dependencies:
112
154
  name: jekyll-sitemap
113
155
  requirement: !ruby/object:Gem::Requirement
114
156
  requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.3'
115
160
  - - ">="
116
161
  - !ruby/object:Gem::Version
117
162
  version: 1.3.1
@@ -119,6 +164,9 @@ dependencies:
119
164
  prerelease: false
120
165
  version_requirements: !ruby/object:Gem::Requirement
121
166
  requirements:
167
+ - - "~>"
168
+ - !ruby/object:Gem::Version
169
+ version: '1.3'
122
170
  - - ">="
123
171
  - !ruby/object:Gem::Version
124
172
  version: 1.3.1
@@ -126,6 +174,9 @@ dependencies:
126
174
  name: jemoji
127
175
  requirement: !ruby/object:Gem::Requirement
128
176
  requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '0.11'
129
180
  - - ">="
130
181
  - !ruby/object:Gem::Version
131
182
  version: 0.11.1
@@ -133,6 +184,9 @@ dependencies:
133
184
  prerelease: false
134
185
  version_requirements: !ruby/object:Gem::Requirement
135
186
  requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: '0.11'
136
190
  - - ">="
137
191
  - !ruby/object:Gem::Version
138
192
  version: 0.11.1
@@ -144,7 +198,9 @@ extensions: []
144
198
  extra_rdoc_files: []
145
199
  files:
146
200
  - 404.html
201
+ - CHANGELOG.md
147
202
  - LICENSE.md
203
+ - OGL.md
148
204
  - README.md
149
205
  - _layouts/adventure.html
150
206
  - _layouts/age.html
@@ -170,6 +226,9 @@ files:
170
226
  - _plugins/ordinal.rb
171
227
  - _plugins/plant-metadata.rb
172
228
  - _plugins/pluralize.rb
229
+ - adventures_collection.html
230
+ - ages_collection.html
231
+ - animals_collection.html
173
232
  - assets/404.png
174
233
  - assets/background.jpg
175
234
  - assets/css/boxes.scss
@@ -193,12 +252,26 @@ files:
193
252
  - assets/favicon/site.webmanifest
194
253
  - assets/header.png
195
254
  - assets/note-border.png
255
+ - assets/posts_collection.js
256
+ - assets/search.js
257
+ - chapters_collection.html
258
+ - docs/404.html
259
+ - items_collection.html
260
+ - monsters_collection.html
261
+ - plants_collection.html
262
+ - posts_collection.html
263
+ - search.html
264
+ - search.json
265
+ - settlements_collection.html
266
+ - spells_collection.html
196
267
  homepage: https://github.com/Nereare/Grimoire
197
268
  licenses:
198
- - Hippocratic
269
+ - Nonstandard
199
270
  metadata:
200
271
  source_code_uri: https://github.com/Nereare/Grimoire
201
272
  changelog_uri: https://github.com/Nereare/Grimoire/blob/master/CHANGELOG.md
273
+ documentation_uri: https://nereare.github.io/Grimoire
274
+ bug_tracker_uri: https://github.com/Nereare/Grimoire/issues
202
275
  github_repo: https://github.com/Nereare/Grimoire.git
203
276
  post_install_message:
204
277
  rdoc_options: []
@@ -208,7 +281,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
208
281
  requirements:
209
282
  - - ">="
210
283
  - !ruby/object:Gem::Version
211
- version: 2.5.0
284
+ version: 3.0.0
212
285
  required_rubygems_version: !ruby/object:Gem::Requirement
213
286
  requirements:
214
287
  - - ">="