diff --git a/src/common/gamecode/report.c b/src/common/gamecode/report.c index 36c3e7d8c..d985a0bc9 100644 --- a/src/common/gamecode/report.c +++ b/src/common/gamecode/report.c @@ -2547,6 +2547,34 @@ view_regatta(region * r, faction * f) recurse_regatta(r, r, f, skill/2); } +static void +global_report(const char * filename) +{ + FILE * F = fopen(filename, "w"); + region * r; + faction * f; + faction * monsters = findfaction(MONSTER_FACTION); + faction_list * addresses = NULL; + + if (!monsters) return; + if (!F) return; + + seen_init(); + for (r = regions; r; r = r->next) { + add_seen(r, see_unit, true); + } + + for (f=factions;f;f=f->next) { + faction_list * flist = calloc(1, sizeof(faction_list)); + flist->data = f; + flist->next = addresses; + addresses = flist; + } + + report_computer(F, monsters, addresses, time(NULL)); + fclose(F); +} + static void prepare_report(faction * f) { @@ -2641,6 +2669,7 @@ reports(void) wants_compressed, wants_bzip2; time_t ltime = time(NULL); char pzTime[64]; + const char * str; #ifdef _GNU_SOURCE strftime(pzTime, 64, "%A, %-e. %B %Y, %-k:%M", localtime(<ime)); @@ -2830,10 +2859,16 @@ reports(void) printf("\n"); freelist(addresses); } - /* schliesst BAT und verschickt Zeitungen und Kommentare */ - current_faction = NULL; - seen_done(); - closebatch(BAT); + + str = get_param(global.parameters, "globalreport"); + if (str!=NULL) { + sprintf(buf, "%s/%s.%u.cr", reportpath(), str, turn); + global_report(buf); + } + /* schliesst BAT und verschickt Zeitungen und Kommentare */ + closebatch(BAT); + current_faction = NULL; + seen_done(); } void diff --git a/src/res/hse-05-01.xml b/src/res/hse-05-01.xml index 061df4ae9..28497c54f 100644 --- a/src/res/hse-05-01.xml +++ b/src/res/hse-05-01.xml @@ -32,6 +32,7 @@ +