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