--- deliantra/server/common/arch.C 2007/02/02 21:50:43 1.38 +++ deliantra/server/common/arch.C 2007/02/02 22:08:23 1.40 @@ -67,17 +67,13 @@ archetype * find_archetype_by_object_name (const char *name) { - archetype *at; + shstr_cmp name_cmp (name); - if (name == NULL) - return (archetype *) NULL; + for (archetype *at = first_archetype; at; at = at->next) + if (at->clone.name == name_cmp) + return at; - for (at = first_archetype; at != NULL; at = at->next) - { - if (!strcmp (at->clone.name, name)) - return at; - } - return NULL; + return 0; } /** @@ -88,18 +84,13 @@ archetype * find_archetype_by_object_type_name (int type, const char *name) { - archetype *at; + shstr_cmp name_cmp (name); - if (name == NULL) - return NULL; - - for (at = first_archetype; at != NULL; at = at->next) - { - if (at->clone.type == type && strcmp (at->clone.name, name) == 0) - return at; - } + for (archetype *at = first_archetype; at; at = at->next) + if (at->clone.name == name_cmp && at->clone.type == type) + return at; - return NULL; + return 0; } /* This is a lot like the above function. Instead, we are trying to match @@ -110,12 +101,11 @@ object * get_archetype_by_skill_name (const char *skill, int type) { - archetype *at; + shstr_cmp skill_cmp (skill); - if (skill) - for (at = first_archetype; at; at = at->next) - if (((type == -1) || (type == at->clone.type)) && (!strcmp (at->clone.skill, skill))) - return arch_to_object (at); + for (archetype *at = first_archetype; at; at = at->next) + if (at->clone.skill == skill_cmp && (type == -1 || type == at->clone.type)) + return arch_to_object (at); return 0; } @@ -130,15 +120,11 @@ archetype * get_archetype_by_type_subtype (int type, int subtype) { - archetype * - at; + for (archetype *at = first_archetype; at; at = at->next) + if ((type == -1 || type == at->clone.type) && (subtype == -1 || subtype == at->clone.subtype)) + return at; - for (at = first_archetype; at != NULL; at = at->next) - { - if (((type == -1) || (type == at->clone.type)) && (subtype == -1 || subtype == at->clone.subtype)) - return at; - } - return NULL; + return 0; } /** @@ -156,7 +142,6 @@ object * get_archetype_by_object_name (const char *name) { - archetype *at; char tmpname[MAX_BUF]; int i; @@ -165,9 +150,8 @@ for (i = strlen (tmpname); i > 0; i--) { tmpname[i] = 0; - at = find_archetype_by_object_name (tmpname); - if (at) + if (archetype *at = find_archetype_by_object_name (tmpname)) return arch_to_object (at); } @@ -197,7 +181,7 @@ char *cp, local_name[MAX_BUF]; int count, retval = 0; - strcpy (local_name, name); /* strtok is destructive to name */ + assign (local_name, name); /* strtok is destructive to name */ for (cp = strtok (local_name, ","); cp; cp = strtok (NULL, ",")) {