The basic idea of this is to make remove a lot of the hardcoding from the server:
Add template objects - objects that don't appear by themselves, but instead modify the object they are applied to.
That is to say, you make up objects of type 'template'. The values and what not would work similar to how the artifacts file.
However, instead of hard coded chances of artifacts in the treasures.c, instead use these templates in treasurelists.
Thus, you could have a treasurelist like:
treasureone template_helms arch template_xebinon chance .. more arch template_blindness chance .. more ...
Then the helms themselves would have a 'randomitems template_helms'
The advantages of this:
randomitems helm list helm_special_abilities chance 5 # 5% of helms are special more list armor_material_change chance 25 # 25% of helms are not made of the normal material more arch cursed chance 3 # 3% of helms are cursed end end
The biggest disadvantage of this is a bunch of new treasurelists would be needed. I have thought that the treasure list code could be extended also.
However, my thought on that are a bit more modest:
min_nrof 10 max_nrof 20
To say to generate 10-20 of those objects.
Likewise, min_magic could be used to say 'make this object at least min_magic'. Thus, treasurelists could be used to make the magic bonus of the weapons and whatnot.
randomitem helm ... arch damned min_diff 30 chance 5 diff_factor 2
So at level 37, chance is not 19 (37 - 30) * 2 + 5 = 19%
The treasurelist stuff would actually be relatively easy to do - at least point #1 would not cause nay problems with existing treasure lists (just new fields really).
It may be desirable to disallow combinations, but not sure if extra logic should be added to the treasurelists for that - I'd almost be inclined to have multiple treasurelists - the treasure code really dictates what is generated, not what is not generated.