NPC shop implimented

This commit is contained in:
2025-11-29 01:16:46 -06:00
parent 32af625d14
commit 8bd494a52f
17 changed files with 4265 additions and 17 deletions

View File

@@ -0,0 +1,246 @@
# Base Shield Templates for Procedural Generation
#
# These templates define the foundation that affixes attach to.
# Example: "Wooden Shield" + "Reinforced" prefix = "Reinforced Wooden Shield"
#
# Shield categories:
# - Light Shields: Low defense, high mobility (bucklers)
# - Medium Shields: Balanced defense/weight (round shields, kite shields)
# - Heavy Shields: High defense, reduced mobility (tower shields)
# - Magical Shields: Low physical defense, high resistance (arcane aegis)
#
# Template Structure:
# template_id: Unique identifier
# name: Base item name
# item_type: "armor" (shields use armor type)
# slot: "off_hand" (shields occupy off-hand slot)
# description: Flavor text
# base_defense: Physical damage reduction
# base_resistance: Magical damage reduction
# base_value: Gold value
# required_level: Min level to use/drop
# drop_weight: Higher = more common (1.0 = standard)
# min_rarity: Minimum rarity for this template
# block_chance: Chance to fully block an attack (optional)
shields:
# ==================== LIGHT SHIELDS (HIGH MOBILITY) ====================
buckler:
template_id: "buckler"
name: "Buckler"
item_type: "armor"
slot: "off_hand"
description: "A small, round shield strapped to the forearm. Offers minimal protection but doesn't hinder movement."
base_defense: 3
base_resistance: 0
base_value: 20
required_level: 1
drop_weight: 1.5
block_chance: 0.05
parrying_buckler:
template_id: "parrying_buckler"
name: "Parrying Buckler"
item_type: "armor"
slot: "off_hand"
description: "A lightweight buckler with a reinforced edge, designed for deflecting blows."
base_defense: 4
base_resistance: 0
base_value: 45
required_level: 3
drop_weight: 1.0
block_chance: 0.08
# ==================== MEDIUM SHIELDS (BALANCED) ====================
wooden_shield:
template_id: "wooden_shield"
name: "Wooden Shield"
item_type: "armor"
slot: "off_hand"
description: "A basic shield carved from sturdy oak. Reliable protection for new adventurers."
base_defense: 5
base_resistance: 1
base_value: 35
required_level: 1
drop_weight: 1.3
round_shield:
template_id: "round_shield"
name: "Round Shield"
item_type: "armor"
slot: "off_hand"
description: "A circular shield with an iron boss. Popular among infantry and mercenaries."
base_defense: 7
base_resistance: 1
base_value: 50
required_level: 2
drop_weight: 1.2
iron_shield:
template_id: "iron_shield"
name: "Iron Shield"
item_type: "armor"
slot: "off_hand"
description: "A solid iron shield. Heavy but dependable."
base_defense: 9
base_resistance: 1
base_value: 70
required_level: 3
drop_weight: 1.0
kite_shield:
template_id: "kite_shield"
name: "Kite Shield"
item_type: "armor"
slot: "off_hand"
description: "A tall, tapered shield that protects the entire body. Favored by knights."
base_defense: 10
base_resistance: 2
base_value: 80
required_level: 3
drop_weight: 1.0
heater_shield:
template_id: "heater_shield"
name: "Heater Shield"
item_type: "armor"
slot: "off_hand"
description: "A classic triangular shield with excellent balance of protection and mobility."
base_defense: 12
base_resistance: 2
base_value: 100
required_level: 4
drop_weight: 0.9
steel_shield:
template_id: "steel_shield"
name: "Steel Shield"
item_type: "armor"
slot: "off_hand"
description: "A finely crafted steel shield. Durable and well-balanced."
base_defense: 14
base_resistance: 2
base_value: 125
required_level: 5
drop_weight: 0.8
min_rarity: "uncommon"
# ==================== HEAVY SHIELDS (MAXIMUM DEFENSE) ====================
tower_shield:
template_id: "tower_shield"
name: "Tower Shield"
item_type: "armor"
slot: "off_hand"
description: "A massive shield that covers the entire body. Extremely heavy but offers unparalleled protection."
base_defense: 18
base_resistance: 3
base_value: 175
required_level: 6
drop_weight: 0.6
min_rarity: "uncommon"
block_chance: 0.12
fortified_tower_shield:
template_id: "fortified_tower_shield"
name: "Fortified Tower Shield"
item_type: "armor"
slot: "off_hand"
description: "A reinforced tower shield with iron plating. A mobile wall on the battlefield."
base_defense: 22
base_resistance: 4
base_value: 250
required_level: 7
drop_weight: 0.4
min_rarity: "rare"
block_chance: 0.15
# ==================== MAGICAL SHIELDS (HIGH RESISTANCE) ====================
enchanted_buckler:
template_id: "enchanted_buckler"
name: "Enchanted Buckler"
item_type: "armor"
slot: "off_hand"
description: "A small shield inscribed with protective runes. Weak against physical attacks but excellent against magic."
base_defense: 2
base_resistance: 6
base_value: 80
required_level: 3
drop_weight: 0.8
warded_shield:
template_id: "warded_shield"
name: "Warded Shield"
item_type: "armor"
slot: "off_hand"
description: "A shield covered in magical wards that deflect spells."
base_defense: 4
base_resistance: 8
base_value: 110
required_level: 4
drop_weight: 0.7
magical_aegis:
template_id: "magical_aegis"
name: "Magical Aegis"
item_type: "armor"
slot: "off_hand"
description: "An arcane shield that shimmers with protective energy. Prized by battle mages."
base_defense: 8
base_resistance: 10
base_value: 150
required_level: 5
drop_weight: 0.6
min_rarity: "uncommon"
spellguard:
template_id: "spellguard"
name: "Spellguard"
item_type: "armor"
slot: "off_hand"
description: "A crystalline shield forged from condensed magical energy. Near-impervious to spells."
base_defense: 6
base_resistance: 14
base_value: 200
required_level: 6
drop_weight: 0.5
min_rarity: "rare"
# ==================== SPECIALIZED SHIELDS ====================
spiked_shield:
template_id: "spiked_shield"
name: "Spiked Shield"
item_type: "armor"
slot: "off_hand"
description: "A shield with iron spikes. Can be used offensively in close combat."
base_defense: 8
base_resistance: 1
base_value: 90
required_level: 4
drop_weight: 0.8
base_damage: 5
lantern_shield:
template_id: "lantern_shield"
name: "Lantern Shield"
item_type: "armor"
slot: "off_hand"
description: "A peculiar shield with an attached lantern. Useful for dungeon exploration."
base_defense: 6
base_resistance: 1
base_value: 75
required_level: 3
drop_weight: 0.7
provides_light: true
pavise:
template_id: "pavise"
name: "Pavise"
item_type: "armor"
slot: "off_hand"
description: "A large rectangular shield that can be planted in the ground for cover. Favored by crossbowmen."
base_defense: 15
base_resistance: 2
base_value: 130
required_level: 5
drop_weight: 0.6
deployable: true

