From 4304e0e2dd973248dc215671c852c3463159a51f Mon Sep 17 00:00:00 2001 From: Igor Padoim Date: Tue, 2 Aug 2022 22:47:25 -0300 Subject: [PATCH] Add 5e support for monsters/creatures --- Gemfile.lock | 2 +- _layouts/monster.html | 438 ++++++++++++++++++++--------- _plugins/cr-format.rb | 80 ++++++ assets/css/stats-block.scss | 38 ++- docs/layouts/monster.md | 149 +++++++--- docs/layouts/monster_example.md | 71 ----- docs/layouts/monster_example_35.md | 73 +++++ docs/layouts/monster_example_5e.md | 92 ++++++ grimoire.gemspec | 2 +- package.json | 2 +- 10 files changed, 674 insertions(+), 273 deletions(-) create mode 100644 _plugins/cr-format.rb delete mode 100644 docs/layouts/monster_example.md create mode 100644 docs/layouts/monster_example_35.md create mode 100644 docs/layouts/monster_example_5e.md diff --git a/Gemfile.lock b/Gemfile.lock index 36955fe..88a55bd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - nereare_grimoire (1.13.13) + nereare_grimoire (1.18.0) jekyll (>= 4.0) jekyll-feed (>= 0.12.1) jekyll-redirect-from (>= 0.15) diff --git a/_layouts/monster.html b/_layouts/monster.html index c236ce8..cc7f12b 100644 --- a/_layouts/monster.html +++ b/_layouts/monster.html @@ -11,181 +11,341 @@

{{ page.title | default: 'Monster' }}

{{ content }} +{% if page.monster.e5 %} +
-
-
-
-

{{ page.monster.name | default: 'Terrasque' }}

-

{{ page.monster.size | default: 'Colossal' }} {{ page.monster.type | default: 'magical beast' }}, {{ page.monster.align | default: 'always neutral' }}

+
+
+

{{ page.monster.name | default: 'Terrasque' }}

+

{{ page.monster.size | default: 'Colossal' }} {{ page.monster.type | default: 'magical beast' }}{% if page.monster.subtype %} ({{ page.monster.subtype }}){% endif %}, {{ page.monster.align | default: 'always neutral' }}

+
+ + + + +
+
+

Armor Class

+

{{ page.monster.e5.ac.base }}{% if page.monster.e5.ac.desc != '' %} ({{ page.monster.e5.ac.desc }}){% endif %}

+
+ +
+

Hit Points

+

{{ page.monster.e5.hp.hp | pretty_number }} ({{ page.monster.e5.hp.hd }})

- - + +
+

Speed

+

{{ page.monster.e5.speed | join: ', ' }}

+
+
+ -
-
-

Armor Class

-

{{ page.monster.ac.base | default: '35' }}{% if page.monster.ac.desc != '' %} ({{ page.monster.ac.desc }}){% endif %}, touch {{ page.monster.ac.touch | default: '5' }}, flat-footed {{ page.monster.ac.flat | default: '32' }}

-
- -
-

Hit Points

-

{{ page.monster.hp.hp | default: '858' | pretty_number }}hp ({{ page.monster.hp.hd | default: '48d10 + 594' }})

+
+
+
+

STR

+

{{ page.monster.abilities.str | ability }}

- -
-

Speed

-

{{ page.monster.speed | default: '20ft' }}

+ +
+

DEX

+

{{ page.monster.abilities.dex | ability }}

- -
-

Initiative

-

{{ page.monster.initiative | default: 7 | add_sign }}

+ +
+

CON

+

{{ page.monster.abilities.con | ability }}

- -
-

Space/Reach

-

{{ page.monster.space | default: '30ft' }}/{{ page.monster.reach | default: '20ft' }}

+ +
+

INT

+

{{ page.monster.abilities.int | ability }}

- -
-

BA/Grapple

-

{{ page.monster.ba | default: '+48' }}/{{ page.monster.grapple | default: '+81' }}

+ +
+

WIS

+

{{ page.monster.abilities.wis | ability }}

- -
-

Saves

-

Fort {{ page.monster.saves.fort | default: 38 | add_sign }}, Ref {{ page.monster.saves.ref | default: 29 | add_sign }}, Will {{ page.monster.saves.will | default: 20 | add_sign }}

+ +
+

CHA

+

{{ page.monster.abilities.cha | ability }}

- - + +
+
+ -
-
-

STR

-

{{ page.monster.abilities.str | default: 45 | ability }}

-
- -
-

DEX

-

{{ page.monster.abilities.dex | default: 16 | ability }}

-
- -
-

CON

-

