From 00e34fa972d21aa1a5f98d6feb914b7498677983 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Wed, 24 Feb 2010 16:53:10 +0000 Subject: [PATCH] Eressea can be compiled. Don't know if it runs :-) --- src/basic/basic.vcproj | 4 +- src/basic/{ => src}/main.c | 11 + src/basic/{ => src}/server.c | 0 src/eressea/eressea.vcproj | 38 +- src/eressea/main.c | 535 ------------------- src/eressea/{ => src}/curses.c | 4 - src/eressea/{ => src}/curses.h | 0 src/eressea/src/main.c | 266 +++++++++ src/eressea/{ => src}/server.c | 0 src/eressea/{ => src}/spells/Jamfile | 0 src/eressea/{ => src}/spells/alp.c | 0 src/eressea/{ => src}/spells/alp.h | 0 src/eressea/{ => src}/spells/buildingcurse.c | 0 src/eressea/{ => src}/spells/buildingcurse.h | 0 src/eressea/{ => src}/spells/combatspells.c | 0 src/eressea/{ => src}/spells/combatspells.h | 0 src/eressea/{ => src}/spells/regioncurse.c | 0 src/eressea/{ => src}/spells/regioncurse.h | 0 src/eressea/{ => src}/spells/shipcurse.c | 0 src/eressea/{ => src}/spells/shipcurse.h | 0 src/eressea/{ => src}/spells/spells.c | 0 src/eressea/{ => src}/spells/spells.h | 0 src/eressea/{ => src}/spells/unitcurse.c | 0 src/eressea/{ => src}/spells/unitcurse.h | 0 24 files changed, 298 insertions(+), 560 deletions(-) rename src/basic/{ => src}/main.c (93%) rename src/basic/{ => src}/server.c (100%) delete mode 100644 src/eressea/main.c rename src/eressea/{ => src}/curses.c (98%) rename src/eressea/{ => src}/curses.h (100%) create mode 100644 src/eressea/src/main.c rename src/eressea/{ => src}/server.c (100%) rename src/eressea/{ => src}/spells/Jamfile (100%) rename src/eressea/{ => src}/spells/alp.c (100%) rename src/eressea/{ => src}/spells/alp.h (100%) rename src/eressea/{ => src}/spells/buildingcurse.c (100%) rename src/eressea/{ => src}/spells/buildingcurse.h (100%) rename src/eressea/{ => src}/spells/combatspells.c (100%) rename src/eressea/{ => src}/spells/combatspells.h (100%) rename src/eressea/{ => src}/spells/regioncurse.c (100%) rename src/eressea/{ => src}/spells/regioncurse.h (100%) rename src/eressea/{ => src}/spells/shipcurse.c (100%) rename src/eressea/{ => src}/spells/shipcurse.h (100%) rename src/eressea/{ => src}/spells/spells.c (100%) rename src/eressea/{ => src}/spells/spells.h (100%) rename src/eressea/{ => src}/spells/unitcurse.c (100%) rename src/eressea/{ => src}/spells/unitcurse.h (100%) diff --git a/src/basic/basic.vcproj b/src/basic/basic.vcproj index 71895a40b..657f38009 100644 --- a/src/basic/basic.vcproj +++ b/src/basic/basic.vcproj @@ -187,7 +187,7 @@ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" > #include +#include +#include + static const char * luafile = "init.lua"; static const char * entry_point = NULL; static int memdebug = 0; @@ -94,11 +97,19 @@ parse_args(int argc, char **argv) } +void locale_init(void) +{ + setlocale(LC_CTYPE, ""); + setlocale(LC_NUMERIC, "C"); + assert(towlower(0xC4)==0xE4); /* Ä => ä */ +} + int main(int argc, char ** argv) { int err; log_open("eressea.log"); + locale_init(); parse_config("eressea.ini"); err = parse_args(argc, argv); diff --git a/src/basic/server.c b/src/basic/src/server.c similarity index 100% rename from src/basic/server.c rename to src/basic/src/server.c diff --git a/src/eressea/eressea.vcproj b/src/eressea/eressea.vcproj index e2b3ac4fb..cdcfc478c 100644 --- a/src/eressea/eressea.vcproj +++ b/src/eressea/eressea.vcproj @@ -187,7 +187,7 @@ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" > @@ -429,7 +429,7 @@ > diff --git a/src/eressea/main.c b/src/eressea/main.c deleted file mode 100644 index 07e26519b..000000000 --- a/src/eressea/main.c +++ /dev/null @@ -1,535 +0,0 @@ -/* vi: set ts=2: -* -* -* Eressea PB(E)M host Copyright (C) 1998-2003 -* 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.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. -*/ - -/* config includes */ -#include -#include - -#include -#include - -/* initialization - TODO: init in separate module */ -#include -#include -#include - -/* modules includes */ -#include -#include -#if MUSEUM_MODULE -#include -#endif -#include -#if ARENA_MODULE -#include -#endif -#if DUNGEON_MODULE -#include -#endif - -/* gamecode includes */ -#include -#include -#include -#include -#include -#include -#include - -/* kernel includes */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -/* util includes */ -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef MSPACES -# include -#endif - -/* external iniparser */ -#include - -/* lua includes */ -#ifdef BINDINGS_TOLUA -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif // BINDINGS_TOLUA - -#include - -/* libc includes */ -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(_MSC_VER) -# include -#endif - -/** -** global variables we are importing from other modules -**/ - extern const char * g_reportdir; - extern const char * g_datadir; - extern const char * g_basedir; - - extern boolean nobattle; - extern boolean nomonsters; - extern boolean battledebug; - - extern int loadplane; - extern boolean opt_cr_absolute_coords; - - -/** -** global variables that we are exporting -**/ -static char * orders = NULL; -static int nowrite = 0; -static boolean g_writemap = false; -static boolean g_ignore_errors = false; -static const char * luafile = "init.lua"; -static const char * entry_point = NULL; -static int memdebug = 0; -#if defined(HAVE_SIGACTION) && defined(HAVE_EXECINFO) -#include -#include - -static void -report_segfault(int signo, siginfo_t * sinf, void * arg) -{ - void * btrace[50]; - size_t size; - int fd = fileno(stderr); - - fflush(stdout); - fputs("\n\nProgram received SIGSEGV, backtrace follows.\n", stderr); - size = backtrace(btrace, 50); - backtrace_symbols_fd(btrace, size, fd); - abort(); -} - -static int -setup_signal_handler(void) -{ - struct sigaction act; - - act.sa_flags = SA_ONESHOT | SA_SIGINFO; - act.sa_sigaction = report_segfault; - sigfillset(&act.sa_mask); - return sigaction(SIGSEGV, &act, NULL); -} -#else -static int -setup_signal_handler(void) -{ - return 0; -} -#endif - -#define CRTDBG -#ifdef CRTDBG -void -init_crtdbg(void) -{ -#if (defined(_MSC_VER)) - int flags = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); - if (memdebug==1) { - flags |= _CRTDBG_CHECK_ALWAYS_DF; /* expensive */ - } else if (memdebug==2) { - flags = (flags&0x0000FFFF) | _CRTDBG_CHECK_EVERY_16_DF; - } else if (memdebug==3) { - flags = (flags&0x0000FFFF) | _CRTDBG_CHECK_EVERY_128_DF; - } else if (memdebug==4) { - flags = (flags&0x0000FFFF) | _CRTDBG_CHECK_EVERY_1024_DF; - } - _CrtSetDbgFlag(flags); -#endif -} -#endif - -static int -usage(const char * prog, const char * arg) -{ - if (arg) { - fprintf(stderr, "unknown argument: %s\n\n", arg); - } - fprintf(stderr, "Usage: %s [options]\n" - "-o befehlsdatei : verarbeitet automatisch die angegebene Befehlsdatei\n" - "-q : be less verbose\n" - "-d datadir : gibt das datenverzeichnis an\n" - "-b basedir : gibt das basisverzeichnis an\n" - "-r resdir : gibt das resourceverzeichnis an\n" - "-t turn : read this datafile, not the most current one\n" - "-R reportdir : gibt das reportverzeichnis an\n" - "-l path : specify the base script directory\n" - "-C : run in interactive mode\n" - "-e script : main lua script\n" - "--lomem : keine Messages (RAM sparen)\n" - "--nobattle : keine Kämpfe\n" - "--ignore-errors : ignore errors in scripts (please don\'t)\n" - "--nomonsters : keine monster KI\n" - "--nodebug : keine Logfiles für Kämpfe\n" - "--noreports : absolut keine Reporte schreiben\n" - "--debug : schreibt Debug-Ausgaben in die Datei debug\n" - "--color : force curses to use colors even when not detected\n" - "--nocr : keine CRs\n" - "--nonr : keine Reports\n" - "--crabsolute : absolute Koordinaten im CR\n" - "--help : help\n", prog); - return -1; -} - -static void -setLuaString(lua_State * luaState, const char * name, const char * value) -{ -#if defined(BINDINGS_TOLUA) - lua_pushstring(luaState, value); - lua_setglobal(luaState, name); -#endif -} - -static void -setLuaNumber(lua_State * luaState, const char * name, double value) -{ -#if defined(BINDINGS_TOLUA) - lua_pushnumber(luaState, (lua_Number)value); - lua_setglobal(luaState, name); -#endif -} - -static int -read_args(int argc, char **argv, lua_State * luaState) -{ - int i; - char * c; - for (i=1;i!=argc;++i) { - if (argv[i][0]!='-') { - return usage(argv[0], argv[i]); - } else if (argv[i][1]=='-') { /* long format */ - if (strcmp(argv[i]+2, "nocr")==0) nocr = true; - else if (strcmp(argv[i]+2, "nosave")==0) nowrite = true; - else if (strcmp(argv[i]+2, "noreports")==0) { - noreports = true; - nocr = true; - nocr = true; - } - else if (strcmp(argv[i]+2, "version")==0) { - printf("\n%s PBEM host\n" - "Copyright (C) 1996-2005 C. Schlittchen, K. Zedel, E. Rehling, H. Peters.\n\n" - "Compilation: " __DATE__ " at " __TIME__ "\nVersion: %f\n\n", global.gamename, version()); - } - else if (strcmp(argv[i]+2, "xml")==0) game_name = argv[++i]; - else if (strcmp(argv[i]+2, "ignore-errors")==0) g_ignore_errors = true; - else if (strcmp(argv[i]+2, "nonr")==0) nonr = true; - else if (strcmp(argv[i]+2, "lomem")==0) lomem = true; - else if (strcmp(argv[i]+2, "nobattle")==0) nobattle = true; - else if (strcmp(argv[i]+2, "nomonsters")==0) nomonsters = true; - else if (strcmp(argv[i]+2, "nodebug")==0) battledebug = false; - else if (strcmp(argv[i]+2, "console")==0) entry_point=NULL; - else if (strcmp(argv[i]+2, "crabsolute")==0) opt_cr_absolute_coords = true; - else if (strcmp(argv[i]+2, "color")==0) { - /* force the editor to have colors */ - force_color = 1; - } - else if (strcmp(argv[i]+2, "help")==0) - return usage(argv[0], NULL); - else - return usage(argv[0], argv[i]); - } else switch(argv[i][1]) { - case 'C': - entry_point = NULL; - break; - case 'R': - g_reportdir = argv[++i]; - break; - case 'e': - entry_point = argv[++i]; - break; - case 'd': - g_datadir = argv[++i]; - break; - case 'b': - g_basedir = argv[++i]; - break; - case 'i': - game_name = argv[++i]; - break; - case 't': - turn = atoi(argv[++i]); - break; - case 'q': - verbosity = 0; - break; - case 'o': - if (inext) { - const spell * sp = spl->data; - spell_component * spc = sp->components; - char components[128]; - components[0]=0; - for (;spc->type;++spc) { - strcat(components, LOC(loc, spc->type->_name[0])); - strcat(components, ","); - } - fprintf(F, "%s;%d;%s;%s\n", LOC(loc, mkname("spell", sp->sname)), sp->level, LOC(loc, mkname("school", magic_school[sp->magietyp])), components); - } - fclose(F); -} - -static void -write_skills(void) -{ - struct locale * loc = find_locale("de"); - FILE * F = fopen("skills.csv", "w"); - race * rc; - skill_t sk; - fputs("\"Rasse\",", F); - for (rc=races;rc;rc = rc->next) { - if (playerrace(rc)) { - fprintf(F, "\"%s\",", LOC(loc, mkname("race", rc->_name[0]))); - } - } - fputc('\n', F); - - for (sk=0;sk!=MAXSKILLS;++sk) { - const char * str = skillname(sk, loc); - if (str) { - fprintf(F, "\"%s\",", str); - for (rc=races;rc;rc = rc->next) { - if (playerrace(rc)) { - if (rc->bonus[sk]) fprintf(F, "%d,", rc->bonus[sk]); - else fputc(',', F); - } - } - fputc('\n', F); - } - } - fclose(F); -} - -void locale_init(void) -{ - setlocale(LC_CTYPE, ""); - setlocale(LC_NUMERIC, "C"); - assert(towlower(0xC4)==0xE4); /* Ä => ä */ -} - -int -main(int argc, char *argv[]) -{ - int i; - lua_State * L; - static int write_csv = 0; - - setup_signal_handler(); - - log_open("eressea.log"); - locale_init(); - parse_config("eressea.ini"); - L = lua_init(); - global.vm_state = L; - if ((i=read_args(argc, argv, L))!=0) return i; - -#ifdef CRTDBG - init_crtdbg(); -#endif - - kernel_init(); - game_init(); - register_curses(); - register_spells(); - - if (write_csv) { - write_skills(); - write_spells(); - } - /* run the main script */ - if (luafile) { - char buf[MAX_PATH]; - strcpy(buf, luafile); - lua_getglobal(L, "dofile"); - lua_pushstring(L, buf); - if (lua_pcall(L, 1, 0, 0) != 0) { - my_lua_error(L); - } - } - if (entry_point) { - lua_getglobal(L, entry_point); - if (lua_pcall(L, 0, 1, 0) != 0) { - my_lua_error(L); - } - } else { - lua_console(L); - } -#ifdef MSPACES - malloc_stats(); -#endif - game_done(); - kernel_done(); - lua_done(L); - log_close(); - - if (global.inifile) iniparser_free(global.inifile); - - return 0; -} diff --git a/src/eressea/curses.c b/src/eressea/src/curses.c similarity index 98% rename from src/eressea/curses.c rename to src/eressea/src/curses.c index adc3f1b66..5fc33e9eb 100644 --- a/src/eressea/curses.c +++ b/src/eressea/src/curses.c @@ -129,10 +129,6 @@ resolve_buddy(variant data, void * addr) return 0; } -attrib_type at_unitdissolve = { - "unitdissolve", NULL, NULL, NULL, a_writechars, a_readchars -}; - static void wall_init(connection * b) { diff --git a/src/eressea/curses.h b/src/eressea/src/curses.h similarity index 100% rename from src/eressea/curses.h rename to src/eressea/src/curses.h diff --git a/src/eressea/src/main.c b/src/eressea/src/main.c new file mode 100644 index 000000000..16b22a911 --- /dev/null +++ b/src/eressea/src/main.c @@ -0,0 +1,266 @@ +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +static const char * luafile = "init.lua"; +static const char * entry_point = NULL; +static int memdebug = 0; + +static void parse_config(const char * filename) +{ + dictionary * d = iniparser_new(filename); + if (d) { + load_inifile(d); + + memdebug = iniparser_getint(d, "eressea:memcheck", memdebug); + entry_point = iniparser_getstring(d, "eressea:run", entry_point); + luafile = iniparser_getstring(d, "eressea:load", luafile); + + /* only one value in the [editor] section */ + force_color = iniparser_getint(d, "editor:color", force_color); + + /* excerpt from [config] (the rest is used in bindings.c) */ + game_name = iniparser_getstring(d, "config:game", game_name); + } + global.inifile = d; +} + +static int +usage(const char * prog, const char * arg) +{ + if (arg) { + fprintf(stderr, "unknown argument: %s\n\n", arg); + } + fprintf(stderr, "Usage: %s [options]\n" + "-t : read this datafile, not the most current one\n" + "-q : be quite (same as -v 0)\n" + "-v : verbosity level\n" + "-C : run in interactive mode\n" + "--color : force curses to use colors even when not detected\n" + "--help : help\n", prog); + return -1; +} + +static int +parse_args(int argc, char **argv) +{ + int i; + + for (i=1;i!=argc;++i) { + if (argv[i][0]!='-') { + return usage(argv[0], argv[i]); + } else if (argv[i][1]=='-') { /* long format */ + if (strcmp(argv[i]+2, "version")==0) { + printf("\n%s PBEM host\n" + "Copyright (C) 1996-2005 C. Schlittchen, K. Zedel, E. Rehling, H. Peters.\n\n" + "Compilation: " __DATE__ " at " __TIME__ "\nVersion: %f\n\n", global.gamename, version()); + } + else if (strcmp(argv[i]+2, "color")==0) { + /* force the editor to have colors */ + force_color = 1; + } + else if (strcmp(argv[i]+2, "help")==0) { + return usage(argv[0], NULL); + } + else { + return usage(argv[0], argv[i]); + } + } else switch(argv[i][1]) { + case 'C': + entry_point = NULL; + break; + case 'e': + entry_point = argv[++i]; + break; + case 't': + turn = atoi(argv[++i]); + break; + case 'q': + verbosity = 0; + break; + case 'v': + verbosity = atoi(argv[++i]); + break; + case 'h': + return usage(argv[0], NULL); + default: + return usage(argv[0], argv[i]); + } + } + + return 0; +} + +#if defined(HAVE_SIGACTION) && defined(HAVE_EXECINFO) +#include +#include + +static void +report_segfault(int signo, siginfo_t * sinf, void * arg) +{ + void * btrace[50]; + size_t size; + int fd = fileno(stderr); + + fflush(stdout); + fputs("\n\nProgram received SIGSEGV, backtrace follows.\n", stderr); + size = backtrace(btrace, 50); + backtrace_symbols_fd(btrace, size, fd); + abort(); +} + +static int +setup_signal_handler(void) +{ + struct sigaction act; + + act.sa_flags = SA_ONESHOT | SA_SIGINFO; + act.sa_sigaction = report_segfault; + sigfillset(&act.sa_mask); + return sigaction(SIGSEGV, &act, NULL); +} +#else +static int +setup_signal_handler(void) +{ + return 0; +} +#endif + +#undef CRTDBG +#ifdef CRTDBG +#include +void +init_crtdbg(void) +{ +#if (defined(_MSC_VER)) + int flags = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); + if (memdebug==1) { + flags |= _CRTDBG_CHECK_ALWAYS_DF; /* expensive */ + } else if (memdebug==2) { + flags = (flags&0x0000FFFF) | _CRTDBG_CHECK_EVERY_16_DF; + } else if (memdebug==3) { + flags = (flags&0x0000FFFF) | _CRTDBG_CHECK_EVERY_128_DF; + } else if (memdebug==4) { + flags = (flags&0x0000FFFF) | _CRTDBG_CHECK_EVERY_1024_DF; + } + _CrtSetDbgFlag(flags); +#endif +} +#endif + + +static void +write_spells(void) +{ + struct locale * loc = find_locale("de"); + FILE * F = fopen("spells.csv", "w"); + spell_list * spl = spells; + for (;spl;spl=spl->next) { + const spell * sp = spl->data; + spell_component * spc = sp->components; + char components[128]; + components[0]=0; + for (;spc->type;++spc) { + strcat(components, LOC(loc, spc->type->_name[0])); + strcat(components, ","); + } + fprintf(F, "%s;%d;%s;%s\n", LOC(loc, mkname("spell", sp->sname)), sp->level, LOC(loc, mkname("school", magic_school[sp->magietyp])), components); + } + fclose(F); +} + +static void +write_skills(void) +{ + struct locale * loc = find_locale("de"); + FILE * F = fopen("skills.csv", "w"); + race * rc; + skill_t sk; + fputs("\"Rasse\",", F); + for (rc=races;rc;rc = rc->next) { + if (playerrace(rc)) { + fprintf(F, "\"%s\",", LOC(loc, mkname("race", rc->_name[0]))); + } + } + fputc('\n', F); + + for (sk=0;sk!=MAXSKILLS;++sk) { + const char * str = skillname(sk, loc); + if (str) { + fprintf(F, "\"%s\",", str); + for (rc=races;rc;rc = rc->next) { + if (playerrace(rc)) { + if (rc->bonus[sk]) fprintf(F, "%d,", rc->bonus[sk]); + else fputc(',', F); + } + } + fputc('\n', F); + } + } + fclose(F); +} + +void locale_init(void) +{ + setlocale(LC_CTYPE, ""); + setlocale(LC_NUMERIC, "C"); + assert(towlower(0xC4)==0xE4); /* Ä => ä */ +} + +int main(int argc, char ** argv) +{ + static int write_csv = 0; + int err; + + setup_signal_handler(); + + log_open("eressea.log"); + locale_init(); + parse_config("eressea.ini"); + + err = parse_args(argc, argv); + if (err) { + return err; + } + +#ifdef CRTDBG + init_crtdbg(); +#endif + + err = eressea_init(); + if (err) { + log_error(("initialization failed with code %d\n", err)); + return err; + } + register_curses(); + register_spells(); + + if (write_csv) { + write_skills(); + write_spells(); + } + + err = eressea_run(luafile, entry_point); + if (err) { + log_error(("server execution failed with code %d\n", err)); + return err; + } + +#ifdef MSPACES + malloc_stats(); +#endif + + eressea_done(); + log_close(); + if (global.inifile) iniparser_free(global.inifile); + return 0; +} diff --git a/src/eressea/server.c b/src/eressea/src/server.c similarity index 100% rename from src/eressea/server.c rename to src/eressea/src/server.c diff --git a/src/eressea/spells/Jamfile b/src/eressea/src/spells/Jamfile similarity index 100% rename from src/eressea/spells/Jamfile rename to src/eressea/src/spells/Jamfile diff --git a/src/eressea/spells/alp.c b/src/eressea/src/spells/alp.c similarity index 100% rename from src/eressea/spells/alp.c rename to src/eressea/src/spells/alp.c diff --git a/src/eressea/spells/alp.h b/src/eressea/src/spells/alp.h similarity index 100% rename from src/eressea/spells/alp.h rename to src/eressea/src/spells/alp.h diff --git a/src/eressea/spells/buildingcurse.c b/src/eressea/src/spells/buildingcurse.c similarity index 100% rename from src/eressea/spells/buildingcurse.c rename to src/eressea/src/spells/buildingcurse.c diff --git a/src/eressea/spells/buildingcurse.h b/src/eressea/src/spells/buildingcurse.h similarity index 100% rename from src/eressea/spells/buildingcurse.h rename to src/eressea/src/spells/buildingcurse.h diff --git a/src/eressea/spells/combatspells.c b/src/eressea/src/spells/combatspells.c similarity index 100% rename from src/eressea/spells/combatspells.c rename to src/eressea/src/spells/combatspells.c diff --git a/src/eressea/spells/combatspells.h b/src/eressea/src/spells/combatspells.h similarity index 100% rename from src/eressea/spells/combatspells.h rename to src/eressea/src/spells/combatspells.h diff --git a/src/eressea/spells/regioncurse.c b/src/eressea/src/spells/regioncurse.c similarity index 100% rename from src/eressea/spells/regioncurse.c rename to src/eressea/src/spells/regioncurse.c diff --git a/src/eressea/spells/regioncurse.h b/src/eressea/src/spells/regioncurse.h similarity index 100% rename from src/eressea/spells/regioncurse.h rename to src/eressea/src/spells/regioncurse.h diff --git a/src/eressea/spells/shipcurse.c b/src/eressea/src/spells/shipcurse.c similarity index 100% rename from src/eressea/spells/shipcurse.c rename to src/eressea/src/spells/shipcurse.c diff --git a/src/eressea/spells/shipcurse.h b/src/eressea/src/spells/shipcurse.h similarity index 100% rename from src/eressea/spells/shipcurse.h rename to src/eressea/src/spells/shipcurse.h diff --git a/src/eressea/spells/spells.c b/src/eressea/src/spells/spells.c similarity index 100% rename from src/eressea/spells/spells.c rename to src/eressea/src/spells/spells.c diff --git a/src/eressea/spells/spells.h b/src/eressea/src/spells/spells.h similarity index 100% rename from src/eressea/spells/spells.h rename to src/eressea/src/spells/spells.h diff --git a/src/eressea/spells/unitcurse.c b/src/eressea/src/spells/unitcurse.c similarity index 100% rename from src/eressea/spells/unitcurse.c rename to src/eressea/src/spells/unitcurse.c diff --git a/src/eressea/spells/unitcurse.h b/src/eressea/src/spells/unitcurse.h similarity index 100% rename from src/eressea/spells/unitcurse.h rename to src/eressea/src/spells/unitcurse.h