Peter Mardahl wrote: > So what you're saying is, in the archetypes file, > allow things like > "damage_adjusted_by_caster_level 1", > and then have the archetype reading code, > based on what type of thing it's reading, > translate that into the appropriate in-code > parameter change, such as making the damage negative? > > Well, you do gain clarity from the archetype writer's point > of view, at the expense of enormously more complicated > archetype file parsing and maintenance. The way the loader > works right now just wouldn't support such functionality, > it'd have to be rewritten and would have to do two passes > through each object, one to figure out its type, and the > second to interpret all the parameters specific to that > type. Or ordering of values in the archetype field itself becomes important (eg, type must be specified before anything that depends on type.) I will note that the disease bug in question would probably still have occured even with such code. However, if the names are unique for all objects, this is pretty easy to do - now just the saver is more complex (ok, this is a disease, and hp is negative, so we save it as hd_ajuster_percent) or something like that. I believe Bob Tanner actually did some experimentation to have crossfire use XML for its object format. Making such a switch would be a big change. > I think someone else's suggestion (Andrew's I think) of > a front-end like crossedit providing boxes like "LOCKCODE" > where you type in a number, and then setting "value" or whatever > in the archetypes makes > sense and doesn't force a change to the existing code, > though THAT has to be maintained too. Yep. Certainly the documentation is wanting. But at least for many of these newer things, like diseases, there is clear documentation which describes the inner workings. The problem, and cause of most obscure bugs, are things like last_heal getting used to store permanent experience. Would be much better if that was simply called perm_exp or something. No one probably knows every variable meaning and how the value works with the object, so if your going through doing a big update, some of these are going to mess you up, whether they are called slaying or path_to_map in the arch file - if they are all called slaying in the object, that creates confusion.