Files
the-sunken-reach/docs/WEAPONS.md
T
joshuaandClaude Opus 5.5 9d0a4a2252 V1.29.0: free roam by invitation, no slot no spell, weapons change at the right moment
- Free roam no longer adds the whole party: the DM adds who is there
- A spell with no slot of its level or higher left cannot be declared; it
  takes the lowest slot left at or above its level. Cantrips take none
- In a battle in progress a player changes the weapon in hand only as the
  battle begins or on their own turn after their attack has landed
- Spells are listed cantrips first, then by level, with the level shown

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:05:25 +02:00

17 KiB
Raw Permalink Blame History

Weapons

How weapons work in this app: the campaign's weapon pool, how a character comes to hold a weapon, weapon levels, and how attack and damage numbers are worked out.

This describes the code as it stands. The formulas live in backend/src/game/calculations.js; the built-in list is backend/src/game/data/weaponsLibrary.js. Related: ITEMS.md, SPELLS.md, CHARACTERS.md.

Contents

  1. The basics
  2. The weapon pool
  3. The built-in library
  4. Giving weapons to characters
  5. Weapon levels
  6. How damage grows
  7. Attack and damage numbers
  8. Starting weapons
  9. Weapons as rewards and for sale
  10. Permissions
  11. What is not modelled
  12. The complete weapon library

1. The basics

  • Every campaign has its own weapon pool. A weapon exists in one campaign only.
  • A character never owns a free-standing weapon: it holds a copy of a pool entry, with its own quantity, level and equipped flag.
  • The DM runs the pool and decides who gets what. Players can only equip and unequip what they hold.

2. The weapon pool

The pool is the "Weapons" part of the campaign page (DM only). It lists each weapon as a short row: its name, base damage, starting level and what it does while equipped. The list has a search box, shows ten to a page, and clicking a row opens the weapon's pop-out, which shows everything below and is where it is changed.

Field What it is
Name Free text, up to 80 characters
Base damage Dice such as 1d8 or 2d6 — the damage at the weapon's starting level
Damage type Free text: slashing, piercing, fire…
Attack ability Strength, Dexterity, or Finesse (whichever of the two is higher for the wielder)
Starts at level 1 to 9. The lowest level this weapon can be (section 5)
Growth Standard, Powerful or Legendary: how fast the dice climb per level (section 6)
Starting option Whether a brand-new character may pick it in the builder (section 8)
Properties, range Stored for library weapons (light, thrown, 20/60 ft…). Shown in the weapon's pop-out, and not used anywhere
Effects What it does to whoever has it equipped: bonuses and penalties to the sheet's numbers, and a note. Works exactly as for items (ITEMS.md, section 5)
  • Adding: by hand with "+ Add Weapon", or from the library. Both open in a pop-out. A weapon added by hand opens its own pop-out straight away, to set what it does; "+ Add another weapon" at its top goes straight back to an empty form.
  • Effects: under "While equipped" in the weapon's pop-out, saved with "Save Effects". A defending blade can give +1 AC, a heavy maul −5 speed. They count only while the weapon is equipped, and do not change its own attack or damage.
  • Changing: starting level, growth and the starting-option tick box are changed in the pop-out, and saved as they are changed. Name, damage, type and ability cannot be changed on screen once created (the API accepts it); remove and re-add instead.
  • Removing: "Remove from campaign" at the foot of the pop-out, after a confirmation. This takes the weapon away from every character holding it and off every encounter's reward list. There is no undo.
  • The same weapon can be added twice; nothing stops duplicate names.

3. The built-in library

"📚 From Library" offers 41 weapons to copy into the pool:

Category Count Examples
Simple melee 10 Club 1d4, Dagger 1d4, Mace 1d6, Spear 1d6
Simple ranged 4 Shortbow, Light Crossbow, Dart, Sling
Martial melee 18 Longsword 1d8, Rapier 1d8, Greataxe 1d12, Greatsword 2d6
Martial ranged 5 Longbow, Heavy Crossbow, Hand Crossbow
Paired 4 Paired Daggers 2d4, Paired Shortswords 2d6, Paired Scimitars 2d6, Paired Handaxes 2d6

Paired weapons. A character has one weapon equipped at a time (section 4), so fighting with a weapon in each hand is not two weapons: it is one weapon made as a pair, whose damage is both blades. The library has four, and a DM makes others the same way with "+ Add Weapon" ("Twin Hammers", 2d4 bludgeoning).

A weapon added from the library arrives with starting level 1, Standard growth, and not ticked as a starting option. Change those in the table afterwards. Every library weapon is listed in section 12.

Each library weapon can be added once. A weapon the pool already has by that name is left out of the library list, and comes back if the pool's weapon is renamed or deleted.

4. Giving weapons to characters

On a character's sheet, the DM picks a weapon from the pool and clicks Give.

  • It arrives at the weapon's starting level, quantity 1, unequipped.

  • Giving a weapon the character already holds adds to the stack; the stack keeps the level it has. A character holds one stack per weapon, so two copies of the same weapon at different levels is not possible.

  • The DM can take a weapon away with ✕ on the sheet.

  • The owning player, or the DM, ticks Equipped. While the character is in a battle in progress, a player can only change it as the battle begins or on their own turn after their attack has landed (ENCOUNTERS.md, section 5); the DM always can.

  • Only what is equipped counts. A weapon has to be equipped to be used in an encounter, and gear only gives its effects while equipped. What is not equipped stays in the pack: still the character's, still listed on the sheet and in the character panel, but not in hand.

  • There is a limit on how much can be equipped at once, set per campaign in Campaign Settings ("Equipped at once"):

    Setting Starts at Means
    Things equipped at once 2 Weapons and items together
    Of which weapons 1 So: one weapon, or one weapon and one item, or two items

    Armor and shields are items and count toward the limit. With the starting numbers a character can have a weapon and a shield, or a weapon and armor, but not all three; a DM who wants armor, shield and weapon together sets the first number to 3.

  • Putting something on when the limit is reached is refused, with a message naming what is already equipped. Take something off first.

  • Equipping can be changed at any time, including in the middle of an encounter, by the owning player or the DM: on the sheet, or in the character panel (the 🧙 button, or "🎒 Inventory" on the character's encounter card).

  • Lowering the limits takes nothing off anyone. A character with more on than the new limit keeps it until they change what they have equipped.

  • Everything arrives unequipped: gear from the DM, from a reward, bought, or given by another character.

Passing a weapon on. A character's owner (or the DM) can give a held weapon to another character in the campaign from the "Give to Another Character" card on the sheet. Some or all of the stack moves: it leaves the giver and arrives with the recipient at the giver's level, unequipped. If the recipient already holds that weapon, their stack grows and keeps its own level. A recipient below the weapon's level holds it but cannot use it yet.

5. Weapon levels

This is a house rule of this app, not standard D&D.

  • Each held copy has a level from 1 to 9. Two characters can hold the same weapon at different levels.
  • Only the DM changes a copy's level, with the level picker beside it on the sheet. Each option shows the damage at that level.
  • A copy can never go below the pool entry's starting level. Raising a pool entry's starting level lifts any copies below it and unequips them.

Who can use it. A character must be at least the copy's level:

Character level Can use weapons of level
1 1
2 1–2
5 1–5
9 and above 1–9

A weapon above its holder's level is still held, but it shows "Requires level N", cannot be equipped, and so is never on its holder's encounter card. The character panel lists it, marked "needs level N". If the DM levels a weapon past its holder, or lowers the character's level, it is unequipped automatically.

6. How damage grows

The dice in the pool are the damage at the weapon's starting level. Each level above that moves the dice up a fixed ladder, in the smallest steps dice allow:

Rung Dice Average
1 1d4 2.5
2 1d6 3.5
3 1d8 4.5
4 1d10 5.5
5 1d12 6.5
6 2d6 7
7 1d6+1d8 8
8 2d8 9
9 1d8+1d10 10
10 2d10 11
11 1d10+1d12 12
12 2d12 13
13 3d8 13.5
… adding a die each time the current dice max out

Every rung is +1 average damage over the last, or +0.5 where a die is added.

Growth sets how many rungs a weapon climbs per level:

Growth Rungs per level A 1d6 weapon at levels 1, 2, 3, 4 At level 9
Standard 1 1d6, 1d8, 1d10, 1d12 2d10
Powerful 2 1d6, 1d10, 2d6, 2d8 1d10+2d12
Legendary 3 1d6, 1d12, 2d8, 1d10+1d12 4d12

A weapon with a higher starting level counts from there: a 2d6 greatsword that starts at level 3 with Standard growth is 2d6 at level 3, 1d6+1d8 at level 4 and 2d8 at level 5.

  • At its starting level a weapon always shows its dice exactly as typed.
  • Dice that are not on the ladder (1d4+1, 2d4+2) climb from the highest rung that is not stronger than them: 2d4+2 (average 7) continues from 2d6.
  • Dice the app cannot read (free text such as "special") never change.

7. Attack and damage numbers

Number Formula
Attack bonus Ability modifier + proficiency bonus
Damage The dice at the copy's level + ability modifier
  • The ability modifier is Strength, Dexterity, or the higher of the two for a Finesse weapon.
  • The weapon's level changes the dice only, never the bonuses.
  • Every character is treated as proficient with every weapon.

These numbers appear on the character sheet, in the quick-stats drawer, and on the character's card in an encounter.

8. Starting weapons

In the builder's equipment step a new character can pick weapons that are:

  • ticked as a starting option in the pool, and
  • starting level 1 (a new character is level 1).

Starting weapons and starting items share the campaign's "starting items" allowance. They arrive at level 1, unequipped.

9. Weapons as rewards and for sale

On an encounter the DM can line up a weapon as a reward, at a chosen level (not below its starting level) and quantity, and later award it to a character. Awarding adds it to what the character holds, exactly as giving it on the sheet would. See ENCOUNTERS.md.

The DM can also put a weapon up for sale, at a level, a price (in gold, silver, copper or cash) and an optional stock. An NPC can sell it, wherever that NPC is met, or an encounter can sell it itself. Players see what is for sale and buy it in an NPC quest that is in progress: the price leaves their purse and the weapon joins what they hold, unequipped. See NPCS.md, section 5, and ENCOUNTERS.md, section 10.

10. Permissions

Action DM Owning player Other players
See the pool Yes Only what their own character holds, plus the starting options while they have a character to build The same, for their own character
See the built-in library Yes No No
Add, change or remove pool entries Yes No No
Give a weapon from the pool, or take one away Yes No No
Give a held weapon to another character Yes Yes No
Put a weapon up for sale Yes No No
Buy a weapon that is for sale, in a quest in progress Yes, for any character in it Yes, if the character is in it No
Change a held weapon's level or quantity Yes No No
Equip or unequip Yes Yes, if the character can use it No
See a character's weapons Yes Yes Yes

11. What is not modelled

  • Weapon proficiency by class (everyone is proficient with everything)
  • Properties: two-handed, versatile, light, reach, loading, thrown (a two-handed weapon counts as one thing equipped, like any other)
  • Range and ammunition
  • Critical hits, advantage, and rolling the attack itself (use the dice roller)
  • Magic bonuses to a weapon's own attack or damage, such as +1 weapons (use a higher level or growth instead)
  • A price on the weapon itself (a price is set each time it is put up for sale), and weight

12. The complete weapon library

Every weapon "📚 From Library" offers. Base damage is the damage at level 1. Properties and range are carried into the campaign but not shown or used. "While equipped" is the weapon's effects and note, which are carried in too.

This list is written from the app's own data by npm run docs:lists (in /backend). Re-run it after changing the data; do not edit the list by hand.

Simple Melee (10)

Weapon Base damage Type Attacks with Properties Range While equipped
Club 1d4 bludgeoning Strength light — —
Dagger 1d4 piercing Strength or Dexterity (finesse) finesse, light, thrown 20/60 ft —
Greatclub 1d8 bludgeoning Strength two-handed — —
Handaxe 1d6 slashing Strength light, thrown 20/60 ft —
Javelin 1d6 piercing Strength thrown 30/120 ft —
Light Hammer 1d4 bludgeoning Strength light, thrown 20/60 ft —
Mace 1d6 bludgeoning Strength — — —
Quarterstaff 1d6 bludgeoning Strength versatile (1d8) — —
Sickle 1d4 slashing Strength light — —
Spear 1d6 piercing Strength thrown, versatile (1d8) 20/60 ft —

Simple Ranged (4)

Weapon Base damage Type Attacks with Properties Range While equipped
Light Crossbow 1d8 piercing Dexterity ammunition, loading, two-handed 80/320 ft —
Dart 1d4 piercing Strength or Dexterity (finesse) finesse, thrown 20/60 ft —
Shortbow 1d6 piercing Dexterity ammunition, two-handed 80/320 ft —
Sling 1d4 bludgeoning Dexterity ammunition 30/120 ft —

Martial Melee (18)

Weapon Base damage Type Attacks with Properties Range While equipped
Battleaxe 1d8 slashing Strength versatile (1d10) — —
Flail 1d8 bludgeoning Strength — — —
Glaive 1d10 slashing Strength heavy, reach, two-handed — —
Greataxe 1d12 slashing Strength heavy, two-handed — —
Greatsword 2d6 slashing Strength heavy, two-handed — —
Halberd 1d10 slashing Strength heavy, reach, two-handed — —
Lance 1d12 piercing Strength reach, special — —
Longsword 1d8 slashing Strength versatile (1d10) — —
Maul 2d6 bludgeoning Strength heavy, two-handed — —
Morningstar 1d8 piercing Strength — — —
Pike 1d10 piercing Strength heavy, reach, two-handed — —
Rapier 1d8 piercing Strength or Dexterity (finesse) finesse — —
Scimitar 1d6 slashing Strength or Dexterity (finesse) finesse, light — —
Shortsword 1d6 piercing Strength or Dexterity (finesse) finesse, light — —
Trident 1d6 piercing Strength thrown, versatile (1d8) 20/60 ft —
War Pick 1d8 piercing Strength — — —
Warhammer 1d8 bludgeoning Strength versatile (1d10) — —
Whip 1d4 slashing Strength or Dexterity (finesse) finesse, reach — —

Martial Ranged (5)

Weapon Base damage Type Attacks with Properties Range While equipped
Blowgun 1 piercing Dexterity ammunition, loading 25/100 ft —
Hand Crossbow 1d6 piercing Dexterity ammunition, light, loading 30/120 ft —
Heavy Crossbow 1d10 piercing Dexterity ammunition, heavy, loading, two-handed 100/400 ft —
Longbow 1d8 piercing Dexterity ammunition, heavy, two-handed 150/600 ft —
Net - special Dexterity special, thrown 5/15 ft —

Paired (4)

Weapon Base damage Type Attacks with Properties Range While equipped
Paired Daggers 2d4 piercing Strength or Dexterity (finesse) finesse, light, paired — A dagger in each hand: takes both hands.
Paired Shortswords 2d6 piercing Strength or Dexterity (finesse) finesse, light, paired — A shortsword in each hand: takes both hands.
Paired Scimitars 2d6 slashing Strength or Dexterity (finesse) finesse, light, paired — A scimitar in each hand: takes both hands.
Paired Handaxes 2d6 slashing Strength light, paired — A handaxe in each hand: takes both hands.