forked from github/server
at_reportspell is now a message about a spellbook-entry, not just a spell
This commit is contained in:
parent
6cb4322c1d
commit
707349d014
|
@ -49,6 +49,7 @@ without prior permission by the authors of Eressea.
|
|||
#include <kernel/resources.h>
|
||||
#include <kernel/ship.h>
|
||||
#include <kernel/skill.h>
|
||||
#include <kernel/spellbook.h>
|
||||
#include <kernel/teleport.h>
|
||||
#include <kernel/terrain.h>
|
||||
#include <kernel/unit.h>
|
||||
|
@ -1012,7 +1013,7 @@ static void cr_find_address(FILE * F, const faction * uf, quicklist * addresses)
|
|||
|
||||
/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
|
||||
|
||||
static void cr_reportspell(FILE * F, spell * sp, const struct locale *lang)
|
||||
static void cr_reportspell(FILE * F, spell * sp, int level, const struct locale *lang)
|
||||
{
|
||||
int k;
|
||||
const char *name =
|
||||
|
@ -1020,7 +1021,7 @@ static void cr_reportspell(FILE * F, spell * sp, const struct locale *lang)
|
|||
|
||||
fprintf(F, "ZAUBER %d\n", hashstring(sp->sname));
|
||||
fprintf(F, "\"%s\";name\n", name);
|
||||
fprintf(F, "%d;level\n", sp->level);
|
||||
fprintf(F, "%d;level\n", level);
|
||||
fprintf(F, "%d;rank\n", sp->rank);
|
||||
fprintf(F, "\"%s\";info\n", spell_info(sp, lang));
|
||||
if (sp->parameter)
|
||||
|
@ -1567,8 +1568,8 @@ report_computer(const char *filename, report_context * ctx, const char *charset)
|
|||
cr_find_address(F, f, ctx->addresses);
|
||||
a = a_find(f->attribs, &at_reportspell);
|
||||
while (a && a->type == &at_reportspell) {
|
||||
spell *sp = (spell *) a->data.v;
|
||||
cr_reportspell(F, sp, f->locale);
|
||||
spellbook_entry *sbe = (spellbook_entry *) a->data.v;
|
||||
cr_reportspell(F, sbe->sp, sbe->level, f->locale);
|
||||
a = a->next;
|
||||
}
|
||||
for (a = a_find(f->attribs, &at_showitem); a && a->type == &at_showitem;
|
||||
|
|
|
@ -59,6 +59,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#include <kernel/save.h>
|
||||
#include <kernel/ship.h>
|
||||
#include <kernel/skill.h>
|
||||
#include <kernel/spellbook.h>
|
||||
#include <kernel/teleport.h>
|
||||
#include <kernel/terrain.h>
|
||||
#include <kernel/terrainid.h>
|
||||
|
@ -214,13 +215,14 @@ rparagraph(FILE * F, const char *str, ptrdiff_t indent, int hanging_indent,
|
|||
} while (*begin);
|
||||
}
|
||||
|
||||
static void nr_spell(FILE * F, spell * sp, const struct locale *lang)
|
||||
static void nr_spell(FILE * F, spellbook_entry * sbe, const struct locale *lang)
|
||||
{
|
||||
int bytes, k, itemanz, costtyp;
|
||||
int dh = 0;
|
||||
char buf[4096];
|
||||
char *bufp = buf;
|
||||
size_t size = sizeof(buf) - 1;
|
||||
spell * sp = sbe->sp;
|
||||
const char *params = sp->parameter;
|
||||
|
||||
rnl(F);
|
||||
|
@ -251,7 +253,7 @@ static void nr_spell(FILE * F, spell * sp, const struct locale *lang)
|
|||
*bufp = 0;
|
||||
rparagraph(F, buf, 0, 0, 0);
|
||||
|
||||
sprintf(buf, "%s %d", LOC(lang, "nr_spell_level"), sp->level);
|
||||
sprintf(buf, "%s %d", LOC(lang, "nr_spell_level"), sbe->level);
|
||||
rparagraph(F, buf, 0, 0, 0);
|
||||
|
||||
sprintf(buf, "%s %d", LOC(lang, "nr_spell_rank"), sp->rank);
|
||||
|
@ -278,7 +280,7 @@ static void nr_spell(FILE * F, spell * sp, const struct locale *lang)
|
|||
}
|
||||
} else {
|
||||
if (costtyp == SPC_LEVEL || costtyp == SPC_LINEAR) {
|
||||
itemanz *= sp->level;
|
||||
itemanz *= sbe->level;
|
||||
}
|
||||
bytes =
|
||||
snprintf(bufp, size, "%d %s", itemanz, LOC(lang, resourcename(rtype,
|
||||
|
@ -2301,8 +2303,8 @@ report_plaintext(const char *filename, report_context * ctx,
|
|||
rnl(F);
|
||||
centre(F, LOC(f->locale, "section_newspells"), true);
|
||||
while (a && a->type == &at_reportspell) {
|
||||
spell *sp = (spell *) a->data.v;
|
||||
nr_spell(F, sp, f->locale);
|
||||
spellbook_entry *sbe = (spellbook_entry *) a->data.v;
|
||||
nr_spell(F, sbe, f->locale);
|
||||
a = a->next;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -86,10 +86,20 @@ const char *magic_school[MAXMAGIETYP] = {
|
|||
"common"
|
||||
};
|
||||
|
||||
attrib_type at_reportspell = {
|
||||
"reportspell", NULL, NULL, NULL, NO_WRITE, NO_READ
|
||||
};
|
||||
static void a_init_reportspell(struct attrib *a) {
|
||||
a->data.v = calloc(1, sizeof(spellbook_entry));
|
||||
}
|
||||
|
||||
static void a_finalize_reportspell(struct attrib *a) {
|
||||
free(a->data.v);
|
||||
}
|
||||
|
||||
attrib_type at_reportspell = {
|
||||
"reportspell",
|
||||
a_init_reportspell,
|
||||
a_finalize_reportspell,
|
||||
0, NO_WRITE, NO_READ
|
||||
};
|
||||
/**
|
||||
** at_icastle
|
||||
** TODO: separate castle-appearance from illusion-effects
|
||||
|
|
Loading…
Reference in New Issue