Jay_H wrote: ↑Mon Jul 11, 2016 7:40 pm
I decided to go back to the shops a little bit. The mystery thickens, and it's quite viscous now. The good news is that the shops all vary by day uniformly, as shown in the Whitefort testing I've added, so incense and rusty stores still matter as much as they ever have. The bad news is that the variation is random or semi-random. Every attempt in each respective day was made at the same hour, so time of day isn't a variable here. For the Day 1 variations, I left town and came back to see if town boundaries determined price changes; they don't. For the Day 2 variations, I used a Groundhog Day method, where I passed a single day traveling to various locations. The results are odd but not as variable as I expected. In this case, the numbers varied by about 2% up or 2% down, but they varied consistently between the same two values. It sounds like each day has two values it can choose from at random.
If anyone wants to test this more they're welcome to, but I've seen about as much as I can from a testing perspective. I only hope something is available in memory that clearly establishes the daily value.
So, late to the party, but I've been looking into this.
First, Jay, you were definitely not comparing apples to apples if you were relying on the description to tell you the actual quality.
Thanks to Pango for this:
Code: Select all
// Display a shop quality level
private DaggerfallMessageBox PresentShopQuality(StaticBuilding building)
{
const int qualityLevel1TextId = 266; // "Incense and soft music soothe your nerves"
const int qualityLevel2TextId = 267; // "The shop is better appointed than many"
const int qualityLevel3TextId = 268; // "The shop is laid out in a practical"
const int qualityLevel4TextId = 269; // "Sturdy shelves, cobbled together"
const int qualityLevel5TextId = 270; // "Rusty relics lie wherever they were last tossed"
// Get building directory for location
BuildingDirectory buildingDirectory = GameManager.Instance.StreamingWorld.GetCurrentBuildingDirectory();
if (!buildingDirectory)
return null;
// Get detailed building data from directory
BuildingSummary buildingSummary;
if (!buildingDirectory.GetBuildingSummary(building.buildingKey, out buildingSummary))
return null;
// Do nothing if not a shop
if (!RMBLayout.IsShop(buildingSummary.BuildingType))
return null;
// Set quality level text ID from quality value 01-20
// UESP states this is building quality / 4 but Daggerfall uses manual thresholds
int qualityTextId;
if (buildingSummary.Quality <= 3)
qualityTextId = qualityLevel5TextId; // 01 - 03
else if (buildingSummary.Quality <= 7)
qualityTextId = qualityLevel4TextId; // 04 - 07
else if (buildingSummary.Quality <= 13)
qualityTextId = qualityLevel3TextId; // 08 - 13
else if (buildingSummary.Quality <= 17)
qualityTextId = qualityLevel2TextId; // 14 - 17
else
qualityTextId = qualityLevel1TextId; // 18 - 20
I expect that the cobbled shops were actually quite different in actual quality level. I'm going to see if I can get at the raw quality level data somehow. Any suggestions would be welcome.
Ideally, there will be a city somewhere that has two pawnshops with the exact same quality level. And another relatively nearby in another city. Ideally, another identical one just across a region border, too. Then the real testing can begin.