{{ page.monster.abilities.con | default: 35 | ability }}

-
- -
-

INT

-

{{ page.monster.abilities.int | default: 3 | ability }}

-
- -
-

WIS

-

{{ page.monster.abilities.wis | default: 14 | ability }}

-
- -
-

CHA

-

{{ page.monster.abilities.cha | default: 14 | ability }}

-
- -
- - +
+ {% if page.monster.e5.saves %} +
+

Saving Throws

+

{{ page.monster.e5.saves | join: ', ' }}

+
+ {% endif %} + {% if page.monster.e5.skills %} +
+

Skills

+

{{ page.monster.e5.skills | join: ', ' }}

+
+ {% endif %} + {% if page.monster.e5.dmg_vulnerabilities %} +
+

Damage Vulnerabilities

+

{{ page.monster.e5.dmg_vulnerabilities | join: ', ' }}

+
+ {% endif %} + {% if page.monster.e5.dmg_resistances %} +
+

Damage Resistances

+

{{ page.monster.e5.dmg_resistances | join: ', ' }}

+
+ {% endif %} + {% if page.monster.e5.dmg_immunities %} +
+

Damage Immunities

+

{{ page.monster.e5.dmg_immunities | join: ', ' }}

+
+ {% endif %} + {% if page.monster.e5.cond_immunities %} +
+

Condition Immunities

+

{{ page.monster.e5.cond_immunities | join: ', ' }}

+
+ {% endif %} +
+

Challenge

+

{{ page.monster.e5.cr | cr_format }}

+
+
+

Senses

+

{{ page.monster.e5.senses | join: ', ' }}

+
+
+

Languages

+

{% if page.monster.e5.langs %}{{ page.monster.e5.langs | join: ', ' }}{% else %}—{% endif %}

+
+
+

Prof. Bonus

+

{{ page.monster.e5.pb | add_sign }}

+
+
+ {% if page.monster.e5.props or page.monster.e5.spellcasting %} + -
-

Skills

-

{{ page.monster.skills | default: 'none' }}

-
- -
-

Feats

-

{{ page.monster.feats | default: 'none' }}

-
- -
-

Challenge Rating

-

{{ page.monster.cr | default: 20 }}

+
+ {% if page.monster.e5.spellcasting %} +
+

Spellcasting

+

{{ page.monster.e5.spellcasting.intro }}

+
    + {% for line in page.monster.e5.spellcasting.list %} +
  • {{ line.title }}. {{ line.list | join: ', ' }}
  • + {% endfor %} +
+
+ {% endif %} + {% for prop in page.monster.e5.props %} +
+

{{ prop.title }}

+

{{ prop.desc }}

+
+ {% endfor %} +
+ {% endif %} + {% if page.monster.e5.actions %} + {% for action in page.monster.e5.actions %} +
+

{{ action.title }}

+ {% if action.intro %} +

{{ action.intro }}

+ {% endif %} + {% for attack in action.list %} +
+

{{ attack.name }}

+

{{ attack.desc | default: '+57 melee (4d8 + 17 / 18-20 / x3)' }}

+
+ {% endfor %} +
+ {% endfor %} + {% endif %} +
+
+ +
+
+ +{% else %} + +
+
+
+
+
+
+

{{ page.monster.name | default: 'Terrasque' }}

+

{{ page.monster.size | default: 'Colossal' }} {{ page.monster.type | default: 'magical beast' }}{% if page.monster.subtype %} ({{ page.monster.subtype }}){% endif %}, {{ page.monster.align | default: 'always neutral' }}

+
+
+ + + +
+
+

Armor Class

+

{{ page.monster.e35.ac.base }}{% if page.monster.e35.ac.desc != '' %} ({{ page.monster.e35.ac.desc }}){% endif %}, touch {{ page.monster.e35.ac.touch | default: '5' }}, flat-footed {{ page.monster.e35.ac.flat | default: '32' }}

+
+ +
+

Hit Points

+

{{ page.monster.e35.hp.hp | default: '858' | pretty_number }} ({{ page.monster.e35.hp.hd | default: '48d10 + 594' }})

+
+ +
+

Speed

+

{{ page.monster.e35.speed | default: '20ft' }}

+
+ +
+

Initiative

+

{{ page.monster.e35.initiative | default: 7 | add_sign }}

+
+ +
+

Space/Reach

+

{{ page.monster.e35.space | default: '30ft' }}/{{ page.monster.e35.reach | default: '20ft' }}

+
+ +
+

BA/Grapple

+

{{ page.monster.e35.ba | default: '+48' }}/{{ page.monster.e35.grapple | default: '+81' }}