View File

@@ -0,0 +1,141 @@
shop_id: "general_store"
shop_name: "General Store"
shop_description: "A well-stocked general store with essential supplies for adventurers."
shopkeeper_name: "Merchant Guildmaster"
sell_rate: 0.5 # 50% of buy price when selling items back
inventory:
# === CONSUMABLES ===
# Health Potions
- item_id: "health_potion_tiny"
stock: -1
price: 10
- item_id: "health_potion_small"
stock: -1
price: 25
- item_id: "health_potion_medium"
stock: -1
price: 75
# Mana Potions
- item_id: "mana_potion_tiny"
stock: -1
price: 15
- item_id: "mana_potion_small"
stock: -1
price: 35
- item_id: "mana_potion_medium"
stock: -1
price: 100
# Hybrid Potions
- item_id: "rejuvenation_potion_small"
stock: -1
price: 50
# Cures
- item_id: "antidote"
stock: -1
price: 20
- item_id: "smelling_salts"
stock: -1
price: 15
# Throwables
- item_id: "smoke_bomb"
stock: -1
price: 30
- item_id: "oil_flask"
stock: -1
price: 25
# Food
- item_id: "bread_loaf"
stock: -1
price: 5
- item_id: "ration"
stock: -1
price: 10
- item_id: "cooked_meat"
stock: -1
price: 15
# === WEAPONS (base templates, sold as common) ===
- item_id: "dagger"
stock: -1
price: 25
- item_id: "short_sword"
stock: -1
price: 50
- item_id: "club"
stock: -1
price: 15
- item_id: "shortbow"
stock: -1
price: 45
- item_id: "wand"
stock: -1
price: 40
- item_id: "quarterstaff"
stock: -1
price: 20
# === ARMOR ===
- item_id: "cloth_robe"
stock: -1
price: 30
- item_id: "leather_vest"
stock: -1
price: 60
- item_id: "chain_shirt"
stock: -1
price: 120
- item_id: "scale_mail"
stock: -1
price: 200
# === SHIELDS ===
- item_id: "buckler"
stock: -1
price: 25
- item_id: "wooden_shield"
stock: -1
price: 40
- item_id: "tower_shield"
stock: -1
price: 150
# === ACCESSORIES ===
- item_id: "copper_ring"
stock: -1
price: 20
- item_id: "silver_ring"
stock: -1
price: 50
- item_id: "wooden_pendant"
stock: -1
price: 25
- item_id: "leather_belt"
stock: -1
price: 15

