--- deliantra/server/server/spell_util.C 2012/11/21 12:12:03 1.126 +++ deliantra/server/server/spell_util.C 2012/11/25 14:59:25 1.127 @@ -266,11 +266,27 @@ * exact match, we also return NULL. */ object * -object::find_spell (shstr_cmp name) const +object::find_spell (const_utf8_string prefix) const { - for (object *spob = inv; spob; spob = spob->below) - if (spob->name == name && spob->type == SPELL) - return spob; + if (shstr_cmp name = prefix) + { + // case 1, match spell name exactly + for (object *spob = inv; spob; spob = spob->below) + if (spob->name == name && spob->type == SPELL) + return spob; + } + else + { + // case 2, match prefix + int len = strlen (prefix); + + for (object *spob = inv; spob; spob = spob->below) + if (spob->type == SPELL + && spob->name.length () < len + && prefix [spob->name.length ()] <= ' ' + && !memcmp (prefix, spob->name, spob->name.length ())) + return spob; + } return 0; }