forked from github/server
commit
684f779501
|
@ -3796,7 +3796,7 @@ int use_cmd(unit * u, struct order *ord)
|
|||
/* BENUTZE 42 Yanxspirit */
|
||||
t = getstrtoken();
|
||||
}
|
||||
itype = finditemtype(t, u->faction->locale);
|
||||
itype = t ? finditemtype(t, u->faction->locale) : NULL;
|
||||
|
||||
if (itype != NULL) {
|
||||
err = use_item(u, itype, n, ord);
|
||||
|
|
38
src/magic.c
38
src/magic.c
|
@ -2903,40 +2903,56 @@ const char *curse_name(const curse_type * ctype, const struct locale *lang)
|
|||
return LOC(lang, mkname("spell", ctype->cname));
|
||||
}
|
||||
|
||||
spell *unit_getspell(struct unit *u, const char *name, const struct locale * lang)
|
||||
{
|
||||
sc_mage * mage = get_mage(u);
|
||||
if (mage) {
|
||||
variant token;
|
||||
void * tokens = 0;
|
||||
spellbook *sb = unit_get_spellbook(u);
|
||||
|
||||
if (sb) {
|
||||
static void select_spellbook(void **tokens, spellbook *sb, const struct locale * lang) {
|
||||
quicklist * ql;
|
||||
int qi;
|
||||
|
||||
assert(sb);
|
||||
assert(lang);
|
||||
|
||||
for (qi = 0, ql = sb->spells; ql; ql_advance(&ql, &qi, 1)) {
|
||||
spellbook_entry *sbe = (spellbook_entry *)ql_get(ql, qi);
|
||||
spell *sp = sbe->sp;
|
||||
|
||||
const char *n = spell_name(sp, lang);
|
||||
if (!n) {
|
||||
log_error("no translation in locale %s for spell %s\n", locale_name(lang), sp->sname);
|
||||
}
|
||||
else {
|
||||
variant token;
|
||||
token.v = sp;
|
||||
addtoken(&tokens, n, token);
|
||||
addtoken(tokens, n, token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
spell *unit_getspell(struct unit *u, const char *name, const struct locale * lang)
|
||||
{
|
||||
void * tokens = 0;
|
||||
spellbook *sb;
|
||||
|
||||
sb = unit_get_spellbook(u);
|
||||
if (sb) {
|
||||
select_spellbook(&tokens, sb, lang);
|
||||
}
|
||||
|
||||
u = get_familiar_mage(u);
|
||||
if (u) {
|
||||
sb = unit_get_spellbook(u);
|
||||
if (sb) {
|
||||
select_spellbook(&tokens, sb, lang);
|
||||
}
|
||||
}
|
||||
|
||||
if (tokens) {
|
||||
variant token;
|
||||
if (findtoken(tokens, name, &token) != E_TOK_NOMATCH) {
|
||||
freetokens(tokens);
|
||||
return (spell *)token.v;
|
||||
}
|
||||
freetokens(tokens);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue