--- deliantra/server/common/material.C 2009/11/10 04:38:45 1.5 +++ deliantra/server/common/material.C 2009/11/10 16:02:06 1.6 @@ -61,8 +61,8 @@ for (int i = 0; i < NROFATTACKS; i++) { - save [i] = 10; - mod [i] = 9; + save [i] = 0; + mod [i] = 0; } chance = 0; @@ -91,8 +91,14 @@ materialtype_t *mt = new materialtype_t; mt->name = name; - mt->next = materialt; - materialt = mt; + // make it susceptible to attacks + for (int i = 0; i < NROFATTACKS; i++) + { + mt->save [i] = 10; + mt->mod [i] = 9; + } + + mt->next = materialt; materialt = mt; return mt; } @@ -103,17 +109,18 @@ void transmute_materialname (object *op, const object *change) { - int j; + if (!op->is_armor ()) + return; - if (op->material != change->material) + if (op->material == &material_null) return; - if (!op->is_armor ()) + if (op->material != change->material) return; materialtype_t *mt = op->material; - for (j = 0; j < NROFATTACKS; j++) + for (int j = 0; j < NROFATTACKS; j++) if (op->resist[j] == 0 && change->resist[j] != 0) { op->resist[j] += mt->mod[j]; @@ -193,8 +200,7 @@ LOG (llevDebug, "Reading material type data from %s...\n", filename); //TODO: somehow free old materials, or update them in-place - material_null.next = 0; - materialt = &material_null; + material_null.next = 0; materialt = &material_null; object_thawer thawer (filename); @@ -223,8 +229,7 @@ thawer.get (mt->name); mt->description = mt->name; - mt->next = materialt; - materialt = mt; + mt->next = materialt; materialt = mt; break; case KW_description: @@ -303,9 +308,6 @@ } done: - if (!materialt) - materialt = new materialtype_t; - LOG (llevDebug, "Done.\n"); }