forked from github/server
ill-aligned ids. can only add spells to end, and never remove spells (data file incompatibility)
This commit is contained in:
parent
aaf7fb2609
commit
fa69b66879
|
@ -7739,40 +7739,44 @@ get_spellnames(const struct locale * lang, magic_t mtype)
|
||||||
}
|
}
|
||||||
|
|
||||||
static spell *
|
static spell *
|
||||||
find_spellbyname_i(unit *u, const char *name, const struct locale * lang)
|
find_spellbyname_i(const char *name, const struct locale * lang, magic_t mtype)
|
||||||
{
|
{
|
||||||
spell_ptr *spt;
|
|
||||||
sc_mage * m = get_mage(u);
|
|
||||||
spell * sp = NULL;
|
spell * sp = NULL;
|
||||||
spell_names * sn;
|
spell_names * sn;
|
||||||
|
|
||||||
if (m==NULL) return NULL;
|
|
||||||
sn = get_spellnames(lang, m->magietyp);
|
|
||||||
if (findtoken(&sn->names, name, (void**)&sp)==E_TOK_NOMATCH) {
|
|
||||||
magic_t mtype;
|
|
||||||
for (mtype=0;mtype!=MAXMAGIETYP;++mtype) {
|
|
||||||
sn = get_spellnames(lang, mtype);
|
sn = get_spellnames(lang, mtype);
|
||||||
|
if (findtoken(&sn->names, name, (void**)&sp)==E_TOK_NOMATCH) {
|
||||||
|
magic_t mt;
|
||||||
|
/* if we could not find it in the main magic type, we look through all the others */
|
||||||
|
for (mt=0;mt!=MAXMAGIETYP;++mt) {
|
||||||
|
sn = get_spellnames(lang, mt);
|
||||||
if (findtoken(&sn->names, name, (void**)&sp)!=E_TOK_NOMATCH) break;
|
if (findtoken(&sn->names, name, (void**)&sp)!=E_TOK_NOMATCH) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sp!=NULL) {
|
if (sp!=NULL) return sp;
|
||||||
for (spt = m->spellptr; spt; spt = spt->next) {
|
|
||||||
if (sp->id==spt->spellid) return sp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (lang==default_locale) return NULL;
|
if (lang==default_locale) return NULL;
|
||||||
return find_spellbyname_i(u, name, default_locale);
|
return find_spellbyname_i(name, default_locale, mtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
spell *
|
spell *
|
||||||
find_spellbyname(unit *u, const char *name, const struct locale * lang)
|
find_spellbyname(unit *u, const char *name, const struct locale * lang)
|
||||||
{
|
{
|
||||||
spell * sp = find_spellbyname_i(u, name, lang);
|
sc_mage * m = get_mage(u);
|
||||||
if (sp==NULL) {
|
spell * sp;
|
||||||
|
|
||||||
|
if (m==NULL) return NULL;
|
||||||
|
sp = find_spellbyname_i(name, lang, m->magietyp);
|
||||||
|
if (sp!=NULL) {
|
||||||
|
spell_ptr *spt;
|
||||||
|
|
||||||
|
for (spt = m->spellptr; spt; spt = spt->next) {
|
||||||
|
if (sp->id==spt->spellid) return sp;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
log_warning(("cannot find spell by name: %s\n", name));
|
log_warning(("cannot find spell by name: %s\n", name));
|
||||||
}
|
}
|
||||||
return sp;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
spell *
|
spell *
|
||||||
|
@ -7780,6 +7784,7 @@ find_spellbyid(spellid_t id)
|
||||||
{
|
{
|
||||||
spell_list * slist;
|
spell_list * slist;
|
||||||
|
|
||||||
|
assert(id!=SPL_DONOTUSE);
|
||||||
for (slist=spells;slist!=NULL;slist=slist->next) {
|
for (slist=spells;slist!=NULL;slist=slist->next) {
|
||||||
spell* sp = slist->data;
|
spell* sp = slist->data;
|
||||||
if (sp->id == id) return sp;
|
if (sp->id == id) return sp;
|
||||||
|
|
|
@ -28,6 +28,7 @@ extern "C" {
|
||||||
|
|
||||||
/* Sprüche. Neue NUR hinten anfügen, oder das Datenfile geht kaputt */
|
/* Sprüche. Neue NUR hinten anfügen, oder das Datenfile geht kaputt */
|
||||||
enum {
|
enum {
|
||||||
|
SPL_DONOTUSE,
|
||||||
SPL_ARTEFAKT_OF_POWER,
|
SPL_ARTEFAKT_OF_POWER,
|
||||||
SPL_ARTEFAKT_OF_AURAPOWER,
|
SPL_ARTEFAKT_OF_AURAPOWER,
|
||||||
SPL_ARTEFAKT_OF_REGENERATION,
|
SPL_ARTEFAKT_OF_REGENERATION,
|
||||||
|
|
Loading…
Reference in New Issue