Merchants are not blind to who you are. A faction that trusts your clan opens its coffers and lowers its prices; one that resents you marks every good up in spite. Standing becomes a currency of its own.
⚙ Unreal Engine 5
🪙 Economy Design
📜 Blueprint System
⚖ Reputation-Driven
🪙 What This Mechanic Does
Every merchant belongs to a faction. When the player asks for a price, the system reads how that faction feels about the player's clan and adjusts the cost on the spot. A single base price flows through the merchant unchanged for strangers, but bends - up or down - for those whose reputation precedes them.
The result is a living economy where reputation has tangible, immediate weight. Players feel their reputation in their coin purse, not just in a menu. Cultivating standing with a merchant faction becomes a strategic investment, and burning bridges has a price tag.
Why It Lives Here, Not in a Project
This system was originally explored for Project Whimsical, but fully integrating clans and their relationships into the existing systems would have made that project too dense and pulled focus away from its core. Rather than bury it, it lives here as a self-contained, portable mechanic - designed to drop into any RPG with factions and a reputation tracker.
The starting question was simple: 'What if reputation actually changed what you paid?' In most RPGs, standing with a faction unlocks dialogue, quests, or a flat vendor discount - but the merchant's day-to-day prices rarely feel like a reaction to who you are. I wanted reputation to land somewhere the player checks constantly: the price tag.
The goal was to make standing tangible and continuous rather than a binary "ally / enemy" flag - a single number that quietly reshapes the economy around the player as relationships shift.
🪙
Make reputation felt
Move reputation out of menus and into a number players see every transaction - the price they pay.
🌍
A reactive world
Merchants should behave like people with opinions, not static price lists indifferent to the player.
🧩
Keep it portable
Build it small and dependency-light so the idea survives outside the project it was born in.
🔀 Why It's Different
Most shipped implementations treat reputation pricing as a stepped, one-directional perk. This takes a different stance on three counts.
1
Continuous, not tiered thresholds
Common designs snap to brackets - hit "Friendly" and unlock a flat 10% off. Here the multiplier moves smoothly with every reputation point, so progress is always felt, never gated behind the next breakpoint.
2
Symmetric - penalties exist
Most games only ever discount; the worst case is paying full price. This curve marks prices up to 150% for hostile standing, so neglect and hostility carry a real, ongoing cost - not just a locked door.
3
Faction-driven, not vendor-by-vendor
Pricing keys off the merchant's faction reputation, so your reputation propagates across every trader who shares that allegiance - your name travels, rather than being rebuilt at each shop counter.
Honest Caveat
This isn't claiming no game has done continuous or symmetric pricing - plenty of systems are more sophisticated. The point of difference is the deliberate combination: continuous + symmetric + faction-scoped, kept small enough to stay portable. It's a design stance, not a claim of novelty.
📚 What I Learned
Building this surfaced a few lessons worth keeping for the next system.
⛓️💥
No chained price
Having a price system that is driven by player's actions rather than hardcoded values can lead to an immersive experience of players with minimal system overhead.
📏
Linear reads clearly
I considered curved scaling, but a straight line with a clean "50 = fair" anchor is something players grasp instantly. Readability beat cleverness.
🎛️
Tune from one node
Routing the entire feel through a single Map Range Clamped node means the whole economy can be re-balanced by editing two numbers - design power from a tiny surface.
📐 The Pricing Formula
Reputation with a merchant faction is tracked on a 0–100 scale. That value is mapped - linearly and clamped - onto a price multiplier between 1.5× and 0.5×. The multiplier scales the base price, which is then rounded to a whole coin value.
Price Multiplier
multiplier = 1.5 − 0.01 × reputation
clamped to the range [0.5, 1.5]
Adjusted Price
adjusted = round( basePrice × multiplier )
If the faction has no tracked reputation, the base price is returned unchanged.
Reading the Mapping
The engine implements this with a Map Range Clamped node: input range 0 → 100 (reputation) maps to output range 1.5 → 0.5 (multiplier). Note the deliberate inversion - higher reputation yields a lower multiplier, because friends pay less. The clamp guarantees prices never run below half or above one-and-a-half, no matter how reputation values are sourced.
⚖ Reputation Tiers
The continuous curve reads naturally as three felt bands. The numbers are linear, but players experience them as distinct relationships with a merchant faction.
Tier
Reputation
Multiplier
Effect on a 100-coin item
Hostile
0 – 25
1.50× – 1.25×
150 – 125 coins (markup)
Neutral
26 – 74
1.24× – 0.76×
124 – 76 coins (fair-ish)
Honored
75 – 100
0.75× – 0.50×
75 – 50 coins (discount)
The Break-Even Point
At exactly reputation 50, the multiplier is 1.0× - the player pays the true base price. Everything below 50 is a penalty for poor standing; everything above is a reward. This makes 50 the psychological "neutral" anchor the rest of the curve pivots around.
📈 Try the Curve
Drag reputation and watch the price respond. (Base price fixed at 100 coins for illustration.)
Live Price Calculator
Reputation
50
Neutral
Reputation
Multiplier
1.00×
base × this
Base Price
100
coins
Adjusted Price
100
at fair value
📜 Blueprint Logic - Get Price
The mechanic is a single function, Get Price, taking Base Price and Merchant Faction and returning an Adjusted Price. It reads reputation from a reputation-tracking component on the player.
1
Look up the faction's reputation
Get the player's Reputation Tracker / BPC Reputation component and FIND the entry matching the incoming Merchant Faction.
2
Branch: is this faction tracked?
A Branch checks whether the faction was found. False → return Base Price unchanged (no relationship, no adjustment).
3
Map reputation to a multiplier
True → feed the reputation value into Map Range Clamped: In Range 0 → 100, Out Range 1.5 → 0.5.
4
Apply & round
Multiply Base Price by the resulting multiplier, pass through Round, and return as Adjusted Price.
Blueprint Graph
The full node graph for the Get Price function.
The complete Get Price node graph: Find → Branch → Map Range Clamped → Round
In-Game Demonstration
Same item, different standing.
Lower Reputation: The Vendor marks goods up to 150%.
Higher Reputation: The Vendor offers the same goods at 50%.
🎯 Design Philosophy
A few intentional choices shape how this mechanic feels at the counter.
⚖
Symmetric Stakes
The curve punishes and rewards equally - 1.5× at the bottom, 0.5× at the top. Reputation is never neutral-or-better; neglect costs you real coin.
🔒
Clamped for Safety
The clamp guarantees prices stay within [0.5×, 1.5×] regardless of how reputation is sourced, so no edge case can produce free or absurdly priced goods.
🧩
Portable by Design
It only needs a base price, a faction tag, and a reputation tracker. No assumptions about clans or quests bleed in, so it drops cleanly into other projects.
👁️
Readable to Players
Linear scaling and a clean 50 = fair anchor mean players intuit the relationship quickly: "they like me, so it's cheaper." No spreadsheet required.
Tuning Levers
The whole feel can be re-tuned by editing two fields on the Map Range Clamped node.
To make the trade easier, Narrow the out-range to 1.2 → 0.8. To make world harsher, Skew it to 1.5 → 0.7. The system is made to fine tune without touching the underlying logic.
Possible Extensions
The plan is to extend the system by taking merchants personal standing into consideration. This will enable unique NPC Merchants to have their own pricing curve, and allow for more complex relationships between the player and the world.
For example, a merchant may have a personal grudge against the player due to a quest decision, resulting in higher prices even if the faction is friendly.