Skip to main content
Glama
weapons-phb.ts17.4 kB
/** * Player's Handbook Weapons * * Complete weapons table from D&D 5e PHB. * All standard simple and martial weapons with accurate stats. */ import type { WeaponPreset, PresetSource } from './types.js'; // ═══════════════════════════════════════════════════════════════════════════ // SIMPLE MELEE WEAPONS // ═══════════════════════════════════════════════════════════════════════════ const SIMPLE_MELEE: Record<string, WeaponPreset> = { club: { name: 'Club', type: 'weapon', category: 'simple_melee', damage: '1d4', damageType: 'bludgeoning', properties: ['light'], weight: 2, value: 0.1, // 1 sp = 0.1 gp tags: ['melee', 'one-handed', 'bludgeon', 'simple'], source: 'PHB' }, dagger: { name: 'Dagger', type: 'weapon', category: 'simple_melee', damage: '1d4', damageType: 'piercing', properties: ['finesse', 'light', 'thrown'], range: { normal: 20, long: 60 }, weight: 1, value: 2, tags: ['melee', 'ranged', 'one-handed', 'blade', 'simple', 'finesse'], source: 'PHB' }, greatclub: { name: 'Greatclub', type: 'weapon', category: 'simple_melee', damage: '1d8', damageType: 'bludgeoning', properties: ['two_handed'], weight: 10, value: 0.2, // 2 sp tags: ['melee', 'two-handed', 'bludgeon', 'simple'], source: 'PHB' }, handaxe: { name: 'Handaxe', type: 'weapon', category: 'simple_melee', damage: '1d6', damageType: 'slashing', properties: ['light', 'thrown'], range: { normal: 20, long: 60 }, weight: 2, value: 5, tags: ['melee', 'ranged', 'one-handed', 'axe', 'simple'], source: 'PHB' }, javelin: { name: 'Javelin', type: 'weapon', category: 'simple_melee', damage: '1d6', damageType: 'piercing', properties: ['thrown'], range: { normal: 30, long: 120 }, weight: 2, value: 0.5, // 5 sp tags: ['melee', 'ranged', 'one-handed', 'spear', 'simple'], source: 'PHB' }, light_hammer: { name: 'Light Hammer', type: 'weapon', category: 'simple_melee', damage: '1d4', damageType: 'bludgeoning', properties: ['light', 'thrown'], range: { normal: 20, long: 60 }, weight: 2, value: 2, tags: ['melee', 'ranged', 'one-handed', 'hammer', 'simple'], source: 'PHB' }, mace: { name: 'Mace', type: 'weapon', category: 'simple_melee', damage: '1d6', damageType: 'bludgeoning', properties: [], weight: 4, value: 5, tags: ['melee', 'one-handed', 'bludgeon', 'simple'], source: 'PHB' }, quarterstaff: { name: 'Quarterstaff', type: 'weapon', category: 'simple_melee', damage: '1d6', damageType: 'bludgeoning', properties: ['versatile', 'monk'], versatileDamage: '1d8', weight: 4, value: 0.2, // 2 sp tags: ['melee', 'one-handed', 'two-handed', 'staff', 'simple', 'monk'], source: 'PHB' }, sickle: { name: 'Sickle', type: 'weapon', category: 'simple_melee', damage: '1d4', damageType: 'slashing', properties: ['light'], weight: 2, value: 1, tags: ['melee', 'one-handed', 'blade', 'simple'], source: 'PHB' }, spear: { name: 'Spear', type: 'weapon', category: 'simple_melee', damage: '1d6', damageType: 'piercing', properties: ['thrown', 'versatile', 'monk'], range: { normal: 20, long: 60 }, versatileDamage: '1d8', weight: 3, value: 1, tags: ['melee', 'ranged', 'one-handed', 'two-handed', 'spear', 'simple', 'monk'], source: 'PHB' } }; // ═══════════════════════════════════════════════════════════════════════════ // SIMPLE RANGED WEAPONS // ═══════════════════════════════════════════════════════════════════════════ const SIMPLE_RANGED: Record<string, WeaponPreset> = { light_crossbow: { name: 'Light Crossbow', type: 'weapon', category: 'simple_ranged', damage: '1d8', damageType: 'piercing', properties: ['ammunition', 'loading', 'two_handed'], range: { normal: 80, long: 320 }, weight: 5, value: 25, tags: ['ranged', 'two-handed', 'crossbow', 'simple'], source: 'PHB' }, dart: { name: 'Dart', type: 'weapon', category: 'simple_ranged', damage: '1d4', damageType: 'piercing', properties: ['finesse', 'thrown'], range: { normal: 20, long: 60 }, weight: 0.25, value: 0.05, // 5 cp tags: ['ranged', 'thrown', 'simple', 'finesse'], source: 'PHB' }, shortbow: { name: 'Shortbow', type: 'weapon', category: 'simple_ranged', damage: '1d6', damageType: 'piercing', properties: ['ammunition', 'two_handed'], range: { normal: 80, long: 320 }, weight: 2, value: 25, tags: ['ranged', 'two-handed', 'bow', 'simple'], source: 'PHB' }, sling: { name: 'Sling', type: 'weapon', category: 'simple_ranged', damage: '1d4', damageType: 'bludgeoning', properties: ['ammunition'], range: { normal: 30, long: 120 }, weight: 0, value: 0.1, // 1 sp tags: ['ranged', 'one-handed', 'simple'], source: 'PHB' } }; // ═══════════════════════════════════════════════════════════════════════════ // MARTIAL MELEE WEAPONS // ═══════════════════════════════════════════════════════════════════════════ const MARTIAL_MELEE: Record<string, WeaponPreset> = { battleaxe: { name: 'Battleaxe', type: 'weapon', category: 'martial_melee', damage: '1d8', damageType: 'slashing', properties: ['versatile'], versatileDamage: '1d10', weight: 4, value: 10, tags: ['melee', 'one-handed', 'two-handed', 'axe', 'martial'], source: 'PHB' }, flail: { name: 'Flail', type: 'weapon', category: 'martial_melee', damage: '1d8', damageType: 'bludgeoning', properties: [], weight: 2, value: 10, tags: ['melee', 'one-handed', 'bludgeon', 'martial'], source: 'PHB' }, glaive: { name: 'Glaive', type: 'weapon', category: 'martial_melee', damage: '1d10', damageType: 'slashing', properties: ['heavy', 'reach', 'two_handed'], weight: 6, value: 20, tags: ['melee', 'two-handed', 'polearm', 'reach', 'martial'], source: 'PHB' }, greataxe: { name: 'Greataxe', type: 'weapon', category: 'martial_melee', damage: '1d12', damageType: 'slashing', properties: ['heavy', 'two_handed'], weight: 7, value: 30, tags: ['melee', 'two-handed', 'axe', 'martial'], source: 'PHB' }, greatsword: { name: 'Greatsword', type: 'weapon', category: 'martial_melee', damage: '2d6', damageType: 'slashing', properties: ['heavy', 'two_handed'], weight: 6, value: 50, tags: ['melee', 'two-handed', 'blade', 'martial'], source: 'PHB' }, halberd: { name: 'Halberd', type: 'weapon', category: 'martial_melee', damage: '1d10', damageType: 'slashing', properties: ['heavy', 'reach', 'two_handed'], weight: 6, value: 20, tags: ['melee', 'two-handed', 'polearm', 'reach', 'martial'], source: 'PHB' }, lance: { name: 'Lance', type: 'weapon', category: 'martial_melee', damage: '1d12', damageType: 'piercing', properties: ['reach', 'special'], weight: 6, value: 10, description: 'You have disadvantage when you use a lance to attack a target within 5 feet of you. Also, a lance requires two hands to wield when you aren\'t mounted.', tags: ['melee', 'one-handed', 'two-handed', 'reach', 'martial', 'mounted'], source: 'PHB' }, longsword: { name: 'Longsword', type: 'weapon', category: 'martial_melee', damage: '1d8', damageType: 'slashing', properties: ['versatile'], versatileDamage: '1d10', weight: 3, value: 15, tags: ['melee', 'one-handed', 'two-handed', 'blade', 'martial'], source: 'PHB' }, maul: { name: 'Maul', type: 'weapon', category: 'martial_melee', damage: '2d6', damageType: 'bludgeoning', properties: ['heavy', 'two_handed'], weight: 10, value: 10, tags: ['melee', 'two-handed', 'bludgeon', 'hammer', 'martial'], source: 'PHB' }, morningstar: { name: 'Morningstar', type: 'weapon', category: 'martial_melee', damage: '1d8', damageType: 'piercing', properties: [], weight: 4, value: 15, tags: ['melee', 'one-handed', 'bludgeon', 'martial'], source: 'PHB' }, pike: { name: 'Pike', type: 'weapon', category: 'martial_melee', damage: '1d10', damageType: 'piercing', properties: ['heavy', 'reach', 'two_handed'], weight: 18, value: 5, tags: ['melee', 'two-handed', 'polearm', 'reach', 'martial'], source: 'PHB' }, rapier: { name: 'Rapier', type: 'weapon', category: 'martial_melee', damage: '1d8', damageType: 'piercing', properties: ['finesse'], weight: 2, value: 25, tags: ['melee', 'one-handed', 'blade', 'martial', 'finesse'], source: 'PHB' }, scimitar: { name: 'Scimitar', type: 'weapon', category: 'martial_melee', damage: '1d6', damageType: 'slashing', properties: ['finesse', 'light'], weight: 3, value: 25, tags: ['melee', 'one-handed', 'blade', 'martial', 'finesse'], source: 'PHB' }, shortsword: { name: 'Shortsword', type: 'weapon', category: 'martial_melee', damage: '1d6', damageType: 'piercing', properties: ['finesse', 'light'], weight: 2, value: 10, tags: ['melee', 'one-handed', 'blade', 'martial', 'finesse'], source: 'PHB' }, trident: { name: 'Trident', type: 'weapon', category: 'martial_melee', damage: '1d6', damageType: 'piercing', properties: ['thrown', 'versatile'], range: { normal: 20, long: 60 }, versatileDamage: '1d8', weight: 4, value: 5, tags: ['melee', 'ranged', 'one-handed', 'two-handed', 'spear', 'martial'], source: 'PHB' }, war_pick: { name: 'War Pick', type: 'weapon', category: 'martial_melee', damage: '1d8', damageType: 'piercing', properties: [], weight: 2, value: 5, tags: ['melee', 'one-handed', 'martial'], source: 'PHB' }, warhammer: { name: 'Warhammer', type: 'weapon', category: 'martial_melee', damage: '1d8', damageType: 'bludgeoning', properties: ['versatile'], versatileDamage: '1d10', weight: 2, value: 15, tags: ['melee', 'one-handed', 'two-handed', 'hammer', 'martial'], source: 'PHB' }, whip: { name: 'Whip', type: 'weapon', category: 'martial_melee', damage: '1d4', damageType: 'slashing', properties: ['finesse', 'reach'], weight: 3, value: 2, tags: ['melee', 'one-handed', 'reach', 'martial', 'finesse'], source: 'PHB' } }; // ═══════════════════════════════════════════════════════════════════════════ // MARTIAL RANGED WEAPONS // ═══════════════════════════════════════════════════════════════════════════ const MARTIAL_RANGED: Record<string, WeaponPreset> = { blowgun: { name: 'Blowgun', type: 'weapon', category: 'martial_ranged', damage: '1', damageType: 'piercing', properties: ['ammunition', 'loading'], range: { normal: 25, long: 100 }, weight: 1, value: 10, tags: ['ranged', 'one-handed', 'martial'], source: 'PHB' }, hand_crossbow: { name: 'Hand Crossbow', type: 'weapon', category: 'martial_ranged', damage: '1d6', damageType: 'piercing', properties: ['ammunition', 'light', 'loading'], range: { normal: 30, long: 120 }, weight: 3, value: 75, tags: ['ranged', 'one-handed', 'crossbow', 'martial'], source: 'PHB' }, heavy_crossbow: { name: 'Heavy Crossbow', type: 'weapon', category: 'martial_ranged', damage: '1d10', damageType: 'piercing', properties: ['ammunition', 'heavy', 'loading', 'two_handed'], range: { normal: 100, long: 400 }, weight: 18, value: 50, tags: ['ranged', 'two-handed', 'crossbow', 'martial'], source: 'PHB' }, longbow: { name: 'Longbow', type: 'weapon', category: 'martial_ranged', damage: '1d8', damageType: 'piercing', properties: ['ammunition', 'heavy', 'two_handed'], range: { normal: 150, long: 600 }, weight: 2, value: 50, tags: ['ranged', 'two-handed', 'bow', 'martial'], source: 'PHB' }, net: { name: 'Net', type: 'weapon', category: 'martial_ranged', damage: '0', damageType: 'bludgeoning', properties: ['thrown', 'special'], range: { normal: 5, long: 15 }, weight: 3, value: 1, description: 'A Large or smaller creature hit by a net is restrained until it is freed. A net has no effect on creatures that are formless, or creatures that are Huge or larger. A creature can use its action to make a DC 10 Strength check, freeing itself or another creature within its reach on a success. Dealing 5 slashing damage to the net (AC 10) also frees the creature without harming it, ending the effect and destroying the net.', tags: ['ranged', 'thrown', 'martial', 'control'], source: 'PHB' } }; // ═══════════════════════════════════════════════════════════════════════════ // UNIFIED WEAPONS COLLECTION // ═══════════════════════════════════════════════════════════════════════════ const WEAPONS: Record<string, WeaponPreset> = { ...SIMPLE_MELEE, ...SIMPLE_RANGED, ...MARTIAL_MELEE, ...MARTIAL_RANGED }; // ═══════════════════════════════════════════════════════════════════════════ // EXPORTED PRESET SOURCE // ═══════════════════════════════════════════════════════════════════════════ export const WeaponsPHB: PresetSource = { id: 'weapons-phb', name: 'Player\'s Handbook Weapons', source: 'PHB', version: '1.0.0', presets: WEAPONS };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mnehmos/rpg-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server