Skip to content

Shop Price Adjustment System (DM-Only) #76

Description

@FirebrickRed

Summary

Allow DMs to dynamically adjust merchant prices during gameplay for haggling, reputation changes, or story events. Supports one-time adjustments and permanent modifications.

Phase: 3 - Advanced Features
Systems: Shop System, DM Tools

Prerequisites

Goals

  • /dmentity shop <entity> adjust <item> <price> - One-time price change
  • /dmentity shop <entity> discount <percent> [permanent] - Apply discount
  • /dmentity shop <entity> markup <percent> [permanent] - Increase prices
  • /dmentity shop <entity> reset [item] - Reset to base prices
  • /dmentity shop <entity> restock - Refresh stock quantities
  • Save adjustments to entity instance (persist across restarts)

Use Cases

Scenario 1: Haggling

Player: "Can you give me a better price on that sword?"
DM: /dmentity shop balin adjust longsword 12
> Longsword price adjusted: 15 GP → 12 GP (one-time)

# Next server restart, reverts to 15 GP (not permanent)

Scenario 2: Reputation Reward

# Players saved the blacksmith's daughter
DM: /dmentity shop balin discount 20 permanent
> All prices reduced by 20% permanently for this entity

# Longsword: 15 GP → 12 GP
# Chainmail: 75 GP → 60 GP
# Persists across restarts

Scenario 3: War Economy

# War drives up weapon prices
DM: /dmentity shop balin markup 50 permanent
> All prices increased by 50% permanently

# Affects all items in shop

Commands

# Single item adjustment (temporary)
/dmentity shop balin adjust longsword 10

# Discount entire shop (permanent)
/dmentity shop balin discount 15 permanent

# Markup specific item (permanent)  
/dmentity shop balin markup chainmail 25 permanent

# Reset single item
/dmentity shop balin reset longsword

# Reset all prices
/dmentity shop balin reset

# Restock all items
/dmentity shop balin restock

Persistence

# plugins/jkvttplugin/SpawnedEntities/balin.yml
entity_id: balin_blacksmith
custom_name: "Balin"

shop_adjustments:
  global_discount: 0.20  # 20% off everything
  item_adjustments:
    longsword: 10  # Override specific item
    
stock_remaining:
  longsword: 3  # Down from 5
  chainmail: 2

Next Steps

After completing this issue, tackle:

Related Issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestnpc/entityFor issues pertaining to npc's or monsters and is referred to as entities in the mod packshop-systemShop, merchant, and economy features

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions