Compare commits

..

24 Commits

Author SHA1 Message Date
63ad52df6e add some magic items for Ravenloft 2025-11-01 13:24:33 -04:00
3c713e3287 update for ravenloft 2025 2025-10-31 22:09:59 -04:00
2421c8a5fc add neurovores, for no particular reason...
update to v0.22.0
2025-10-28 00:14:56 -04:00
8f692d132e small updates to large races 2025-10-25 00:26:41 -04:00
c1b4c035d3 update rules, classes, magic-items.... a bunch of stuff
update tp v0.22.0 of rules and code
add "Vessels" to rules
add restriction on "super" attack usage for martial classes
remove minimum ability requirements from races
2025-10-19 21:29:38 -04:00
0390c91a7c fix typo 2025-06-08 01:20:22 -04:00
54583b3665 updates before tomorrow's toh game 2025-06-08 01:18:01 -04:00
f91cb9d9e3 added mini-campaign ideas 2025-06-01 11:09:53 -04:00
aeef88c1dc more toh prep 2025-05-31 23:01:53 -04:00
095a85b9c5 update version and toh date 2025-05-06 22:39:16 -04:00
9952fb5ac6 prep for ToH
follow-up from hexhall
2025-05-04 23:26:51 -04:00
5d0e4e5d01 forgot the goblins again... 2025-04-13 21:11:04 -04:00
0ab50012e0 minor tweaks, missing files 2025-04-13 21:00:55 -04:00
70dd1c6451 prep for gexhall campaign 2025-04-13 20:48:21 -04:00
6ce2914598 a few more broken links 2025-04-09 00:30:27 -04:00
4df0e59dd5 fix broken links 2025-04-09 00:20:33 -04:00
12153be839 links and licenses 2025-04-07 22:13:02 -04:00
6e271e367d launch time! 2025-04-07 21:50:26 -04:00
b7fade1ac8 updates 2025-04-07 00:11:47 -04:00
443d7a8d5c update deities 2025-04-05 23:29:13 -04:00
4a2c27e914 fix ups 2025-04-05 22:47:02 -04:00
15d51f4e1e moar updates 2025-04-05 19:47:36 -04:00
c89bc36fd7 updates 2025-04-05 17:03:48 -04:00
176b8abdcf 99% of the bestiary updates 2025-03-09 12:05:43 -04:00
555 changed files with 13165 additions and 5000 deletions

8
.editorconfig Normal file
View File

@@ -0,0 +1,8 @@
# EditorConfig is awesome: https://editorconfig.org
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true

61
.vscode/settings.json vendored
View File

@@ -1,4 +1,63 @@
{
"cSpell.words": ["chainmail"],
"cSpell.words": [
"aeryon",
"Barbarosa",
"Belz",
"Blacktyde",
"Bumo",
"Burowao",
"Celzik",
"chainmail",
"Daas",
"Elendean",
"Esun",
"Fendo",
"Freki",
"ghroudrru",
"Infravision",
"iughrioth",
"Jaxxa",
"Kho'pru",
"Koma",
"lajatang",
"Lor'nath",
"Lufa",
"Mantru",
"Mararo",
"Melfora",
"Nyssa",
"Oorg",
"Panitube",
"pearlescent",
"Pordo",
"Porma",
"psionic",
"Rhirkas",
"Rowr",
"Saedo",
"Sorris",
"spellbook",
"spellbooks",
"spellcaster",
"spellcasters",
"spellcasting",
"Tanaroa",
"Thoryio",
"Toric",
"Trado",
"Trama",
"Treuplea",
"Tudo",
"Umlatta",
"Umlatta's",
"uncharmed",
"undeciphered",
"werelion",
"werelions",
"werespider",
"werespiders",
"wurms",
"Zhoszer"
],
"files.eol": "\n"
}

17
deploy.sh Executable file
View File

@@ -0,0 +1,17 @@
#!/usr/bin/bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
echo "Commencing with the site build..."
echo
nvm use 18
git pull origin beta-version
npx weevr build
rm -rf old
mv public old
mv out public
echo "All done!"
echo

View File

