various updates

This commit is contained in:
Eric Woodward 2024-05-27 16:24:26 -04:00
parent a58d40278b
commit 65dc56c328
21 changed files with 341 additions and 57 deletions

View File

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

View File

@ -0,0 +1,6 @@
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.

View File

@ -47,10 +47,12 @@ const addRollerForm = () => {
.map((roll) => {
const result = dice.roll(roll),
stringifiedResult = dice.stringify(result);
/*
console.log(
{ roll, result, stringifiedResult },
isExpressionRE.test(roll)
);
*/
return `${stringifiedResult.replaceAll(
'!!!mods listing not yet complete!!!',
''
@ -163,17 +165,20 @@ const shuffleContainer = (parentId) => {
setWildernessButton?.addEventListener('click', (e) => {
e.preventDefault();
setContainerContents(
'js-complicationList',
[
'<li>Encounter</li>',
'<li>Encounter *</li>',
'<li>Signs / Portents</li>',
'<li>Locality / Weather (2d4)</li>',
'<li>Lose Way (1d3 hrs)</li>',
'<li>No Complications</li>',
].join('\n')
);
(distanceText = `<strong>${
distanceTotal * 10
} yards</strong><br /><em>[${distanceRolls}]</em>`),
setContainerContents(
'js-complicationList',
[
'<li>Encounter</li>',
'<li>Encounter *</li>',
'<li>Signs / Portents</li>',
'<li>Locality / Weather (2d4)</li>',
'<li>Lose Way (1d3 hrs)</li>',
'<li>No Complications</li>',
].join('\n')
);
});
},
addAstralComplicationForm = () => {
@ -199,7 +204,15 @@ const reactionButtonVal = [
'Amiable',
'Friendly!',
],
rollEncounter = (sides = 1) => {
rollDistance = (type = 'W', hasDoubles) => {
// roll 2d6 for starting dungeon distance
if (type !== 'W') return rollDice(6, 2);
// roll 4d6 (or 1d4, if any doubles above) for starting wilderness distance
return hasDoubles ? rollDice(4) : rollDice(6, 4);
},
rollEncounter = (sides = 1, type = 'W') => {
type = `${type}`.toUpperCase();
// roll 3d8 for monsters, note doubles (first 2 / last 2 / first & last) / triples
const [monsterTotal, ...monsterRolls] = rollDice(sides, 3),
hasStealthParty =
@ -210,17 +223,18 @@ const reactionButtonVal = [
hasDoubles = hasStealthParty || hasStealthMonster,
// roll 2d6 for reaction, note string & numeric value
[reactionTotal, ...reactionRolls] = rollDice(6, 2),
// roll 4d6 (or 1d4, if any doubles above) for starting distance
[distanceTotal, ...distanceRolls] = hasDoubles
? rollDice(4)
: rollDice(6, 4),
// roll for distance, see above
[distanceTotal, ...distanceRolls] = rollDistance(type, hasDoubles),
// Derived string and scores
reactionText = `<strong>${
reactionButtonVal[reactionTotal - 2]
} (${reactionTotal})</strong><br /><em>[${reactionRolls}]</em>`,
distanceText = `<strong>${
distanceTotal * 10
} yards</strong><br /><em>[${distanceRolls}]</em>`,
distanceText = [
`<strong>${distanceTotal * 10}`,
type === 'W' ? ' yards' : "'",
'</strong>',
`<br /><em>[${distanceRolls}]</em>`,
].join(''),
encounterOutput = document.getElementById('js-encounterOutput'),
outputTable = document.createElement('table');
@ -235,7 +249,9 @@ const reactionButtonVal = [
const monsterRollText = `<strong>${monsterTotal}${surpriseText}</strong><br /><em>[${monsterRolls}]</em>`;
outputTable.innerHTML = [
`<thead><th colspan="2">Encounter (3d${sides}): ${dayjs().format(
`<thead><th colspan="2">${
type === 'W' ? 'Wilderness' : 'Dungeon'
} Encounter<br />(3d${sides}): ${dayjs().format(
'YYYY-MM-DD HH:mm:ss'
)}</th></thead>`,
'<tbody>',
@ -253,13 +269,11 @@ const reactionButtonVal = [
formControls = document.createElement('div');
formControls.innerHTML = [
'<div class="encounterButtonsWrapper">',
/*
'<div class="encounterButtonsDungeonWrapper"><em>Dungeon</em><br />',
'<button id="js-btnRollDungeonEncounter3d4">3d4</button>',
'<button id="js-btnRollDungeonEncounter3d6">3d6</button>',
'<button id="js-btnRollDungeonEncounter3d8">3d8</button>',
'</div>',
*/
'<div class="encounterButtonsWildernessWrapper"><em>Wilderness</em><br />',
'<button id="js-btnRollWildernessEncounter3d4">3d4</button>',
'<button id="js-btnRollWildernessEncounter3d6">3d6</button>',
@ -291,32 +305,32 @@ const reactionButtonVal = [
if (rollDungeonEncounter3d4Button)
rollDungeonEncounter3d4Button.addEventListener('click', (e) => {
e.preventDefault();
rollEncounter(4);
rollEncounter(4, 'D');
});
if (rollDungeonEncounter3d6Button)
rollDungeonEncounter3d6Button.addEventListener('click', (e) => {
e.preventDefault();
rollEncounter(6);
rollEncounter(6, 'D');
});
if (rollDungeonEncounter3d8Button)
rollDungeonEncounter3d8Button.addEventListener('click', (e) => {
e.preventDefault();
rollEncounter(8);
rollEncounter(8, 'D');
});
if (rollWildernessEncounter3d4Button)
rollWildernessEncounter3d4Button.addEventListener('click', (e) => {
e.preventDefault();
rollEncounter(4);
rollEncounter(4, 'W');
});
if (rollWildernessEncounter3d6Button)
rollWildernessEncounter3d6Button.addEventListener('click', (e) => {
e.preventDefault();
rollEncounter(6);
rollEncounter(6, 'W');
});
if (rollWildernessEncounter3d8Button)
rollWildernessEncounter3d8Button.addEventListener('click', (e) => {
e.preventDefault();
rollEncounter(8);
rollEncounter(8, 'W');
});
};

View File

@ -392,10 +392,10 @@ table th {
display: flex;
flex-direction: row;
align-items: center;
justify-content: start;
justify-content: space-between;
}
.encounterButtonsWildernessWrapper {
.encounterButtonsWrapper > * {
/* margin-left: auto; */
border: 1px solid #e94e5c;
border-radius: .3rem;
@ -403,6 +403,7 @@ table th {
text-align: center;
}
.feature hr {
border: 1px 0 0 0;
border-color: #885c68;

View File

@ -35,7 +35,7 @@ var title = (page.title ?? '').replace('HOSR ', '');
<div class="rulesMenu">
<div class="rulesVersion">
Version 0.14.2 / 2024-03-24
Version 0.14.5 / 2024-05-27
<!--
<%=site.version ?? '0.0.0' %>
<%=site.lastUpdated ?? '0.0.0' %>

View File

@ -16,5 +16,7 @@ Any of a number of bird-like lizards, often found on "lost world" planes (or dre
- [Brontosaurus](./brontosaurus.html): Massive, four-legged, herbivorous dinosaur, 70'+ long and weighing 30+ tons, with a (relatively) small head, long neck, and powerful tapering tail.
- [Dimetrodon](./dimetrodon.html): Four-legged dinosaur, 10' long, with a "sail" of bony spines and skin webbing on its back.
- [Plesiosaurus](./plesiosaurus.html): Lake-dwelling dinosaur, 40'+ long, with a long neck, snake-like head, and 4 flippers.
- [Pterodactyl](./pterodactyl.html): Predatory, winged dinosaur with an 8-10' wingspan, and which typically preys on small or medium animals (unless very hungry).
- [Pteranodon](./pteranodon.html): Aggressive, winged dinosaur with a wingspan of up to 50', and which often preys on humanoids.
- [Triceratops](./triceratops.html): Four-legged, herbivorous dinosaur, 40' long and 12' high (at the shoulder), with a protective bone crest and three long horns on its head.
- [Tyrannosaurus Rex](./tyrannosaurus-rex.html): Two-legged dinosaur, 20'+ tall, with enormous jaws and small arms that preys on animal of human size or bigger.

View File

@ -0,0 +1,25 @@
---
title: Pteranodon
description: Aggressive, winged dinosaur with a wingspan of up to 50', and which often preys on humanoids.
date_pub: 2024-04-28T20:26:28.000-04:00
section: bestiary
content_type: feature
short_code: bd1py
---
Aggressive, winged dinosaur with a wingspan of up to 50', and which often preys on humanoids.
<div class='headlessTableWrapper'>
| | |
| ----------------- | ----------------------- |
| **Hit Dice** | 5 (22hp) |
| **Armor Class** | 13 |
| **Attacks** | 1 (+4) @ 1d12 (bite) |
| **Movement** | 80' flying |
| **Saving Throws** | D12 W13 P14 B15 S16 (3) |
| **Morale** | 8 |
| **Alignment** | Neutral |
| **XP** | 175 |
</div>

View File

@ -0,0 +1,25 @@
---
title: Pterodactyl
description: Predatory, winged dinosaur with an 8-10' wingspan, and which typically preys on small or medium animals (unless very hungry).
date_pub: 2024-04-28T20:26:28.000-04:00
section: bestiary
content_type: feature
short_code: bd1pt
---
Predatory, winged dinosaur with an 8-10' wingspan, and which typically preys on small or medium animals (unless very hungry).
<div class='headlessTableWrapper'>
| | |
| ----------------- | ----------------------- |
| **Hit Dice** | 1 (4hp) |
| **Armor Class** | 12 |
| **Attacks** | 1 (+0) @ 1d3 (bite) |
| **Movement** | 60' flying |
| **Saving Throws** | D12 W13 P14 B15 S16 (1) |
| **Morale** | 7 |
| **Alignment** | Neutral |
| **XP** | 10 |
</div>

View File

@ -0,0 +1,62 @@
---
title: Giant Oyster
description:
date_pub: 2024-05-19T21:33:22.000-04:00
section: bestiary
content_type: feature
short_code: b0g
status: hidden
---
A large oyster, big enough to swallow a humanoid, often found with a pearl inside.
<div class='headlessTableWrapper'>
| | |
| ----------------- | ----------------------- |
| **Hit Dice** | 10 (55hp) |
| **Armor Class** | 14 open / 21 closed |
| **Attacks** | 1 (+7) @ 4d6 (bite) |
| **Movement** | 0 |
| **Saving Throws** | D10 W11 P12 B13 S14 (5) |
| **Morale** | None |
| **Alignment** | Neutral |
| **XP** | 900 |
</div>
- 80% chance found open.
- Closes when attacked.
- When closed, opens in 1d4 turns.
### Pearl
- X% chance has a pearl, roll to determine type / value
- white, golden, pink, or silver = 1k
- blue, green, or bronze = 2k
- black, purple = 3k gp
| 1d20 | Size | Color | Value (gp) |
| :--: | :---: | :-----: | :--------: |
| 1-2 | Small | Nothing | - |
| 3 | Small | Gold | 100 |
| 4 | Small | Pink | 100 |
| 5 | Small | Silver | 100 |
| 6 | Small | White | 100 |
| 7 | Small | Blue | 250 |
| 8 | Small | Green | 250 |
| 9 | Small | Bronze | 250 |
| 10 | Small | Black | 500 |
| 11 | Small | Purple | 500 |
| 12 | Large | Gold | 1000 |
| 13 | Large | Pink | 1000 |
| 14 | Large | Silver | 1000 |
| 15 | Large | White | 1000 |
| 16 | Large | Blue | 2000 |
| 17 | Large | Green | 2000 |
| 18 | Large | Bronze | 2000 |
| 19 | Large | Black | 5000 |
| 20 | Large | Purple | 5000 |
- Pearl may be picked like a pocket (15% base chance for those without the skill).
- On fail, oyster closes - roll for attack against PC, on hit, character is trapped inside

View File

@ -24,7 +24,6 @@ Humanoid cursed to shapeshift into an intelligent owl.
</div>
- Heals 3 HP at the end of each round of combat that it doesn't take damage.
- When encountered while flying, 66% (4-in-6) chance of having stealth / surprise.
### As Spellcasters

View File

@ -26,11 +26,11 @@ Corsairs are adventurers who live by their talents on the high seas, offering a
### Boarding
- Don't suffer the usual boarding penalty to attack rolls and Armor Class when boarding.
- Ignores the usual boarding penalty to attack rolls and Armor Class when boarding.
### Corsair Skills
- For most, roll 1d100, result under score is success. For hear noise (HN), use 1d6.
- For most, roll 1d100, result under score is success.
- Referee should roll in secret for move silently (MS).
<div class="dividedTableWrapper">
@ -73,11 +73,11 @@ From 3rd level, 2-in-6 chance of knowing lore pertaining to creatures, magic ite
When attacking an unaware opponent from behind, the attack gets +4 and it deals double damage.
### Start Crew
### Establish Crew
From 9th level, can establish a crew.
- Attracts 2d6 sailors of 1st level who will serve with some reliability and may be used to run one or more ships.
- Attracts 2d6 sailors of 1st level who will serve with some reliability (more of which can be bought) and may be used to run one or more ships.
### Advancement

View File

@ -27,17 +27,14 @@ An adventurer that specializes in combat.
Pick one at 2nd, 6th, 10th, and 14th level.
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.
!!!include(classes/combat-expertise.md)!!!
### Stronghold
Can buy or build a castle or stronghold (and control surrounding lands) at any time they can be afforded.
- Once established, attracts 5d4 x 10 apprentice fighters (level 12).
### Advancement
<div class="dividedTableWrapper levelTable">

View File

@ -0,0 +1,98 @@
---
title: Gunfighter
description: The Gunfighter class for OSR
date_pub: 2024-05-26T13:23:46.000-04:00
section: classes
content_type: feature
short_code: cgf
status: hidden
---
<div class='headlessTableWrapper'>
| | |
| ----------------- | ----------------------------------------- |
| **Hit Dice** | 1d8 |
| **Maximum Level** | 14 |
| **Armor** | Leather, chainmail, no shields |
| **Weapons** | Missile weapons, one-handed melee weapons |
| **Languages** | Alignment, Common |
</div>
- abilities similar to fighter
- multiple shots at higher levels
- pistols are like higher damage / quicker crossbows
- does there need to be a limit to how many shells they can carry, maybe by level?
### Combat Expertise
Pick one at 3rd, 7th, and 11th level.
!!!include(classes/combat-expertise.md)!!!
### Pistols
All gunfighters use very rare, 6-shot firearms with rotating cylinders called **Pistols**.
- Gunfighters begin with two Pistols, and can never own more than those two.
<div class="dividedTableWrapper">
| Weapon | Weight | Damage | Properties |
| ------ | ------ | ------ | --------------------------------------------- |
| Pistol | 5 lbs | 1d8 | Loud, Missile (580 / 81160 / 161240) |
</div>
#### New Weapon Properties
- **Loud**: The first use of [missile attack](/rules/combat.html#missile-attacks) triggers a [complication check](/rules/adventuring.html#complication-check).
- Also causes untrained animals (and some smaller humanoids, 2HD or less) to make a morale check or flee.
#### Ammo
Pistol ammo is exceedingly rare, and its creation is a secret known only to gunfighters.
- Each piece of ammo is called a bullet, and is made from an outer steel shell, an inner metal (or stone) slug, and mix of minerals which create the fire that propels the slug out of the barrel of the pistol.
- Shells are usually collected and reused, although some blacksmiths may be able to make new shells (at a steep price).
- Other required components can usually be foraged / harvested from the environment.
- Starting gunslingers begin with 6 + level bullets.
- Creating new ammo from component parts takes 1 hour to make a number of bullets equal to the gunfighter's level.
### Dual-Wield Pistols
Starting at level 5, gains [Dual Wielding](/rules/combat.md#dual-wielding) while holding either two Pistols, or one Pistol and a light weapon.
### Stronghold
- After 9th level, can establish or build a stronghold.
- Once established, attracts 1d4 x 10 apprentice gunfighters (level 12).
### Advancement
<div class="dividedTableWrapper levelTable">
| Level | XP | HD | Atk<br />Mod | Saving Throws ||||||
| ^^ | ^^ | ^^ | ^^ | D[^1] | W[^1] | P[^1] | B[^1] | S[^1] |
| :---: | :-----: | :-----: | :-----: | :---: | :---: | :---: | :---: | :---: |
| 1 | 0 | 1d8 | 0 | 12 | 13 | 14 | 15 | 16 |
| 2 | 2,000 | 2d8 | 0 | 12 | 13 | 14 | 15 | 16 |
| 3 | 4,000 | 3d8 | 0 | 12 | 13 | 14 | 15 | 16 |
| 4 | 8,000 | 4d8 | +2 | 10 | 11 | 12 | 13 | 14 |
| 5 | 16,000 | 5d8 | +2 | 10 | 11 | 12 | 13 | 14 |
| 6 | 32,000 | 6d8 | +2 | 10 | 11 | 12 | 13 | 14 |
| 7 | 64,000 | 7d8 | +5 | 8 | 9 | 10 | 10 | 12 |
| 8 | 120,000 | 8d8 | +5 | 8 | 9 | 10 | 10 | 12 |
| 9 | 240,000 | 9d8 | +5 | 8 | 9 | 10 | 10 | 12 |
| 10 | 360,000 | 9d8+2 | +7 | 6 | 7 | 8 | 8 | 10 |
| 11 | 480,000 | 9d8+4 | +7 | 6 | 7 | 8 | 8 | 10 |
| 12 | 600,000 | 9d8+6 | +7 | 6 | 7 | 8 | 8 | 10 |
| 13 | 720,000 | 9d8+8 | +9 | 4 | 5 | 6 | 5 | 8 |
| 14 | 840,000 | 9d8+10 | +9 | 4 | 5 | 6 | 5 | 8 |
[Level Advancement]
[^1]: D: Death; W: Wielded; P: Paralyze; B: Blasts; S: Spells
</div>

View File

@ -0,0 +1,20 @@
---
title: Disc of Flying
description: A magical device which carries passengers through the air.
date_pub: 2024-04-28T20:58:41.000-04:00
section: magic items
content_type: feature
short_code: m1df
status: hidden
---
A circular disc, 10' in diameter and with a 1' diameter hole in the center, made of a super-thin, flexible, paper-like substance with a silvery, pearlescent color.
- Can be folded and rolled up like a scroll, or folded up like paper and put into a bag or pocket.
- Anyone touching it instinctively knows they can use a mental command to activate it it, whereupon it instantly flattens itself and hovers 2' off the ground.
- The person who activated it remains in control of it until they deactivate it with a mental command (which they instinctively know upon activation).
- Once unrolled, it can fly through the air, carrying up to 5 humanoid passengers (plus gear) at indicated speed:
- 1 passenger: 100
- 2-3 passengers: 80
- 4-5 passengers: 60
- While flying, bottom can be made to either glow brightly (60' radius) or render the passengers invisible from below.

View File

@ -15,7 +15,7 @@ short_code: rfr
| | |
| --------------------- | --------------------------------------- |
| **Requirements** | None |
| **Ability modifiers** | +DEX, -WIS |
| **Ability modifiers** | +1 DEX, -1 WIS |
| **Languages** | Alignment, Common, any 1 other language |
</div>

View File

@ -305,7 +305,31 @@ Characters can carry a number of "Important Items", based on their Strength (STR
### Health, Damage and Dying
Starting HP is based class and race. When damage is taken, HP is lost.
The state of a character's health is determined by their number of hit points (HP).
- Starting HP is usually determined by class and level.
- The type of Hit Dice to throw is determined by class
- The number of Hit Dice to throw is determined by level.
- Re-roll any 1s or 2s.
- Modify the rolled value of each die by CON as below:
<div class="dividedTableWrapper">
| CHA | Mod |
| :---: | :-: |
| 3 | -3 |
| 4-5 | -2 |
| 6-8 | -1 |
| 9-12 | +0 |
| 13-15 | +1 |
| 16-17 | +2 |
| 18+ | +3 |
[Constitution Modifier]
</div>
- When damage is taken, HP is lost.
#### Dying
@ -314,6 +338,7 @@ Starting HP is based class and race. When damage is taken, HP is lost.
- On success, stabilize at 1 HP (no need to continue saving vs death), but can't fight and can only move 1/2 speed until treated or healed.
- On fail, lose 1 HP to blood loss and try again next round.
- At -(level) HP (or lower), save or die.
- PCs should never die from a single bad roll, but two bad rolls is enough.
#### Healing

View File

@ -78,7 +78,7 @@ Cosmic principles that represent broad world views
### Character Creation
1. Roll Abilities.
1. Roll Ability Scores.
- Roll 4d6 and keep the highest 3 (aka "4d6KH3") for each ability.
- Either roll 4d6KH3 once for each ability in order and see what kind of character comes up, or make all 6 rolls and assign the results to fit a particular class and/or race.
@ -87,9 +87,10 @@ Cosmic principles that represent broad world views
2. Choose a [Class](/classes/) (and, optionally, a [Race](/races/) besides human).
3. Determine Starting Level.
- If playing a legacy character, update starting XP appropriately.
4. Roll Starting Hit Points.
4. Roll [Starting Hit Points](./adventuring.md#health-damage-and-dying).
- Type is determined by class, number is determined by level.
- Re-roll any 1s or 2s.
- Modify the rolled value by CON modifier.
5. Choose [Alignment](#alignment).
6. Note [Starting Languages](./adventuring.html#languages).
7. Buy [Equipment](./equipment/fantasy.html).

View File

@ -6,7 +6,6 @@ section: spells
content_type: feature
short_code: ses
tags: arcane
status: hidden
---
<div class='headlessTableWrapper'>

View File

@ -42,5 +42,5 @@ Caster or target creature shrinks to 6" in size.
- While shrunk:
- Target is unable to harm creatures over 1' tal.
- Target can maneuver through narrow spaces (1" clearance minimum).
- 10% chance of being scene while holding still.
- 10% chance of being seen while holding still.
- Can also be used to negate the effects of a **Grow** spell, restoring the target to original size.

View File

@ -9,19 +9,23 @@ short_code: s1
Below you'll find a growing list of magic spells from across the multiverse.
- [Ball of Fire (3A)](./ball-of-fire.html)
- [Befriend Animal (1 AD)](./befriend-animal.html)
- [Black Tentacles (4 AD)](./black-tentacles.html)
- [Bolt of Lightning (3A)](./bolt-of-lightning.html)
- [Calm / Scare (1 AD)](./calm.html)
- [Color Spray (1 A)](./color-spray.html)
- [Continual Light / Continual Darkness (2 AD)](./continual-light.html)
- [Cure Light Wounds / Cause Light Wounds (1 D)](./cure-light-wounds.html)
- [Detect Magic (1 ADR)](./detect-magic.html)
- [Dimension Jump (4 A)](./dimension-jump.html)
- [Explosive Script (3A)](./explosive-script.html)
- [Fly (3 A)](./fly.html)
- [Glamour (1 A)](./glamour.html)
- [Grow / Shrink 1 A)](./grow.html)
- [Haste / Slow (3 AD)](./haste.html)
- [Hidden Step (2 A)](./hidden-step.html)
- [Hypnotize (1A)](./hypnotize.html)
- [Illusory Terrain (4 A)](./illusory-terrain.html)
- [Improved Invisibility (4 A)](./improved-invisibility.html)
- [Invisibility (2 A)](./invisibility.html)

View File

@ -32,14 +32,12 @@ short_code: t1
<ul class="rollerOutput" id="js-rollerOutput"></ul>
<p class="rollerLink">Powered by <a href="https://github.com/lordnull/dice.js" target="_blank">Dice.js</a></p>
</details>
<details class="toolDetails" open>
<details class="toolDetails" open>
<summary>
<h3>Dungeon Room Populator</h3>
<h3>Encounter Roller</h3>
</summary>
<form id="js-roomForm">
<input type="submit" value="Roll Room" />
</form>
<ul class="roomOutput" id="js-roomOutput"></ul>
<form id="js-encounterForm"></form>
<div class="encounterOutput" id="js-encounterOutput"></ul>
</details>
<details class="toolDetails" open>
<summary>
@ -71,7 +69,15 @@ short_code: t1
<li>No Complications</li>
</ol>
</details>
<details class="toolDetails" open>
<summary>
<h3>Dungeon Room Populator</h3>
</summary>
<form id="js-roomForm">
<input type="submit" value="Roll Room" />
</form>
<ul class="roomOutput" id="js-roomOutput"></ul>
</details>
</div>
- [Referee's Screen](/tools/referee-screen.html)
</div>