Long time without artifacts

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • bio_hazard
    Knight
    • Dec 2008
    • 649

    #16
    For what it's worth I'm at 1900' with a dwarf warrior playing standarts in 4.0.0, and have found a lot. 2 artifact shields and maybe a half-dozen weapons already. Just read one of two acquirement scrolls I found in a small vault and got Firestar.

    Any chance the problem people are having is related to running a new game from an existing character file, and the game somehow remembers which artifacts were found in the previous game, so they can't be generated again? So if you found everything last game no more can be generated, and if you found most last game, in your current game they would distribute normally until you found them all, then no more?

    Comment

    • Derakon
      Prophet
      • Dec 2009
      • 9022

      #17
      Originally posted by bio_hazard
      For what it's worth I'm at 1900' with a dwarf warrior playing standarts in 4.0.0, and have found a lot. 2 artifact shields and maybe a half-dozen weapons already. Just read one of two acquirement scrolls I found in a small vault and got Firestar.

      Any chance the problem people are having is related to running a new game from an existing character file, and the game somehow remembers which artifacts were found in the previous game, so they can't be generated again? So if you found everything last game no more can be generated, and if you found most last game, in your current game they would distribute normally until you found them all, then no more?
      Another possibility is that the game is secretly running in no-preserve mode, so artifacts that are generated and missed cannot be generated again. So players who are thorough about exploring every level would find more artifacts than those that don't.

      This would be especially pernicious is the "secret no-preserve" also counts artifacts that are generated in monster inventories...

      Comment

      • fph
        Veteran
        • Apr 2009
        • 1030

        #18
        Originally posted by bio_hazard
        Any chance the problem people are having is related to running a new game from an existing character file, and the game somehow remembers which artifacts were found in the previous game, so they can't be generated again? So if you found everything last game no more can be generated, and if you found most last game, in your current game they would distribute normally until you found them all, then no more?
        Good point. The savefile I am using is relatively new, though; I generated one from scratch from 4.0.1. There were 11 previous chars on that savefile, none of which made it to the endgame (one dead at 3150', three more around 1500', the other ones earlier).

        The "secret no-preserve" mode seems a more likely (and more scary) possibility.
        --
        Dive fast, die young, leave a high-CHA corpse.

        Comment

        • Ingwe Ingweron
          Veteran
          • Jan 2009
          • 2129

          #19
          Originally posted by Ingwe Ingweron
          There are a bunch of mine on the ladder from 3.5, 3.5.1, 4.0beta, 4.0, and 4.0.1. You can see from the history lists that artifacts have become rarer, although they do still drop.
          Okay, I've done some quick analysis. The upshot is that artifacts are a little rarer than in 3.5 and 3.5.1, but not terribly so.

          Compiled analysis results on artifact rarity from my ladder winners for each version:

          Version 3.5.0
          High: 63
          Low: 39
          Range: 24
          Mean: 51
          Median: 52
          Mode: 52

          Version 3.5.1 (*excluding non-artifact comp winner)
          High: 60
          Low: 35
          Range: 25
          Mean: 49
          Median: 48
          Mode: 48 59

          Version 4.0beta
          High: 44
          Low: 24
          Range: 20
          Mean: 36
          Median: 38
          Mode: 38

          Version 4.0.0
          High: 40
          Low: 39
          Range: 1
          Mean: 40
          Median: 40
          Mode: #N/A

          Version 4.1.1
          High: 58 (purposely scummed for artifacts for a long time on DL98/99)
          Low: 24
          Range: 34
          Mean: 41
          Median: 39
          Mode: #N/A
          “We're more of the love, blood, and rhetoric school. Well, we can do you blood and love without the rhetoric, and we can do you blood and rhetoric without the love, and we can do you all three concurrent or consecutive. But we can't give you love and rhetoric without the blood. Blood is compulsory. They're all blood, you see.”
          ― Tom Stoppard, Rosencrantz and Guildenstern are Dead

          Comment

          • Nivra
            Adept
            • Aug 2015
            • 112

            #20
            Originally posted by Nick
            This has been reported before, and I've dismissed it as just random drop rates. I can't think of a mechanism that would make this happen, but I am keeping it in mind (I have a whole section of my mind for this sort of information, previously stocked with trivia about 80's popular culture, so it's win-win).
            Except for Max Headroom, who haz a sad.

            Comment

            • kandrc
              Swordsman
              • Dec 2007
              • 299

              #21
              The artifact creation bug isn't randart only, and it is definitely a bug. I've got another game with almost no artifacts. I adjusted my playing style to see if it makes a difference, diving slower, so I'm at over 500k turns, where I normally win (or die) by about 350k, and that did result in me seeing more artifacts (3) than I did in my last game (2), but still too few.

              I set a breakpoint on make_artifact() and inspected the a_info array and found that the created flag is set for almost all, despite the fact that I have never seen them and they are not on the current level. Changing the tests:

              Code:
              if (art->created) continue;
              to

              Code:
              if (art->seen) continue;
              in make_artifact() and make_artifact_special() gets me artifacts again. It's not a complete fix, however, since it allows an artifact to be generated multiple times on the same level until such time as the player finds an instance (hasn't actually happened to me, yet, but I recognize the possibility).

              I'm not certain of the desired semantics of "created". If it's intended to mean "this artifact has been created at least once", then it shouldn't be used to test for eligibility for future creation in a preserve-mode game. If it's intended to mean "this artifact either already exists on this level or has been seen by the PC", then it needs to be appropriately cleared somewhere if the PC fails to find the object.

              Seems to me it's supposed to be the latter, but that's overlapping with the meaning of "seen" in a confusing way. The two flags can remain orthogonal if "created" becomes, say, "exists" and means that the object is loaded in the dungeon, a monster inventory, or the PC inventory, equipment or home, then the test becomes:

              Code:
              if (art->exists || art->seen) continue;
              It would still need to be correctly cleared when the level or carrying monster is destroyed.

              This seems to be independent of the artifact knowledge list bug.

              Comment

              • Nick
                Vanilla maintainer
                • Apr 2007
                • 9634

                #22
                Originally posted by kandrc
                I'm not certain of the desired semantics of "created". If it's intended to mean "this artifact has been created at least once", then it shouldn't be used to test for eligibility for future creation in a preserve-mode game. If it's intended to mean "this artifact either already exists on this level or has been seen by the PC", then it needs to be appropriately cleared somewhere if the PC fails to find the object.
                It is definitely the later. What is supposed to happen is that it is set when the artifact is created, and then (assuming preserve is on) unset again if the game fails to place it, or if the player leaves the current level without ever seeing it.

                I am now sure you are right, and that this is a bug. The tricky part is working out exactly where "created" is not being cleared. Currently I suspect it is when starting a new game with an old save, which would fit with people's observation that keeping the same set of randarts results in no artifacts.

                Excellent work spotting this
                One for the Dark Lord on his dark throne
                In the Land of Mordor where the Shadows lie.

                Comment

                • fph
                  Veteran
                  • Apr 2009
                  • 1030

                  #23
                  Originally posted by Nick
                  The tricky part is working out exactly where "created" is not being cleared. Currently I suspect it is when starting a new game with an old save, which would fit with people's observation that keeping the same set of randarts results in no artifacts.
                  Excellent work indeed, thanks!

                  In the meantime, I have started a new char with the same savefile, and the artifact distribution seemed normal throughout the whole game (this one was a winner). I even found some artifacts (e.g. Thorin) in both runs. So this seems to rule out Nick's suspects.

                  Maybe it's when the level is left through some nonstandard means, such as ?descent or a monster's teleport level spell cast on the player?
                  --
                  Dive fast, die young, leave a high-CHA corpse.

                  Comment

                  • Derakon
                    Prophet
                    • Dec 2009
                    • 9022

                    #24
                    Originally posted by fph
                    Excellent work indeed, thanks!

                    In the meantime, I have started a new char with the same savefile, and the artifact distribution seemed normal throughout the whole game (this one was a winner). I even found some artifacts (e.g. Thorin) in both runs. So this seems to rule out Nick's suspects.

                    Maybe it's when the level is left through some nonstandard means, such as ?descent or a monster's teleport level spell cast on the player?
                    Or maybe saving/loading?

                    Comment

                    • kandrc
                      Swordsman
                      • Dec 2007
                      • 299

                      #25
                      Running in gdb, starting a new character with an old savefile, I interrupted as soon as I loaded in town and examined a_info. All "created" flags are false, so it's not an old savefile issue. Saving and restoring--without ever using a turn--and checking a_into yields the same result. So it's not the save and restore routines, either, unless it's subtle and requires more activity to manifest.

                      And to be clear, the examination I did yesterday was a standart game, so I have observed this with both standard and random artifacts.

                      My money's on monster inventories, but I haven't dug into the code deeply enough to figure out how to examine that. Are the artifact instances dynamically allocated? Or are they just pointers into the artifact array? If the former, we may be able to learn something from valgrind. I'll give it a shot and see what happens... Should I be afraid?

                      EDIT: Sorry I doubted. Looks like the only leaks are resident X11-related stuff.

                      EDIT 2: Ran in valgrind, wizmode to dlvl 100 and up and down stairs a dozen or so times. valgrind output is nice, but saving and reloading in gdb and there are a lot of true "created" flags. Out of the first 15 elements, only Necklace and One are still false. So it's either dungeon floor, monster inventory, or both. My money's still on monster inventory.
                      Last edited by kandrc; September 4, 2015, 14:35.

                      Comment

                      • Nick
                        Vanilla maintainer
                        • Apr 2007
                        • 9634

                        #26
                        Originally posted by kandrc
                        My money's still on monster inventory.
                        Bingo. Check was there for deleting individual monsters (eg banishment), but not when the whole monster list was wiped on leaving the level.
                        One for the Dark Lord on his dark throne
                        In the Land of Mordor where the Shadows lie.

                        Comment

                        Working...
                        😀
                        😂
                        🥰
                        😘
                        🤢
                        😎
                        😞
                        😡
                        👍
                        👎