@@ -1,6 +1,6 @@
{
"name": "planar-vagabond",
"version": "0.15.0",
"version": "0.22.0",
"description": "",
"main": "index.js",
"scripts": {

View File

@@ -12,7 +12,7 @@
csp: "default-src 'self'; img-src 'self' https://*; media-src 'self' https://*;",
robots: 'index,follow',
language: 'en-us',
copyright: 'Copyright 2023 Eric Woodward, licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.',
copyright: 'Copyright 2025 Eric Woodward, licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.',
basePath: '',
uri: 'https://www.planarvagabond.com',
search_uri: 'www.planarvagabond.com',

View File

@@ -0,0 +1,2 @@
- Usually found in frozen regions.
- Immune to damage from cold and non-magical, non-silver weapons.

View File

@@ -0,0 +1,6 @@
### Life Drain
Damage inflicted by this attack reduces the target's maximum HP.
- A humanoid killed by this ability becomes a draugr in 1 day, under the control of the one that killed them.
- The victim gains back 1 hit die worth of hit points to their maximum after each long rest they take, until they return to their original total.

View File

@@ -0,0 +1,3 @@
- Typically found haunting ruins and tombs.
- Immune to all damage except fire or magic.
- Any damage taken is reduced by 50%.

View File

@@ -0,0 +1,11 @@
### Disease
Anyone touched by this creature must **Save** or contract a rotting disease.
- Must save after each touch (unless infected).
- While infected:
- Can't regain hit points,
- Loses 1 HD every day.
- If HD drops to 0, victim dies and turns to dust.
- Healing occurs at 10% normal rate.
- Disease can only be removed by magic (ex: Cure Disease spell)

View File

@@ -0,0 +1,5 @@
### Paralyzing Fear
Anyone seeing this creature must **Save** or be [paralyzed](/rules/adventuring.html#paralyzed) with terror.
- Paralysis is broken if mummy lord attacks them or goes out of sight.

View File

@@ -0,0 +1,4 @@
- Can levitate vertically at 20' / round.
- Can read thoughts of any creatures within 90'.
- Blocked by thin layer of lead or 2'+ rock.
- Has advantage on all saves vs magic, and all saves vs psionic / mental powers.

View File

@@ -0,0 +1,3 @@
### Brain Grab
On a critical hit while attacking with a tentacle, it latches onto the target, preventing their escape and extracting (and devouring) the their brain in 1d4 rounds.

View File

@@ -0,0 +1,8 @@
### Psionic Powers
Each of the following may be used up to 3 times per day.
- **Control**: Target within 30' must **Save vs Paralyze** or come under the mental control of the neurovore for 1d6 rounds.
- Target gets additional save to break the control when forced to commit acts that are against their alignment or self-destructive.
- **Blast**: All targets in 60' cone (5 wide at the mouth, 20 wide at far end) must **Save vs Paralyze** or be paralyzed for 1d12 minutes.
- **Bolt**: Target within 60' must **Save vs Spells** or take 3d6 damage.

View File

@@ -0,0 +1,8 @@
### Frenzy
Frenzy triggered by blood in water within 300'.
During frenzy:
- Attacks each round, and
- Skips morale checks.

View File

@@ -1,100 +1,13 @@
- Typically found in ruins, tombs, and deserted areas.
- Immune to damage from non-magical weapons.
- Regenerates 3 hp at the start of each round until destroyed.
- At 0 hp, changes into cloud of mist and flees to coffin.
!!!include(./vampires/base-info.md)!!!
- **Coffins**: Must rest in a coffin during the day or lose 2d6 hp (which can only be healed by resting in coffin for a full day).
!!!include(./vampires/bestial-minions.md)!!!
- Cannot rest in a blessed coffin.
!!!include(./vampires/charming-gaze.md)!!!
### Bestial Minions
!!!include(./vampires/energy-drain.md)!!!
Can summon creatures from the surrounding area.
- Takes 1 round to activate.
- Can summon the following types and quantities of animals:
- 1d10 x 10 rats,
- 5d4 giant rats,
- 1d10 x 10 bats,
- 3d6 giant bats,
- 3d6 wolves, or
- 2d4 dire wolves.
### Charming Gaze
Target in sight must **Save vs Spells** at -2 to resist charm.
- A charmed creature:
- must move towards the vampire (resisting anyone who tries to prevent it),
- must defend the vampire,
- must obey the vampire's commands (as long as they are understood),
- can't cast spells or use magic items,
- is unable to harm the vampire.
- Charm breaks when the vampire dies.
### Energy Drain
Damage inflicted by this attack reduces the target's maximum HP.
- A humanoid killed by this ability becomes a vampire in 3 days.
- The victim gains back 1 hit die worth of hit points to their maximum after each long rest they take, until they return to their original total.
### Shapeshift
Can change into other forms at will.
- Each change takes 1 round.
- Can take humanoid form, or form listed below.
- Clothes and equipment carried remain in possession but inaccessible while in non-humanoid form.
#### Dire Wolf
| | |
| ----------------- | --------------------- |
| **Hit Dice** | 7\*\* (31 hp) |
| **Armor Class** | 17 |
| **Movement** | 50' |
| **Attacks** | 1 (+6) @ bite (2d4) |
| **Saving Throws** | D8 W9 P10 B10 S12 (7) |
| **Morale** | 11 |
#### Giant Bat
| | |
| ----------------- | --------------------- |
| **Hit Dice** | 7\*\* (31 hp) |
| **Armor Class** | 17 |
| **Movement** | 10' / 60' flying |
| **Attacks** | 1 (+6) @ bite (1d4) |
| **Saving Throws** | D8 W9 P10 B10 S12 (7) |
| **Morale** | 11 |
#### Cloud of Mist
| | |
| ----------------- | --------------------- |
| **Hit Dice** | 7\*\* (31 hp) |
| **Armor Class** | 17 |
| **Movement** | 60' flying |
| **Attacks** | None |
| **Saving Throws** | D8 W9 P10 B10 S12 (7) |
| **Morale** | 11 |
- Immune to all weapons while in this form.
- Unable to attack while in this form.
!!!include(./vampires/shapeshift.md)!!!
!!!include(./undead.md)!!!
### Weaknesses
- Repelled by odor of garlic, must **Save vs Death** each round to attack.
- Unable to come within 10' of a wielded holy symbol.
- May attack wielder from another angle, if possible.
- Unable to cross running water except via a bridge or while carried inside coffin.
- Does not cast a reflection.
- Tends to avoid mirrors.
- Partly blinded by light from [Continual Light](/spells/continual-light.html) spell (-4 to attack).
- May be permanently killed by:
- a stake in the heart,
- being immersed in water for 1 turn,
- being reduced to 0 hp without an available coffin nearby.
!!!include(./vampires/weaknesses.md)!!!

View File

@@ -0,0 +1,5 @@
- Typically found in ruins, tombs, and deserted areas.
- Immune to damage from non-magical weapons.
- Regenerates 3 hp at the start of each round until destroyed.
- At 0 hp, changes into cloud of mist and flees to coffin.
- Can walk along vertical surfaces and upside down across ceilings without using hands at normal movement speed.

View File

@@ -0,0 +1,12 @@
### Bestial Minions
Can summon creatures from the surrounding area.
- Takes 1 round to activate.
- Can summon the following types and quantities of animals:
- 1d10 x 10 [rats](/bestiary/rats/rat.html),
- 5d4 [giant rats](/bestiary/rats/giant-rat.html),
- 1d10 x 10 [bats](/bestiary/bats/bat.html),
- 3d6 [giant bats](/bestiary/bats/giant-bat.html),
- 3d6 [wolves](/bestiary/wolves/wolf.html), or
- 2d4 [dire wolves](/bestiary/wolves/dire-wolf.html).

View File

@@ -0,0 +1,11 @@
### Charming Gaze
Target in sight must **Save vs Spells** at -2 to resist charm.
- A charmed creature:
- must move towards the vampire (resisting anyone who tries to prevent it),
- must defend the vampire,
- must obey the vampire's commands (as long as they are understood),
- can't cast spells or use magic items,
- is unable to harm the vampire.
- Charm breaks when the vampire dies.

View File

@@ -0,0 +1,6 @@
### Energy Drain
Damage inflicted by this attack reduces the target's maximum HP.
- A humanoid killed by this ability becomes a vampire in 3 days.
- The victim gains back 1 hit die worth of hit points to their maximum after each long rest they take, until they return to their original total.

View File

@@ -0,0 +1,43 @@
### Shapeshift
Can change into other forms at will.
- Each change takes 1 round.
- Can take humanoid form, or form listed below.
- Clothes and equipment carried remain in possession but inaccessible while in non-humanoid form.
#### Dire Wolf
| | |
| ----------------- | --------------------- |
| **Hit Dice** | 7\*\* (31 hp) |
| **Armor Class** | 17 |
| **Movement** | 50' |
| **Attacks** | 1 (+6) @ bite (2d4) |
| **Saving Throws** | D8 W9 P10 B10 S12 (7) |
| **Morale** | 11 |
#### Giant Bat
| | |
| ----------------- | --------------------- |
| **Hit Dice** | 7\*\* (31 hp) |
| **Armor Class** | 17 |
| **Movement** | 10' / 60' flying |
| **Attacks** | 1 (+6) @ bite (1d4) |
| **Saving Throws** | D8 W9 P10 B10 S12 (7) |
| **Morale** | 11 |
#### Cloud of Mist
| | |
| ----------------- | --------------------- |
| **Hit Dice** | 7\*\* (31 hp) |
| **Armor Class** | 17 |
| **Movement** | 60' flying |
| **Attacks** | None |
| **Saving Throws** | D8 W9 P10 B10 S12 (7) |
| **Morale** | 11 |
- Immune to all weapons while in this form.
- Unable to attack while in this form.

View File

@@ -0,0 +1,17 @@
### Weaknesses
- Must rest in a coffin during the day or lose 2d6 hp (which can only be healed by resting in coffin for a full day).
- Cannot rest in a blessed coffin.
- Repelled by odor of garlic, must **Save vs Death** each round to attack.
- Unable to come within 10' of a wielded holy symbol.
- May attack wielder from another angle, if possible.
- Unable to cross running water except via a bridge or while carried inside coffin.
- Unable to enter a private residence without being invited.
- Does not cast a reflection or shadow.
- Tends to avoid mirrors.
- Partly blinded by light from [Continual Light](/spells/continual-light.html) spell (-4 to attack).
- Burned by holy water (1d6+1 damage per vial).
- May be permanently killed by:
- a stake in the heart,
- being immersed in water for 1 turn, or
- being reduced to 0 hp without an available coffin nearby (mist dissipates after 12 turns).

View File

@@ -20,4 +20,10 @@
When a humanoid loses more than 1/2 of their max hit points from the natural attacks of a werebeast (ex: bite or claw), they must **Save vs Poison** or become infected with therianthropy.
- The disease takes 2d12 days to fully infect, with signs of infection appearing halfway through.
- Humanoids become the same type of werebeasts (and are typically run by the referee, at least while transformed).
- Humanoids become the same type of werebeasts (and are typically run by the GM, at least while transformed).
### Paralyzing Terror
Any level 0 character seeing this creature must **Save** or be [paralyzed](/rules/adventuring.html#paralyzed) with terror.
- Paralysis is broken if werebeast attacks them or goes out of sight.

View File

@@ -1,6 +1,7 @@
1. **Berserker**: After striking a killing blow while in melee with multiple foes, may immediately make a free attack against another foe at 2.
2. **Dual-Wielder**: Gains [Dual Wielding](/rules/combat.md#dual-wielding). If DEX > 13 and wielding both a one-handed weapon and a Light weapon in off hand, may make an attack with each one.
3. **Hunter**: +1 to attack and damage rolls when in combat with foes of a specific type (ex: undead, clerics, dragons, giants, etc.). The type must be chosen when this talent is selected.
4. **Leader**: Mercenaries or retainers under command and within 60' gain a +1 bonus to morale and loyalty checks. All allies within 60' get +1 bonus to saves against fear effects.
5. **Specialist**: Expertise with a specific type of weapon (ex: whips, one-handed swords, crossbows, etc.) grants +1 to attack and damage rolls when using one.
6. **Tank**: When in melee with a foe, any attacks the foe makes at anyone else get 2.
2. **Dual-Wielder**: Gains [Dual Wielding](/rules/combat.html#dual-wielding). If DEX > 13 and wielding both a one-handed weapon and a Light weapon (in off hand), may make an attack with each weapon.
3. **Environmental Expert**: Can either ignore any special restrictions on combat while in a specific environment (ex: underwater) or gains +1 to attack and damage rolls while in combat in that environment (ex: aerial, astral). The environment type (and resulting effect) must be determined when this expertise is selected.
4. **Hunter**: +1 to attack and damage rolls when in combat with foes of a specific type (ex: undead, clerics, dragons, giants). The type of foe must be chosen when this expertise is selected.
5. **Leader**: Mercenaries or retainers under command and within 60' gain a +1 bonus to morale and loyalty checks. All allies within 60' get +1 bonus to saves against fear effects.
6. **Specialist**: Expertise with a specific type of weapon (ex: whips, one-handed swords, crossbows, etc.) grants +1 to attack and damage rolls when using one. The type of weapon must be chosen when this expertise is selected.
7. **Tank**: While in melee with an adjacent foe, if that foe tries to attack anyone else, that attack gets 2.

View File

@@ -0,0 +1,76 @@
### 1st Level
1. [Calm / Scare](/spells/calm.html)
2. [Cure Light Wounds / Cause Light Wounds](/spells/cure-light-wounds.html)
3. Detect Evil / Detect Good
4. [Detect Magic](/spells/detect-magic.html)
5. [Light / Darkness](/spells/light.html)
6. Protection from Evil / Protection from Good
7. Purify Food and Water / Spoil Food and Water
8. Resist Cold / Remove Cold Resistance
### 2nd Level
1. Bless / Blight
2. [Continual Light (Continual Darkness)](/spells/continual-light.html)
3. Find Traps
4. Know Alignment / Hide Alignment
5. Resist Fire / Remove Fire Resistance
6. Silence 15 Radius / Startling Noise
7. Snake Charm
8. Speak with Animals
### 3rd Level
1. Cure Blindness / Blind
2. Cure Disease / Cause Disease
3. Grow Animal / Shrink Animal
4. Hold Person
5. Locate Object / Hide Object
6. Remove Curse / Curse
7. [Speak with Dead / Silence Dead](/spells/speak-with-dead.html)
8. Striking
### 4th Level
1. Peaceful Respite / Animate Dead
2. Create Water
3. Cure Serious Wounds / Cause Serious Wounds
4. Dispel Magic
5. Neutralize Poison
6. Protection from Evil 10 Radius / Protection from Good 10 Radius
7. Speak with Plants
8. Sticks to Snakes / Snakes to Sticks
### 5th Level
1. Commune
2. Create Food
3. Cure Critical Wounds
4. [Dispel Evil](/spells/dispel-evil.html)
5. Banish Insects / Insect Plague
6. Quest / Remove Quest
7. Raise Dead / Finger of Death
8. Truesight
### 6th Level
1. Aerial Servant
2. Animate Objects
3. Barrier / Remove Barrier
4. Create Normal Animals
5. Cureall / Killall
6. Find the Path
7. Speak with Monsters / Babble
8. Word of Recall
### 7th Level
1. Earthquake
2. Holy Word
3. Raise Dead Fully / Obliterate
4. Restore / Life Drain
5. Survival
6. Travel
7. Wish
8. Wizardry

View File

@@ -1,4 +1,4 @@
Copyright © 2023-2024 [Eric Woodward](https://www.itsericwoodward.com/)
Copyright © 2023-2025 [Eric Woodward](https://www.itsericwoodward.com/)
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.

View File

@@ -1,3 +1,3 @@
### Legal Information
> This work includes material taken from the System Reference Document 5.1 (“SRD 5.1”) by Wizards of the Coast LLC and available at https://dnd.wizards.com/resources/systems-reference-document. The SRD 5.1 is licensed under the Creative Commons Attribution 4.0 International License available at https://creativecommons.org/licenses/by/4.0/legalcode.
> This work includes material taken from the System Reference Document v5.1 (“SRD 5.1”) and/or v5.2.1 (“SRD 5.2.1”) by Wizards of the Coast LLC and available at https://www.dndbeyond.com/srd. SRD 5.1 and SRD 5.2.1 are both licensed under the Creative Commons Attribution 4.0 International License available at https://creativecommons.org/licenses/by/4.0/legalcode.

View File

@@ -0,0 +1,8 @@
### Decapitation
On a successful attack, the target may be decapitated.
- Against a target of stone or metal, a decapitation only occurs on a critical hit (regardless of size).
- Against a target of size large or bigger, a decapitation only occurs on a natural 19 or 20.
- Against a medium-sized or smaller target, a decapitation occurs on a natural 18, 19, or 20
- Some creatures may either be immune to or unaffected by decapitation (ex: creatures without a head, elementals).

View File

@@ -0,0 +1,7 @@
### Energy Drain
On a successful hit, wielder may say command word to drain 1 level or HD from victim.
- This includes reduction of hit points and/or other bonuses.
- If target is drained of all levels, they die.
- May only be used up to 3 times per day.

View File

@@ -0,0 +1,5 @@
### More Info
- [Adventuring](./adventuring.html)
- [Realms](./realms.html)
- [Hexhall Academy](./hexhall.html): A school for fae built on a mirthland which can still be accessed from the material plane.

View File

@@ -0,0 +1,9 @@
_The Plane of Faerie_
The Faewolde is a plane of wild, primal magic, consisting of a [Great Forest](/planes/near/faewolde/realms.html#the-great-forest) surrounded by various domains (called [the Mirthlands](/planes/near/faewolde/realms.html#the-mirthlands)), and intersecting the material plane at key points called [crossings](/planes/near/faewolde/adventuring.html#crossings).
- Depending on the season, the plane is ruled by one of the four [seasonal courts](/planes/near/faewolde/realms.html#the-fae-courts).
- It is currently the 9th year of winter and the rule of the Night King, O'bron the Cold.
- Seasons typically last around 4 years, although some last much longer.
- The length of each day and night are random, averaging around 12 hours.
- Most last between 9 and 15 hours, although some have been known to last 24 hours or more.

View File

@@ -8,6 +8,6 @@ Version 0.15.1 / 2024-11-10
- [Combat](/rules/combat.html)
- [Adventuring](/rules/adventuring.html)
- [Magic](/rules/magic.html)
- [Referees Only](/rules/referees.html)
- [GM Notes](/rules/gm-notes.html)
</div>

View File

@@ -1,11 +1,14 @@
- **Blunt**: Can be wielded by cleric.
- **Charge**: Doubles any damage done after moving at least 60' while mounted before attacking.
- **Entangle**: On successful hit, target must **Save vs Paralyze** to be able to move or attack.
- Entangled victims can make new saves each round.
- **Ammunition**: Requires ammunition of the indicated type.
- **Blunt**: No cutting edge, may be wielded by a cleric.
- **Charge**: While mounted, damage may be doubled by moving at least 60' before attacking.
- **Entangle**: On successful hit, target must **Save** or become [Entangled](/rules/adventuring.html#entangled).
- **Light**: May be used in offhand when [dual-wielding](#dual-wielding).
- **Reach**: Grants a extra 5' reach for determining melee range.
- **Reload**: Takes a round to reload, can only be fired every other round.
- <strong id="weapon-property-loud">Loud</strong>: The first use of a [missile attack](/rules/combat.html#missile-attacks) triggers a [complication check](/rules/adventuring.html#complication-check) and causes untrained animals (and some smaller humanoids of 2HD or less) to make a morale check or flee.
- **One-shot**: Missile attack may only be used once per combat for the damage listed.
- **Reach**: Grants extra 5' reach for determining melee range.
- **Reload**: After being used the indicated number of times, it takes one full round to reload.
- **Slow**: Always attacks last in a round.
- **Spread**: May be used to make a single attack at -2 which targets up to two creatures within 5' of each other, dealing half damage (round up) to each.
- **Stealth**: May only be used to attack unaware humanoid creature from behind (4+1 HD max).
- **Thrown**: May be used as ranged weapon (short, medium, and long range indicated).
- **Two-handed**: Requires two hands to use.

View File

@@ -0,0 +1,5 @@
### Battle Axe Properties
- **Versatile**: At start of combat round, if offhand is free, may choose to have sword deal 1d10 base damage for that round while gaining the following properties:
- **Slow**: Always attacks last in a round.
- **Two-handed**: Requires two hands to use.

View File

@@ -0,0 +1,3 @@
### Mace Properties
- **Blunt**: No cutting edge, may be wielded by a cleric.

View File

@@ -0,0 +1,5 @@
### Polearm Properties
- **Reach**: Grants extra 5' reach for determining melee range.
- **Slow**: Always attacks last in a round.
- **Two-handed**: Requires two hands to use.

View File

@@ -0,0 +1,4 @@
### Whip Properties
- **Entangle**: On successful hit, target must **Save** or become [Entangled](/rules/adventuring.html#entangled).
- **Reach**: Grants extra 5' reach for determining melee range.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View File

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

Before

Width:  |  Height:  |  Size: 294 KiB

After

Width:  |  Height:  |  Size: 294 KiB

View File

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

View File

@@ -28,7 +28,8 @@ export default (() => {
*/
document.addEventListener('DOMContentLoaded', () => {
setTimeout(() => {
let to = null;
to = setTimeout(() => {
// Lazy-Load Media
if (typeof loadMedia === 'function') {
loadMedia('.js-lazyLoader', null, true);
@@ -65,6 +66,25 @@ export default (() => {
' site:' + window.location.hostname;
});
// Make table captions into collapsable toggles
document
.querySelectorAll('.dividedTableWrapper > table > caption')
.forEach((caption) => {
const theClass = 'js-hideContent',
wrapper = caption.closest('.dividedTableWrapper');
// removes inline-styled override from markdown-it-multimd-table
caption.removeAttribute('style');
if (!wrapper) return;
wrapper.classList.add('js-toggleable');
caption.addEventListener('click', (e) => {
wrapper.classList.toggle(theClass);
});
});
// Add shadow to toolDetails that have extra content
// I know - ALL OF THIS CODE just for that little effect
const details = document.querySelectorAll('.toolDetails'),
@@ -118,6 +138,8 @@ export default (() => {
});
details.forEach((detail) => setBottomShadow(detail));
clearTimeout(to);
}, 1);
});
})();

View File

@@ -28,7 +28,7 @@ html {
body {
background: #2c0f2a;
/* Old browsers */
background: url("/images/site-bg.jpg") bottom fixed;
background: url("/images/site-bg.jpg") top fixed;
background-size: cover;
color: #fadbb0;
font-family: sans-serif;
@@ -197,11 +197,13 @@ h5 {
color: #e94e5c;
font-size: 1.06em;
line-height: 1.2em;
margin: 1.2em 0;
}
h6 {
color: #e94e5c;
font-size: 1em;
margin: 1em 0;
}
h1,
@@ -228,13 +230,6 @@ li {
margin-bottom: 0.6em;
}
/* turn on for that authentic OSE feel! */
/*
ul li::marker {
content: "▶ ";
}
*/
li ul {
margin-top: 0.6em;
}
@@ -292,6 +287,12 @@ table th {
/* Classes */
.alphaLink {
border: 1px dashed #F6BC43;
margin: 1rem auto;
padding: .5rem;
}
.calendarWrapper {
border: 1px dashed #fadbb0;
border-radius: .5rem;
@@ -344,21 +345,34 @@ table th {
background: rgba(37, 40, 55, 0.6);
}
.clearBoth {
clear: both;
}
.contentWarning {
font-style: italic;
}
.dividedTableWrapper {
display: block;
margin: 1rem 0;
box-shadow: none;
margin: 0;
max-height: 5000px;
max-width: 100%;
overflow-x: auto;
transition: box-shadow 0.3s ease-out, max-height 0.3s ease-out;
}
.dividedTableWrapper h4 {
text-align: center;
}
.dividedTableWrapper table caption {
padding: .5rem 1.5rem;
position: relative;
}
.dividedTableWrapper table td {
border: 1px dashed #f6bc43;
}
@@ -411,6 +425,11 @@ table th {
max-width: 90%;
}
.footnotes {
font-size: .75em;
line-height: 1.2em;
}
details.gm-notes {
border: 1px dashed #885c68;
padding-left: 1rem;
@@ -440,14 +459,35 @@ a.hiddenLink:hover {
}
.imgWrapper {
float: right;
margin: 0 -0.5rem 0 1rem;
max-width: 50%;
align-items: center;
clear: both;
display: flex;
flex-wrap: wrap;
justify-content: center;
max-width: 100%;
position: relative;
text-align: center;
z-index: 0;
}
.imgWrapper.fullWidth,
.imgWrapper.halfWidth {
float: none;
margin: .5rem;
max-width: 100%;
}
.imgWrapper figure {
margin: 0;
max-width: 50%;
}
.imgWrapper.fullWidth figure,
.imgWrapper.halfWidth figure{
max-width: 100%;
}
.imgWrapper figure > a {
border-color: transparent;
display: inline-block;
@@ -458,8 +498,8 @@ a.hiddenLink:hover {
border-color: #e94e5c;
}
.levelTable table thead tr:first-child th {
border-bottom-style: dashed;
.imgWrapper figure > figcaption {
backdrop-filter: blur(1rem);
}
.licenseLink {
@@ -596,53 +636,6 @@ a.licenseLink:hover {
top: 1rem;
}
/**
* Scrolling shadows by https://kizu.dev/ and https://lea.verou.me/
* Only works in browsers supporting background-attachment: local; & CSS gradients
* Degrades gracefully
*/
.menubar {
html {
background: white;
font: 120% sans-serif;
}
.scrollbox {
overflow: auto;
width: 200px;
max-height: 200px;
margin: 50px auto;
background:
/* Shadow covers */
linear-gradient(white 30%, rgba(255,255,255,0)),
linear-gradient(rgba(255,255,255,0), white 70%) 0 100%,
/* Shadows */
radial-gradient(50% 0, farthest-side, rgba(0,0,0,.2), rgba(0,0,0,0)),
radial-gradient(50% 100%,farthest-side, rgba(0,0,0,.2), rgba(0,0,0,0)) 0 100%;
background:
/* Shadow covers */
linear-gradient(white 30%, rgba(255,255,255,0)),
linear-gradient(rgba(255,255,255,0), white 70%) 0 100%,
/* Shadows */
radial-gradient(farthest-side at 50% 0, rgba(0,0,0,.2), rgba(0,0,0,0)),
radial-gradient(farthest-side at 50% 100%, rgba(0,0,0,.2), rgba(0,0,0,0)) 0 100%;
background-repeat: no-repeat;
background-color: white;
background-size: 100% 40px, 100% 40px, 100% 14px, 100% 14px;
/* Opera doesn't support this in the shorthand */
background-attachment: local, local, scroll, scroll;
}
background: #282c32;
display: static;
max-height: 1px;
}
.navBar {
background: #282c32;
display: none;
@@ -894,13 +887,18 @@ a.licenseLink:hover {
}
.pageMain {
padding: 1em;
padding: 0 1em 1em;
}
.pageMain h3 {
clear: both;
}
.pageTitle {
margin-top: 0;
}
a.pageTitle-link,
a.pageTitle-link:visited {
color: #e94e5c;
@@ -1015,7 +1013,9 @@ a.pageTitle-sublink {
display: flex;
flex-direction: row;
margin: 0;
overflow-x: auto;
padding: 0;
max-width: 100%;
}
.rulesMenu ul li {
@@ -1024,6 +1024,7 @@ a.pageTitle-sublink {
border-right: 2px solid rgba(37, 40, 55, 0.6);
list-style: none;
margin: 0;
white-space: nowrap;
}
.rulesMenu ul li:first-child {
@@ -1053,6 +1054,7 @@ a.pageTitle-sublink {
display: flex;
flex-direction: column;
margin-top: 0;
text-align: center;
}
.rulesVersion {
@@ -1063,6 +1065,7 @@ a.pageTitle-sublink {
}
.sectionBackLink-wrapper {
clear: both;
margin-top: 2rem;
}
@@ -1239,6 +1242,34 @@ a.pageTitle-sublink {
* JS Overrides
****************************************************************************/
.js .dividedTableWrapper.js-toggleable {
display: inline-block;
}
.js .dividedTableWrapper.js-hideContent {
box-shadow: rgba(0, 0, 0, 0.35) 0px -50px 36px -28px inset;
max-height: 6rem;
overflow: hidden;
}
.js .dividedTableWrapper.js-toggleable table caption::before {
content: "\25BC";
left: .5rem;
position: absolute;
transform: rotate(0deg);
transition: transform 0.5s ease-out;
}
.js .dividedTableWrapper.js-toggleable table caption {
cursor: pointer;
pointer-events: all;
}
.js .dividedTableWrapper.js-toggleable.js-hideContent table caption::before {
transform: rotate(-90deg);
}
.js .pubDate.isDone {
-webkit-transition: 0.3s visibility;
transition: 0.3s visibility;
@@ -1253,7 +1284,6 @@ a.pageTitle-sublink {
visibility: visible;
}
/****************************************************************************
* Media Queries
****************************************************************************/
@@ -1262,6 +1292,11 @@ a.pageTitle-sublink {
nav {
max-width: 100%;
}
.imgWrapper.halfWidth {
margin: .5rem auto;
max-width: 480px;
}
}
@media all and (min-width: 600px) {
@@ -1269,31 +1304,23 @@ a.pageTitle-sublink {
font-size: 18px;
}
/*
h2 {
background-color: transparent;
}
*/
.imgWrapper {
max-width: 33%;
float: right;
margin: 0 -0.5rem 0 1rem;
max-width: 30%;
}
.imgWrapper figure {
max-width: 100%;
}
.menubar {
height: auto;
}
/*
.navBar {
display: block;
.pageMain h3 {
clear: none;
}
*/
/*
.pageTitle {
margin-top: 2rem;
}
*/
.siteTitle-text {
text-align: center;
@@ -1375,10 +1402,6 @@ a.pageTitle-sublink {
max-width: 960px;
}
.pageMain {
padding: 2em 1em 1em;
}
.pageTitle {
margin-top: 2rem;
}

View File

@@ -3,26 +3,35 @@ var titlesBySection = {
// top-level
astral: "Astral Info",
campaigns: "Campaigns",
campaign: "Campaign Info",
campaign: "Astral Campaign Info",
classes: "Character Classes",
"magic-items": "Magic Items",
planes: "Planar Cosmology",
planes: "the Cosmology of the Multiverse",
races: "Character Races",
rules: "House Rules",
rules: "Core Rules",
// campaigns
"aeryon": "the World of Aeryon",
"one-night": "One Night One-Shots",
"mini-campaigns": "Monday Night Mini-Campaigns",
// creatures
"dragons-chromatic": "Chromatic Dragons",
"dragons-crystalline": "Crystalline Dragons",
"dragons-metallic": "Metallic Dragons",
"herd-mammals": "Herd Mammals",
// planes
elemental: "Elemental Planes",
material: "Material Planes",
near: "Near Planes",
near: "the Near Planes",
transcendental: "Transcendental Planes",
"near-faewolde": "The Faewolde",
// dragons
"dragons-chromatic": "Chromatic Dragons",
"dragons-crystalline": "Crystalline Dragons",
"dragons-metallic": "Metallic Dragons",
equipment: "Equipment Tables",
},
unlistedSections = ['main'],
nestedSubsections = ['near'],
fixedSection = page?.section?.replace(/\s+/, '-');
%>
@@ -38,16 +47,24 @@ var titlesBySection = {
page.path.endsWith(`${page.subsection.replace('-', '/')}/index.html`)) { %>
<div class="sectionBackLink-wrapper">
<a href="../index.html" class="sectionBackLink">
<a href="../" class="sectionBackLink">
&lt; Back to Dragons
</a>
</div>
<% } else if (page.path && page.subsection && nestedSubsections.includes(page.subsection)) { %>
<div class="sectionBackLink-wrapper">
<a href="../" class="sectionBackLink">
&lt; Back to <%= titlesBySection[page.subsection] %>
</a>
</div>
<% } else if (page.path && page.subsection &&
!page.path.endsWith(`${page.subsection.replace('-', '/')}/index.html`)) { %>
<div class="sectionBackLink-wrapper">
<a href="./index.html" class="sectionBackLink">
<a href="./" class="sectionBackLink">
&lt; Back to <%= titlesBySection[page.subsection]
?? page.subsection.charAt(0).toUpperCase() + page.subsection.slice(1) %>
</a>
@@ -57,7 +74,7 @@ var titlesBySection = {
!(page.path === `${fixedSection}/index.html` || page.path.endsWith(`/${fixedSection}/index.html`))) { -%>
<div class="sectionBackLink-wrapper">
<a href="/<%=fixedSection%>/index.html" class="sectionBackLink">
<a href="/<%=fixedSection%>/" class="sectionBackLink">
&lt; Back to <%= titlesBySection[fixedSection] ?? page.section.charAt(0).toUpperCase() + page.section.slice(1) %>
</a>
</div>

View File

@@ -45,7 +45,7 @@
both used under the SIL Open Font License, Version 1.1.
</p>
<p>
Background image created with <a href="https://labs.openai.com/" target="_blank">DALL-E</a> released under a <a href="/licenses/cc0/">CC0</a> license.
Background image released under a <a href="/licenses/cc0/">CC0</a> license.
</p>
<a href="#top" class="topLink">Back to Top</a>
</div>

View File

@@ -32,23 +32,23 @@
<nav class="navMenu" role="navigation">
<ul>
<li><a href="/bestiary/index.html">Bestiary</a></li>
<li><a href="/classes/index.html">Classes</a></li>
<li><a href="/deities/index.html">Deities</a></li>
<li><a href="/bestiary/">Bestiary</a></li>
<li><a href="/classes/">Classes</a></li>
<li><a href="/deities/">Deities</a></li>
<!--
<li class="hasSubMenu"><a href="/equipment/index.html" aria-haspopup="true">Equipment</a>
<li class="hasSubMenu"><a href="/equipment/" aria-haspopup="true">Equipment</a>
<ul class="dropdown" aria-label="submenu">
<li><a href="/weapons/index.html">Weapons</a></li>
<li><a href="/weapons/">Weapons</a></li>
</ul>
</li>
-->
<li class="hasSubMenu">
<details open>
<summary><a href="/magic/index.html" aria-haspopup="true">Magic</a></summary>
<summary><a href="/magic/" aria-haspopup="true">Magic</a></summary>
<ul class="dropdown" aria-label="submenu">
<li><a href="/magic-items/index.html">Items</a></li>
<li><a href="/spells/index.html">Spells</a></li>
<li><a href="/magic-items/">Items</a></li>
<li><a href="/spells/">Spells</a></li>
</ul>
</details>
</li>
@@ -56,97 +56,93 @@
<li class="hasSubMenu">
<details open>
<summary>
<a href="/planes/index.html" aria-haspopup="true">Planes</a>
<a href="/planes/" aria-haspopup="true">Planes</a>
</summary>
<ul class="dropdown" aria-label="submenu">
<li class="hasSubMenu">
<details open>
<summary>
<a href="/astral/index.html" aria-haspopup="true">Astral Plane</a>
<a href="/astral/" aria-haspopup="true">Astral Plane</a>
</summary>
<ul class="dropdown" aria-label="submenu">
<li><a href="/astral/adventuring.html">Adventuring</a></li>
<li><a href="/astral/calendar.html">Calendar</a></li>
<li><a href="/astral/factions/index.html">Factions</a></li>
<li><a href="/bestiary/index.html">Monsters</a></li>
<li><a href="/astral/factions/">Factions</a></li>
<li><a href="/bestiary/">Monsters</a></li>
<li><a href="/astral/timeline.html">Timeline</a></li>
<li><a href="/astral/travel.html">Travel</a></li>
<li><a href="/astral/vessels.html">Vessels</a></li>
</ul>
</details>
</li>
<li><a href="/planes/elemental/index.html">Elemental Planes</a></li>
<li><a href="/planes/material/index.html">Material Planes</a></li>
<li><a href="/planes/near/index.html">Near Planes</a></li>
<li><a href="/planes/transcendental/index.html">Transcendental Planes</a></li>
<li><a href="/planes/elemental/">Elemental Planes</a></li>
<li><a href="/planes/material/">Material Planes</a></li>
<li><a href="/planes/near/">Near Planes</a></li>
<li><a href="/planes/transcendental/">Transcendental Planes</a></li>
</ul>
</details>
</li>
<li><a href="/races/index.html">Races</a></li>
<li><a href="/races/">Races</a></li>
<li><a href="/tools/index.html">Referee's Tools</a></li>
<li class="hasSubMenu">
<details open>
<summary>
<a href="/rules/index.html" aria-haspopup="true">Rules</a>
<a href="/rules/" aria-haspopup="true">Rules</a>
</summary>
<ul class="dropdown" aria-label="submenu">
<li><a href="/rules/basics.html">Basics</a></li>
<li><a href="/rules/combat.html">Combat</a></li>
<li><a href="/rules/adventuring.html">Adventuring</a></li>
<li><a href="/rules/combat.html">Combat</a></li>
<li><a href="/rules/equipment/fantasy.html">Equipment</a></li>
<li><a href="/rules/magic.html">Magic</a></li>
<li><a href="/rules/referees.html">Referees Only</a></li>
<li><a href="/rules/vessels/">Vessels</a></li>
<li><a href="/rules/gm-notes.html">GMs Only</a></li>
</ul>
</details>
</li>
<li><a href="/tools/">Tools</a></li>
<li class="hasSubMenu">
<details open>
<summary>
<a href="/about.html" aria-haspopup="true">About</a>
<a href="/campaigns/" aria-haspopup="true">Campaigns</a>
</summary>
<ul class="dropdown" aria-label="submenu">
<li class="hasSubMenu">
<details open>
<summary>
<a href="/campaigns/index.html" aria-haspopup="true">Campaigns</a>
</summary>
<ul class="dropdown" aria-label="submenu">
<li><a href="/campaigns/index.html">Mini-Campaigns</a></li>
<li><a href="/campaigns/.html">One Night...</a></li>
<li><a href="/campaign/index.html">Astral Jam</a></li>
<li><a href="/campaigns/mini-campaigns/">Mini-Campaigns</a></li>
<li><a href="/campaigns/one-night/">One Night One-Shots</a></li>
<li><a href="/campaign/">Astral Jam</a></li>
</ul>
</details>
</li>
<li><a href="/licenses/index.html">Licenses</a></li>
</ul>
</details>
</li>
<li><a href="/about.html" aria-haspopup="true">About</a></li>
<li><a href="/licenses/">Licenses</a></li>
</ul>
</nav>
<nav class="navBar" role="navigation">
<ul>
<li><a href="/bestiary/index.html">Bestiary</a></li>
<li><a href="/bestiary/">Bestiary</a></li>
<li><a href="/classes/index.html">Classes</a></li>
<li><a href="/classes/">Classes</a></li>
<li><a href="/deities/index.html">Deities</a></li>
<li><a href="/deities/">Deities</a></li>
<li><a href="/magic/index.html">Magic</a></li>
<li><a href="/magic/">Magic</a></li>
<li><a href="/planes/index.html">Planes</a></li>
<li><a href="/planes/">Planes</a></li>
<li><a href="/races/index.html">Races</a></li>
<li><a href="/races/">Races</a></li>
<li><a href="/rules/index.html">Rules</a></li>
<li><a href="/rules/">Rules</a></li>
<li><a href="/tools/index.html">Tools</a></li>
<li><a href="/tools/">Tools</a></li>
<li><a href="/campaigns/index.html">Campaigns</a></li>
<li><a href="/campaigns/">Campaigns</a></li>
</ul>
</nav>

View File

@@ -2,11 +2,12 @@
<%
var menuLinksByOption = {
Basics: "/rules/basics.html",
Combat: "/rules/combat.html",
Adventuring: "/rules/adventuring.html",
Combat: "/rules/combat.html",
Equipment: "/rules/equipment/fantasy.html",
Magic: "/rules/magic.html",
"Referees Only": "/rules/referees.html",
Vessels: "/rules/vessels/index.html",
"GM Notes": "/rules/gm-notes.html",
};
var title = (page.title ?? '').replace('HOSR ', '');
@@ -35,7 +36,7 @@ var title = (page.title ?? '').replace('HOSR ', '');
<div class="rulesMenu">
<div class="rulesVersion">
Version 0.14.6 / 2024-08-05
Version Beta-0.22.0 / 2025-10-19
<!--
<%=site.version ?? '0.0.0' %>
<%=site.lastUpdated ?? '0.0.0' %>

View File

@@ -1,8 +1,24 @@
<!-- TOP BEGIN -->
<% const getPageField=(field_name)=> {
<%
const getPageField=(field_name)=> {
return page[field_name] || site[field_name] || '';
},
getUrl = () => site.base_uri + (site.base_uri.endsWith('/') ? '' : '/') + page.path;
let title = page?.title ?? '';
if (page.title && page.section && !page.path.endsWith(`${page.section.replace(' ', '-')}/index.html`)) {
if (page.section === 'bestiary') {
title = `${title} (Creature)`;
}
else if (page.section === 'classes') {
title = `${title} (Class)`;
}
else if (page.section === 'races') {
title = `${title} (Race)`;
}
else if (page.section === 'magic items') {
title = `${title} (Magic Item)`;
}
}
-%>
<!doctype html>
<html class="no-js" lang="en" xmlns:fb="http://ogp.me/ns/fb#">
@@ -20,7 +36,7 @@
<base href="<%= getUrl() %>" />
<title>
<%= page.title ? page.title + ' | ' : '' %>
<%= title ? title + ' | ' : '' %>
<%= page.sub_title ? page.sub_title + ' | ' : '' %>
<%= site.title %>
</title>
@@ -60,11 +76,11 @@
<meta name="robots" content="<%= getPageField('robots') %>">
<meta name="googlebot" content="<%= getPageField('robots') %>">
<link rel="license" href="/licenses/cc-by-sa/index.html">
<link rel="license" href="/licenses/cc-by-sa/">
<!-- Open Graph -->
<meta property="og:type" content="website" />
<meta property="og:url" content="<%= site.base_uri %><%= page.path %>" />
<meta property="og:url" content="<%= site.base_uri %>/<%= page.path %>" />
<meta property="og:site_name" content="<%= site.title %>" />
<meta property="og:title" content="<%= getPageField('title') %>" />
<meta property="og:locale" content="en_US">
@@ -81,7 +97,7 @@
<% } else { %>
<meta name="twitter:card" content="summary" />
<% } %>
<meta name="twitter:url" content="<%= site.base_uri %><%= page.path %>" />
<meta name="twitter:url" content="<%= site.base_uri %>/<%= page.path %>" />
<meta name="twitter:title" content="<%= getPageField('title') %>" />
<meta name="twitter:description" content="<%= getPageField('description') %>" />
<meta name="twitter:image" content="<%= getPageField('image') %>" />
@@ -100,8 +116,8 @@
<link rel="start" href="<%= site.base_uri%>/" />
<link rel="contents" href="/sitemap.xml" title="Sitemap" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/feed" />
<link rel="canonical" href="<%= site.base_uri %><%= page.path %>" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/feed.xml" />
<link rel="canonical" href="<%= site.base_uri%>/<%= page.path %>" />
<link rel="stylesheet" href="/styles/imports.css" type="text/css" />
<link rel="stylesheet" href="/styles/fonts.css" type="text/css" />

View File

@@ -1,5 +1,5 @@
---
title: About
title: About...
description: All "About" the Guide, the Planar Vagabond, and the site itself.
date_pub: 2023-03-06T00:20:00-05:00
section: main
@@ -7,37 +7,34 @@ content_type: feature
short_code: ab1
---
> Don't believe anything you read here.
>
> The author apparently started using the [Tome of Forbidden Whispers](/magic-items/tome-of-forbidden-whispers.html) to "help with translations", but the book may have taken hold of his mind.
>
> Consider yourself warned.
> <cite>--- PV</cite>
### ...the Guide
### About the Guide
The Guide was started in year [5022 CAC](/astral/timeline.html) as a series of small, (mostly) hand-produced pamphlets sold for a few silvers each at a handful of ports, and has quickly grown to be a wholly remarkable tome, possibly the most remarkable tome ever to be published by a halfling (although some may disagree).
The Guide was started in year 5022 CAC as a series of small, (mostly) hand-produced pamphlets sold for a few silvers each at a handful of ports, and has quickly grown to be a wholly remarkable tome, possibly the most remarkable tome ever to be published by a halfling (although some may disagree).
It is also a highly successful one more popular than the _Idiot's Guide to Running an Astral Business_, better selling than _Fifty More Things to do in Subjective Gravity_, and more controversial than Balyx Balator's trilogy of metaphysical blockbusters: _Where the Gods Went Wrong_, _Infernus: Fairy-tale or Fiction?_, and _The Lie of Alignment_.
It is also a highly successful one more popular than the _Idiot's Guide to Running a Magic Shop_, better selling than _Fifty More Things to do in Subjective Gravity_, and more controversial than Balyx Balator's trilogy of metaphysical blockbusters: _Where the Gods Went Wrong_, _Infernus: Fairy-tale or Fiction?_, and _The Lie of Alignment_.
In many of the more relaxed civilizations on the Outer Koronin Rim of [<abbr title="Astral Trade Union">ATU</abbr>](/astral/factions/index.html#astral-trade-union)-space, the Guide has already supplanted the great _Encyclopedia of the University Eternal_ as the standard repository of all knowledge and wisdom, for though it is perpetually incomplete and has many omissions and apocrypha, it scores over the more established work in two important respects:
First, it is slightly cheaper[^1]; and secondly it has the words _Feare Naught!_ inscribed in large friendly letters on its cover.
### About the Planar Vagabond
### ...the Planar Vagabond
One day, while trying to evade some rather unscrupulous characters, a halfling named Drogo Wanderfoot stepped into a glowing portal and found himself in the Astral Plane. Since then, he's passed through dozens of ports, and is believed to have visited _37_ different planes, including the 4 accessible [elemental planes](/planes/elemental/index.html) (although some insist he's visited all 6). Not bad for a little fella from a broken home on a backwater world.
One day, while trying to evade some rather unscrupulous characters, a halfling named Drogo Wanderfoot stepped into a glowing portal and found himself in the Astral Plane. Since then, he's passed through dozens of ports, and is believed to have visited _43_ different planes, including the 4 accessible [elemental planes](/planes/elemental/) (although some insist he's visited all 6). Not bad for a little fella from a broken home on a backwater world.
He can usually be found drinking at the seediest dive in a port, gambling for his soul in a back alley on some distant plane, sailing on the astral currents, or even working on the next issue of his Guide to the Multiverse.
He can usually be found drinking at the seediest dive in a port, gambling for his soul in a back alley on some distant plane, sailing on the astral currents, or possibly even working on the next issue of this guide.
### About the Site
### ...the Site
The site is derived from the various pamphlets and writings produced by the Planar Vagabond over the past few years. They were then shuttled back to a <a href="https://www.itsericwoodward.com" class="hiddenLink">web developer friend of his</a> via a secret door in the friend's basement. The writings are being translated from Common and posted here as quickly as they can be (although some of the text is difficult to translate).
This site is maintained by a group of web gnomes under the employ of the Planar Vagabond, who sends them his papers and pamphlets which they, in turn, translate from Common and rewrite as web pages.
<div class="imgWrapper halfWidth">
![The Web Gnomes (clockwise from left): Phreyd and Jorj (translators), Lumburg (supervisor), Rubyk (architect), Elburt (researcher), Waldu (mouse controller), Arryk (typist), and Lermund (lawyer). Released under a [CC0](/licenses/cc0/) license.](/images/webgnomes.jpg 'The Web Gnomes')
</div>
<details class="about-detail">
<summary>Learn the truth (and spoil the fun)!</summary>
OK, so _obviously_ it's a work of fiction, and that's all it's intended to be. Even the stuff above.
<summary>Lermund's Tiny Warnings</summary>
Names, characters, places and incidents list are either products of the authors imagination or used fictitiously. Any resemblance to actual events or locales or persons, living, dead, or otherwise, is entirely coincidental.

View File

@@ -25,6 +25,10 @@ Invisible flows of psychic energy that permeate and swirl around the astral plan
- For creatures - measured in feet.
- For vessels - measured in yards.
<!--
<img class="zine-filler issue1-filler-corner-window" src="/images/zine/rose-window.png" />
-->
#### Missile Weapons
- Gain an additional attack range option, **Distant**:
@@ -35,16 +39,20 @@ Invisible flows of psychic energy that permeate and swirl around the astral plan
Pieces of other planes (usually floating) in the astral plane. The shape is typically determined by the plane of origin:
- **Fire**: Fragments from [the elemental plane of fire](/planes/elemental.html) are usually globes of elemental fire (used in Dwarven fire engines and some Drahki weapons).
- **Water**: Fragments from [the elemental plane of water](/planes/elemental.html) are usually globes of water.
- **Earth**: Fragments from [the elemental plane of earth](/planes/elemental.html) are usually irregularly-shaped chunks of rock and dirt.
- **Air**: Fragments from [the elemental plane of air](</planes/elemental/index.html#aeria-%2F-the-zephyr-(air)>) are usually globes of air (used to supply some ships traveling to airless planes)
- **Earth**: Fragments from [the elemental plane of earth](</planes/elemental/index.html#terru-%2F-the-rock-(earth)>) are usually irregularly-shaped chunks of rock and dirt.
- Large fragments of earth are called **islands**, and often used to support a stronghold or outpost in the astral void.
- **Air**: Fragments from [the elemental plane of air](/planes/elemental.html) are usually globes of air (used to supply some ships traveling to airless planes)
- **Chaos**: Fragments from [the elemental plane of chaos](/planes/elemental.html) are usually jet black globes, and tend to function as spheres of annihilation.
- **Law**: Fragments from [the elemental plane of law](/planes/elemental.html) are usually globes of crackling, radiant energy.
- **Fire**: Fragments from [the elemental plane of fire](</planes/elemental/index.html#pyrea-%2F-the-pyre-(fire)>) are usually globes of elemental fire (used in Dwarven fire engines and some Drahki weapons).
- **Water**: Fragments from [the elemental plane of water](</planes/elemental/index.html#aquos-%2F-the-deep-(water)>) are usually globes of water.
- **Chaos**: Fragments from [the elemental plane of chaos](</planes/elemental/index.html#dema-%2F-the-abyss-(chaos)>) are usually jet black globes, and tend to function as spheres of annihilation.
- **Law**: Fragments from [the elemental plane of law](</planes/elemental/index.html#ange-%2F-the-firmament-(law)>) are usually globes of crackling, radiant energy.
- It's believed that these arise spontaneously when a fragment from the plane of chaos appears, and are equal in size to the chaos ones.
- When a fragment of law and chaos are combined, the resulting release of energy looks like white and black lightning, and can be seen for thousands of miles around.
<!--
<img class="zine-filler issue1-filler-bottom-cross-heads" src="/images/zine/cross-head-filler.png" />
-->
### Gravity
- Subjective, with capable creatures (INT 5 or greater) able to change "down" with a thought (CHA check if under duress).
@@ -65,10 +73,18 @@ A stronghold, shop, or town in the astral plane, usually established on a large
- Those interested in trade will have one (or more) docks for passing ships.
- Outposts with [permanent portals](#portals) to other planes are called **ports**.
<!--
<img class="zine-filler issue1-filler-bottom-pictographs" src="/images/zine/pictographs.png" />
-->
### Portals
Usually manifest as flat, shimmering discs of various colors that appear to float in place.
<!--
<img class="zine-filler issue1-filler-right-sword" src="/images/zine/sword.jpg" />
-->
- Can be used by passing through to arrive on the destination plane.
- May lead to any other plane (Inner, Outer, or Material).
- Each different destination has its own color, and a portal leading to a character's home plane will always look silver to them.

Some files were not shown because too many files have changed in this diff Show More