PDA

View Full Version : Problems with item generation in vaults on dlvl 99?


flechette
November 10, 2011, 08:28
Killed Sauron, and am just scumming around for consumables for the last fight when I came across a Greater Vault (N:48:Huge - Modified). Every piece of equipment generated on the floor of the vault (except one artifact dagger!) was generated with no enchantments at all. Haven't seen this with any other vaults I've come across, so I'd thought I'd mention it, and see if there's something wrong here. This is on dlvl 99, first time I've been on this level. Backing up my character now if you want me to post a save of this.

Magnate
November 10, 2011, 11:13
Killed Sauron, and am just scumming around for consumables for the last fight when I came across a Greater Vault (N:48:Huge - Modified). Every piece of equipment generated on the floor of the vault (except one artifact dagger!) was generated with no enchantments at all. Haven't seen this with any other vaults I've come across, so I'd thought I'd mention it, and see if there's something wrong here. This is on dlvl 99, first time I've been on this level. Backing up my character now if you want me to post a save of this.Please do post the save. When I'm testing, I do occasionally see items at dl98 or 99 generated with no affixes, but only a few percent of the time. For an entire vault to be full of them indicates that there's a bizarre bug somewhere.

fizzix
November 10, 2011, 15:40
Please do post the save. When I'm testing, I do occasionally see items at dl98 or 99 generated with no affixes, but only a few percent of the time. For an entire vault to be full of them indicates that there's a bizarre bug somewhere.

Magnate, I'm guessing it has to do with the objects having a natural level deeper than 99. Actually, many are probably deeper than 127!

Magnate
November 10, 2011, 15:54
Magnate, I'm guessing it has to do with the objects having a natural level deeper than 99. Actually, many are probably deeper than 127!Of course. Most affixes have max depths of 100, which means that "good" items generated above dl90 will not be able to acquire any of them. Doh. I wondered why there was that funny dip at the end of the stats graph.

Thanks. I'll change the maxima and see if that solves the problem.

Come to think of it, the alloc_max check ought to be against p_ptr->depth, not against the item generation level.

Opened as #1581. I knew the endgame of v4 would be hard, but not that hard ...

flechette
November 10, 2011, 16:58
Here's the google docs link to the character: Click here and download (https://docs.google.com/open?id=0B5Yn8TjshX8KMDA1MDg4ZDQtMmM4MC00YWQyLWFlM 2ItNjExMDAwYzg2NWQw). The vault has a mix of consumables, non-enchanted items, and a few more artifacts that I hadn't found by the time I copied the save.

While playing later on, I noticed that a scroll of *Aquirement* generated 2 non-enchanted items and some healing potions. Another thing about this weirdness is that item drops from monsters don't seem to be nearly as bad off, in that most all of them still produce items with affixes. The one affix I see the most when playing is 'of extra attacks' with no other prefix or suffix.

