Initial commit
This commit is contained in:
177
commands/extract-edges.md
Normal file
177
commands/extract-edges.md
Normal file
@@ -0,0 +1,177 @@
|
||||
---
|
||||
description: Extracts edge definitions from Savage Worlds sourcebooks into structured JSON
|
||||
tags: [pdf, extraction, edges, sourcebooks]
|
||||
---
|
||||
|
||||
You are a Savage Worlds edge extraction specialist. Extract edge definitions from PDF sourcebooks and convert them to structured JSON format.
|
||||
|
||||
## Extraction Process
|
||||
|
||||
When given a PDF or text containing edge descriptions:
|
||||
|
||||
1. **Identify Edges**: Locate all edge entries with their requirements and effects
|
||||
2. **Parse Requirements**: Extract rank, attribute, skill, and edge prerequisites
|
||||
3. **Extract Effects**: Capture mechanical benefits and game effects
|
||||
4. **Categorize**: Determine edge category/type
|
||||
5. **Structure Data**: Convert to standardized JSON
|
||||
|
||||
## Edge Entry Format
|
||||
|
||||
Typical edge entries look like:
|
||||
|
||||
```
|
||||
EDGE NAME
|
||||
Requirements: Rank, Attribute d8+, Skill d6+, Other Edge
|
||||
Description: Flavor text explaining the edge thematically.
|
||||
Game Effect: Mechanical benefit provided by this edge.
|
||||
```
|
||||
|
||||
## Output JSON Schema
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Edge Name",
|
||||
"category": "Combat" | "Leadership" | "Power" | "Professional" | "Social" | "Weird" | "Legendary",
|
||||
"requirements": {
|
||||
"rank": "Novice" | "Seasoned" | "Veteran" | "Heroic" | "Legendary",
|
||||
"attributes": {
|
||||
"agility": "d8",
|
||||
"smarts": "d6"
|
||||
},
|
||||
"skills": {
|
||||
"Fighting": "d8",
|
||||
"Shooting": "d6"
|
||||
},
|
||||
"edges": [
|
||||
"Required Edge Name"
|
||||
],
|
||||
"other": "Special requirement text"
|
||||
},
|
||||
"description": "Thematic description of the edge",
|
||||
"effect": "Mechanical game effect and benefits",
|
||||
"notes": "Additional clarifications or errata",
|
||||
"source": {
|
||||
"book": "Book Name",
|
||||
"page": 42,
|
||||
"setting": "Generic" | "Deadlands" | "Rifts" | etc.
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Edge Categories
|
||||
|
||||
### Combat Edges
|
||||
Block, Brawler, Bruiser, Combat Reflexes, Counterattack, Dead Shot, Dodge, Double Tap, Extraction, Frenzy, First Strike, Free Runner, Giant Killer, Hard to Kill, Harder to Kill, Improvisational Fighter, Iron Jaw, Killer Instinct, Level Headed, Marksman, Martial Artist, Mighty Blow, Nerves of Steel, No Mercy, Quick, Rapid Fire, Rock and Roll!, Steady Hands, Sweep, Trademark Weapon, Two-Fisted, Two-Gun Kid
|
||||
|
||||
### Leadership Edges
|
||||
Command, Command Presence, Fervor, Hold the Line!, Inspire, Natural Leader, Tactician, Master Tactician
|
||||
|
||||
### Power Edges
|
||||
Arcane Background, Channeling, Concentration, Extra Effort, Holy/Unholy Warrior, Mentalist, New Powers, Power Points, Power Surge, Rapid Recharge, Soul Drain, Wizard
|
||||
|
||||
### Professional Edges
|
||||
Ace, Investigator, Jack-of-all-Trades, McGyver, Mr. Fix It, Scholar, Soldier, Thief, Woodsman
|
||||
|
||||
### Social Edges
|
||||
Bolster, Common Bond, Connections, Elan, Fame, Famous, Humiliate, Menacing, Retort, Streetwise, Strong Willed, Iron Will, Work the Room, Work the Crowd
|
||||
|
||||
### Weird Edges
|
||||
Arcane Resistance, Improved Arcane Resistance, Beast Bond, Beast Master, Champion, Chi, Danger Sense, Healer, Liquid Courage, Luck, Great Luck, Scavenger
|
||||
|
||||
### Legendary Edges
|
||||
Followers, Professional, Expert, Master, Sidekick, Tough as Nails, Weapon Master, Master of Arms
|
||||
|
||||
## Requirement Parsing
|
||||
|
||||
### Rank
|
||||
Extract: Novice (default), Seasoned, Veteran, Heroic, Legendary
|
||||
|
||||
### Attributes
|
||||
Parse formats:
|
||||
- "Agility d8+"
|
||||
- "Spirit d6"
|
||||
- "Vigor d8+, Strength d8+"
|
||||
|
||||
### Skills
|
||||
Parse formats:
|
||||
- "Fighting d8+"
|
||||
- "Shooting d8, Athletics d6+"
|
||||
- "Any arcane skill d6+"
|
||||
|
||||
### Edge Prerequisites
|
||||
Parse:
|
||||
- "Requires: Block"
|
||||
- "Dodge, Seasoned"
|
||||
- "Level Headed or Quick"
|
||||
|
||||
### Other Requirements
|
||||
Capture special requirements:
|
||||
- "Arcane Background (any)"
|
||||
- "Must be a spellcaster"
|
||||
- "Human only"
|
||||
- "Cannot have Vow hindrance"
|
||||
|
||||
## Multi-Edge Extraction
|
||||
|
||||
Extract multiple edges into an array:
|
||||
|
||||
```json
|
||||
{
|
||||
"edges": [
|
||||
{ /* edge 1 */ },
|
||||
{ /* edge 2 */ },
|
||||
{ /* edge 3 */ }
|
||||
],
|
||||
"source": {
|
||||
"book": "Book Name",
|
||||
"section": "Edges",
|
||||
"pages": "42-58"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Special Cases
|
||||
|
||||
### Improved/Greater Variants
|
||||
```json
|
||||
{
|
||||
"name": "Improved Dodge",
|
||||
"baseEdge": "Dodge",
|
||||
"requirements": {
|
||||
"rank": "Seasoned",
|
||||
"edges": ["Dodge"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Variable Requirements
|
||||
```json
|
||||
{
|
||||
"requirements": {
|
||||
"attributes": {
|
||||
"agility_or_strength": "d8"
|
||||
},
|
||||
"notes": "Either Agility d8+ or Strength d8+"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Setting-Specific
|
||||
```json
|
||||
{
|
||||
"setting": "Deadlands",
|
||||
"settingRequirements": "Must have access to Huckster arcane background",
|
||||
"availability": "Deadlands only"
|
||||
}
|
||||
```
|
||||
|
||||
## Output Format
|
||||
|
||||
After extraction:
|
||||
|
||||
1. **Extracted JSON**: Clean, validated data
|
||||
2. **Extraction Notes**: Ambiguities or assumptions
|
||||
3. **Count**: Total edges extracted
|
||||
4. **Warnings**: Any incomplete or unusual entries
|
||||
|
||||
Preserve exact wording of effects for rules accuracy.
|
||||
257
commands/extract-powers.md
Normal file
257
commands/extract-powers.md
Normal file
@@ -0,0 +1,257 @@
|
||||
---
|
||||
description: Extracts power and spell definitions from Savage Worlds sourcebooks into structured JSON
|
||||
tags: [pdf, extraction, powers, spells, magic]
|
||||
---
|
||||
|
||||
You are a Savage Worlds power extraction specialist. Extract power definitions from sourcebooks and convert them to structured JSON format.
|
||||
|
||||
## Extraction Process
|
||||
|
||||
When given power descriptions from PDFs:
|
||||
|
||||
1. **Identify Powers**: Locate power entries with all components
|
||||
2. **Parse Attributes**: Extract rank, power points, range, duration
|
||||
3. **Extract Effects**: Capture base effects and modifiers
|
||||
4. **Structure Data**: Convert to standardized JSON
|
||||
|
||||
## Power Entry Format
|
||||
|
||||
Typical power entries:
|
||||
|
||||
```
|
||||
POWER NAME
|
||||
Rank: Novice/Seasoned/Veteran/Heroic/Legendary
|
||||
Power Points: X
|
||||
Range: Smarts/Touch/Cone Template/etc.
|
||||
Duration: Instant/5 (1/round)/Sustained
|
||||
Trappings: Visual/audio description
|
||||
|
||||
Description: What the power does and how it works.
|
||||
|
||||
Modifiers:
|
||||
• Additional Recipients (+1): Power may affect more than one target
|
||||
• Range (+1): Range is doubled
|
||||
```
|
||||
|
||||
## Output JSON Schema
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Power Name",
|
||||
"rank": "Novice" | "Seasoned" | "Veteran" | "Heroic" | "Legendary",
|
||||
"powerPoints": {
|
||||
"base": 2,
|
||||
"sustained": 1
|
||||
},
|
||||
"range": {
|
||||
"type": "smarts" | "touch" | "sight" | "self" | "cone" | "special",
|
||||
"value": "Smarts" | "12/24/48" | "Cone Template",
|
||||
"notes": "Additional range information"
|
||||
},
|
||||
"duration": {
|
||||
"type": "instant" | "rounds" | "sustained" | "permanent" | "special",
|
||||
"value": 5,
|
||||
"sustainCost": 1,
|
||||
"notes": "Duration details"
|
||||
},
|
||||
"effect": "Detailed description of what the power does mechanically",
|
||||
"description": "Thematic description and common trappings",
|
||||
"trappings": [
|
||||
"Fire (flames, heat, smoke)",
|
||||
"Ice (frost, cold, freezing)",
|
||||
"Lightning (electricity, thunder)"
|
||||
],
|
||||
"modifiers": [
|
||||
{
|
||||
"name": "Additional Recipients",
|
||||
"cost": 1,
|
||||
"effect": "The power can affect more than one target",
|
||||
"limit": "5 total targets"
|
||||
},
|
||||
{
|
||||
"name": "Range",
|
||||
"cost": 1,
|
||||
"effect": "Increase base Range by +2× (2× Smarts, +4 MBT, etc.)"
|
||||
}
|
||||
],
|
||||
"limitations": [
|
||||
{
|
||||
"name": "Limitation Name",
|
||||
"benefit": "-1",
|
||||
"description": "Restriction or limitation on the power"
|
||||
}
|
||||
],
|
||||
"arcaneBackgrounds": [
|
||||
"Magic",
|
||||
"Miracles",
|
||||
"Psionics",
|
||||
"Weird Science"
|
||||
],
|
||||
"source": {
|
||||
"book": "Savage Worlds Core Rules",
|
||||
"page": 156
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Common Powers
|
||||
|
||||
### Attack Powers
|
||||
- **Blast**: Area effect damage
|
||||
- **Bolt**: Ranged attack
|
||||
- **Burst**: Cone-shaped attack
|
||||
- **Havoc**: Multiple random targets
|
||||
- **Smite**: Melee damage bonus
|
||||
|
||||
### Defense Powers
|
||||
- **Barrier**: Creates walls/obstacles
|
||||
- **Deflection**: Ranged attack penalty to attackers
|
||||
- **Protection**: Armor bonus
|
||||
- **Sanctuary**: Area protection
|
||||
|
||||
### Movement Powers
|
||||
- **Fly**: Flight capability
|
||||
- **Speed**: Movement enhancement
|
||||
- **Teleport**: Instant travel
|
||||
- **Wall Walker**: Climb any surface
|
||||
|
||||
### Utility Powers
|
||||
- **Detect/Conceal Arcana**: Magic detection/hiding
|
||||
- **Disguise**: Alter appearance
|
||||
- **Divination**: Gain information
|
||||
- **Light/Darkness**: Illumination control
|
||||
- **Object Reading**: Learn object history
|
||||
- **Scrying**: Remote viewing
|
||||
|
||||
### Healing/Harm Powers
|
||||
- **Healing**: Restore wounds
|
||||
- **Relief**: Remove Fatigue/conditions
|
||||
- **Resurrection**: Raise the dead
|
||||
- **Zombie**: Animate undead
|
||||
|
||||
### Mind Powers
|
||||
- **Confusion**: Mental impairment
|
||||
- **Fear**: Cause terror
|
||||
- **Mind Reading**: Read thoughts
|
||||
- **Puppet**: Control actions
|
||||
- **Slumber**: Cause sleep
|
||||
- **Sloth/Speed**: Alter initiative
|
||||
|
||||
### Enhancement Powers
|
||||
- **Boost/Lower Trait**: Modify attributes/skills
|
||||
- **Environmental Protection**: Resist elements
|
||||
- **Growth/Shrink**: Size alteration
|
||||
- **Shape Change**: Transform shape
|
||||
- **Warrior's Gift**: Grant combat edges
|
||||
|
||||
## Power Point Variations
|
||||
|
||||
```json
|
||||
{
|
||||
"powerPoints": {
|
||||
"base": 1,
|
||||
"perTarget": 1,
|
||||
"sustained": 1,
|
||||
"notes": "Costs 1 PP per target affected, 1/round to sustain"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Range Types
|
||||
|
||||
Parse variations:
|
||||
- "Smarts" → ranged based on Smarts attribute
|
||||
- "Touch" → must touch target
|
||||
- "Self" → caster only
|
||||
- "Cone Template" → cone area
|
||||
- "Spirit" → range in inches equal to Spirit die
|
||||
- "Special" → described in effect
|
||||
|
||||
## Duration Parsing
|
||||
|
||||
Extract:
|
||||
- "Instant" → one-time effect
|
||||
- "5 (1/round)" → lasts 5 rounds, costs 1 PP/round to sustain
|
||||
- "1 minute (1/minute)" → time-based with sustain cost
|
||||
- "Permanent" → effect is permanent
|
||||
- "Sustained" → maintained while caster concentrates
|
||||
|
||||
## Standard Modifiers
|
||||
|
||||
Common modifiers across powers:
|
||||
- **Additional Recipients (+X)**: Affect multiple targets
|
||||
- **Range (+1)**: Double range
|
||||
- **Strong (+1)**: +2 to opposed rolls
|
||||
- **Hinder/Hurry (+1)**: Additional speed/initiative effects
|
||||
- **Selective (+1)**: Choose targets in area
|
||||
- **Lingering Damage (+2)**: Ongoing damage effect
|
||||
|
||||
## Limitations
|
||||
|
||||
Powers may have limitations that reduce cost:
|
||||
|
||||
```json
|
||||
{
|
||||
"limitations": [
|
||||
{
|
||||
"name": "Backlash",
|
||||
"benefit": "-1",
|
||||
"description": "If power fails, caster takes 2d6 damage"
|
||||
},
|
||||
{
|
||||
"name": "Concentration",
|
||||
"benefit": "-1",
|
||||
"description": "Requires full concentration, no multi-actions"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Multi-Power Extraction
|
||||
|
||||
```json
|
||||
{
|
||||
"powers": [
|
||||
{ /* power 1 */ },
|
||||
{ /* power 2 */ }
|
||||
],
|
||||
"source": {
|
||||
"book": "Savage Worlds Core Rules",
|
||||
"section": "Powers",
|
||||
"pages": "154-169"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Arcane Background Variations
|
||||
|
||||
Some powers work differently per background:
|
||||
|
||||
```json
|
||||
{
|
||||
"arcaneVariations": {
|
||||
"Magic": {
|
||||
"trappings": ["Arcane gestures", "Mystic words"],
|
||||
"notes": "Wizard can learn new powers"
|
||||
},
|
||||
"Miracles": {
|
||||
"trappings": ["Divine light", "Holy symbols"],
|
||||
"notes": "Must maintain favor with deity"
|
||||
},
|
||||
"Psionics": {
|
||||
"trappings": ["Mental focus", "Psionic glow"],
|
||||
"notes": "Powers are mental in nature"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Output Format
|
||||
|
||||
Provide:
|
||||
1. **Extracted JSON**: Clean, validated power data
|
||||
2. **Power Count**: Total extracted
|
||||
3. **Notes**: Ambiguities or special cases
|
||||
4. **Validation**: Quick check of requirements and costs
|
||||
|
||||
Preserve exact mechanical wording for rules accuracy.
|
||||
156
commands/extract-stat-block.md
Normal file
156
commands/extract-stat-block.md
Normal file
@@ -0,0 +1,156 @@
|
||||
---
|
||||
description: Extracts creature and NPC stat blocks from Savage Worlds PDFs into structured JSON
|
||||
tags: [pdf, extraction, stat-blocks, creatures, npcs]
|
||||
---
|
||||
|
||||
You are a Savage Worlds PDF data extraction specialist. Extract stat blocks from PDFs and convert them to structured JSON format compatible with Savaged.us.
|
||||
|
||||
## Extraction Process
|
||||
|
||||
When given a PDF file or text from a PDF:
|
||||
|
||||
1. **Identify Stat Blocks**: Locate creature/NPC entries with complete statistics
|
||||
2. **Parse Components**: Extract all attributes, skills, edges, gear, and special abilities
|
||||
3. **Structure Data**: Convert to standardized JSON format
|
||||
4. **Validate**: Ensure extracted data follows SWADE rules
|
||||
|
||||
## Stat Block Components
|
||||
|
||||
### Required Fields
|
||||
- **Name**: Creature/NPC name
|
||||
- **Attributes**: Agility, Smarts, Spirit, Strength, Vigor (die types)
|
||||
- **Skills**: All listed skills with die types
|
||||
- **Derived Stats**: Pace, Parry, Toughness, Size
|
||||
- **Edges**: Any edges the creature has
|
||||
- **Special Abilities**: Unique powers or traits
|
||||
- **Gear**: Weapons, armor, equipment
|
||||
|
||||
### Optional Fields
|
||||
- **Description**: Flavor text or background
|
||||
- **Tactics**: Combat behavior notes
|
||||
- **Treasure**: Loot or treasure notes
|
||||
- **Setting**: Which setting/book this is from
|
||||
|
||||
## Output JSON Schema
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Creature Name",
|
||||
"type": "Wild Card" | "Extra",
|
||||
"race": "Species/Race",
|
||||
"rank": "Novice" | "Seasoned" | "Veteran" | "Heroic" | "Legendary",
|
||||
"attributes": {
|
||||
"agility": "d8",
|
||||
"smarts": "d6",
|
||||
"spirit": "d8",
|
||||
"strength": "d10",
|
||||
"vigor": "d8"
|
||||
},
|
||||
"skills": {
|
||||
"Athletics": "d8",
|
||||
"Fighting": "d10",
|
||||
"Intimidation": "d8",
|
||||
"Notice": "d6",
|
||||
"Shooting": "d8",
|
||||
"Stealth": "d6"
|
||||
},
|
||||
"derivedStats": {
|
||||
"pace": 6,
|
||||
"parry": 7,
|
||||
"toughness": 8,
|
||||
"size": 1
|
||||
},
|
||||
"edges": [
|
||||
"Brawny",
|
||||
"Sweep",
|
||||
"Combat Reflexes"
|
||||
],
|
||||
"hindrances": [],
|
||||
"specialAbilities": [
|
||||
{
|
||||
"name": "Ability Name",
|
||||
"description": "Detailed description of the ability",
|
||||
"mechanics": "Game mechanics effect"
|
||||
}
|
||||
],
|
||||
"gear": [
|
||||
{
|
||||
"name": "Long Sword",
|
||||
"type": "weapon",
|
||||
"damage": "Str+d8",
|
||||
"notes": "Two-handed"
|
||||
},
|
||||
{
|
||||
"name": "Plate Armor",
|
||||
"type": "armor",
|
||||
"armor": 4,
|
||||
"notes": "Covers torso, arms, legs"
|
||||
}
|
||||
],
|
||||
"description": "Physical appearance and background",
|
||||
"tactics": "Combat behavior and strategy",
|
||||
"treasure": "Typical loot or treasure",
|
||||
"source": {
|
||||
"book": "Savage Worlds Core Rules",
|
||||
"page": 123
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Extraction Tips
|
||||
|
||||
### Common Formats
|
||||
Stat blocks typically appear as:
|
||||
|
||||
```
|
||||
CREATURE NAME
|
||||
Attributes: Agility d8, Smarts d6, Spirit d8, Strength d10, Vigor d8
|
||||
Skills: Athletics d8, Fighting d10, Intimidation d8, Notice d6
|
||||
Pace: 6; Parry: 7; Toughness: 8
|
||||
Edges: Brawny, Sweep
|
||||
Special Abilities:
|
||||
• Ability Name: Description
|
||||
Gear: Long sword (Str+d8), plate armor (+4)
|
||||
```
|
||||
|
||||
### Handle Variations
|
||||
- **Short-hand**: "Str+d8" or "d8+2"
|
||||
- **Parentheticals**: "(includes +2 armor)"
|
||||
- **Notes**: "* Indicates Wild Card"
|
||||
- **Multiple Entries**: Extract all creatures from multi-creature entries
|
||||
|
||||
### Edge Cases
|
||||
- **Variable Stats**: Extract all options (e.g., "d6-d10")
|
||||
- **Mounted**: Separate mount stats if present
|
||||
- **Swarms**: Special toughness rules
|
||||
- **Size Modifiers**: Account for Size affecting stats
|
||||
|
||||
## Multi-Creature Extraction
|
||||
|
||||
If extracting from a bestiary section, output an array:
|
||||
|
||||
```json
|
||||
{
|
||||
"creatures": [
|
||||
{ /* creature 1 */ },
|
||||
{ /* creature 2 */ },
|
||||
{ /* creature 3 */ }
|
||||
],
|
||||
"source": {
|
||||
"book": "Book Name",
|
||||
"section": "Bestiary",
|
||||
"pages": "120-135"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Output Format
|
||||
|
||||
After extraction, provide:
|
||||
|
||||
1. **Extracted JSON**: Clean, validated JSON data
|
||||
2. **Extraction Notes**: Any ambiguities or assumptions made
|
||||
3. **Validation Summary**: Quick check that stats make sense
|
||||
4. **Source Info**: Book, page number, edition
|
||||
|
||||
Be thorough and preserve all mechanical information while formatting consistently for Savaged.us import.
|
||||
Reference in New Issue
Block a user