+
+ +
+

Saves

+

Fort {{ page.monster.e35.saves.fort | default: 38 | add_sign }}, Ref {{ page.monster.e35.saves.ref | default: 29 | add_sign }}, Will {{ page.monster.e35.saves.will | default: 20 | add_sign }}

+
+
+ + + +
+
+
+

STR

+

{{ page.monster.abilities.str | ability }}

- -
-

Treasure

-

{{ page.monster.treasure | default: 'None' }}

+
+

DEX

+

{{ page.monster.abilities.dex | ability }}

- -
-

Advancement

-

{{ page.monster.advancement | default: '49+ HD (Colossal)' }}

+
+

CON

+

{{ page.monster.abilities.con | ability }}

- -
-

Level Adjustment

-

{{ page.monster.lvl_adj | default: 'N/A' }}

+
+

INT

+

{{ page.monster.abilities.int | ability }}

- -
-

Environment

-

{{ page.monster.env | default: 'Any' }}

+
+

WIS

+

{{ page.monster.abilities.wis | ability }}

- -
-

Organization

-

{{ page.monster.org | default: 'Solitary' }}

+
+

CHA

+

{{ page.monster.abilities.cha | ability }}

-
- - +
+ + + +
+
+

Skills

+

{{ page.monster.e35.skills | default: 'none' }}

+
+ +
+

Feats

+

{{ page.monster.e35.feats | default: 'none' }}

+
+ +
+

Challenge Rating

+

{{ page.monster.e35.cr | default: 20 }}

+
+ +
+

Treasure

+

{{ page.monster.e35.treasure | default: 'None' }}

+
+ +
+

Advancement

+

{{ page.monster.e35.advancement | default: '49+ HD (Colossal)' }}

+
+ +
+

Level Adjustment

+

{{ page.monster.e35.lvl_adj | default: 'N/A' }}

+
+ +
+

Environment

+

{{ page.monster.e35.env | default: 'Any' }}

+
+ +
+

Organization

+

{{ page.monster.e35.org | default: 'Solitary' }}

+
+
+ +

Special Qualities

-

{{ page.monster.qualities | default: 'none'}}

+

{{ page.monster.e35.qualities | default: 'none'}}

Special Attacks

-

{{ page.monster.sp_attacks | default: 'none' }}

+

{{ page.monster.e35.sp_attacks | default: 'none' }}

- -
-
-

Actions

- {% for attack in page.monster.attacks %} -
-

{{ attack.name }}

-

{{ attack.desc | default: '+57 melee (4d8 + 17 / 18-20 / x3)' }}

-
- - {% endfor %} -
- {% assign: items = page.monster.possessions | join: '' %} - {% if items != '' %} - -
-

Possessions

- {% for item in page.monster.possessions %} -
-

{{ item.name }}

-

{{ item.desc }}

-
- - {% endfor %} +
+

Actions

+ {% for attack in page.monster.e35.attacks %} +
+

{{ attack.name }}

+

{{ attack.desc | default: '+57 melee (4d8 + 17 / 18-20 / x3)' }}

- - {% endif %} + {% endfor %}
- -
+ {% assign: items = page.monster.e35.possessions | join: '' %} + {% if items != '' %} +
+

Possessions

+ {% for item in page.monster.e35.possessions %} +
+

{{ item.name }}

+

{{ item.desc }}

