From 406e30468a80c5dc5b35bea1bd5f4bbeb8c4ee01 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Fri, 9 Apr 2004 01:23:54 +0000 Subject: [PATCH] - http://eressea.upb.de/mantis/bug_view_page.php?bug_id=0000062 Bugfix Chaostor - http://eressea.upb.de/mantis/bug_view_page.php?bug_id=0000067 bugfix Blick in die Realitaet MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Zusätzliche asserts in xmlreader Entferne den 'askalon' code --- src/askalon/askalon.dsp | 265 ------------ src/askalon/attributes.c | 45 --- src/askalon/attributes.h | 15 - src/askalon/main.c | 736 ---------------------------------- src/askalon/triggers.c | 56 --- src/askalon/triggers.h | 15 - src/common/kernel/eressea.c | 20 +- src/common/kernel/magic.c | 2 + src/common/kernel/region.c | 1 + src/common/kernel/region.h | 1 + src/common/kernel/spell.c | 3 +- src/common/kernel/xmlreader.c | 2 + src/eressea.sln | 46 --- 13 files changed, 18 insertions(+), 1189 deletions(-) delete mode 100644 src/askalon/askalon.dsp delete mode 100644 src/askalon/attributes.c delete mode 100644 src/askalon/attributes.h delete mode 100644 src/askalon/main.c delete mode 100644 src/askalon/triggers.c delete mode 100644 src/askalon/triggers.h diff --git a/src/askalon/askalon.dsp b/src/askalon/askalon.dsp deleted file mode 100644 index 4b0960e44..000000000 --- a/src/askalon/askalon.dsp +++ /dev/null @@ -1,265 +0,0 @@ -# Microsoft Developer Studio Project File - Name="askalon" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=askalon - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "askalon-6.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "askalon-6.mak" CFG="askalon - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "askalon - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "askalon - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "askalon - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "askalon_" -# PROP BASE Intermediate_Dir "askalon_" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /Za /W4 /GX /Z7 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x407 /d "NDEBUG" -# ADD RSC /l 0x407 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 - -!ELSEIF "$(CFG)" == "askalon - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "askalon0" -# PROP BASE Intermediate_Dir "askalon0" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /Za /W4 /Gm /ZI /Od /I ".." /I "../util" /I "../common" /D "_CONSOLE" /D "_MBCS" /D "WIN32" /D "_DEBUG" /FR /YX"stdafx.h" /FD /c -# ADD BASE RSC /l 0x407 /d "_DEBUG" -# ADD RSC /l 0x407 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "askalon - Win32 Release" -# Name "askalon - Win32 Debug" -# Begin Group "Header" - -# PROP Default_Filter "*.h" -# Begin Source File - -SOURCE=..\modules\arena.h -# End Source File -# Begin Source File - -SOURCE=..\modules\museum.h -# End Source File -# Begin Source File - -SOURCE=..\modules\score.h -# End Source File -# Begin Source File - -SOURCE=.\weapons.h -# End Source File -# Begin Source File - -SOURCE=..\modules\xmas2000.h -# End Source File -# End Group -# Begin Group "Conversion" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\old\pointertags.c - -!IF "$(CFG)" == "askalon - Win32 Release" - -!ELSEIF "$(CFG)" == "askalon - Win32 Debug" - -# PROP Exclude_From_Build 1 - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\old\relation.c - -!IF "$(CFG)" == "askalon - Win32 Release" - -!ELSEIF "$(CFG)" == "askalon - Win32 Debug" - -# PROP Exclude_From_Build 1 - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\old\trigger.c - -!IF "$(CFG)" == "askalon - Win32 Release" - -!ELSEIF "$(CFG)" == "askalon - Win32 Debug" - -# PROP Exclude_From_Build 1 - -!ENDIF - -# End Source File -# End Group -# Begin Group "Attributes" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\attributes\attributes.c -# End Source File -# Begin Source File - -SOURCE=..\attributes\attributes.h -# End Source File -# Begin Source File - -SOURCE=..\attributes\follow.c -# End Source File -# Begin Source File - -SOURCE=..\attributes\follow.h -# End Source File -# Begin Source File - -SOURCE=..\attributes\hate.c -# End Source File -# Begin Source File - -SOURCE=..\attributes\iceberg.c -# End Source File -# Begin Source File - -SOURCE=..\attributes\iceberg.h -# End Source File -# Begin Source File - -SOURCE=..\attributes\key.c -# End Source File -# Begin Source File - -SOURCE=..\attributes\key.h -# End Source File -# Begin Source File - -SOURCE=..\attributes\matmod.c -# End Source File -# Begin Source File - -SOURCE=..\attributes\matmod.h -# End Source File -# Begin Source File - -SOURCE=..\attributes\reduceproduction.c -# End Source File -# Begin Source File - -SOURCE=..\attributes\reduceproduction.h -# End Source File -# Begin Source File - -SOURCE=..\attributes\targetregion.c -# End Source File -# End Group -# Begin Group "Races" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\races\dragons.c -# End Source File -# Begin Source File - -SOURCE=..\races\dragons.h -# End Source File -# Begin Source File - -SOURCE=..\races\illusion.c -# End Source File -# Begin Source File - -SOURCE=..\races\illusion.h -# End Source File -# Begin Source File - -SOURCE=..\races\zombies.c -# End Source File -# Begin Source File - -SOURCE=..\races\zombies.h -# End Source File -# End Group -# Begin Group "Items" - -# PROP Default_Filter "" -# End Group -# Begin Source File - -SOURCE=.\korrektur.c -# End Source File -# Begin Source File - -SOURCE=.\main.c -# End Source File -# Begin Source File - -SOURCE=..\modules\score.c -# End Source File -# Begin Source File - -SOURCE=.\triggers.c -# End Source File -# Begin Source File - -SOURCE=.\weapons.c -# End Source File -# End Target -# End Project diff --git a/src/askalon/attributes.c b/src/askalon/attributes.c deleted file mode 100644 index a38291081..000000000 --- a/src/askalon/attributes.c +++ /dev/null @@ -1,45 +0,0 @@ -/* vi: set ts=2: - * - * - * Eressea PB(E)M host Copyright (C) 1998-2000 - * Christian Schlittchen (corwin@amber.kn-bremen.de) - * Katja Zedel (katze@felidae.kn-bremen.de) - * Henning Peters (faroul@beyond.kn-bremen.de) - * Enno Rehling (enno@eressea-pbem.de) - * Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de) - * - * This program may not be used, modified or distributed without - * prior permission by the authors of Eressea. - */ - -#include -#include -#include "attributes.h" - -/* attributes includes */ -#include "key.h" -#include "targetregion.h" -#include "reduceproduction.h" -#include "follow.h" -#include "iceberg.h" -#include "hate.h" - -/* util includes */ -#include - -void -init_attributes(void) -{ - /* at_iceberg */ - init_iceberg(); - /* at_key */ - init_key(); - /* at_follow */ - init_follow(); - /* at_targetregion */ - init_targetregion(); - /* at_hate */ - init_hate(); - /* at_reduceproduction */ - init_reduceproduction(); -} diff --git a/src/askalon/attributes.h b/src/askalon/attributes.h deleted file mode 100644 index 657446f72..000000000 --- a/src/askalon/attributes.h +++ /dev/null @@ -1,15 +0,0 @@ -/* vi: set ts=2: - * - * - * Eressea PB(E)M host Copyright (C) 1998-2000 - * Christian Schlittchen (corwin@amber.kn-bremen.de) - * Katja Zedel (katze@felidae.kn-bremen.de) - * Henning Peters (faroul@beyond.kn-bremen.de) - * Enno Rehling (enno@eressea-pbem.de) - * Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de) - * - * This program may not be used, modified or distributed without - * prior permission by the authors of Eressea. - */ - -extern void init_attributes(void); diff --git a/src/askalon/main.c b/src/askalon/main.c deleted file mode 100644 index 4d07bb681..000000000 --- a/src/askalon/main.c +++ /dev/null @@ -1,736 +0,0 @@ -/* vi: set ts=2: - * - * - * Eressea PB(E)M host Copyright (C) 1998-2000 - * Christian Schlittchen (corwin@amber.kn-bremen.de) - * Katja Zedel (katze@felidae.kn-bremen.de) - * Henning Peters (faroul@beyond.kn-bremen.de) - * Enno Rehling (enno@eressea-pbem.de) - * Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de) - * - * based on: - * - * Atlantis v1.0 13 September 1993 Copyright 1993 by Russell Wallace - * Atlantis v1.7 Copyright 1996 by Alex Schröder - * - * This program may not be used, modified or distributed without - * prior permission by the authors of Eressea. - * This program may not be sold or used commercially without prior written - * permission from the authors. - */ - -#include -#include "eressea.h" - -#include "weapons.h" - -/* kernel includes */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* util includes */ -#include -#include - -/* libc includes */ -#include -#include -#include -#include -#include - -int nodescriptions = 0; -int nowrite = 0; -extern char * reportdir; -extern char * datadir; -extern char * basedir; - -extern boolean nonr; -extern boolean nocr; -extern boolean nomer; -extern boolean nomsg; -extern boolean nobattle; -extern boolean nobattledebug; - -extern void korrektur(void); -extern void korrektur_end(void); -extern void reorder(region * r); -extern void freeland(land_region * lr); -extern void init_conversion(void); -extern void register_triggers(void); - -int mapdetail = 0; - -extern void render_init(void); - -static void -init_game(void) -{ - register_triggers(); - init_locales(); - { - char zText[MAX_PATH]; - sprintf(zText, "%s/%s", resourcepath(), "askalon.xml"); - init_data(zText); - } - - init_resources(); - register_items(); - register_buildings(); - init_weapons(); - - init_conversion(); - - render_init(); -} - -void -create_game(void) -{ - assert(regions==NULL || !"game is initialized"); - printf("Keine Spieldaten gefunden, erzeuge neues Spiel...\n"); - makedir("data", 0700); - /* erste Insel generieren */ - new_region(0, 0); - /* Monsterpartei anlegen */ - createmonsters(); - /* Teleportebene anlegen */ - create_teleport_plane(); -} - -void -map(void) -{ - char zText[16]; - FILE * f; - region * r; - sprintf(zText, "map-%d.cr", turn); - f = fopen(zText, "wt"); - fputs("VERSION 42\n", f); - fputs("\"Standard\";konfiguration\n", f); - fprintf(f, "%d;runde\n", turn); - for (r=regions;r;r=r->next) { - fprintf(f, "REGION %d %d\n", r->x, r->y); - fprintf(f, "\"%s\";name\n", rname(r, NULL)); - fprintf(f, "\"%s\";terrain\n", terrain[rterrain(r)].name); - if (!mapdetail) continue; - fprintf(f, "%d;silber\n", rmoney(r)); - if (r->display && strlen(r->display)) - fprintf(f, "\"%s\";beschr\n", r->display); - fprintf(f, "%d;bauern\n", rpeasants(r)); - fprintf(f, "%d;baeume\n", rtrees(r)); - fprintf(f, "%d;pferde\n", rhorses(r)); - if (rterrain(r) == T_MOUNTAIN || rterrain(r) == T_GLACIER) { - fprintf(f, "%d;eisen\n", riron(r)); - if (rlaen(r)>=0) fprintf(f, "%d;laen\n", rlaen(r)); - } - } - fclose(f); -} - -void -getgarbage(void) -{ - faction *f; - - /* Get rid of stuff that was only relevant last turn */ - - for (f = factions; f; f = f->next) { -/* memset(f->showdata, 0, sizeof f->showdata); */ - - freestrlist(f->mistakes); - f->mistakes = 0; - /* TODO: free msgs */ - } -#if 0 - for (r = regions; r; r = r->next) { - freestrlist(r->comments); - r->comments = 0; - freestrlist(r->botschaften); - r->botschaften = 0; - } -#endif -} - -int quickleave = 0; - -void -writepasswd(void) -{ - FILE * F; - faction *f; - char zText[128]; - sprintf(zText, "%s/%s", datapath(), "/passwd"); - F = cfopen(zText, "w"); - if (!F) - return; - puts("Schreibe Passwörter..."); - - for (f = factions; f; f = f->next) { - fprintf(F, "%s:%s:%s:%s\n", factionid(f), f->name, f->passw, f->override); - } - fclose(F); -} - -#ifdef FUZZY_BASE36 -extern int fuzzy_hits; -#endif /* FUZZY_BASE36 */ - -void -processturn(char *filename) -{ - struct summary * begin, * end; - begin = make_summary(false); - printf(" - Korrekturen Runde %d\n", turn); - korrektur(); - turn++; - if (!quickleave) { - puts(" - entferne Texte der letzten Runde"); - getgarbage(); - puts(" - Nehme Korrekturen am Datenbestand vor"); - if (!readorders(filename)) return; -#if BENCHMARK - exit(0); -#endif - processorders(); - score(); - } -#ifdef WACH_WAFF - remove_unequipped_guarded(); -#endif - korrektur_end(); - reports(); - free_units(); - puts(" - Beseitige leere Parteien"); - remove_empty_factions(); - end = make_summary(true); - report_summary(end, begin, false); - report_summary(end, begin, true); - free(end); - free(begin); - writepasswd(); -#ifdef FUZZY_BASE36 - fputs("==--------------------------==\n", stdout); - fprintf(stdout, "## fuzzy base10 hits: %5d ##\n", fuzzy_hits); - fputs("==--------------------------==\n", stdout); -#endif /* FUZZY_BASE36 */ - if (!nowrite) { - char ztext[64]; - sprintf(ztext, "data/%d", turn); - writegame(ztext, 0); - } -} - -void -doreports(void) -{ - struct summary * begin; - begin = make_summary(true); - printf("Schreibe die Reports der %d. Runde...\n", turn); - reports(); - report_summary(begin, begin, false); - free(begin); -} - -void -showmap(int mode) -{ - FILE * F = cfopen("karte", "w"); - if (!F) - return; - puts("Schreibe Karte..."); - - writemap(F, mode); - - fclose(F); -} - -#if ENNO_CLEANUP - -extern void creport_cleanup(void); -extern void reports_cleanup(void); -extern void render_cleanup(void); - -void -cleanup(void) -{ - /* Diese Routine enfernt allen allokierten Speicher wieder. Das ist nur - * zum Debugging interessant, wenn man Leak Detection hat, und nach - * nicht freigegebenem Speicher sucht, der nicht bis zum Ende benötigt - * wird (temporäre Hilsstrukturen) */ - unit *u, *u2; - region *r, *r2; - building *b, *b2; - faction *f, *f2; - ship *s, *s2; - - creport_cleanup(); - reports_cleanup(); - render_cleanup(); - - free(used_faction_ids); - for (r = regions; r; r = r2) { -#if 0 - msg * m = r->msgs; - while (m) { - msg * x = m; - m = m->next; - if (x->type->finalize) x->type->finalize(x); - free(x); - } - rm = rm->next; - } -#endif - for (u = r->units; u; u = u2) { - u2 = u->next; - stripunit(u); - uunhash(u); - free(u); - } - for (b = r->buildings; b; b = b2) { - free(b->name); - free(b->display); - b2 = b->next; - free(b); - } - for (s = r->ships; s; s = s2) { - free(s->name); - free(s->display); - s2 = s->next; - free(s); - } - free(r->display); - if (r->land) freeland(r->land); - r2 = r->next; - while (r->attribs) a_remove (&r->attribs, r->attribs); - free(r); - } - for (f = factions; f; f = f2) { - stripfaction(f); - f2 = f->next; - free(f); - } - while (planes) { - plane * pl = planes; - planes = planes->next; - free(pl); - } -#ifdef LEAK_DETECT - leak_report(stderr); -#endif -} -#endif - -#include "magic.h" - -static boolean -locale_check(void) -{ - int i, errorlevel = 0; - unsigned char * umlaute = (unsigned char*)"äöüÄÖÜß"; - /* E: das prüft, ob umlaute funktionieren. Wenn äöü nicht mit isalpha() true sind, kriegen wir ärger. */ - for (i=0;i!=3;++i) { - if (toupper(umlaute[i])!=(int)umlaute[i+3]) { - ++errorlevel; - fprintf(stderr, "error in locale[%d, %d]: toupper(%c)==%c\n", i, umlaute[i], umlaute[i], toupper(umlaute[i])); - } - } - for (i=0;umlaute[i]!=0;++i) { - if (!isalpha(umlaute[i]) || isspace(umlaute[i]) || iscntrl(umlaute[i])) { - ++errorlevel; - if (!isalpha(umlaute[i])) - fprintf(stderr, "error in locale[%d, %d]: !isalpha(%c)\n", i, umlaute[i], umlaute[i]); - if (iscntrl(umlaute[i])) - fprintf(stderr, "error in locale(%d, %d]: iscntrl(%c)\n", i, umlaute[i], umlaute[i]); - if (isspace(umlaute[i])) - fprintf(stderr, "error in locale[%d, %d]: isspace(%c)\n", i, umlaute[i], umlaute[i]); - } - } - if (errorlevel) return -1; -} - -#if MALLOCDBG -void -init_malloc_debug(void) -{ -#if (defined(_MSC_VER)) -# if MALLOCDBG == 2 -# define CHECKON() _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF | _CRTDBG_DELAY_FREE_MEM_DF | _CRTDBG_CHECK_ALWAYS_DF) -# elif MALLOCDBG == 1 -# define CHECKON() _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_CRT_DF | _CRTDBG_DELAY_FREE_MEM_DF) -# endif -#endif -} -#endif - -int -main(int argc, char *argv[]) -{ - int i, errorlevel = 0; - FILE * F; - - setlocale(LC_ALL, ""); - setlocale(LC_NUMERIC, "C"); -#ifdef LOCALE_CHECK - assert(locale_check() || !"ERROR: The current locale is not suitable for international Eressea.\n"); -#endif -#if MALLOCDBG - init_malloc_debug(); -#endif - - F = fopen("res/spells", "wt"); - if (F) { - int i, m = -1; - for (i=0;spelldaten[i].id;++i) { - if (spelldaten[i].magietyp!=m) { - m=spelldaten[i].magietyp; - fprintf(F, "\n%s\n", magietypen[m]); - } - fprintf(F, "%d\t%s\n", spelldaten[i].level, spelldaten[i].name); - } - fclose(F); - } else { - sprintf(buf, "fopen(%s): ", "res/spells"); - perror(buf); - } -/* - F = fopen("res/bonus", "wt"); - if (F) { - race_t r; - for (r=0;r!=MAXRACES;++r) { - skill_t sk; - int i = 0; - fprintf(F, "const bonus %s_bonus = {\n\t", race[r].name[0]); - for (sk=0;sk!=MAXSKILLS;sk++) { - if (race[r].bonus[sk]) { - if (i==8) { - i = 0; - fputs("\n\t", F); - } - fprintf(F, "{ SK_%s, %d }, ", skillnames[sk], race[r].bonus[sk]); - ++i; - } - } - fputs("{ SK_NONE, 0 }\n};\n", F); - } - fclose(F); - } else { - sprintf(buf, "fopen(%s): ", "res/spells"); - perror(buf); - } -*/ - debug = 0; - quickleave = 0; - - printf( - "\n" - "%s PBEM host\n" - "Copyright (C) 1996-2001 C.Schlittchen, K.Zedel, E.Rehling, et al.\n\n" - - "Eressea is distributed in the hope that it will be useful,\n" - "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n" - - "Compilation: " __DATE__ " at " __TIME__ "\nVersion: %f\n", global.gamename, version()); - - for (i = 1; i != argc; i++) - if ((argv[i][0] == '-' || argv[i][0] == '/')) - switch (argv[i][1]) { - case 't': - turn = atoi(argv[++i]); - break; - case 'f': - firstx = atoi(argv[++i]); - firsty = atoi(argv[++i]); - break; - case 'q': - quiet = 1; - break; - case 'x': - maxregions = atoi(argv[++i]); - maxregions = (maxregions*81+80) / 81; - break; - } - - { - char zText[MAX_PATH]; - strcat(strcpy(zText, resourcepath()), "/timestrings"); - read_datenames(zText); - } - - kernel_init(); - init_game(); - readgame(false); -#if MALLOCDBG - assert(_CrtCheckMemory()); -#endif - /* verify_data(); */ - - if (turn == 0) - srand(time((time_t *) NULL)); - else - srand(turn); - - /* Problem: In jedem Report ist die Regionsreihenfolge eine andere. */ - - /* { int nregions=0; region *r; for(r=regions;r;r=r->next) nregions++; - * scramble(regions, nregions, sizeof(region *)); } */ - - errorlevel = -1; - - for (i = 1; i != argc; i++) - if (argv[i][0] == '-' || - argv[i][0] == '/') - switch (argv[i][1]) { - case 'c': - korrektur(); - break; - case 'r': - errorlevel = 0; - score(); - doreports(); - break; - case 'Q': - quickleave = 1; - break; - case 'n': - if (strcmp(argv[i]+1, "nocr")==0) nocr = true; - else if (strcmp(argv[i]+1, "nosave")==0) nowrite = true; - else if (strcmp(argv[i]+1, "nonr")==0) nonr = true; - else if (strcmp(argv[i]+1, "nomer")==0) nomer = true; - else if (strcmp(argv[i]+1, "nomsg")==0) nomsg = true; - else if (strcmp(argv[i]+1, "nobattle")==0) nobattle = true; - else if (strcmp(argv[i]+1, "nodebug")==0) nobattledebug = true; - break; - case 'v': - ++i; -#define TEST_BORDERS 0 -#if TEST_BORDERS - { - border * b; - new_border(&bt_fogwall, findregion(5,-6), findregion(5, -5)); - new_border(&bt_noway, findregion(4,-5), findregion(5, -5)); - new_border(&bt_wall, findregion(5,-5), findregion(6, -5)); - b = new_border(&bt_illusionwall, findregion(4,-4), findregion(5, -5)); - b->data = (void*) 1; /* partei 1 hat's gezaubert */ - } -#endif - if (i >= argc || argv[i][0]) { - printf(" - verwende Befehlsdatei: %s\n", argv[i]); - processturn(argv[i]); - errorlevel = 0; - } else { - puts("Fehler: keine Befehlsdatei angegeben.\n\n"); - errorlevel = 1; - } - break; -#ifdef EXTRA_CR - case 'p' : - { - FILE * out = fopen("planes.cr", "wt"); - faction * f; - region * r; - if (!out) break; - fprintf(out, "VERSION 36\n"); - for (f = factions; f; f = f->next) cr_faction(out, f); - for (r = regions;r;r=r->next) if (getplane(r)) cr_region(out, r); - fclose(out); - } - break; - case 'w' : - { - FILE * out = fopen("world.cr", "wt"); - faction * f; - region * r; - if (!out) break; - fprintf(out, "VERSION 36\n"); - for (f = factions; f; f = f->next) cr_faction(out, f); - for (r = regions;r;r=r->next) cr_region(out, r); - fclose(out); - } - break; -#endif - case 'a': - writeadresses("adressen"); - exit(0); - break; - - case '#': - score(); - exit(0); - break; - case 'm': - if (argv[i][2]=='d') mapdetail = 1; - map(); - break; - case 'o': - reportdir = argv[++i]; - break; - case 'd': - if (!strcmp(argv[i] + 1, "debug")) { - nodescriptions = 1; - debug = fopen("debug", "w"); - break; - } - datadir = argv[++i]; - break; - case 'b': - basedir = argv[++i]; - break; - case 'f': - i++; - case 't': - case 'x': - i++; - case 'q': - break; - default: - fprintf(stderr, "Usage: %s [options]\n" - "-r : schreibt die Reports neu\n" - "-x n : Lädt nur die ersten n regionen\n" - "-g befehlsdatei : verarbeitet Spielleiterbefehle\n" - "-v befehlsdatei : verarbeitet automatisch die angegebene Befehlsdatei\n" - "-a : gibt Adressenliste aus\n" - "-# : gibt Scoreliste aus\n" - "-d datadir : gibt das datenverzeichnis an\n" - "-o reportdir : gibt das reportverzeichnis an\n" - "-nomsg : keine Messages (RAM sparen)\n" - "-nocr : keine CRs\n" - "-nonr : keine Reports\n" - "-nobattle : keine Kämpfe\n" - "-debug : schreibt Debug-Ausgaben in die Datei debug\n" - "-? : help\n", argv[0]); - errorlevel = 1; - break; - } - if (errorlevel >= 0) { -#if ENNO_CLEANUP - cleanup(); -#endif - game_done(); - return errorlevel; - } - puts("? zeigt das Menue an."); - printf("sizeof:\n region\t%d (%d)\n unit\t%d (%d)\n", (int)sizeof(region), listlen(regions), (int)sizeof(unit), -1); - printf(" ship\t%d (%d)\n building\t%d(%d)\n", (int)sizeof(ship), -1, (int)sizeof(building), -1); - - for (;;) { - if (quickleave) break; - printf("> "); - fgets(buf, 1024, stdin); - - switch (buf[0]) { - case 'a': - puts("Schreibe Liste der Adressen..."); - writeadresses("adressen"); - - fclose(F); - break; - - case 'c': - korrektur(); - break; - - case 'k': - showmap(M_TERRAIN); - break; - - case 'p': - showmap(M_FACTIONS); - break; - - case 'u': - showmap(M_UNARMED); - break; - - case 'v': - printf("Datei mit den Befehlen? "); - fgets(buf, 1024, stdin); - if (buf[0]) - processturn(buf); - break; - - case 'r': - doreports(); - break; - - case 's': - { - char ztext[64]; - sprintf(ztext, "data/%d", turn); - writegame(ztext, 0); - } - break; - - case 'q': -#if ENNO_CLEANUP - cleanup(); -#endif - game_done(); - return 0; - case 'Q': - quickleave = 1; - break; - case 'l': - listnames(); - break; - - case '#': - score(); - break; - -#ifdef QTMAP - case '*': - qt_edit_map(argc, argv); - break; -#endif - - default: - puts("modify:\n" - " v - Befehle verarbeiten.\n" - " g - Spielleiterbefehle verarbeiten.\n" - " e - Erzeuge Regionen.\n" - " t - Terraform Region.\n" - " T - Terraform Block.\n" - " m - Erschaffe Einheiten und Monster.\n" - " b - Erbaue eine Burg.\n" - " n - Neue Spieler hinzufuegen.\n" - " M - Move unit.\n" - " c - Korrekturen durchführen.\n" - "information:\n" - " a - Adressen anzeigen.\n" - " i - Info ueber eine Region.\n" - " U - Info ueber units einer Region.\n" - " k - Karte anzeigen.\n" - " p - Politische Karte anzeigen.\n" - " u - Karte unbewaffneter Regionen anzeigen.\n" - " l - Liste aller Laendernamen zeigen.\n" -#ifdef QTMAP - " * - Qt-Karte anzeigen.\n" -#endif - "save:\n" - " r - Reports schreiben.\n" - " # - Scoreliste speichern.\n" - " s - Spielstand speichern.\n" - "\n" - " q - Beenden."); - } - } - return 0; -} - -struct settings global = { - "Askalon", /* gamename */ -}; diff --git a/src/askalon/triggers.c b/src/askalon/triggers.c deleted file mode 100644 index 8e9eceadc..000000000 --- a/src/askalon/triggers.c +++ /dev/null @@ -1,56 +0,0 @@ -/* vi: set ts=2: - * Eressea PB(E)M host Copyright (C) 1998-2000 - * Christian Schlittchen (corwin@amber.kn-bremen.de) - * Katja Zedel (katze@felidae.kn-bremen.de) - * Henning Peters (faroul@beyond.kn-bremen.de) - * Enno Rehling (enno@eressea-pbem.de) - * Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de) - * - * This program may not be used, modified or distributed without - * prior permission by the authors of Eressea. - */ - -/** module: eressea/triggers - * Registration and setup of all the triggers that are used in an Eressea - * world. - */ - -#include -#include - -/* triggers includes */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* util includes */ -#include - -/* libc includes */ -#include - -void -register_triggers(void) -{ - fprintf(stdout, "- registering triggers\n"); - tt_register(&tt_changefaction); - tt_register(&tt_changerace); - tt_register(&tt_createcurse); - tt_register(&tt_createunit); - tt_register(&tt_gate); - tt_register(&tt_unguard); - tt_register(&tt_giveitem); - tt_register(&tt_killunit); - tt_register(&tt_removecurse); - tt_register(&tt_shock); - tt_register(&tt_unitmessage); - tt_register(&tt_timeout); -} diff --git a/src/askalon/triggers.h b/src/askalon/triggers.h deleted file mode 100644 index 617174af0..000000000 --- a/src/askalon/triggers.h +++ /dev/null @@ -1,15 +0,0 @@ -/* vi: set ts=2: - * - * - * Eressea PB(E)M host Copyright (C) 1998-2000 - * Christian Schlittchen (corwin@amber.kn-bremen.de) - * Katja Zedel (katze@felidae.kn-bremen.de) - * Henning Peters (faroul@beyond.kn-bremen.de) - * Enno Rehling (enno@eressea-pbem.de) - * Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de) - * - * This program may not be used, modified or distributed without - * prior permission by the authors of Eressea. - */ - -void register_triggers(void); diff --git a/src/common/kernel/eressea.c b/src/common/kernel/eressea.c index 065f23a97..ebbb1deb8 100644 --- a/src/common/kernel/eressea.c +++ b/src/common/kernel/eressea.c @@ -2751,19 +2751,19 @@ fwage(const region *r, const faction *f, boolean img) static region * findspecialdirection(const region *r, const char *token) { - attrib *a; - spec_direction *d; + attrib *a; + spec_direction *d; - if (strlen(token)==0) return NULL; - for (a = a_find(r->attribs, &at_direction);a;a=a->nexttype) { - d = (spec_direction *)(a->data.v); + if (strlen(token)==0) return NULL; + for (a = a_find(r->attribs, &at_direction);a;a=a->nexttype) { + d = (spec_direction *)(a->data.v); - if(strncasecmp(d->keyword, token, strlen(token)) == 0) { - return findregion(d->x, d->y); - } - } + if (d->active && strncasecmp(d->keyword, token, strlen(token)) == 0) { + return findregion(d->x, d->y); + } + } - return NULL; + return NULL; } region * diff --git a/src/common/kernel/magic.c b/src/common/kernel/magic.c index 39803f1fb..19c677bca 100644 --- a/src/common/kernel/magic.c +++ b/src/common/kernel/magic.c @@ -48,6 +48,7 @@ #include /* util includes */ +#include #include #include #include @@ -3105,6 +3106,7 @@ create_special_direction(region *r, int x, int y, int duration, attrib *a = a_add(&r->attribs, a_new(&at_direction)); spec_direction *d = (spec_direction *)(a->data.v); + d->active = false; d->x = x; d->y = y; d->duration = duration; diff --git a/src/common/kernel/region.c b/src/common/kernel/region.c index 0ba860bba..fa0cad3c5 100644 --- a/src/common/kernel/region.c +++ b/src/common/kernel/region.c @@ -184,6 +184,7 @@ a_readdirection(attrib *a, FILE *f) d->desc = strdup(cstring(buf)); fscanf(f, "%s ", buf); d->keyword = strdup(cstring(buf)); + d->active = true; return AT_READ_OK; } diff --git a/src/common/kernel/region.h b/src/common/kernel/region.h index 320b863dc..1990df2dc 100644 --- a/src/common/kernel/region.h +++ b/src/common/kernel/region.h @@ -114,6 +114,7 @@ typedef struct { int x; int y; int duration; + bool active; char *desc; char *keyword; } spec_direction; diff --git a/src/common/kernel/spell.c b/src/common/kernel/spell.c index 4bab3cd80..ffc18c3ec 100644 --- a/src/common/kernel/spell.c +++ b/src/common/kernel/spell.c @@ -6428,8 +6428,9 @@ sp_viewreality(castorder *co) rl = all_in_range(r_astral_to_standard(r), TP_RADIUS); /* Irgendwann mal auf Curses u/o Attribut umstellen. */ - for(rl2=rl; rl2; rl2=rl2->next) { + for (rl2=rl; rl2; rl2=rl2->next) { u = createunit(rl2->data, mage->faction, RS_FARVISION, new_race[RC_SPELL]); + set_level(u, SK_OBSERVATION, co->level/2); set_string(&u->name, "Zauber: Blick in die Realität"); u->age = 2; } diff --git a/src/common/kernel/xmlreader.c b/src/common/kernel/xmlreader.c index a92080518..4c4894603 100644 --- a/src/common/kernel/xmlreader.c +++ b/src/common/kernel/xmlreader.c @@ -46,6 +46,7 @@ static void xml_readtext(xmlNodePtr node, struct locale ** lang, xmlChar **text) { xmlChar * property = xmlGetProp(node, BAD_CAST "locale"); + assert(property!=NULL); *lang = find_locale((const char*)property); if (*lang==NULL) *lang = make_locale((const char*)property); xmlFree(property); @@ -910,6 +911,7 @@ xml_readstrings(xmlXPathContextPtr xpath, xmlNodePtr * nodeTab, int nodeNr, bool int k; char zName[128]; + assert(name!=NULL); if (names) nspc = xmlGetProp(stringNode->parent, BAD_CAST "name"); mkname_buf((const char*)nspc, (const char*)name, zName); if (nspc!=NULL) xmlFree(nspc); diff --git a/src/eressea.sln b/src/eressea.sln index 9fad009a8..0056cc529 100644 --- a/src/eressea.sln +++ b/src/eressea.sln @@ -1,42 +1,15 @@ Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "attributes", "common\attributes\attributes.vcproj", "{330712B5-8B27-4B17-B3CF-7A02CC0F93C3}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eressea", "eressea\eressea.vcproj", "{B859D542-781E-4647-BCAB-3FE5ED077366}" - ProjectSection(ProjectDependencies) = postProject - {C14E3D2B-8189-4570-A4E3-9010C873E4FD} = {C14E3D2B-8189-4570-A4E3-9010C873E4FD} - {79659D44-EC28-42B9-9475-6C0D62D0AAE0} = {79659D44-EC28-42B9-9475-6C0D62D0AAE0} - {EF495253-2EEC-4F83-B6C0-D651F88B2198} = {EF495253-2EEC-4F83-B6C0-D651F88B2198} - {1D80D05F-BCF5-4971-8F06-D9581FD3B1F4} = {1D80D05F-BCF5-4971-8F06-D9581FD3B1F4} - {601CF164-F483-4DE7-8014-64BDD30680B5} = {601CF164-F483-4DE7-8014-64BDD30680B5} - {EDB0DE67-8215-4AF7-ACA1-F23CB11FF211} = {EDB0DE67-8215-4AF7-ACA1-F23CB11FF211} - {0EE778AB-8445-40DB-8F65-6BE378A91B97} = {0EE778AB-8445-40DB-8F65-6BE378A91B97} - {330712B5-8B27-4B17-B3CF-7A02CC0F93C3} = {330712B5-8B27-4B17-B3CF-7A02CC0F93C3} - {4C837BEC-A428-4287-84B3-8F8F9DE7FA00} = {4C837BEC-A428-4287-84B3-8F8F9DE7FA00} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gamecode", "common\gamecode\gamecode.vcproj", "{79659D44-EC28-42B9-9475-6C0D62D0AAE0}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "items", "common\items\items.vcproj", "{C14E3D2B-8189-4570-A4E3-9010C873E4FD}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kernel", "common\kernel\kernel.vcproj", "{EDB0DE67-8215-4AF7-ACA1-F23CB11FF211}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapper", "mapper\mapper.vcproj", "{17F83AAB-352D-4F68-ADA6-09F36D86826F}" ProjectSection(ProjectDependencies) = postProject - {C14E3D2B-8189-4570-A4E3-9010C873E4FD} = {C14E3D2B-8189-4570-A4E3-9010C873E4FD} {EF495253-2EEC-4F83-B6C0-D651F88B2198} = {EF495253-2EEC-4F83-B6C0-D651F88B2198} {1D80D05F-BCF5-4971-8F06-D9581FD3B1F4} = {1D80D05F-BCF5-4971-8F06-D9581FD3B1F4} {601CF164-F483-4DE7-8014-64BDD30680B5} = {601CF164-F483-4DE7-8014-64BDD30680B5} {EDB0DE67-8215-4AF7-ACA1-F23CB11FF211} = {EDB0DE67-8215-4AF7-ACA1-F23CB11FF211} {0EE778AB-8445-40DB-8F65-6BE378A91B97} = {0EE778AB-8445-40DB-8F65-6BE378A91B97} - {330712B5-8B27-4B17-B3CF-7A02CC0F93C3} = {330712B5-8B27-4B17-B3CF-7A02CC0F93C3} {4C837BEC-A428-4287-84B3-8F8F9DE7FA00} = {4C837BEC-A428-4287-84B3-8F8F9DE7FA00} EndProjectSection EndProject @@ -62,14 +35,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "util", "common\util\util.vc EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eressea-lua", "eressea\eressea-lua.vcproj", "{749A2F7C-B9C3-4CEB-B1B2-1D4587E68719}" ProjectSection(ProjectDependencies) = postProject - {C14E3D2B-8189-4570-A4E3-9010C873E4FD} = {C14E3D2B-8189-4570-A4E3-9010C873E4FD} - {79659D44-EC28-42B9-9475-6C0D62D0AAE0} = {79659D44-EC28-42B9-9475-6C0D62D0AAE0} {EF495253-2EEC-4F83-B6C0-D651F88B2198} = {EF495253-2EEC-4F83-B6C0-D651F88B2198} {1D80D05F-BCF5-4971-8F06-D9581FD3B1F4} = {1D80D05F-BCF5-4971-8F06-D9581FD3B1F4} {601CF164-F483-4DE7-8014-64BDD30680B5} = {601CF164-F483-4DE7-8014-64BDD30680B5} {EDB0DE67-8215-4AF7-ACA1-F23CB11FF211} = {EDB0DE67-8215-4AF7-ACA1-F23CB11FF211} {0EE778AB-8445-40DB-8F65-6BE378A91B97} = {0EE778AB-8445-40DB-8F65-6BE378A91B97} - {330712B5-8B27-4B17-B3CF-7A02CC0F93C3} = {330712B5-8B27-4B17-B3CF-7A02CC0F93C3} {4C837BEC-A428-4287-84B3-8F8F9DE7FA00} = {4C837BEC-A428-4287-84B3-8F8F9DE7FA00} EndProjectSection EndProject @@ -79,22 +49,6 @@ Global Release = Release EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution - {330712B5-8B27-4B17-B3CF-7A02CC0F93C3}.Debug.ActiveCfg = Debug|Win32 - {330712B5-8B27-4B17-B3CF-7A02CC0F93C3}.Debug.Build.0 = Debug|Win32 - {330712B5-8B27-4B17-B3CF-7A02CC0F93C3}.Release.ActiveCfg = Release|Win32 - {330712B5-8B27-4B17-B3CF-7A02CC0F93C3}.Release.Build.0 = Release|Win32 - {B859D542-781E-4647-BCAB-3FE5ED077366}.Debug.ActiveCfg = Debug|Win32 - {B859D542-781E-4647-BCAB-3FE5ED077366}.Debug.Build.0 = Debug|Win32 - {B859D542-781E-4647-BCAB-3FE5ED077366}.Release.ActiveCfg = Release|Win32 - {B859D542-781E-4647-BCAB-3FE5ED077366}.Release.Build.0 = Release|Win32 - {79659D44-EC28-42B9-9475-6C0D62D0AAE0}.Debug.ActiveCfg = Debug|Win32 - {79659D44-EC28-42B9-9475-6C0D62D0AAE0}.Debug.Build.0 = Debug|Win32 - {79659D44-EC28-42B9-9475-6C0D62D0AAE0}.Release.ActiveCfg = Release|Win32 - {79659D44-EC28-42B9-9475-6C0D62D0AAE0}.Release.Build.0 = Release|Win32 - {C14E3D2B-8189-4570-A4E3-9010C873E4FD}.Debug.ActiveCfg = Debug|Win32 - {C14E3D2B-8189-4570-A4E3-9010C873E4FD}.Debug.Build.0 = Debug|Win32 - {C14E3D2B-8189-4570-A4E3-9010C873E4FD}.Release.ActiveCfg = Release|Win32 - {C14E3D2B-8189-4570-A4E3-9010C873E4FD}.Release.Build.0 = Release|Win32 {EDB0DE67-8215-4AF7-ACA1-F23CB11FF211}.Debug.ActiveCfg = Debug|Win32 {EDB0DE67-8215-4AF7-ACA1-F23CB11FF211}.Debug.Build.0 = Debug|Win32 {EDB0DE67-8215-4AF7-ACA1-F23CB11FF211}.Release.ActiveCfg = Release|Win32