Derakon
November 10, 2011, 17:03
Yeah, if the problem is that items with a level deeper than 100 don't get affixes, then monster drops by definition won't be a problem as they all have level <= 100 (with Morgoth being the only one that drops items with level = 100). Well, until you beat the game and go to deeper levels anyway (item level is the average of monster level and dungeon level for monsters that aren't out of depth).

Items on the floor before level 100 can get boosts from being in vaults, though, which pushes their level into the "problem zone".

fizzix
November 10, 2011, 20:09
Items on the floor before level 100 can get boosts from being in vaults, though, which pushes their level into the "problem zone".

To be fair, these items should probably be more powerful than the standard dlevel 100 item. I would highly recommend extending maxima out to 127, and not cutting off at 100.

Magnate, I don't understand what you mean by using p_ptr->depth instead of the object generation level. I would think the object generation level is the way to go. It just needs to be able to handle >100.

Magnate
November 11, 2011, 11:44
To be fair, these items should probably be more powerful than the standard dlevel 100 item. I would highly recommend extending maxima out to 127, and not cutting off at 100.

Magnate, I don't understand what you mean by using p_ptr->depth instead of the object generation level. I would think the object generation level is the way to go. It just needs to be able to handle >100.I think the min_depth and max_depth are different concepts. The min_depth is a threshold for allowing the item/affix/whatever to appear - but we want it to appear OOD sometimes, so we deliberately allow the level parameter to inflate (by "good" or "great" drops, or just randomness). The max_depth is an anti-TMJ measure, and when we're past that depth, we don't want to see that thing. So it makes sense to check against actual depth, not against the item generation level.

I pushed a fix this morning, so let's see how it plays. It's available in the usual place: http://buildbot.rephial.org/v4-builds/v4-master/builds.html.

flechette
November 11, 2011, 15:00
Played around on dlvl 127 for a few hours with the new build (19c1109), and was running into the same problem as before. Most all equipment was either unenchanted, or had very few enchants at all.

Out of curiousity, I went and changed all instances of 'to 100' in both ego_item.txt and ego_theme.txt to 'to 127'. This might introduce TMJ, but I was instantly seeing swathes of new items I hadn't seen before.

I will say though that there needs to be some sort of easy-to-understand visual clue indicating either how many affixes are on an item, or how 'powerful' an item is. There is a whole new level of tediousness added when I have to double check every item (especially weapons and helms) to make sure that the <+2, +1> isn't just strength and light, but might be attack speed and constitution, or that a crown of darkness doesn't also have rConf, rStun, and ESP all thrown in as well.

Not griping, I love the changes! It was nice beating Morgy down with mostly strong Ego items. :D

Magnate
November 11, 2011, 15:51
Played around on dlvl 127 for a few hours with the new build (19c1109), and was running into the same problem as before. Most all equipment was either unenchanted, or had very few enchants at all.

Out of curiousity, I went and changed all instances of 'to 100' in both ego_item.txt and ego_theme.txt to 'to 127'. This might introduce TMJ, but I was instantly seeing swathes of new items I hadn't seen before.

I will say though that there needs to be some sort of easy-to-understand visual clue indicating either how many affixes are on an item, or how 'powerful' an item is. There is a whole new level of tediousness added when I have to double check every item (especially weapons and helms) to make sure that the <+2, +1> isn't just strength and light, but might be attack speed and constitution, or that a crown of darkness doesn't also have rConf, rStun, and ESP all thrown in as well.

Not griping, I love the changes! It was nice beating Morgy down with mostly strong Ego items. :DThanks for the feedback. I don't think it's important to support play at depths beyond level 100 - but you are right that simply changing all the 100s to 127 will do it.

There is still no clear way forward on item naming, though I am hopeful that Nomad might code up his naming matrix idea quite soon. In the meantime I think it might be best just to put a (*) at the end of an item name if it has more affixes than shown in its name. That at least tells you that you don't need to 'I'nspect the item unless it has a (*).

fizzix
November 11, 2011, 17:16
I think the min_depth and max_depth are different concepts. The min_depth is a threshold for allowing the item/affix/whatever to appear - but we want it to appear OOD sometimes, so we deliberately allow the level parameter to inflate (by "good" or "great" drops, or just randomness). The max_depth is an anti-TMJ measure, and when we're past that depth, we don't want to see that thing. So it makes sense to check against actual depth, not against the item generation level.


I disagree. An orc on dlevel 40 should still be able to drop !toughness as opposed to not being able to drop any stat potions at all. Or maybe I'm misunderstanding?

Magnate
November 11, 2011, 21:10
I disagree. An orc on dlevel 40 should still be able to drop !toughness as opposed to not being able to drop any stat potions at all. Or maybe I'm misunderstanding?[... goes off to look up alloc_max of !toughness] ... well, I don't think you're misunderstanding, but you complicated the issue by choosing a monster drop rather than a floor item as an example. Monster drops are generated at the MAX(mlev, average of mlev and dlev), and that means that the averaging actually works the opposite way to the level inflation from "good" or "great" drops.

So I think my position is that while I don't mind alloc_max for base items obeying the modified generation level, I think it's more helpful for alloc_max to be absolute for affixes, themes and artifacts.

But I accept that that's inconsistent. So maybe it's not a good position after all.

Nomad
November 11, 2011, 21:18
There is still no clear way forward on item naming, though I am hopeful that Nomad might code up his naming matrix idea quite soon. In the meantime I think it might be best just to put a (*) at the end of an item name if it has more affixes than shown in its name. That at least tells you that you don't need to 'I'nspect the item unless it has a (*).

Point me where I should be looking for whatever code that currently handles naming egos without themes, and I will certainly take a stab at it. I think I've figured out what I'm doing with handling the parsing of edit files now, which should help. I'm hoping to try and tackle #576 (http://trac.rephial.org/ticket/576) as well.

Incidentally, I should probably mention at some point that I'm actually a 'she'. :p

Therem Harth
November 11, 2011, 21:41
Thus proving the futility of trying to guess gender/sex from writing style. (Because James Tiptree Jr. didn't quite kill that idea.)

Magnate
November 11, 2011, 22:29
Thus proving the futility of trying to guess gender/sex from writing style.I confess that I didn't even do that - just a shameful assumption based on no thought whatsoever.

@Nomad - my apologies! I am deeply embarrassed. The naming code is obj_affix_names, which is the first function in src/object/obj-desc.c - that's the place to hook in your naming matrix lookup function (or whatever) - basically just set o_ptr->prefix and o_ptr->suffix to whatever you think best. If the object has a theme, it will override prefix or suffix automatically.

... and fixing #576 would be great too!

Nomad
November 11, 2011, 22:59
I confess that I didn't even do that - just a shameful assumption based on no thought whatsoever.

@Nomad - my apologies! I am deeply embarrassed. The naming code is obj_affix_names, which is the first function in src/object/obj-desc.c - that's the place to hook in your naming matrix lookup function (or whatever) - basically just set o_ptr->prefix and o_ptr->suffix to whatever you think best. If the object has a theme, it will override prefix or suffix automatically.

... and fixing #576 would be great too!

Heh, no problem. To be fair, I tend to automatically assume everyone else here is male, and some of you probably aren't.

Thanks, I'll have a poke around in the code and see what I can come up with.

Magnate
November 11, 2011, 23:32
Thanks, I'll have a poke around in the code and see what I can come up with.It occurs to me that you aren't going to want the prefix and suffix members of the object_type struct to be affixes (ego_item_type), you're probably just going to want them to be straightforward char*. You'll probably also want them to be saved in the savefile - but that can be done as a separate commit, after you get the names you want. Probably best to write the code to create the prefix and suffix strings first, then we can worry about storing them on the object, saving them and displaying them.

buzzkill
November 12, 2011, 02:24
Heh, no problem. To be fair, I tend to automatically assume everyone else here is male, and some of you probably aren't.

Somehow I doubt that :confused:.

Max Stats
November 12, 2011, 18:42
Incidentally, I should probably mention at some point that I'm actually a 'she'. :pThen why is your posting level listed as 'Swordsman'? ;):p