View File

@@ -0,0 +1,487 @@
# Accessory items available for purchase from NPC shops
# These are fixed-stat items (not procedurally generated)
#
# Accessory Slots:
# - ring: Finger slot (typically 2 slots available)
# - amulet: Neck slot (1 slot)
# - belt: Waist slot (1 slot)
#
# All accessories use item_type: armor with their respective slot
items:
# ==========================================================================
# RINGS - Basic
# ==========================================================================
copper_ring:
name: "Copper Ring"
item_type: armor
slot: ring
rarity: common
description: "A simple copper band. Provides a minor boost to the wearer's capabilities."
value: 25
required_level: 1
is_tradeable: true
stat_bonuses:
luck: 1
silver_ring:
name: "Silver Ring"
item_type: armor
slot: ring
rarity: common
description: "A polished silver ring. A step up from copper, with better enchantment potential."
value: 50
required_level: 2
is_tradeable: true
stat_bonuses:
luck: 2
gold_ring:
name: "Gold Ring"
item_type: armor
slot: ring
rarity: uncommon
description: "A gleaming gold ring. The metal's purity enhances its magical properties."
value: 100
required_level: 3
is_tradeable: true
stat_bonuses:
luck: 3
# ==========================================================================
# RINGS - Stat-Specific
# ==========================================================================
ring_of_strength:
name: "Ring of Strength"
item_type: armor
slot: ring
rarity: uncommon
description: "A heavy iron ring etched with symbols of power. Increases physical might."
value: 120
required_level: 3
is_tradeable: true
stat_bonuses:
strength: 3
ring_of_agility:
name: "Ring of Agility"
item_type: armor
slot: ring
rarity: uncommon
description: "A lightweight ring of woven silver. Enhances speed and reflexes."
value: 120
required_level: 3
is_tradeable: true
stat_bonuses:
dexterity: 3
ring_of_intellect:
name: "Ring of Intellect"
item_type: armor
slot: ring
rarity: uncommon
description: "A sapphire-studded ring that sharpens the mind."
value: 120
required_level: 3
is_tradeable: true
stat_bonuses:
intelligence: 3
ring_of_wisdom:
name: "Ring of Wisdom"
item_type: armor
slot: ring
rarity: uncommon
description: "An ancient ring carved from petrified wood. Grants insight and perception."
value: 120
required_level: 3
is_tradeable: true
stat_bonuses:
wisdom: 3
ring_of_fortitude:
name: "Ring of Fortitude"
item_type: armor
slot: ring
rarity: uncommon
description: "A thick band of blackened steel. Toughens the body against harm."
value: 120
required_level: 3
is_tradeable: true
stat_bonuses:
constitution: 3
ring_of_charisma:
name: "Ring of Charisma"
item_type: armor
slot: ring
rarity: uncommon
description: "A elegant ring with a hypnotic gem. Enhances presence and charm."
value: 120
required_level: 3
is_tradeable: true
stat_bonuses:
charisma: 3
# ==========================================================================
# RINGS - Combat
# ==========================================================================
ring_of_protection:
name: "Ring of Protection"
item_type: armor
slot: ring
rarity: rare
description: "A ring inscribed with protective runes. Creates a subtle barrier around the wearer."
value: 200
required_level: 4
is_tradeable: true
base_defense: 5
ring_of_the_magi:
name: "Ring of the Magi"
item_type: armor
slot: ring
rarity: rare
description: "A ring pulsing with arcane energy. Amplifies spellcasting power."
value: 200
required_level: 4
is_tradeable: true
base_spell_power: 5
ring_of_evasion:
name: "Ring of Evasion"
item_type: armor
slot: ring
rarity: rare
description: "A shadowy ring that seems to flicker in and out of sight."
value: 175
required_level: 4
is_tradeable: true
dodge_bonus: 0.05
ring_of_striking:
name: "Ring of Striking"
item_type: armor
slot: ring
rarity: rare
description: "A ring with a ruby set in iron. Enhances the force of physical attacks."
value: 185
required_level: 4
is_tradeable: true
damage_bonus: 3
# ==========================================================================
# AMULETS - Basic
# ==========================================================================
wooden_pendant:
name: "Wooden Pendant"
item_type: armor
slot: amulet
rarity: common
description: "A carved wooden pendant on a leather cord. A humble but effective charm."
value: 30
required_level: 1
is_tradeable: true
max_hp_bonus: 5
bone_amulet:
name: "Bone Amulet"
item_type: armor
slot: amulet
rarity: common
description: "An amulet carved from the bone of a magical beast. Provides minor magical resistance."
value: 40
required_level: 1
is_tradeable: true
base_resistance: 1
silver_locket:
name: "Silver Locket"
item_type: armor
slot: amulet
rarity: uncommon
description: "A small silver locket that can hold a keepsake. Strengthens the wearer's resolve."
value: 75
required_level: 2
is_tradeable: true
max_hp_bonus: 10
travelers_charm:
name: "Traveler's Charm"
item_type: armor
slot: amulet
rarity: common
description: "A lucky charm carried by wanderers. Said to bring fortune on the road."
value: 50
required_level: 2
is_tradeable: true
stat_bonuses:
strength: 1
dexterity: 1
constitution: 1
intelligence: 1
wisdom: 1
charisma: 1
# ==========================================================================
# AMULETS - Specialized
# ==========================================================================
amulet_of_health:
name: "Amulet of Health"
item_type: armor
slot: amulet
rarity: uncommon
description: "A ruby-studded amulet that pulses with life energy."
value: 125
required_level: 3
is_tradeable: true
max_hp_bonus: 15
amulet_of_mana:
name: "Amulet of Mana"
item_type: armor
slot: amulet
rarity: uncommon
description: "A sapphire pendant that glows with arcane power."
value: 125
required_level: 3
is_tradeable: true
max_mp_bonus: 15
amulet_of_warding:
name: "Amulet of Warding"
item_type: armor
slot: amulet
rarity: rare
description: "An intricate amulet covered in protective sigils. Guards against magical harm."
value: 175
required_level: 4
is_tradeable: true
base_resistance: 3
amulet_of_regeneration:
name: "Amulet of Regeneration"
item_type: armor
slot: amulet
rarity: rare
description: "A green gem amulet infused with troll essence. Slowly heals wounds over time."
value: 200
required_level: 5
is_tradeable: true
hp_regen: 2
amulet_of_focus:
name: "Amulet of Focus"
item_type: armor
slot: amulet
rarity: rare
description: "A crystal pendant that helps the wearer concentrate on spellcasting."
value: 175
required_level: 4
is_tradeable: true
base_spell_power: 4
amulet_of_vitality:
name: "Amulet of Vitality"
item_type: armor
slot: amulet
rarity: rare
description: "A vibrant amber amulet that radiates warmth. Enhances the wearer's constitution."
value: 180
required_level: 4
is_tradeable: true
stat_bonuses:
constitution: 4
max_hp_bonus: 10
warriors_medallion:
name: "Warrior's Medallion"
item_type: armor
slot: amulet
rarity: uncommon
description: "A bronze medallion awarded to proven warriors. Inspires courage in battle."
value: 100
required_level: 3
is_tradeable: true
stat_bonuses:
strength: 2
constitution: 2
sorcerers_pendant:
name: "Sorcerer's Pendant"
item_type: armor
slot: amulet
rarity: uncommon
description: "A mystical pendant favored by apprentice mages."
value: 100
required_level: 3
is_tradeable: true
stat_bonuses:
intelligence: 2
wisdom: 2
# ==========================================================================
# BELTS - Basic
# ==========================================================================
leather_belt:
name: "Leather Belt"
item_type: armor
slot: belt
rarity: common
description: "A sturdy leather belt with pouches for carrying supplies."
value: 15
required_level: 1
is_tradeable: true
carry_capacity_bonus: 5
adventurers_belt:
name: "Adventurer's Belt"
item_type: armor
slot: belt
rarity: common
description: "A well-worn belt with loops and pouches. Standard gear for dungeon delvers."
value: 35
required_level: 1
is_tradeable: true
potion_slots_bonus: 2
reinforced_belt:
name: "Reinforced Belt"
item_type: armor
slot: belt
rarity: common
description: "A thick belt reinforced with metal studs. Provides minor protection."
value: 45
required_level: 2
is_tradeable: true
base_defense: 1
# ==========================================================================
# BELTS - Class-Specific
# ==========================================================================
warriors_girdle:
name: "Warrior's Girdle"
item_type: armor
slot: belt
rarity: uncommon
description: "A wide leather girdle worn by seasoned fighters. Supports heavy armor and enhances martial prowess."
value: 100
required_level: 3
is_tradeable: true
stat_bonuses:
strength: 2
constitution: 2
rogues_sash:
name: "Rogue's Sash"
item_type: armor
slot: belt
rarity: uncommon
description: "A dark silk sash with hidden pockets. Favored by thieves and assassins."
value: 100
required_level: 3
is_tradeable: true
stat_bonuses:
dexterity: 2
crit_chance_bonus: 0.05
mages_cord:
name: "Mage's Cord"
item_type: armor
slot: belt
rarity: uncommon
description: "A woven cord inscribed with arcane symbols. Channels magical energy more efficiently."
value: 100
required_level: 3
is_tradeable: true
stat_bonuses:
intelligence: 2
base_spell_power: 5
clerics_cincture:
name: "Cleric's Cincture"
item_type: armor
slot: belt
rarity: uncommon
description: "A blessed rope belt worn by the faithful. Enhances divine magic."
value: 100
required_level: 3
is_tradeable: true
stat_bonuses:
wisdom: 2
base_resistance: 2
# ==========================================================================
# BELTS - Combat
# ==========================================================================
belt_of_giant_strength:
name: "Belt of Giant Strength"
item_type: armor
slot: belt
rarity: rare
description: "A massive belt made from giant's hide. Grants tremendous physical power."
value: 200
required_level: 5
is_tradeable: true
stat_bonuses:
strength: 5
belt_of_endurance:
name: "Belt of Endurance"
item_type: armor
slot: belt
rarity: rare
description: "A sturdy belt that seems to lighten burdens and boost stamina."
value: 175
required_level: 4
is_tradeable: true
stat_bonuses:
constitution: 2
max_hp_bonus: 20
belt_of_the_serpent:
name: "Belt of the Serpent"
item_type: armor
slot: belt
rarity: rare
description: "A belt made from serpent scales. Grants uncanny flexibility and reflexes."
value: 185
required_level: 4
is_tradeable: true
stat_bonuses:
dexterity: 4
dodge_bonus: 0.03
war_belt:
name: "War Belt"
item_type: armor
slot: belt
rarity: rare
description: "A heavy battle belt with weapon holsters. Designed for extended combat."
value: 160
required_level: 4
is_tradeable: true
base_defense: 3
stat_bonuses:
strength: 2
constitution: 1
utility_belt:
name: "Utility Belt"
item_type: armor
slot: belt
rarity: uncommon
description: "A belt with numerous pouches and clips. Perfect for carrying tools and supplies."
value: 75
required_level: 2
is_tradeable: true
carry_capacity_bonus: 10
potion_slots_bonus: 1

File diff suppressed because it is too large Load Diff