Angband Forums

Angband Forums (http://angband.oook.cz/forum/index.php)
-   Development (http://angband.oook.cz/forum/forumdisplay.php?f=10)
-   -   Make all artifacts "special" artifacts (http://angband.oook.cz/forum/showthread.php?t=4208)

Derakon March 14, 2011 21:39

Make all artifacts "special" artifacts
 
There's a number of places in the code that complain about how "special" artifacts (light sources and jewelry, basically) are a big hack and how their generation process should be unified with the normal artifact generation process. I think this is a good idea, though not in the way the comments presumably intended. I say all artifacts should use the special artifact generation process.

To clarify: currently, normal equipment artifacts are generated if the game makes an equipment item, it passes (in order) the good, great, and artifact checks, there is an artifact still to be generated of the appropriate item type, and it passes an appropriate rarity check for the artifact chosen. More or less, anyway; I'm working from memory here.

Conversely, for special artifacts the game just decides to try making a special artifact, then runs the appropriate rarity tests for each one, and if one passes, then bam, special artifact generated.

There's a few warts with artifact generation that the "special" generator obviates. The most obvious is that artifact rarity is tied to base item rarity, so every time the base item rarity gets changed, artifact rarities have to be adjusted to suit. It's also basically impossible to make, say, an artifact Scythe of Slicing native to dlvl 10, whose only special properties are that it aggravates and slays orcs. And it's a bit weird that the level on which a random item lying on the floor is most likely to be Ringil is 20, since that's the native depth of the longsword.

Someone suggested this offhandedly in a recent thread, I forget who, and IMO it's an excellent idea. Looking at make_artifact_special (the function called to make a special artifact, natch), as far as I can tell the only thing that'd need to be changed is that instead of trying each artifact in order, it should try to make a single random artifact.

Thoughts?

Magnate March 14, 2011 21:57

Quote:

Originally Posted by Derakon (Post 49733)
Someone suggested this offhandedly in a recent thread, I forget who, and IMO it's an excellent idea. Looking at make_artifact_special (the function called to make a special artifact, natch), as far as I can tell the only thing that'd need to be changed is that instead of trying each artifact in order, it should try to make a single random artifact.

Just to be clear, you mean to create a single artifact at random.

I agree completely that artifacts should have only one generation process rather than two - but I had assumed that the opposite approach would be better: make jewelry and lights use the "standard" artifact process (ticket #1014).

Having read your post, I am inclined to think that this suggestion may be both simpler and better. I'll be interested to hear what others think.

camlost March 15, 2011 05:48

I've mentioned it in a few different threads, for more or less the same reasons as you state. I see no compelling need for artifacts to be stapled onto a base object, with all its rarity, depth, etc. issues.

Thanks for putting together a thread and a few additional words to this. (I mentioned it most recently in the thread that was complaining about too many shoes).

Also thanks for looking through the make_artifact_special code. I haven't checked to see if is as easy as I think it should be.

Timo Pietilš March 15, 2011 05:58

Quote:

Originally Posted by camlost (Post 49746)
I've mentioned it in a few different threads, for more or less the same reasons as you state. I see no compelling need for artifacts to be stapled onto a base object, with all its rarity, depth, etc. issues.

Thanks for putting together a thread and a few additional words to this. (I mentioned it most recently in the thread that was complaining about too many shoes).

Also thanks for looking through the make_artifact_special code. I haven't checked to see if is as easy as I think it should be.

I see this (from purely non-coder perspective with 10seconds of thought) as:

roll for item
Roll "is it good"
Roll "is it excellent"
Roll "could it be artifact"

Based on results above

For artifact: roll which one.

Else

roll for base item.

Combine rarities to see if item was created.

Obviously the actual code will be quite a bit more complex, but to me that looks like something that isn't very hard to make.

Antoine March 15, 2011 06:57

Quote:

Originally Posted by camlost (Post 49746)
I've mentioned it in a few different threads, for more or less the same reasons as you state. I see no compelling need for artifacts to be stapled onto a base object, with all its rarity, depth, etc. issues.

I think each art should still be associated with a base object - that is the object which the art looks like until it's identified, and it is the object which sets the art's weight, appearance, base damage dice etc.

But yes, fine to detach the art's depth and rarity from the base object's depth and rarity...

A.

buzzkill March 15, 2011 13:50

Quote:

Originally Posted by Antoine (Post 49749)
I think each art should still be associated with a base object - that is the object which the art looks like until it's identified, and it is the object which sets the art's weight, appearance, base damage dice etc.

Yes, but this base object doesn't need to be created randomly. The base object can be specified as a trait of the artifact. So, when it is 'decided' that an artifact is 'created' I suppose that a base object 'placeholder' will also be created... or did I misunderstand you?

The biggest problem I can see is having to re-adjust the rarities (maybe), since base object creation will no longer figure into it. Aside from that, generating artifacts as "special" seems much cleaner, at least to me.

An unrelated question about rabdarts... Are a randarts weapon/armour powers locked to a particular item type? What I mean is, can randart Ringil be generated as a war hammer or a great axe or a shovel?

Timo Pietilš March 15, 2011 14:05

Quote:

Originally Posted by buzzkill (Post 49758)
An unrelated question about rabdarts... Are a randarts weapon/armour powers locked to a particular item type? What I mean is, can randart Ringil be generated as a war hammer or a great axe or a shovel?

I think current code could create Artifact bowl of petunias based on Ringil if we had flowerpots as base item.

Derakon March 15, 2011 16:07

Timo's right. You can generally recognize a randart based on Bladeturner, Ringil, etc. because they'll be much more powerful than most. Randart rarity does take the base item rarity into account, though, so the converted Ringil should be just as rare as the real Ringil is in normal games.

And yeah, rarities would need to be rebalanced. But that needs to happen anyway, since currently many powerful artifacts are far too common (c.f. Feanor).

Magnate March 15, 2011 19:22

Quote:

Originally Posted by Derakon (Post 49760)
Timo's right. You can generally recognize a randart based on Bladeturner, Ringil, etc. because they'll be much more powerful than most. Randart rarity does take the base item rarity into account, though, so the converted Ringil should be just as rare as the real Ringil is in normal games.

And yeah, rarities would need to be rebalanced. But that needs to happen anyway, since currently many powerful artifacts are far too common (c.f. Feanor).

Careful - we're conflating two different issues here.

Anecdotal evidence from dumps shows that Feanor and The One are noticeably more common since 3.1.x, but IMO this is not relative to other artifacts - I think the attack on TMJ launched in 3.1.0 had a side effect of making artifacts more common per se (along with, even more noticeably, ego items).

Separately, there have been a series of changes to both base item rarities and artifact rarities. There was the change to alloc_prob (a percentage instead of a "one in X" chance), there were some changes to individual standart rarities, and some new/changed base items. The old mechanism of calculating randart rarity by (old art rarity * old base item rarity / new base item rarity) *hasn't* changed, but obviously the other changes have affected randart generation.

@buzzkill: ironically the full answer to your question is that any standart can choose any base item for a randart *except* lights and jewelry. Lights, rings and amulets can only have their properties randomised, not their base items. Adopting the suggestion in this thread would unlock this.

Antoine March 15, 2011 20:18

Quote:

Originally Posted by Magnate (Post 49767)
@buzzkill: ironically the full answer to your question is that any standart can choose any base item for a randart *except* lights and jewelry. Lights, rings and amulets can only have their properties randomised, not their base items. Adopting the suggestion in this thread would unlock this.

So would this mean assigning base items to the existing jewelery? Would Narya, for instance, become an art based on a Ring of Flames?

A.


All times are GMT +1. The time now is 04:12.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2022, vBulletin Solutions Inc.