--- src/powers.c.orig 2003-06-07 20:21:27.000000000 -0400 +++ src/powers.c 2005-01-06 20:16:20.000000000 -0500 @@ -1293,7 +1293,7 @@ j++; } if (mode) prt("", 2 + j, 20); - prt(format("Select a power (a-%c), +/- to scroll:", I2A(j - 1)), 0, 0); + prt(format("Select a power (a-%c), @ to select by name, +/- to scroll:", I2A(j - 1)), 0, 0); } @@ -1362,6 +1362,30 @@ Term_load(); character_icky = FALSE; } + else if (which == '@') + { + char buf[80]; + + buf[0] = '\0'; + if (!get_string("Power name: ", buf, 79)) + { + ret = NULL; + break; + } + + /* Find the requested power */ + for (i = 0; i < max; i++) + { + if (!strcmp(buf, powers_type[p[i]].name)) + break; + } + if ((i < max)) + { + *x_idx = p[i]; + ret = &powers_type[p[i]]; + break; + } + } else { which = tolower(which);