+
+ {% endfor %} +
+ {% endif %} +
-
+ +{% endif %} diff --git a/_plugins/cr-format.rb b/_plugins/cr-format.rb new file mode 100644 index 0000000..e32d4dd --- /dev/null +++ b/_plugins/cr-format.rb @@ -0,0 +1,80 @@ +module Jekyll + module CRFormat + def cr_format(input) + case input + when 0 + return "0 (0 XP or 10 XP)" + when "1/8" + return "1/8 (25 XP)" + when "1/4" + return "1/4 (50 XP)" + when "1/2" + return "1/2 (100 XP)" + when 1 + return "1 (200 XP)" + when 2 + return "2 (450 XP)" + when 3 + return "3 (700 XP)" + when 4 + return "4 (1,100 XP)" + when 5 + return "5 (1,800 XP)" + when 6 + return "6 (2,300 XP)" + when 7 + return "7 (2,900 XP)" + when 8 + return "8 (3,900 XP)" + when 9 + return "9 (5,000 XP)" + when 10 + return "10 (5,900 XP)" + when 11 + return "11 (7,200 XP)" + when 12 + return "12 (8,400 XP)" + when 13 + return "13 (10,000 XP)" + when 14 + return "14 (11,500 XP)" + when 15 + return "15 (13,000 XP)" + when 16 + return "16 (15,000 XP)" + when 17 + return "17 (18,000 XP)" + when 18 + return "18 (20,000 XP)" + when 19 + return "19 (22,000 XP)" + when 20 + return "20 (25,000 XP)" + when 21 + return "21 (33,000 XP)" + when 22 + return "22 (41,000 XP)" + when 23 + return "23 (50,000 XP)" + when 24 + return "24 (62,000 XP)" + when 25 + return "25 (75,000 XP)" + when 26 + return "26 (90,000 XP)" + when 27 + return "27 (105,000 XP)" + when 28 + return "28 (120,000 XP)" + when 29 + return "29 (135,000 XP)" + when 30 + return "30 (155,000 XP)" + else + return "—" + end + end + end +end + +Liquid::Template.register_filter(Jekyll::CRFormat) diff --git a/assets/css/stats-block.scss b/assets/css/stats-block.scss index 74c54c5..6940acf 100644 --- a/assets/css/stats-block.scss +++ b/assets/css/stats-block.scss @@ -76,28 +76,34 @@ $bar : $h-line; padding-left: 1.1em; line-height: 1.4em; - &.first{ margin: 8px 0 0; } - &.last{ margin: 0 0 10px; } + &:first-child { margin-top: 8px; } + &:last-child { margin-bottom: 10px; } h4, p { display: inline; margin: 0; - color: $header; + color: $body; font-size: 13.5px; line-height: 1.2em; } h4{ font-family: 'Montserrat', sans-serif; font-variant: normal; - color: $header; - &:after { content: ':'; } + color: $body; + font-weight: 900; + &:after { content: '.'; } } p { color: black; } + + ul { + list-style-type: none; + text-indent: 2px; + } } .abilities { text-align: center; - color: $header; + color: $body; & > div { display: inline-block; @@ -113,7 +119,8 @@ $bar : $h-line; font-size: 14px; line-height: 1.2em; text-transform: uppercase; - color: $header; + color: $body; + font-weight: bold; } & p { margin: 0 0 10px; @@ -133,27 +140,28 @@ $bar : $h-line; & h4 { font-family: 'Montserrat', sans-serif; font-variant: none; - &:after { content: ':'; } + color: $body; + &:after { content: '.'; } } } .actions { margin: 0 0 20px; - - & h3 { + p { + text-indent: 10px; + margin-top: 5px; + } + h3 { border-bottom: 1px solid $header; color: $header; font-size: 21px; font-variant: small-caps; font-weight: normal; - letter-spacing: 1px; - margin: 20px 0 0; - padding: 0 0 10px; text-indent: 5px; } - &:last-child{ margin: 0; } + &:last-child { margin: 0; } } -@media screen and (max-width: 575px){ +@media screen and (max-width: 575px) { .stat-block { margin: 20px 0; } } diff --git a/docs/layouts/monster.md b/docs/layouts/monster.md index 723b670..865cb61 100644 --- a/docs/layouts/monster.md +++ b/docs/layouts/monster.md @@ -16,51 +16,110 @@ This layout has two columns: 1. The left one contains the fist-level header, author name and date. Under which sits the description of the creature, its habits and tactics - everything but its game statistics. 2. The right column contains its game statistics, which must be defined in the [front matter]. -| Metadata | Required? | Type | Description | -|:------------------:|:------------------:|:--------------------:|:-------------------------------------------------------------------------------------| -| `name` | :heavy_check_mark: | `string` | Name of the creature | -| `size` | :heavy_check_mark: | `string` | The size of the creature (*e.g.* Huge, Medium) | -| `type` | :heavy_check_mark: | `string` | The type of creature (*e.g.* Aberration, Dragon) | -| `align` | :heavy_check_mark: | `string` | The align, or lack thereof, of the creature | -| `ac` | :heavy_check_mark: | `object` | An object containing the Armor Class elements | -| `ac.base` | :heavy_check_mark: | `integer` | The base AC value | -| `ac.desc` | :x: | `string` | The description of the base AC, when appliable (*e.g.* `+2 natural`) | -| `ac.touch` | :heavy_check_mark: | `integer` | The touch AC value | -| `ac.flat` | :heavy_check_mark: | `integer` | The flat-footed AC value | -| `hp` | :heavy_check_mark: | `object` | An object containing the health elements of the creature | -| `hp.hp` | :heavy_check_mark: | `integer` | The maximum hit points of the creature | -| `hp.hd` | :heavy_check_mark: | `string` | The hit dice of the creature and any bonus (*e.g.* `10d8 + 15`) | -| `speed` | :heavy_check_mark: | `string` | The speed of the creature (*e.g.* `30ft`) | -| `initiative` | :heavy_check_mark: | `integer` | The initiative bonus of the creature | -| `space` | :heavy_check_mark: | `string` | The space border occupied by the creature | -| `reach` | :heavy_check_mark: | `string` | The reach of the creature | -| `saves` | :heavy_check_mark: | `object` | An object containing the saving throw bonuses of the creature | -| `saves.fort` | :heavy_check_mark: | `integer` | The Fortitude bonus of the creature | -| `saves.ref` | :heavy_check_mark: | `integer` | The Reflex bonus of the creature | -| `saves.will` | :heavy_check_mark: | `integer` | The Will bonus of the creature | -| `abilities` | :heavy_check_mark: | `object` | An object containing the abilities of the creature | -| `abilities.str` | :heavy_check_mark: | `integer` | The Strength of the creature | -| `abilities.dex` | :heavy_check_mark: | `integer` | The Dexterity of the creature | -| `abilities.con` | :heavy_check_mark: | `integer` | The Constitution of the creature | -| `abilities.int` | :heavy_check_mark: | `integer` | The Intelligence of the creature | -| `abilities.wis` | :heavy_check_mark: | `integer` | The Wisdom of the creature | -| `abilities.cha` | :heavy_check_mark: | `integer` | The Charisma of the creature | -| `skills` | :x: | `string` | A string *list* of all skills of the creature and their bonuses | -| `feats` | :x: | `strint` | A string *list* of all feats of the creature | -| `cr` | :heavy_check_mark: | `integer` | The Challenge Rating of the creature | -| `treasure` | :heavy_check_mark: | `string` | The treasure the creature possess, or the lack thereof | -| `advancement` | :heavy_check_mark: | `string` | Any advancements you may apply to the creature | -| `lvl_adj` | :heavy_check_mark: | `string` | Any level adjustments for the creature | -| `env` | :heavy_check_mark: | `string` | The environment of the creature | -| `org` | :heavy_check_mark: | `string` | The type of organization of the creature (*e.g.* `Solitary`) | -| `qualities` | :x: | `string` | A string *list* of the special qualities of the creature | -| `sp_attacks` | :x: | `string` | A string *list* of the special attacks of the creature | -| `attacks` | :heavy_check_mark: | `array` of `object`s | An array of objects, each element being one attack, at least one element is required | -| `attacks.name` | :heavy_check_mark: | `string` | The name of the attack | -| `attacks.desc` | :heavy_check_mark: | `string` | The bonus to this attack, the damage and damage type | -| `possessions` | :x: | `array` of `object`s | An array of objects, each element being a different item | -| `possessions.name` | :heavy_check_mark: | `string` | The name of the item | -| `possessions.desc` | :heavy_check_mark: | `string` | A short description of the item, and any bonus or ability it may grant the creature | +| Metadata | Required? | Type | Description | +|:------------------:|:------------------:|:--------------------:|:------------| +| `name` | :heavy_check_mark: | `string` | Name of the creature | +| `size` | :heavy_check_mark: | `string` | The size of the creature (*e.g.* Huge, Medium) | +| `type` | :heavy_check_mark: | `string` | The type of creature (*e.g.* Aberration, Dragon) | +| `subtype` | :x: | `string` | The subtype of the creature, if applicable | +| `align` | :heavy_check_mark: | `string` | The align, or lack thereof, of the creature | +| `abilities` | :heavy_check_mark: | `object` | An object containing the abilities of the creature | +| `abilities.str` | :heavy_check_mark: | `integer` | The Strength of the creature | +| `abilities.dex` | :heavy_check_mark: | `integer` | The Dexterity of the creature | +| `abilities.con` | :heavy_check_mark: | `integer` | The Constitution of the creature | +| `abilities.int` | :heavy_check_mark: | `integer` | The Intelligence of the creature | +| `abilities.wis` | :heavy_check_mark: | `integer` | The Wisdom of the creature | +| `abilities.cha` | :heavy_check_mark: | `integer` | The Charisma of the creature | + +### 3.5e Specific Front Matter + +| Metadata | Required? | Type | Description | +|:----------------------:|:------------------:|:--------------------:|:------------| +| `e35.ac` | :heavy_check_mark: | `object` | An object containing the Armor Class elements | +| `e35.ac.base` | :heavy_check_mark: | `integer` | The base AC value | +| `e35.ac.desc` | :x: | `string` | The description of the base AC, when appliable (*e.g.* `+2 natural`) | +| `e35.ac.touch` | :heavy_check_mark: | `integer` | The touch AC value | +| `e35.ac.flat` | :heavy_check_mark: | `integer` | The flat-footed AC value | +| `e35.hp` | :heavy_check_mark: | `object` | An object containing the health elements of the creature | +| `e35.hp.hp` | :heavy_check_mark: | `integer` | The maximum hit points of the creature | +| `e35.hp.hd` | :heavy_check_mark: | `string` | The hit dice of the creature and any bonus (*e.g.* `10d8 + 15`) | +| `e35.speed` | :heavy_check_mark: | `string` | The speed of the creature (*e.g.* `30ft`) | +| `e35.initiative` | :heavy_check_mark: | `integer` | The initiative bonus of the creature | +| `e35.space` | :heavy_check_mark: | `string` | The space border occupied by the creature | +| `e35.reach` | :heavy_check_mark: | `string` | The reach of the creature | +| `e35.saves` | :heavy_check_mark: | `object` | An object containing the saving throw bonuses of the creature | +| `e35.saves.fort` | :heavy_check_mark: | `integer` | The Fortitude bonus of the creature | +| `e35.saves.ref` | :heavy_check_mark: | `integer` | The Reflex bonus of the creature | +| `e35.saves.will` | :heavy_check_mark: | `integer` | The Will bonus of the creature | +| `e35.skills` | :x: | `string` | A string *list* of all skills of the creature and their bonuses | +| `e35.feats` | :x: | `strint` | A string *list* of all feats of the creature | +| `e35.cr` | :heavy_check_mark: | `integer` | The Challenge Rating of the creature | +| `e35.treasure` | :heavy_check_mark: | `string` | The treasure the creature possess, or the lack thereof | +| `e35.advancement` | :heavy_check_mark: | `string` | Any advancements you may apply to the creature | +| `e35.lvl_adj` | :heavy_check_mark: | `string` | Any level adjustments for the creature | +| `e35.env` | :heavy_check_mark: | `string` | The environment of the creature | +| `e35.org` | :heavy_check_mark: | `string` | The type of organization of the creature (*e.g.* `Solitary`) | +| `e35.qualities` | :x: | `string` | A string *list* of the special qualities of the creature | +| `e35.sp_attacks` | :x: | `string` | A string *list* of the special attacks of the creature | +| `e35.attacks` | :heavy_check_mark: | `array` of `object`s | An array of objects, each element being one attack, at least one element is required | +| `e35.attacks.name` | :heavy_check_mark: | `string` | The name of the attack | +| `e35.attacks.desc` | :heavy_check_mark: | `string` | The bonus to this attack, the damage and damage type | +| `e35.possessions` | :x: | `array` of `object`s | An array of objects, each element being a different item | +| `e35.possessions.name` | :heavy_check_mark: | `string` | The name of the item | +| `e35.possessions.desc` | :heavy_check_mark: | `string` | A short description of the item, and any bonus or ability it may grant the creature | + +### 5e Specific Front Matter + +| Metadata | Required? | Type | Description | +|:------------------------:|:------------------:|:--------------------:|:------------| +| `e5.ac` | :heavy_check_mark: | `object` | An object containing the Armor Class elements | +| `e5.ac.base` | :heavy_check_mark: | `integer` | The AC value | +| `e5.ac.desc` | :x: | `string` | The description of the base AC, when appliable (*e.g.* `natural armor`) | +| `e5.hp` | :heavy_check_mark: | `object` | An object containing the health elements of the creature | +| `e5.hp.hp` | :heavy_check_mark: | `integer` | The maximum (average) hit points of the creature | +| `e5.hp.hd` | :heavy_check_mark: | `string` | The hit dice of the creature and any bonus (*e.g.* `10d8 + 15`) | +| `e5.speed` | :heavy_check_mark: | `array` | An array of strings that must contains at least one item, the base speed | +| `e5.cr` | :heavy_check_mark: | `integer` | The Challenge Rating of the creature, the layout will include the corresponding XP | +| `e5.saves` | :heavy_check_mark: | `array` | An array of the proficient saving throws of the creature and their bonuses | +| `e5.skills` | :x: | `array` | An array of strings of all the proficient skills of the creature and their bonuses | +| `e5.dmg_vulnerabilities` | :x: | `array` | An array of strings of all damage types to which the creature is vulnerable | +| `e5.dmg_resistances` | :x: | `array` | An array of strings of all damage types to which the creature is resistant | +| `e5.dmg_immunities` | :x: | `array` | An array of strings of all damage types to which the creature is immune | +| `e5.cond_immunities` | :x: | `array` | An array of strings of all conditions to which the creature is immune | +| `e5.senses` | :heavy_check_mark: | `array` | An array of strings of all the senses of the creature, with at least one item, the "passive Perception" | +| `e5.langs` | :x: | `array` | An array of strings of each languange known to the creature, or a single element of a specific description | +| `e5.pb` | :heavy_check_mark: | `integer` | The proficiency bonus for the creature | +| `e5.spellcasting` | :x: | `object` | An object containing the data regarding the spellcasting ability of the creature | +| `e5.spellcasting.intro` | :heavy_check_mark: | `string` | The introductory explanation of the creature's spellcasting ability, to-hit bonus, save DC and other data | +| `e5.spellcasting.list` | :heavy_check_mark: | `array` of `object`s | An array of objects, each representing one spell pool of the creature (see below) | +| `e5.props` | :x: | `array` of `object`s | An array of objects, each representing one trait, feature or special ability of the creature | +| `e5.actions` | :x: | `array` of `object`s | An array of objects, each element being one type or subtype of action (see below) | + +#### Spellcasting + +The `e5.spellcasting.list` is an array of objects, each of which must include the following indexes: + +| Index | Required? | Type | Description | +|:--------------:|:------------------:|:------------:|:-----------:| +| `title` | :heavy_check_mark: | `string` | The frequency or pool from which the creature can draw the associated spell list | +| `list` | :heavy_check_mark: | `array` | An array of strings, each element (there **must** be at least one) one spell | + +#### Actions + +Each action element in an object that can and/or must include the following indexes: + +| Index | Required? | Type | Description | +|:--------------:|:------------------:|:------------:|:-----------:| +| `title` | :heavy_check_mark: | `string` | The title of the section, which will be displayed above the elements (*e.g.* "Actions" or "Mythic Actions") | +| `intro` | :x: | `string` | Some action sections can (or must) include an introduction, such as with "Legendary Actions", this index offers just that | +| `list` | :heavy_check_mark: | `array` | An array of objects, each one entry below the section | + +Each entry in the `list` index above is an object with two **required** indexes: + +| Index | Required? | Type | Description | +|:--------------:|:------------------:|:------------:|:-----------:| +| `name` | :heavy_check_mark: | `string` | The name of the action | +| `desc` | :heavy_check_mark: | `string` | The description of the action | ## Data with Units diff --git a/docs/layouts/monster_example.md b/docs/layouts/monster_example.md deleted file mode 100644 index 45a9bbc..0000000 --- a/docs/layouts/monster_example.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Example -layout: default - -parent: Monster -grand_parent: Layouts Guide -nav_order: 1 ---- - -# Monster Example - -Here is an example of an empty monster entry. - -```yaml ---- -title : Monster Page Title -author : Author Name -date : 2019-08-19 - -monster: - name : Terrasque - size : Colossal - type : Magical Beast - align : always neutral - ac: - base : 35 - desc : -8 size, +3 Dex, +30 natural - touch : 5 - flat : 32 - hp: - hp : 858 - hd : 48d10 + 594 - speed : 20ft - initiative : +7 - space : 30ft - reach : 20ft - saves: - fort : +38 - ref : +29 - will : +20 - abilities: - str : 45 - dex : 16 - con : 35 - int : 3 - wis : 14 - cha : 14 - skills : Listen +17, Search +9, Spot +17, Survival +14 (+16 following tracks) - feats : Alertness, Awesome Blow, Blind-Fight, Cleave, Combat Reflexes, Dodge, Great Cleave, Improved Bull Rush, Improved Initiative, Iron Will, Power Attack, Toughness (6) - cr : 20 - treasure : None - advancement : 49+ HD (Colossal) - lvl_adj : N/A - env : Any - org : Solitary - qualities : Augmented critical, frightful presence, improved grab, rush, swallow whole - sp_attacks : Augmented critical, frightful presence, improved grab, rush, swallow whole - attacks: - - name : Full Attack - desc : Bite +57 melee (4d8+17/18-20/×3) and 2 horns +52 melee (1d10+8) and 2 claws +52 melee (1d12+8) and tail slap +52 melee (3d8+8) - - name : Bite - desc : +57 melee (4d8+17/18-20/×3) - possessions : - - name : Item - desc : Description - -layout: monster ---- - -# Description of the monster here. -``` diff --git a/docs/layouts/monster_example_35.md b/docs/layouts/monster_example_35.md new file mode 100644 index 0000000..3855d33 --- /dev/null +++ b/docs/layouts/monster_example_35.md @@ -0,0 +1,73 @@ +--- +title: 3.5e Example +layout: default + +parent: Monster +grand_parent: Layouts Guide +nav_order: 1 +--- + +# 3.5e Monster Example + +Here is an example of an empty monster entry. + +```yaml +--- +title : Monster Page Title +author : Author Name +date : 2019-08-19 + +monster: + name : Terrasque + size : Colossal + type : Magical Beast + subtype : non-biped + align : always neutral + abilities: + str : 45 + dex : 16 + con : 35 + int : 3 + wis : 14 + cha : 14 + e35: + ac: + base : 35 + desc : -8 size, +3 Dex, +30 natural + touch : 5 + flat : 32 + hp: + hp : 858 + hd : 48d10 + 594 + speed : 20ft + initiative : +7 + space : 30ft + reach : 20ft + saves: + fort : +38 + ref : +29 + will : +20 + skills : Listen +17, Search +9, Spot +17, Survival +14 (+16 following tracks) + feats : Alertness, Awesome Blow, Blind-Fight, Cleave, Combat Reflexes, Dodge, Great Cleave, Improved Bull Rush, Improved Initiative, Iron Will, Power Attack, Toughness (6) + cr : 20 + treasure : None + advancement : 49+ HD (Colossal) + lvl_adj : N/A + env : Any + org : Solitary + qualities : Augmented critical, frightful presence, improved grab, rush, swallow whole + sp_attacks : Augmented critical, frightful presence, improved grab, rush, swallow whole + attacks: + - name : Full Attack + desc : Bite +57 melee (4d8+17/18-20/×3) and 2 horns +52 melee (1d10+8) and 2 claws +52 melee (1d12+8) and tail slap +52 melee (3d8+8) + - name : Bite + desc : +57 melee (4d8+17/18-20/×3) + possessions : + - name : Item + desc : Description + +layout: monster +--- + +# Description of the monster here. +``` diff --git a/docs/layouts/monster_example_5e.md b/docs/layouts/monster_example_5e.md new file mode 100644 index 0000000..22c7f70 --- /dev/null +++ b/docs/layouts/monster_example_5e.md @@ -0,0 +1,92 @@ +--- +title: 5e Example +layout: default + +parent: Monster +grand_parent: Layouts Guide +nav_order: 1 +--- + +# 5e Monster Example + +Here is an example of an empty monster entry. + +```yaml +--- +title : Monster Page Title +author : Author Name +date : 2019-08-19 + +monster: + name : Terrasque + size : Colossal + type : Magical Beast + subtype : non-biped + align : always neutral + abilities: + str : 45 + dex : 16 + con : 35 + int : 3 + wis : 14 + cha : 14 + e5: + ac: + base : 35 + desc : natural armor + hp: + hp : 858 + hd : 48d10 + 594 + speed: + - 20 ft. + - fly 60 ft. + cr : 20 + saves: + - STR +30 + - CON +42 + skills: + - Athletics +34 + - Survival +12 + dmg_vulnerabilities: + - fire + dmg_resistances: + - cold + - thunder + dmg_immunities: + - psychic + cond_immunities: + - grappled + senses: + - darkvision 120 ft. + - passive Perception 12 + langs: + - understands all but speaks none + pb : 8 + spellcasting: + intro : Lorem ipsum dolor sit amet + list: + - title : Cantrips + list: + - prestidigitation + - ray of frost + props: + - title : Title + desc : Lorem ipsum dolor sit amet + actions: + - title : Actions + list: + - name : Multiattack + desc : The creature makes four bite attacks + - name : Bite + desc : +57 melee (4d8+17/18-20/×3) + - title : Legendary Actions + intro : The creature can take 3 legendary actions, choosing from the options below. Only one legendary action can be used at a time and only at the end of another creature's turn. The creature regains spent legendary actions at the start of its turn. + list: + - name : Attack + desc : The creature makes one bite attack + +layout: monster +--- + +# Description of the monster here. +``` diff --git a/grimoire.gemspec b/grimoire.gemspec index b133bb4..9da308f 100644 --- a/grimoire.gemspec +++ b/grimoire.gemspec @@ -2,7 +2,7 @@ Gem::Specification.new do |spec| spec.name = 'nereare_grimoire' - spec.version = '1.17.0' + spec.version = '1.18.0' spec.authors = ['Igor Padoim'] spec.email = ['igorpadoim@gmail.com'] spec.license = 'Hippocratic' diff --git a/package.json b/package.json index bc556ea..f2e8a4e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name" : "Grimoire", - "version" : "1.17.0", + "version" : "1.18.0", "description" : "A jekyll quasi-wiki for RPG-oriented worldbuilding.", "license" : "Hippocratic", "private" : false,