Daggerfall Mechanics thread: Volunteers welcome

Discuss Daggerfall Unity and Daggerfall Tools for Unity.
Post Reply
User avatar
Interkarma
Posts: 7236
Joined: Sun Mar 22, 2015 1:51 am

Re: Daggerfall Mechanics thread: Volunteers welcome

Post by Interkarma »

ifkopifko wrote: Sun Sep 02, 2018 7:22 pm Firstly, I am very excited to see your progress. :-) (With this I mean all the contributors/developers.)

About the “Water Breathing 50”, I do not see what you mean, the match seems perfect to me in the excel file.
Cheers!

Thanks for the feedback. After starting classic Daggerfall again this morning to re-check with my Mister50 character (50 in all spell skills), classic is now producing Water Breathing results matching the spreadsheet. Earlier the values were very different for Water Breathing in classic.

This is the second time this has happened. The first time, I just assumed I had made a mistake. I triple-checked everything this time and classic was definitely outputting different values for the same character with the same skills on the same effect at the spellmaker. :?

I think I might be falling afoul of is an unusual bug in classic where it's messing up costs in the spellmaker. Next time this happens, I'll restart the game before I assume the spreadsheet is wrong. :lol:

ifkopifko
Posts: 195
Joined: Thu Apr 02, 2015 9:03 am

Re: Daggerfall Mechanics thread: Volunteers welcome

Post by ifkopifko »

No problem mate. :-) It's natural that humans make mistakes. And, afterall, computers are only humans as well ... or nearly so with all the deep learning going on these days. :D

User avatar
Midknightprince
Posts: 1324
Joined: Fri Aug 11, 2017 6:51 am
Location: San Antonio TX
Contact:

Re: Daggerfall Mechanics thread: Volunteers welcome

Post by Midknightprince »

Horse trotting....
Check out my YouTube Channel!

meritamas
Posts: 148
Joined: Sun Apr 07, 2019 6:16 am
Location: Slovak Republic

Re: Daggerfall Mechanics thread: Volunteers welcome

Post by meritamas »

Sorry for posting this question in two topics but I wasn't sure which one would be effective.

Is there a place where all the game formulas based on attributes and skills can be found?

I am trying to consider some changes to the skill/attribute system, but I would like to work out the proposal in such a way as not to break any other thing. A way to find ALL the formulas concerned would be most helpful.
I've found FormulaHelper.cs, but that one only contains some most basic formulas. I'm afraid that the remaining formulas are most probably scattered throughout the script files. Hope somebody can help with this.
Interest in expanding and improving the Magic system, Capitalism and an Unleveled World.

My main quest in the DFU community is my (Mostly) Magic Mod.

User avatar
Rand
Posts: 72
Joined: Sat Nov 23, 2019 5:10 am
Location: Canada

Re: Daggerfall Mechanics thread: Volunteers welcome

Post by Rand »

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.

User avatar
Rand
Posts: 72
Joined: Sat Nov 23, 2019 5:10 am
Location: Canada

Re: Daggerfall Mechanics thread: Volunteers welcome

Post by Rand »

Atlas.exe does not seem to want to display the raw number to me. :evil:

Next trying using a hex editor to look at the raw data in Atlas' memory after the query.

User avatar
Rand
Posts: 72
Joined: Sat Nov 23, 2019 5:10 am
Location: Canada

Re: Daggerfall Mechanics thread: Volunteers welcome

Post by Rand »

Well, that's pretty imposing. Maybe I can find the data there, but I've got a better idea.

I hate to assume, but...

I assume that DFU and classic generate the world in-game more or less identically, at least in output. I hope.

I can re-write the code to display the exact quality number in-game, if I compile my own modified build.

Not optimal, because I'll have to wander around and basically stumble on what I want by luck by entering shops and noting the number, but it beats that wall of hex in active memory.

User avatar
Jay_H
Posts: 4061
Joined: Tue Aug 25, 2015 1:54 am
Contact:

Re: Daggerfall Mechanics thread: Volunteers welcome

Post by Jay_H »

Yeah, this research came long before I knew there were mini-tiers for each quality level :lol: I don't remember the exact method I used; all I have left is what's written here.

Post Reply