User Tools

Site Tools


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 ..
   arch template_blindness
      chance ..

Then the helms themselves would have a 'randomitems template_helms'

The advantages of this:

  • Basically all fields in the template (artifact) could now be set in the object, were as right now some of the fields in the artifact file are used for matching.
  • Better control of how often artifacts show up (now in treasurelist instead of hard coded into treasure.c). Could also easily disable double artifact items (eg, strange ring of wizardry) (not that those are really a problem, but just the ability to disable that could be nice)
  • Ability to apply more than one template to an object. Eg, you could have templates for the special abilities, like now, and different template for materials. Then, you could have something like:
randomitems helm
  list helm_special_abilities
     chance 5    # 5% of helms are special
  list armor_material_change
     chance 25    # 25% of helms are not made of the normal material
  arch cursed
     chance 3    # 3% of helms are cursed
  • Given that the templates would be archetypes, I could certainly see the java editor better able to handle this (eg, you select the template, and then an object, and hit the 'apply template to object' button or the like)

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:

  • Add min_nrof and min_magic fields (eg, if nrof is 20 right now, 1-20 objects are created. It would be better to do something like
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.

  • Add a min and max difficulty for each entry. Thus, instead of using list transitions to make sure too god objects aren't created, this could be done in just one list. For an object to be created, in must be between min and max difficulty, based on the difficulty of the map (max difficulty is there so you could make it so junk items don't appear on high level maps. Also add a diff_factor to increase chances:
    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.

dev_todo/artifacts_treasurelists.txt · Last modified: 2006/09/18 02:27 (external edit)