diff --git a/src/.cproject b/src/.cproject
deleted file mode 100644
index 7b92164ba..000000000
--- a/src/.cproject
+++ /dev/null
@@ -1,1017 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?fileVersion 4.0.0?>
-
-<cproject>
-<storageModule moduleId="org.eclipse.cdt.core.settings">
-<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692">
-<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692" moduleId="org.eclipse.cdt.core.settings" name="Debug">
-<externalSettings/>
-<extensions>
-<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
-<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-</extensions>
-</storageModule>
-<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-<configuration artifactExtension="exe" artifactName="eressea" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692" name="Debug" parent="cdt.managedbuild.config.gnu.mingw.exe.debug">
-<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692." name="/" resourcePath="">
-<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.debug.1541829356" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.debug">
-<targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.debug.1648162047" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.debug"/>
-<builder autoBuildTarget="" buildPath="${workspace_loc:/eressea/Debug}" cleanBuildTarget="" id="cdt.managedbuild.tool.gnu.builder.mingw.base.557341227" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" parallelBuildOn="true" parallelizationNumber="3" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/>
-<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug.31483649" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug">
-<option id="gnu.both.asm.option.include.paths.516875632" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea}&quot;"/>
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea/common}&quot;"/>
-</option>
-<option id="gnu.both.asm.option.flags.1162663603" name="Assembler flags" superClass="gnu.both.asm.option.flags"/>
-<option id="gnu.both.asm.option.warnings.nowarn.973241866" name="Suppress warnings (-W)" superClass="gnu.both.asm.option.warnings.nowarn"/>
-<option id="gnu.both.asm.option.version.440840515" name="Announce version (-v)" superClass="gnu.both.asm.option.version"/>
-<inputType id="cdt.managedbuild.tool.gnu.assembler.input.919777733" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
-</tool>
-<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.1581167035" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
-<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.720079153" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug">
-<option id="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level.301453909" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
-<option id="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level.1445940050" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
-<option id="gnu.cpp.compiler.option.include.paths.1393341890" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea}&quot;"/>
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea/common}&quot;"/>
-</option>
-<option id="gnu.cpp.compiler.option.preprocessor.nostdinc.509155758" name="Do not search system directories (-nostdinc)" superClass="gnu.cpp.compiler.option.preprocessor.nostdinc"/>
-<option id="gnu.cpp.compiler.option.preprocessor.preprocess.717960248" name="Preprocess only (-E)" superClass="gnu.cpp.compiler.option.preprocessor.preprocess"/>
-<option id="gnu.cpp.compiler.option.preprocessor.def.1450722366" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def"/>
-<option id="gnu.cpp.compiler.option.preprocessor.undef.1770795656" name="Undefined symbols (-U)" superClass="gnu.cpp.compiler.option.preprocessor.undef"/>
-<option id="gnu.cpp.compiler.option.optimization.flags.1297908268" name="Other optimization flags" superClass="gnu.cpp.compiler.option.optimization.flags"/>
-<option id="gnu.cpp.compiler.option.debugging.other.1661100664" name="Other debugging flags" superClass="gnu.cpp.compiler.option.debugging.other"/>
-<option id="gnu.cpp.compiler.option.debugging.prof.149789394" name="Generate prof information (-p)" superClass="gnu.cpp.compiler.option.debugging.prof"/>
-<option id="gnu.cpp.compiler.option.debugging.gprof.1315104379" name="Generate gprof information (-pg)" superClass="gnu.cpp.compiler.option.debugging.gprof"/>
-<option id="gnu.cpp.compiler.option.warnings.syntax.390438336" name="Check syntax only (-fsyntax-only)" superClass="gnu.cpp.compiler.option.warnings.syntax"/>
-<option id="gnu.cpp.compiler.option.warnings.pedantic.1156620300" name="Pedantic (-pedantic)" superClass="gnu.cpp.compiler.option.warnings.pedantic"/>
-<option id="gnu.cpp.compiler.option.warnings.pedantic.error.1016819500" name="Pedantic warnings as errors (-pedantic-errors)" superClass="gnu.cpp.compiler.option.warnings.pedantic.error"/>
-<option id="gnu.cpp.compiler.option.warnings.nowarn.1634210671" name="Inhibit all warnings (-w)" superClass="gnu.cpp.compiler.option.warnings.nowarn"/>
-<option id="gnu.cpp.compiler.option.warnings.allwarn.693382043" name="All warnings (-Wall)" superClass="gnu.cpp.compiler.option.warnings.allwarn"/>
-<option id="gnu.cpp.compiler.option.warnings.toerrors.538309876" name="Warnings as errors (-Werror)" superClass="gnu.cpp.compiler.option.warnings.toerrors"/>
-<option id="gnu.cpp.compiler.option.other.other.1521338221" name="Other flags" superClass="gnu.cpp.compiler.option.other.other"/>
-<option id="gnu.cpp.compiler.option.other.verbose.7494634" name="Verbose (-v)" superClass="gnu.cpp.compiler.option.other.verbose"/>
-<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1974319351" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
-</tool>
-<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.1339637090" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug">
-<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.mingw.exe.debug.option.optimization.level.1722840894" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.debug.option.optimization.level" valueType="enumerated"/>
-<option id="gnu.c.compiler.mingw.exe.debug.option.debugging.level.1354306259" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
-<option id="gnu.c.compiler.option.include.paths.1649940257" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea}&quot;"/>
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea/common}&quot;"/>
-</option>
-<option id="gnu.c.compiler.option.preprocessor.nostdinc.1689698239" name="Do not search system directories (-nostdinc)" superClass="gnu.c.compiler.option.preprocessor.nostdinc"/>
-<option id="gnu.c.compiler.option.preprocessor.preprocess.1908177862" name="Preprocess only (-E)" superClass="gnu.c.compiler.option.preprocessor.preprocess"/>
-<option id="gnu.c.compiler.option.preprocessor.def.symbols.653444625" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols"/>
-<option id="gnu.c.compiler.option.preprocessor.undef.symbol.1526697776" name="Undefined symbols (-U)" superClass="gnu.c.compiler.option.preprocessor.undef.symbol"/>
-<option id="gnu.c.compiler.option.optimization.flags.1092822849" name="Other optimization flags" superClass="gnu.c.compiler.option.optimization.flags"/>
-<option id="gnu.c.compiler.option.debugging.other.1262466036" name="Other debugging flags" superClass="gnu.c.compiler.option.debugging.other"/>
-<option id="gnu.c.compiler.option.debugging.gprof.1437169117" name="Generate gprof information (-pg)" superClass="gnu.c.compiler.option.debugging.gprof"/>
-<option id="gnu.c.compiler.option.debugging.prof.631194667" name="Generate prof information (-p)" superClass="gnu.c.compiler.option.debugging.prof"/>
-<option id="gnu.c.compiler.option.warnings.syntax.530824677" name="Check syntax only (-fsyntax-only)" superClass="gnu.c.compiler.option.warnings.syntax"/>
-<option id="gnu.c.compiler.option.warnings.pedantic.880992465" name="Pedantic (-pedantic)" superClass="gnu.c.compiler.option.warnings.pedantic"/>
-<option id="gnu.c.compiler.option.warnings.pedantic.error.1762672145" name="Pedantic warnings as errors (-pedantic-errors)" superClass="gnu.c.compiler.option.warnings.pedantic.error"/>
-<option id="gnu.c.compiler.option.warnings.nowarn.1367924741" name="Inhibit all warnings (-w)" superClass="gnu.c.compiler.option.warnings.nowarn"/>
-<option id="gnu.c.compiler.option.warnings.allwarn.1251886279" name="All warnings (-Wall)" superClass="gnu.c.compiler.option.warnings.allwarn"/>
-<option id="gnu.c.compiler.option.warnings.toerrors.1443145734" name="Warnings as errors (-Werror)" superClass="gnu.c.compiler.option.warnings.toerrors"/>
-<option id="gnu.c.compiler.option.misc.other.413211066" name="Other flags" superClass="gnu.c.compiler.option.misc.other"/>
-<option id="gnu.c.compiler.option.misc.verbose.1710309511" name="Verbose (-v)" superClass="gnu.c.compiler.option.misc.verbose"/>
-<option id="gnu.c.compiler.option.misc.ansi.294941930" name="Support ANSI programs (-ansi)" superClass="gnu.c.compiler.option.misc.ansi"/>
-<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.652873102" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
-</tool>
-<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug.1649493305" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug"/>
-<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug.1371548928" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug">
-<option id="gnu.cpp.link.option.nostart.1897582052" name="Do not use standard start files (-nostartfiles)" superClass="gnu.cpp.link.option.nostart"/>
-<option id="gnu.cpp.link.option.nodeflibs.384976649" name="Do not use default libraries (-nodefaultlibs)" superClass="gnu.cpp.link.option.nodeflibs"/>
-<option id="gnu.cpp.link.option.nostdlibs.1142023847" name="No startup or default libs (-nostdlib)" superClass="gnu.cpp.link.option.nostdlibs"/>
-<option id="gnu.cpp.link.option.strip.1161196144" name="Omit all symbol information (-s)" superClass="gnu.cpp.link.option.strip"/>
-<option id="gnu.cpp.link.option.libs.1662146665" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
-<listOptionValue builtIn="false" value="lua"/>
-<listOptionValue builtIn="false" value="luabind"/>
-<listOptionValue builtIn="false" value="xml2"/>
-<listOptionValue builtIn="false" value="pdcurses"/>
-</option>
-<option id="gnu.cpp.link.option.paths.1128737822" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"/>
-<option id="gnu.cpp.link.option.flags.727417691" name="Linker flags" superClass="gnu.cpp.link.option.flags"/>
-<option id="gnu.cpp.link.option.other.1598614473" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other"/>
-<option id="gnu.cpp.link.option.userobjs.797217777" name="Other objects" superClass="gnu.cpp.link.option.userobjs"/>
-<option id="gnu.cpp.link.option.shared.1700596906" name="Shared (-shared)" superClass="gnu.cpp.link.option.shared"/>
-<option id="gnu.cpp.link.option.soname.881235808" name="Shared object name (-Wl,-soname=)" superClass="gnu.cpp.link.option.soname"/>
-<option id="gnu.cpp.link.option.implname.852975432" name="Import Library name (-Wl,--out-implib=)" superClass="gnu.cpp.link.option.implname"/>
-<option id="gnu.cpp.link.option.defname.1384125120" name="DEF file name (-Wl,--output-def=)" superClass="gnu.cpp.link.option.defname"/>
-<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.424704685" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
-<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
-<additionalInput kind="additionalinput" paths="$(LIBS)"/>
-</inputType>
-</tool>
-</toolChain>
-</folderInfo>
-<sourceEntries>
-<entry excluding="common/modules/victoryconditions.c|common/items/studypotion.c|eressea/attributes.c|eressea/triggers.h|eressea/attributes.h|eressea/main.c|eressea/triggers.c|eressea/spells.c|eressea/items.c|common/util/dl|tools|mapper|eressea/gmmain.cpp" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
-</sourceEntries>
-</configuration>
-</storageModule>
-<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
-<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
-
-<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
-<storageModule moduleId="scannerConfiguration">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692;cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.720079153;cdt.managedbuild.tool.gnu.cpp.compiler.input.1974319351">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-</scannerConfigBuildInfo>
-<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692;cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.1339637090;cdt.managedbuild.tool.gnu.c.compiler.input.652873102">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-</scannerConfigBuildInfo>
-<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1541791553;cdt.managedbuild.config.gnu.mingw.exe.release.1541791553.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.462340712;cdt.managedbuild.tool.gnu.c.compiler.input.1811165260">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-</scannerConfigBuildInfo>
-<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1541791553;cdt.managedbuild.config.gnu.mingw.exe.release.1541791553.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.112235286;cdt.managedbuild.tool.gnu.cpp.compiler.input.1399935560">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-</scannerConfigBuildInfo>
-</storageModule>
-</cconfiguration>
-<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.release.1541791553">
-<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.release.1541791553" moduleId="org.eclipse.cdt.core.settings" name="Release">
-<externalSettings/>
-<extensions>
-<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
-<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-</extensions>
-</storageModule>
-<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-<configuration artifactName="eressea" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.release.1541791553" name="Release" parent="cdt.managedbuild.config.gnu.mingw.exe.release">
-<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.release.1541791553." name="/" resourcePath="">
-<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.release.1027782906" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.release">
-<targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.release.1998459463" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.release"/>
-<builder autoBuildTarget="" buildPath="${workspace_loc:/eressea/Release}" cleanBuildTarget="" id="cdt.managedbuild.tool.gnu.builder.mingw.base.452448843" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" parallelBuildOn="true" parallelizationNumber="-1" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/>
-<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release.141808870" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release">
-<option id="gnu.both.asm.option.include.paths.1704788626" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea}&quot;"/>
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea/common}&quot;"/>
-</option>
-<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1185170495" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
-</tool>
-<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.1876861679" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
-<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.112235286" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release">
-<option id="gnu.cpp.compiler.mingw.exe.release.option.optimization.level.530685696" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
-<option id="gnu.cpp.compiler.mingw.exe.release.option.debugging.level.616015470" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
-<option id="gnu.cpp.compiler.option.include.paths.346750431" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea}&quot;"/>
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea/common}&quot;"/>
-</option>
-<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1399935560" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
-</tool>
-<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.462340712" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release">
-<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.mingw.exe.release.option.optimization.level.1220414349" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.release.option.optimization.level" valueType="enumerated"/>
-<option id="gnu.c.compiler.mingw.exe.release.option.debugging.level.338289308" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
-<option id="gnu.c.compiler.option.include.paths.1295238050" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea}&quot;"/>
-<listOptionValue builtIn="false" value="&quot;${workspace_loc:/eressea/common}&quot;"/>
-</option>
-<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1811165260" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
-</tool>
-<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release.928774754" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release"/>
-<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release.356286294" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release">
-<option id="gnu.cpp.link.option.paths.417330353" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"/>
-<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1922446018" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
-<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
-<additionalInput kind="additionalinput" paths="$(LIBS)"/>
-</inputType>
-</tool>
-</toolChain>
-</folderInfo>
-<sourceEntries>
-<entry excluding="common/modules/victoryconditions.c|common/items/studypotion.c|eressea/attributes.c|eressea/triggers.h|eressea/attributes.h|eressea/main.c|eressea/triggers.c|eressea/spells.c|eressea/items.c|common/util/dl|tools|mapper|eressea/gmmain.cpp" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
-</sourceEntries>
-</configuration>
-</storageModule>
-<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
-
-<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
-<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
-<storageModule moduleId="scannerConfiguration">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692;cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.720079153;cdt.managedbuild.tool.gnu.cpp.compiler.input.1974319351">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-</scannerConfigBuildInfo>
-<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692;cdt.managedbuild.config.gnu.mingw.exe.debug.1679546692.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.1339637090;cdt.managedbuild.tool.gnu.c.compiler.input.652873102">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-</scannerConfigBuildInfo>
-<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1541791553;cdt.managedbuild.config.gnu.mingw.exe.release.1541791553.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.462340712;cdt.managedbuild.tool.gnu.c.compiler.input.1811165260">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-</scannerConfigBuildInfo>
-<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1541791553;cdt.managedbuild.config.gnu.mingw.exe.release.1541791553.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.112235286;cdt.managedbuild.tool.gnu.cpp.compiler.input.1399935560">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-</scannerConfigBuildInfo>
-</storageModule>
-</cconfiguration>
-</storageModule>
-<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-<project id="eressea.cdt.managedbuild.target.gnu.mingw.exe.714986950" name="Executable" projectType="cdt.managedbuild.target.gnu.mingw.exe"/>
-</storageModule>
-</cproject>
diff --git a/src/.project b/src/.project
deleted file mode 100644
index a9e0b995a..000000000
--- a/src/.project
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>eressea</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
-			<triggers>clean,full,incremental,</triggers>
-			<arguments>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
-					<value></value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>?name?</key>
-					<value></value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.append_environment</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.stopOnError</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.buildCommand</key>
-					<value>make</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.contents</key>
-					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.buildLocation</key>
-					<value>${workspace_loc:/eressea/Debug}</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
-					<value>false</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.buildArguments</key>
-					<value></value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
-					<value></value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
-					<value></value>
-				</dictionary>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.cdt.core.ccnature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
-		<nature>org.eclipse.cdt.core.cnature</nature>
-	</natures>
-</projectDescription>
diff --git a/src/build_vs2003.bat b/src/build_vs2003.bat
deleted file mode 100644
index 31a76ed95..000000000
--- a/src/build_vs2003.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-REM rebuild eressea projects for VC7.1
-premake --file premake.lua --target vs2003
diff --git a/src/build_vs2005.bat b/src/build_vs2005.bat
deleted file mode 100644
index df460d8b9..000000000
--- a/src/build_vs2005.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-REM rebuild eressea projects for VC8
-premake --file premake.lua --target vs2005 
diff --git a/src/combined/bindings.cpp b/src/combined/bindings.cpp
deleted file mode 100644
index fbc3f8d98..000000000
--- a/src/combined/bindings.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "common/settings.h"
-#include "common/config.h"
-#include "stdafx.hpp"
-
-#include "eressea/server.cpp"
-
-#ifdef BINDINGS_LUABIND
-#include "eressea/lua/alliance.cpp"
-#include "eressea/lua/building.cpp"
-#include "eressea/lua/eressea.cpp"
-#include "eressea/lua/event.cpp"
-#include "eressea/lua/faction.cpp"
-#include "eressea/lua/gamecode.cpp"
-#include "eressea/lua/gm.cpp"
-#include "eressea/lua/item.cpp"
-#include "eressea/lua/message.cpp"
-#include "eressea/lua/objects.cpp"
-#include "eressea/lua/region.cpp"
-#include "eressea/lua/script.cpp"
-#include "eressea/lua/ship.cpp"
-#include "eressea/lua/spell.cpp"
-#include "eressea/lua/test.cpp"
-#include "eressea/lua/unit.cpp"
-#endif
diff --git a/src/combined/stdafx.cpp b/src/combined/stdafx.cpp
deleted file mode 100644
index 7845e6a58..000000000
--- a/src/combined/stdafx.cpp
+++ /dev/null
@@ -1 +0,0 @@
-#include "stdafx.hpp"
diff --git a/src/combined/stdafx.hpp b/src/combined/stdafx.hpp
deleted file mode 100644
index 360bf55a4..000000000
--- a/src/combined/stdafx.hpp
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "common/settings.h"
-#include "common/config.h"
diff --git a/src/eressea/tolua/bind_attrib.c b/src/common/bindings/bind_attrib.c
similarity index 100%
rename from src/eressea/tolua/bind_attrib.c
rename to src/common/bindings/bind_attrib.c
diff --git a/src/eressea/tolua/bind_attrib.h b/src/common/bindings/bind_attrib.h
similarity index 100%
rename from src/eressea/tolua/bind_attrib.h
rename to src/common/bindings/bind_attrib.h
diff --git a/src/eressea/tolua/bind_building.c b/src/common/bindings/bind_building.c
similarity index 100%
rename from src/eressea/tolua/bind_building.c
rename to src/common/bindings/bind_building.c
diff --git a/src/eressea/tolua/bind_building.h b/src/common/bindings/bind_building.h
similarity index 100%
rename from src/eressea/tolua/bind_building.h
rename to src/common/bindings/bind_building.h
diff --git a/src/eressea/tolua/bind_faction.c b/src/common/bindings/bind_faction.c
similarity index 100%
rename from src/eressea/tolua/bind_faction.c
rename to src/common/bindings/bind_faction.c
diff --git a/src/eressea/tolua/bind_faction.h b/src/common/bindings/bind_faction.h
similarity index 100%
rename from src/eressea/tolua/bind_faction.h
rename to src/common/bindings/bind_faction.h
diff --git a/src/eressea/tolua/bind_gmtool.c b/src/common/bindings/bind_gmtool.c
similarity index 100%
rename from src/eressea/tolua/bind_gmtool.c
rename to src/common/bindings/bind_gmtool.c
diff --git a/src/eressea/tolua/bind_gmtool.h b/src/common/bindings/bind_gmtool.h
similarity index 100%
rename from src/eressea/tolua/bind_gmtool.h
rename to src/common/bindings/bind_gmtool.h
diff --git a/src/eressea/tolua/bind_hashtable.c b/src/common/bindings/bind_hashtable.c
similarity index 100%
rename from src/eressea/tolua/bind_hashtable.c
rename to src/common/bindings/bind_hashtable.c
diff --git a/src/eressea/tolua/bind_hashtable.h b/src/common/bindings/bind_hashtable.h
similarity index 100%
rename from src/eressea/tolua/bind_hashtable.h
rename to src/common/bindings/bind_hashtable.h
diff --git a/src/eressea/tolua/bind_message.c b/src/common/bindings/bind_message.c
similarity index 100%
rename from src/eressea/tolua/bind_message.c
rename to src/common/bindings/bind_message.c
diff --git a/src/eressea/tolua/bind_message.h b/src/common/bindings/bind_message.h
similarity index 100%
rename from src/eressea/tolua/bind_message.h
rename to src/common/bindings/bind_message.h
diff --git a/src/eressea/tolua/bind_region.c b/src/common/bindings/bind_region.c
similarity index 100%
rename from src/eressea/tolua/bind_region.c
rename to src/common/bindings/bind_region.c
diff --git a/src/eressea/tolua/bind_region.h b/src/common/bindings/bind_region.h
similarity index 100%
rename from src/eressea/tolua/bind_region.h
rename to src/common/bindings/bind_region.h
diff --git a/src/eressea/tolua/bind_ship.c b/src/common/bindings/bind_ship.c
similarity index 100%
rename from src/eressea/tolua/bind_ship.c
rename to src/common/bindings/bind_ship.c
diff --git a/src/eressea/tolua/bind_ship.h b/src/common/bindings/bind_ship.h
similarity index 100%
rename from src/eressea/tolua/bind_ship.h
rename to src/common/bindings/bind_ship.h
diff --git a/src/eressea/tolua/bind_sqlite.c b/src/common/bindings/bind_sqlite.c
similarity index 100%
rename from src/eressea/tolua/bind_sqlite.c
rename to src/common/bindings/bind_sqlite.c
diff --git a/src/eressea/tolua/bind_storage.c b/src/common/bindings/bind_storage.c
similarity index 100%
rename from src/eressea/tolua/bind_storage.c
rename to src/common/bindings/bind_storage.c
diff --git a/src/eressea/tolua/bind_storage.h b/src/common/bindings/bind_storage.h
similarity index 100%
rename from src/eressea/tolua/bind_storage.h
rename to src/common/bindings/bind_storage.h
diff --git a/src/eressea/tolua/bind_unit.c b/src/common/bindings/bind_unit.c
similarity index 100%
rename from src/eressea/tolua/bind_unit.c
rename to src/common/bindings/bind_unit.c
diff --git a/src/eressea/tolua/bind_unit.h b/src/common/bindings/bind_unit.h
similarity index 100%
rename from src/eressea/tolua/bind_unit.h
rename to src/common/bindings/bind_unit.h
diff --git a/src/eressea/tolua/bindings.c b/src/common/bindings/bindings.c
similarity index 100%
rename from src/eressea/tolua/bindings.c
rename to src/common/bindings/bindings.c
diff --git a/src/eressea/tolua/bindings.h b/src/common/bindings/bindings.h
similarity index 100%
rename from src/eressea/tolua/bindings.h
rename to src/common/bindings/bindings.h
diff --git a/src/eressea/tolua/helpers.c b/src/common/bindings/helpers.c
similarity index 100%
rename from src/eressea/tolua/helpers.c
rename to src/common/bindings/helpers.c
diff --git a/src/eressea/tolua/helpers.h b/src/common/bindings/helpers.h
similarity index 100%
rename from src/eressea/tolua/helpers.h
rename to src/common/bindings/helpers.h
diff --git a/src/combined/Jamfile b/src/common/build/Jamfile
similarity index 100%
rename from src/combined/Jamfile
rename to src/common/build/Jamfile
diff --git a/src/combined/atoi36.c b/src/common/build/atoi36.c
similarity index 100%
rename from src/combined/atoi36.c
rename to src/common/build/atoi36.c
diff --git a/src/combined/curses.c b/src/common/build/curses.c
similarity index 100%
rename from src/combined/curses.c
rename to src/common/build/curses.c
diff --git a/src/combined/gamecode.c b/src/common/build/gamecode.c
similarity index 100%
rename from src/combined/gamecode.c
rename to src/common/build/gamecode.c
diff --git a/src/combined/kernel.c b/src/common/build/kernel.c
similarity index 100%
rename from src/combined/kernel.c
rename to src/common/build/kernel.c
diff --git a/src/combined/main.c b/src/common/build/main.c
similarity index 100%
rename from src/combined/main.c
rename to src/common/build/main.c
diff --git a/src/combined/malloc.c b/src/common/build/malloc.c
similarity index 100%
rename from src/combined/malloc.c
rename to src/common/build/malloc.c
diff --git a/src/combined/stdafx.c b/src/common/build/stdafx.c
similarity index 100%
rename from src/combined/stdafx.c
rename to src/common/build/stdafx.c
diff --git a/src/combined/stdafx.h b/src/common/build/stdafx.h
similarity index 100%
rename from src/combined/stdafx.h
rename to src/common/build/stdafx.h
diff --git a/src/combined/util.c b/src/common/build/util.c
similarity index 100%
rename from src/combined/util.c
rename to src/common/build/util.c
diff --git a/src/eressea/editing.c b/src/common/editing.c
similarity index 100%
rename from src/eressea/editing.c
rename to src/common/editing.c
diff --git a/src/eressea/editing.h b/src/common/editing.h
similarity index 100%
rename from src/eressea/editing.h
rename to src/common/editing.h
diff --git a/src/eressea/gmtool.c b/src/common/gmtool.c
similarity index 100%
rename from src/eressea/gmtool.c
rename to src/common/gmtool.c
diff --git a/src/eressea/gmtool.h b/src/common/gmtool.h
similarity index 100%
rename from src/eressea/gmtool.h
rename to src/common/gmtool.h
diff --git a/src/eressea/gmtool.vcproj b/src/common/gmtool.vcproj
similarity index 100%
rename from src/eressea/gmtool.vcproj
rename to src/common/gmtool.vcproj
diff --git a/src/eressea/gmtool_structs.h b/src/common/gmtool_structs.h
similarity index 100%
rename from src/eressea/gmtool_structs.h
rename to src/common/gmtool_structs.h
diff --git a/src/eressea/lua.hpp b/src/common/lua.hpp
similarity index 100%
rename from src/eressea/lua.hpp
rename to src/common/lua.hpp
diff --git a/src/eressea/console.c b/src/common/util/console.c
similarity index 100%
rename from src/eressea/console.c
rename to src/common/util/console.c
diff --git a/src/eressea/console.h b/src/common/util/console.h
similarity index 100%
rename from src/eressea/console.h
rename to src/common/util/console.h
diff --git a/src/eressea/curses/listbox.c b/src/common/util/listbox.c
similarity index 100%
rename from src/eressea/curses/listbox.c
rename to src/common/util/listbox.c
diff --git a/src/eressea/curses/listbox.h b/src/common/util/listbox.h
similarity index 100%
rename from src/eressea/curses/listbox.h
rename to src/common/util/listbox.h
diff --git a/src/eressea/lua/alliance.cpp b/src/eressea/lua/alliance.cpp
deleted file mode 100644
index 27687970b..000000000
--- a/src/eressea/lua/alliance.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-
-#include "list.h"
-
-// kernel includes
-#include <kernel/region.h>
-#include <kernel/faction.h>
-#include <kernel/alliance.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#include <luabind/object.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-using namespace luabind;
-
-class factionlist_iterator {
-public:
-  static faction_list * next(faction_list * node) { return node->next; }
-  static faction * value(faction_list * node) { return node->data; }
-};
-
-static eressea::list<faction *, faction_list *, factionlist_iterator>
-alliance_factions(const alliance& al)
-{
-  return eressea::list<faction *, faction_list *, factionlist_iterator>(al.members);
-}
-
-static alliance *
-add_alliance(int id, const char * name)
-{
-  return makealliance(id, name);
-}
-
-static eressea::list<alliance *>
-get_alliances(void) {
-  return eressea::list<alliance *>(alliances);
-}
-
-void
-bind_alliance(lua_State * L) 
-{
-  module(L)[
-    def("alliances", &get_alliances, return_stl_iterator),
-    def("get_alliance", &findalliance),
-    def("add_alliance", &add_alliance),
-    def("victorycondition", &victorycondition),
-    class_<struct alliance>("alliance")
-    .def_readonly("name", &alliance::name)
-    .def_readonly("id", &alliance::id)
-    .property("factions", &alliance_factions, return_stl_iterator)
-  ];
-}
diff --git a/src/eressea/lua/bindings.h b/src/eressea/lua/bindings.h
deleted file mode 100644
index 2dd5dc863..000000000
--- a/src/eressea/lua/bindings.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef LUA_BINDINGS_H
-#define LUA_BINDINGS_H
-
-extern bool is_function(struct lua_State * L, const char * fname);
-
-extern void bind_region(struct lua_State * L);
-extern void bind_unit(struct lua_State * L);
-extern void bind_ship(struct lua_State * L);
-extern void bind_building(struct lua_State * L);
-extern void bind_faction(struct lua_State * L);
-extern void bind_alliance(struct lua_State * L);
-extern void bind_eressea(struct lua_State * L);
-extern void bind_spell(struct lua_State * L) ;
-extern void bind_item(struct lua_State * L);
-extern void bind_event(struct lua_State * L);
-extern void bind_message(struct lua_State * L);
-extern void bind_objects(struct lua_State * L);
-
-/* test routines */
-extern void bind_test(struct lua_State * L);
-
-/* server only */
-extern void bind_script(struct lua_State * L);
-extern void bind_gamecode(struct lua_State * L);
-
-/* gmtool only */
-extern void bind_gmtool(lua_State * L);
-
-#endif
diff --git a/src/eressea/lua/bindings.vcproj b/src/eressea/lua/bindings.vcproj
deleted file mode 100644
index 22acbb366..000000000
--- a/src/eressea/lua/bindings.vcproj
+++ /dev/null
@@ -1,311 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="bindings"
-	ProjectGUID="{74B1CBD4-3B6E-E544-9475-33FBB0BCE165}"
-	RootNamespace="bindings"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug/bindings"
-			IntermediateDirectory="Debug/bindings"
-			ConfigurationType="4"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="/MP"
-				Optimization="0"
-				AdditionalIncludeDirectories="../..;../../common"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				WarnAsError="true"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE"
-				AdditionalIncludeDirectories="../..;../../common"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(OutDir)/bindings.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Profile|Win32"
-			OutputDirectory="Profile/bindings"
-			IntermediateDirectory="Profile/bindings"
-			ConfigurationType="4"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../..;../../common"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE;NDEBUG"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE;NDEBUG"
-				AdditionalIncludeDirectories="../..;../../common"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(OutDir)/bindings.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release/bindings"
-			IntermediateDirectory="Release/bindings"
-			ConfigurationType="4"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				AdditionalIncludeDirectories="../..;../../common"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE;NDEBUG"
-				StringPooling="true"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="0"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE;NDEBUG"
-				AdditionalIncludeDirectories="../..;../../common"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(OutDir)/bindings.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<File
-			RelativePath=".\alliance.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\bindings.h"
-			>
-		</File>
-		<File
-			RelativePath=".\building.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\eressea.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\event.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\event.h"
-			>
-		</File>
-		<File
-			RelativePath=".\export.h"
-			>
-		</File>
-		<File
-			RelativePath=".\faction.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\gamecode.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\item.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\list.h"
-			>
-		</File>
-		<File
-			RelativePath=".\message.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\objects.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\objects.h"
-			>
-		</File>
-		<File
-			RelativePath=".\region.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\script.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\script.h"
-			>
-		</File>
-		<File
-			RelativePath=".\ship.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\spell.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\test.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\unit.cpp"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/eressea/lua/building.cpp b/src/eressea/lua/building.cpp
deleted file mode 100644
index 50f961706..000000000
--- a/src/eressea/lua/building.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-#include "list.h"
-#include "objects.h"
-#include "bindings.h"
-
-// kernel includes
-#include <kernel/building.h>
-#include <kernel/region.h>
-#include <kernel/unit.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#include <luabind/operator.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-// util includes
-#include <util/attrib.h>
-#include <util/base36.h>
-#include <util/lists.h>
-#include <util/log.h>
-
-using namespace luabind;
-
-static building *
-add_building(region * r, const char * name)
-{
-  const building_type * btype = bt_find(name);
-  if (btype==NULL) return NULL;
-  return new_building(btype, r, NULL);
-}
-
-static int
-lc_age(struct attrib * a)
-{
-  building_action * data = (building_action*)a->data.v;
-  const char * fname = data->fname;
-  const char * fparam = data->param;
-  building * b = data->b;
-  int retval = -1;
-
-  assert(b!=NULL);
-  if (fname!=NULL) {
-    lua_State * L = (lua_State *)global.vm_state;
-    if (is_function(L, fname)) {
-      try {
-        if (fparam) {
-          std::string param(fparam);
-          retval = luabind::call_function<int>(L, fname, b, param);
-        } else {
-          retval = luabind::call_function<int>(L, fname, b);
-        }
-      }
-      catch (luabind::error& e) {
-        lua_State* L = e.state();
-        const char* error = lua_tostring(L, -1);
-        log_error(("An exception occured while %s tried to call '%s': %s.\n",
-          buildingname(b), fname, error));
-        lua_pop(L, 1);
-        /* std::terminate(); */
-      }
-    }
-  }
-  return (retval!=0)?AT_AGE_KEEP:AT_AGE_REMOVE;
-}
-
-static const char *
-building_getinfo(const building * b)
-{
-  return (const char*)b->display;
-}
-
-static void
-building_setinfo(building * b, const char * info)
-{
-  free(b->display);
-  b->display = strdup(info);
-}
-
-static std::ostream&
-operator<<(std::ostream& stream, const building& b)
-{
-  stream << b.name;
-  stream << " (" << itoa36(b.no) << ")";
-  stream << ", " << b.type->_name;
-  stream << " size " << b.size;
-  return stream;
-}
-
-static bool
-operator==(const building& a, const building&b)
-{
-  return a.no==b.no;
-}
-
-class buildingunit {
-public:
-  static unit * next(unit * node) {
-    building * b = node->building;
-    do {
-      node = node->next;
-    } while (node !=NULL && node->building!=b);
-    return node;
-  }
-  static unit * value(unit * node) { return node; }
-};
-
-
-static eressea::list<unit *, unit *, buildingunit>
-building_units(const building * b) {
-  region * r = b->region;
-  unit * u = r->units;
-  while (u!=NULL && (!u->building || u->building->no!=b->no)) u=u->next;
-  return eressea::list<unit *, unit *, buildingunit>(u);
-}
-
-const char *
-building_gettype(const building& b) {
-  return b.type->_name;
-}
-
-void
-bind_building(lua_State * L)
-{
-  at_building_action.age = lc_age;
-  module(L)[
-    def("get_building", &findbuilding),
-    def("add_building", &add_building),
-
-    class_<struct building>("building")
-    .def(self == building())
-    .def(tostring(self))
-    .property("name", &building_getname, &building_setname)
-    .property("info", &building_getinfo, &building_setinfo)
-    .property("units", &building_units, return_stl_iterator)
-    .property("region", &building_getregion, &building_setregion)
-    .property("type", &building_gettype)
-    .def_readonly("id", &building::no)
-    .def_readwrite("size", &building::size)
-    .def("add_action", &building_addaction)
-    .property("objects", &eressea::get_objects<building>)
-    .scope [
-      def("create", &add_building)
-    ]
-  ];
-}
diff --git a/src/eressea/lua/eressea.cpp b/src/eressea/lua/eressea.cpp
deleted file mode 100644
index 166ebb732..000000000
--- a/src/eressea/lua/eressea.cpp
+++ /dev/null
@@ -1,242 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-
-#include "bindings.h"
-
-#include <attributes/key.h>
-#include <modules/autoseed.h>
-#include <modules/score.h>
-
-// kernel includes
-#include <kernel/alliance.h>
-#include <kernel/calendar.h>
-#include <kernel/equipment.h>
-#include <kernel/faction.h>
-#include <kernel/item.h>
-#include <kernel/plane.h>
-#include <kernel/race.h>
-#include <kernel/reports.h>
-#include <kernel/save.h>
-#include <kernel/skill.h>
-#include <kernel/teleport.h>
-#include <kernel/unit.h>
-
-#include <gamecode/laws.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-// util includes
-#include <util/attrib.h>
-#include <util/language.h>
-#include <util/lists.h>
-#include <util/log.h>
-#include <util/base36.h>
-#include <util/rand.h>
-#include <util/rng.h>
-
-#include <cstring>
-#include <ctime>
-
-using namespace luabind;
-
-static int
-lua_addequipment(const char * eqname, const char * iname, const char * value)
-{
-  if (iname==NULL) return -1;
-  const struct item_type * itype = it_find(iname);
-  if (itype==NULL) return -1;
-  equipment_setitem(create_equipment(eqname), itype, value);
-  return 0;
-}
-
-static int
-get_turn(void)
-{
-  return turn;
-}
-
-static int
-get_nmrs(int n)
-{
-  if (n<=NMRTimeout()) {
-    if (nmrs==NULL) update_nmrs();
-    return nmrs[n];
-  }
-  return 0;
-}
-
-static int
-find_plane_id(const char * name)
-{
-  plane * pl = getplanebyname(name);
-  return pl?pl->id:0;
-}
-
-static bool
-get_key(const char * name)
-{
-  int flag = atoi36(name);
-  attrib * a = find_key(global.attribs, flag);
-  return (a!=NULL);
-}
-
-static void
-set_key(const char * name, bool value)
-{
-  int flag = atoi36(name);
-  attrib * a = find_key(global.attribs, flag);
-  if (a==NULL && value) {
-    add_key(&global.attribs, flag);
-  } else if (a!=NULL && !value) {
-    a_remove(&global.attribs, a);
-  }
-}
-
-static const char *
-get_gamename(void)
-{
-  return global.gamename;
-}
-
-static void
-lua_setstring(const char * lname, const char * key, const char * str)
-{
-  struct locale * lang = find_locale(lname);
-  locale_setstring(lang, key, str);
-}
-
-static const char *
-lua_getstring(const char * lname, const char * key)
-{
-  if (key) {
-    struct locale * lang = find_locale(lname);
-    return (const char*)locale_getstring(lang, key);
-  }
-  return NULL;
-}
-
-#define ISLANDSIZE 20
-#define TURNS_PER_ISLAND 5
-static void
-lua_autoseed(const char * filename, bool new_island)
-{
-  newfaction * players = read_newfactions(filename);
-  if (players!=NULL) {
-    while (players) {
-      int n = listlen(players);
-      int k = (n+ISLANDSIZE-1)/ISLANDSIZE;
-      k = n / k;
-      n = autoseed(&players, k, new_island?0:TURNS_PER_ISLAND);
-      if (n==0) {
-        break;
-      }
-    }
-  }
-}
-
-#ifdef LUABIND_NO_EXCEPTIONS
-static void
-error_callback(lua_State * L)
-{
-}
-#endif
-
-static int
-get_direction(const char * name)
-{
-  for (int i=0;i!=MAXDIRECTIONS;++i) {
-    if (strcasecmp(directions[i], name)==0) return i;
-  }
-  return NODIRECTION;
-}
-
-static void
-lua_equipunit(unit * u, const char * eqname)
-{
-  equip_unit(u, get_equipment(eqname));
-}
-
-static void
-lua_learnskill(unit * u, const char * skname, float chances)
-{
-  skill_t sk = sk_find(skname);
-  if (sk!=NOSKILL) {
-    learn_skill(u, sk, chances);
-  }
-}
-
-bool
-is_function(struct lua_State * luaState, const char * fname)
-{
-  object g = globals(luaState);
-  object fun = g[fname];
-  if (fun.is_valid()) {
-    if (type(fun)==LUA_TFUNCTION) {
-      return true;
-    }
-    if (type(fun)!=LUA_TNIL) {
-      log_warning(("Lua global object %s is not a function, type is %u\n", fname, type(fun)));
-    }
-  }
-  return false;
-}
-
-static const char *
-get_season(int turnno)
-{
-  gamedate gd;
-  get_gamedate(turnno, &gd);
-  return seasonnames[gd.season];
-}
-
-void
-bind_eressea(lua_State * L)
-{
-  module(L)[
-    def("atoi36", &atoi36),
-    def("rng_int", &rng_int),
-    def("itoa36", &itoa36),
-    def("dice_roll", &dice_rand),
-    def("equipment_setitem", &lua_addequipment),
-    def("get_turn", &get_turn),
-    def("get_season", &get_season),
-    def("get_nmrs", &get_nmrs),
-    def("remove_empty_units", &remove_empty_units),
-
-    def("update_subscriptions", &update_subscriptions),
-    def("update_scores", &score),
-
-    def("equip_unit", &lua_equipunit),
-    def("learn_skill", &lua_learnskill),
-
-    /* map making */
-    def("autoseed", lua_autoseed),
-
-    /* string to enum */
-    def("direction", &get_direction),
-
-    /* localization: */
-    def("set_string", &lua_setstring),
-    def("get_string", &lua_getstring),
-
-    def("set_key", &set_key),
-    def("get_key", &get_key),
-
-    def("get_gamename", &get_gamename),
-    /* planes not really implemented */
-    def("get_plane_id", &find_plane_id)
-  ];
-#ifdef LUABIND_NO_EXCEPTIONS
-  luabind::set_error_callback(error_callback);
-#endif
-}
diff --git a/src/eressea/lua/event.cpp b/src/eressea/lua/event.cpp
deleted file mode 100644
index e39069520..000000000
--- a/src/eressea/lua/event.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-#include "event.h"
-
-// kernel includes
-#include <kernel/unit.h>
-
-// util includes
-#include <util/base36.h>
-#include <util/event.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-using namespace luabind;
-
-
-const char * 
-event::get_type(int i) const 
-{ 
-  return args[i].type; 
-}
-
-struct unit * 
-event::get_unit(int i) const 
-{
-  return (struct unit *)args[i].data.v; 
-}
-
-const char * 
-event::get_string(int i) const 
-{ 
-  return (const char*)args[i].data.v; 
-}
-
-int 
-event::get_int(int i) const 
-{
-  return args[i].data.i;
-}
-
-void
-bind_event(lua_State * L) 
-{
-  module(L)[
-    class_<event>("event")
-      .def("message", &event::get_message)
-      .def("get_type", &event::get_type)
-      .def("get_string", &event::get_string)
-      .def("get_unit", &event::get_unit)
-      .def("get_int", &event::get_int)
-  ];
-}
diff --git a/src/eressea/lua/event.h b/src/eressea/lua/event.h
deleted file mode 100644
index f7361a0d2..000000000
--- a/src/eressea/lua/event.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef LUA_EVENT_H
-#define LUA_EVENT_H
-class event {
-public:
-  event(char * m, struct event_arg * a) : args(a), msg(m) {}
-
-  const char * get_message(int i) const { return msg; }
-  const char * get_type(int i) const;
-  struct unit * get_unit(int i) const;
-  const char * get_string(int i) const;
-  int get_int(int i) const;
-
-private:
-  struct event_arg * args;
-  char * msg;
-};
-
-#endif
diff --git a/src/eressea/lua/export.h b/src/eressea/lua/export.h
deleted file mode 100644
index ee52356a1..000000000
--- a/src/eressea/lua/export.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef LUA_EXPORT_H
-#define LUA_EXPORT_H
-
-struct lua_State;
-
-extern void bind_region(struct lua_State * L);
-extern void bind_unit(struct lua_State * L);
-extern void bind_ship(struct lua_State * L);
-extern void bind_building(struct lua_State * L);
-extern void bind_faction(struct lua_State * L);
-
-#endif
diff --git a/src/eressea/lua/faction.cpp b/src/eressea/lua/faction.cpp
deleted file mode 100644
index e41a499ec..000000000
--- a/src/eressea/lua/faction.cpp
+++ /dev/null
@@ -1,315 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-#include "list.h"
-#include "objects.h"
-
-// kernel includes
-#include <kernel/alliance.h>
-#include <kernel/faction.h>
-#include <kernel/item.h>
-#include <kernel/message.h>
-#include <kernel/race.h>
-#include <kernel/unit.h>
-
-// util includes
-#include <util/attrib.h>
-#include <util/base36.h>
-#include <util/language.h>
-
-// attrib includes
-#include <attributes/attributes.h>
-#include <attributes/variable.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#include <luabind/out_value_policy.hpp>
-#include <luabind/copy_policy.hpp>
-#include <luabind/operator.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-#include <ostream>
-#include <cstring>
-using namespace luabind;
-
-static faction *
-add_faction(const char * email, const char * racename, const char * lang)
-{
-  const race * frace = findrace(racename, default_locale);
-  if (frace==NULL) frace = findrace(racename, find_locale("de"));
-  if (frace==NULL) frace = findrace(racename, find_locale("en"));
-  if (frace==NULL) return NULL;
-  locale * loc = find_locale(lang);
-  faction * f = addfaction(email, NULL, frace, loc, 0);
-  return f;
-}
-
-static eressea::list<faction *>
-get_factions(void) {
-  return eressea::list<faction *>(factions);
-}
-
-class factionunit {
-public:
-  static unit * next(unit * node) { return node->nextF; }
-  static unit * value(unit * node) { return node; }
-};
-
-static eressea::list<unit *, unit *, factionunit>
-faction_units(const faction * f)
-{
-  return eressea::list<unit *, unit *, factionunit>(f->units);
-}
-
-static void
-faction_setalliance(faction * f, alliance * team)
-{
-  if (f->alliance==0) setalliance(f, team);
-}
-
-static alliance *
-faction_getalliance(const faction * f)
-{
-  return f->alliance;
-}
-
-const char *
-faction_getlocale(const faction * f)
-{
-  return locale_name(f->locale);
-}
-
-void
-faction_setlocale(faction * f, const char * name)
-{
-  f->locale = find_locale(name);
-}
-
-static std::ostream&
-operator<<(std::ostream& stream, const faction& f)
-{
-  stream << factionname(&f);
-  return stream;
-}
-
-static bool
-operator==(const faction& a, const faction&b)
-{
-  return a.no==b.no;
-}
-
-static int
-faction_getpolicy(const faction * a, const faction * b, const char * flag)
-{
-  int mode;
-
-  for (mode=0;helpmodes[mode].name!=NULL;++mode) {
-    if (strcmp(flag, helpmodes[mode].name)==0) {
-      return get_alliance(a, b) & mode;
-    }
-  }
-  return 0;
-}
-
-static void
-faction_setpolicy(faction * a, faction * b, const char * flag, bool value)
-{
-  int mode;
-
-  for (mode=0;helpmodes[mode].name!=NULL;++mode) {
-    if (strcmp(flag, helpmodes[mode].name)==0) {
-      if (value) set_alliance(a, b, get_alliance(a, b) | helpmodes[mode].status);
-      else set_alliance(a, b, get_alliance(a, b) & ~helpmodes[mode].status);
-      break;
-    }
-  }
-}
-
-static int
-faction_additem(faction * f, const char * iname, int number)
-{
-  if (iname!=NULL) {
-    const item_type * itype = it_find(iname);
-    if (itype!=NULL) {
-      item * i = i_change(&f->items, itype, number);
-      return i?i->number:0;
-    } // if (itype!=NULL)
-  }
-  return -1;
-}
-
-static void
-faction_addnotice(faction * f, const char * str)
-{
-  const char * loc = LOC(f->locale, str);
-  ADDMSG(&f->msgs, msg_message("msg_event", "string", loc));
-}
-
-static const char *
-faction_getrace(const faction * f)
-{
-  return f->race->_name[0];
-}
-
-static void
-faction_setrace(faction * f, const char * rcname)
-{
-  race * rc = rc_find(rcname);
-  if (rc!=NULL) {
-    f->race = rc;
-  }
-}
-
-static eressea::list<std::string, item *, eressea::bind_items>
-faction_items(const faction * f) {
-  return eressea::list<std::string, item *, eressea::bind_items>(f->items);
-}
-
-void
-faction_set_passw(faction * f, const char * passw)
-{
-  free(f->passw);
-  f->passw = strdup(passw);
-}
-
-const char *
-faction_get_passw(const faction * f)
-{
-  return f->passw;
-}
-
-void
-faction_set_banner(faction * f, const char * banner)
-{
-  free(f->banner);
-  f->banner = strdup(banner);
-}
-
-const char *
-faction_get_banner(const faction * f)
-{
-  if (f->banner) {
-    return (const char*)f->banner;
-  }
-  return "";
-}
-
-void
-faction_set_email(faction * f, const char * email)
-{
-  free(f->email);
-  f->email = strdup(email);
-}
-
-const char *
-faction_get_email(const faction * f)
-{
-  return f->email;
-}
-
-void
-faction_getorigin(const faction * f, int &x, int &y)
-{
-  ursprung * origin = f->ursprung;
-  while (origin!=NULL && origin->id!=0) {
-    origin = origin->next;
-  }
-  if (origin) {
-    x = origin->x;
-    y = origin->y;
-  } else {
-    x = 0;
-    y = 0;
-  }
-}
-int
-faction_getorigin_x(const faction * f) {
-  return f->ursprung->x;
-}
-void
-faction_setorigin_x(faction * f, int x) {
-  f->ursprung->x = x;
-}
-
-static int
-faction_getorigin_y(const faction * f) {
-  return f->ursprung->y;
-}
-
-static void
-faction_setorigin_y(faction * f, int y) {
-  f->ursprung->y = y;
-}
-
-static int
-faction_countheroes(const faction * f)
-{
-  return countheroes(f);
-}
-
-static void
-faction_renumber(faction * f, int no)
-{
-  renumber_faction(f, no);
-}
-
-static int
-faction_maxheroes(const faction * f)
-{
-  return maxheroes(f);
-}
-
-void
-bind_faction(lua_State * L)
-{
-  module(L)[
-    def("factions", &get_factions, return_stl_iterator),
-    def("get_faction", &findfaction),
-    def("faction_origin", &faction_getorigin, pure_out_value(_2) + pure_out_value(_3)),
-
-    class_<struct faction>("faction")
-    .def(tostring(const_self))
-    .def(self == faction())
-    .def("set_policy", &faction_setpolicy)
-    .def("get_policy", &faction_getpolicy)
-
-    // heroes
-    .def("heroes", &faction_countheroes)
-    .def("max_heroes", &faction_maxheroes)
-
-    .def_readonly("name", &faction::name)
-    .def_readonly("score", &faction::score)
-    .def_readonly("id", &faction::no)
-    .def_readwrite("age", &faction::age)
-    .def_readwrite("options", &faction::options)
-    .def_readwrite("flags", &faction::flags)
-    .def_readwrite("subscription", &faction::subscription)
-    .def_readwrite("lastturn", &faction::lastorders)
-
-    .def("add_item", &faction_additem)
-    .property("items", &faction_items, return_stl_iterator)
-    .property("x", &faction_getorigin_x, &faction_setorigin_x)
-    .property("y", &faction_getorigin_y, &faction_setorigin_y)
-
-    .def("renum", &faction_renumber)
-    .def("add_notice", &faction_addnotice)
-    .property("password", &faction_get_passw, &faction_set_passw)
-    .property("info", &faction_get_banner, &faction_set_banner)
-    .property("email", &faction_get_email, &faction_set_email)
-    .property("locale", &faction_getlocale, &faction_setlocale)
-    .property("units", &faction_units, return_stl_iterator)
-    .property("alliance", &faction_getalliance, &faction_setalliance)
-    .property("race", &faction_getrace, &faction_setrace)
-    .property("objects", &eressea::get_objects<faction>)
-    .scope [
-      def("create", &add_faction)
-    ]
-  ];
-}
diff --git a/src/eressea/lua/gamecode.cpp b/src/eressea/lua/gamecode.cpp
deleted file mode 100644
index ef4bf462f..000000000
--- a/src/eressea/lua/gamecode.cpp
+++ /dev/null
@@ -1,223 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-
-#include "script.h"
-#include "../korrektur.h"
-
-#include <attributes/key.h>
-#include <modules/autoseed.h>
-#include <modules/score.h>
-
-// gamecode includes
-#include <gamecode/laws.h>
-#include <gamecode/monster.h>
-#include <gamecode/creport.h>
-#include <gamecode/report.h>
-#include <gamecode/summary.h>
-
-#include <spells/spells.h>
-
-// kernel includes
-#include <kernel/alliance.h>
-#include <kernel/equipment.h>
-#include <kernel/faction.h>
-#include <kernel/item.h>
-#include <kernel/ship.h>
-#include <kernel/message.h>
-#include <kernel/plane.h>
-#include <kernel/race.h>
-#include <kernel/region.h>
-#include <kernel/reports.h>
-#include <kernel/save.h>
-#include <kernel/skill.h>
-#include <kernel/teleport.h>
-#include <kernel/unit.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-// util includes
-#include <util/lists.h>
-#include <util/log.h>
-#include <util/language.h>
-#include <util/base36.h>
-#include <util/rand.h>
-#include <util/rng.h>
-
-#include <libxml/encoding.h>
-
-#include <cstring>
-#include <ctime>
-
-using namespace luabind;
-
-static void
-lua_planmonsters(void)
-{
-  unit * u;
-  faction * f = get_monsters();
-
-  if (f==NULL) return;
-  plan_monsters();
-  for (u=f->units;u;u=u->nextF) {
-    call_script(u);
-  }
-}
-
-#ifdef LUABIND_NO_EXCEPTIONS
-static void
-error_callback(lua_State * L)
-{
-}
-#endif
-
-static int
-lua_writereport(faction * f)
-{
-  time_t ltime = time(0);
-  return write_reports(f, ltime);
-}
-
-static int
-lua_writereports(void)
-{
-  init_reports();
-  return reports();
-}
-
-static void
-message_unit(unit * sender, unit * target, const char * str)
-{
-  deliverMail(target->faction, sender->region, sender, str, target);
-}
-
-static void
-message_faction(unit * sender, faction * target, const char * str)
-{
-  deliverMail(target, sender->region, sender, str, NULL);
-}
-
-static void
-message_region(unit * sender, const char * str)
-{
-  ADDMSG(&sender->region->msgs, msg_message("mail_result", "unit message", sender, str));
-}
-
-static void
-set_encoding(const char * str)
-{
-  enc_gamedata = xmlParseCharEncoding(str);
-}
-
-static const char *
-get_encoding(void)
-{
-  return xmlGetCharEncodingName((xmlCharEncoding)enc_gamedata);
-}
-
-static int
-read_game(const char * filename, const char * mode)
-{
-  int rv, m = IO_TEXT;
-  if (strcmp(mode, "binary")==0) m = IO_BINARY;
-  rv = readgame(filename, m, false);
-  if (rv==0) {
-    log_printf(" - Korrekturen Runde %d\n", turn);
-    korrektur();
-  }
-  return rv;
-}
-
-static int
-write_game(const char *filename, const char * mode)
-{
-  int result, m = IO_TEXT;
-  if (strcmp(mode, "binary")==0) m = IO_BINARY;
-  remove_empty_factions(true);
-  result = writegame(filename, m);
-  return result;
-}
-
-static summary * sum_begin = 0;
-
-static int
-init_summary()
-{
-  sum_begin = make_summary();
-  return 0;
-}
-
-static int
-write_summary()
-{
-  assert(sum_begin
-    || !"init_summary must be called before before write_summary");
-  if (sum_begin) {
-    summary * sum_end = make_summary();
-    report_summary(sum_end, sum_begin, false);
-    report_summary(sum_end, sum_begin, true);
-    return 0;
-  }
-  return -1;
-}
-
-
-static int
-process_orders(void)
-{
-  turn++;
-  processorders();
-
-  return 0;
-}
-
-void
-bind_gamecode(lua_State * L)
-{
-  module(L)[
-    def("read_game", &read_game),
-    def("write_game", &write_game),
-    def("free_game", &free_gamedata),
-
-    def("get_encoding", &get_encoding),
-    def("set_encoding", &set_encoding),
-
-    def("init_summary", &init_summary),
-    def("write_summary", &write_summary),
-
-    def("read_orders", &readorders),
-    def("process_orders", &process_orders),
-
-    def("write_map", &crwritemap),
-    def("write_passwords", &writepasswd),
-    def("init_reports", &init_reports),
-    def("write_reports", &lua_writereports),
-    def("write_report", &lua_writereport),
-    def("update_guards", &update_guards),
-
-    def("message_unit", &message_unit),
-    def("message_faction", &message_faction),
-    def("message_region", &message_region),
-
-    /* spells and stuff */
-    def("levitate_ship", &levitate_ship),
-
-    /* scripted monsters */
-    def("spawn_braineaters", &spawn_braineaters),
-    def("spawn_undead", &spawn_undead),
-    def("spawn_dragons", &spawn_dragons),
-    def("plan_monsters", &lua_planmonsters)
-  ];
-#ifdef LUABIND_NO_EXCEPTIONS
-  luabind::set_error_callback(error_callback);
-#endif
-}
diff --git a/src/eressea/lua/gm.cpp b/src/eressea/lua/gm.cpp
deleted file mode 100644
index 3f54943d1..000000000
--- a/src/eressea/lua/gm.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-
-#include "bindings.h"
-#include "list.h"
-#include "../gmtool.h"
-#include "../gmtool_structs.h"
-
-#include <kernel/region.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-using namespace luabind;
-
-region *
-current_region(void)
-{
-  map_region * mr = cursor_region(&current_state->display, &current_state->cursor);
-  return mr?mr->r:NULL;
-}
-
-static tag *
-next_tag(int hash, const state * st)
-{
-  while (st && hash!=MAXTHASH) {
-    tag * node = st->selected->tags[hash];
-    while (node!=NULL) {
-      region * r = findregion((short)node->coord.x, (short)node->coord.y);
-      if (r) {
-	return node;
-      }
-      node = node->nexthash;
-    }
-    ++hash;
-  }
-  return NULL;
-}
-
-class selectedregion {
-public:
-  static tag * next(tag * self) {
-    tag * node = self->nexthash;
-    while (node) {
-      region * r = findregion((short)node->coord.x, (short)node->coord.y);
-      if (r) return node;
-      node = node->nexthash;
-    }
-    coordinate * c = &self->coord;
-    unsigned int hash;
-    int nx, ny;
-
-    cnormalize(c, &nx, &ny);
-    hash = ((nx << 12) ^ ny) & (MAXTHASH-1);
-
-    return next_tag(hash+1, current_state);
-  }
-
-  static region * value(tag * node) {
-    return findregion((short)node->coord.x, (short)node->coord.y);
-  }
-};
-
-
-static eressea::list<region *, tag *, selectedregion>
-selected_regions(void)
-{
-  return eressea::list<region *, tag *, selectedregion>(next_tag(0, current_state));
-}
-
-static void
-gmtool_select_coordinate(int x, int y, bool select)
-{
-  int nx = x, ny = y;
-  plane * pl = findplane(x, y);
-  pnormalize(&nx, &ny, pl);
-  select_coordinate(current_state->selected, nx, ny, select?1:0);
-}
-
-static void
-gmtool_select_region(region& r, bool select)
-{
-  select_coordinate(current_state->selected, r.x, r.y, select?1:0);
-}
-
-static void gmtool_open(void) 
-{
-   state_open();
-}
-
-static void gmtool_close(void) 
-{
-   state_close(current_state);
-}
-
-void
-bind_gmtool(lua_State * L)
-{
-  module(L, "gmtool")[
-    def("open", &gmtool_open),
-    def("close", &gmtool_close),
-    def("editor", &run_mapper),
-    def("get_selection", &selected_regions, return_stl_iterator),
-    def("get_cursor", &current_region),
-    def("highlight", &highlight_region),
-    def("select", &gmtool_select_region),
-    def("select_at", &gmtool_select_coordinate)
-  ];
-#ifdef LUABIND_NO_EXCEPTIONS
-  luabind::set_error_callback(error_callback);
-#endif
-}
diff --git a/src/eressea/lua/item.cpp b/src/eressea/lua/item.cpp
deleted file mode 100644
index f12a60932..000000000
--- a/src/eressea/lua/item.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-
-#include "bindings.h"
-#include "script.h"
-
-// kernel includes
-#include <kernel/item.h>
-#include <kernel/region.h>
-#include <kernel/unit.h>
-
-// util includes
-#include <util/attrib.h>
-#include <util/functions.h>
-#include <util/log.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-using namespace luabind;
-
-static int
-lua_giveitem(unit * s, unit * d, const item_type * itype, int n, struct order * ord)
-{
-  char fname[64];
-  int retval = -1;
-  const char * iname = itype->rtype->_name[0];
-
-  assert(s!=NULL);
-  strcat(strcpy(fname, iname), "_give");
-
-  lua_State * L = (lua_State *)global.vm_state;
-  if (is_function(L, fname)) {
-    try {
-      retval = luabind::call_function<int>(L, fname, s, d, iname, n);
-    }
-    catch (luabind::error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error(("An exception occured while %s tried to call '%s': %s.\n",
-        unitname(s), fname, error));
-      lua_pop(L, 1);
-      std::terminate();
-    }
-  }
-  return retval;
-}
-
-static void
-item_register(const char * name, const char * appearance)
-{
-  resource_type * rtype = (resource_type *)calloc(1, sizeof(resource_type));
-  item_type * itype = (item_type *)calloc(1, sizeof(item_type));
-
-  rtype->_name[0] = strdup(name);
-  rtype->_name[1] = strcat(strcpy((char*)malloc(strlen(name)+3), name), "_p");
-  rtype->_appearance[0] = strdup(appearance);
-  rtype->_appearance[1] = strcat(strcpy((char*)malloc(strlen(appearance)+3), appearance), "_p");
-
-  itype->use = lua_useitem;
-  itype->rtype = rtype;
-
-  rt_register(rtype);
-  it_register(itype);
-  init_itemnames();
-}
-
-static int
-limit_resource(const region * r, const resource_type * rtype)
-{
-  char fname[64];
-  snprintf(fname, sizeof(fname), "%s_limit", rtype->_name[0]);
-  int retval = -1;
-
-  lua_State * L = (lua_State *)global.vm_state;
-  if (is_function(L, fname)) {
-    try {
-      retval = call_function<int>(L, fname, r);
-    }
-    catch (error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error(("An exception occured while trying to call '%s': %s.\n",
-        fname, error));
-      lua_pop(L, 1);
-      std::terminate();
-    }
-  }
-  return retval;
-}
-
-static void
-produce_resource(region * r, const resource_type * rtype, int norders)
-{
-  char fname[64];
-  snprintf(fname, sizeof(fname), "%s_produce", rtype->_name[0]);
-
-  lua_State * L = (lua_State *)global.vm_state;
-  if (is_function(L, fname)) {
-    try {
-      call_function<void>(L, fname, r, norders);
-    }
-    catch (error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error(("An exception occured while trying to call '%s': %s.\n",
-        fname, error));
-      lua_pop(L, 1);
-      std::terminate();
-    }
-  }
-}
-
-void
-bind_item(lua_State * L) 
-{
-  register_function((pf_generic)produce_resource, "lua_produceresource");
-  register_function((pf_generic)limit_resource, "lua_limitresource");
-  register_item_give(lua_giveitem, "lua_giveitem");
-
-  module(L)[
-    def("register_item", &item_register)
-  ];
-}
diff --git a/src/eressea/lua/list.h b/src/eressea/lua/list.h
deleted file mode 100644
index fe9834d76..000000000
--- a/src/eressea/lua/list.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef LUA_LIST_H
-#define LUA_LIST_H
-
-#include <string>
-#include <kernel/item.h>
-
-namespace eressea {
-
-  template<class T, class N = T>
-  class listnode {
-  public:
-    static N next(N& node) { return node->next; }
-    static T value(N& node) { return node; }
-  };
-
-  template<class T, class N = T, class nodetype = listnode<T, N> >
-  class list {
-  public:
-    class iterator {
-    public:
-      iterator(const N& index) : m_index(index) {}
-	  ~iterator() {}
-      T operator*() { return nodetype::value(m_index); }
-      bool operator==(const iterator& iter) {
-        return iter.m_index==m_index;
-      }
-      bool operator!=(const iterator& iter) {
-        return iter.m_index!=m_index;
-      }
-      iterator& operator++() {
-        if (m_index) m_index = nodetype::next(m_index);
-        return *this;
-      }
-    private:
-      N m_index;
-    };
-    typedef iterator const_iterator;
-    list<T, N, nodetype>(const N& clist) : m_clist(clist) {}
-    iterator begin() const { return iterator(m_clist); }
-    iterator end() const { return iterator(NULL); }
-
-  public:
-    N m_clist;
-  };
-
-  class bind_items {
-  public:
-    static item * next(item * node) { return node->next; }
-    static std::string value(item * node) { 
-      return std::string(node->type->rtype->_name[0]);
-    }
-  };
-
-};
-
-#endif
diff --git a/src/eressea/lua/message.cpp b/src/eressea/lua/message.cpp
deleted file mode 100644
index e1c32a6f9..000000000
--- a/src/eressea/lua/message.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-
-// kernel includes
-#include <kernel/faction.h>
-#include <kernel/item.h>
-#include <kernel/message.h>
-#include <kernel/region.h>
-#include <kernel/unit.h>
-
-// util includes
-#include <util/message.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#include <luabind/operator.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-#include <ostream>
-
-using namespace luabind;
-
-#define E_OK 0
-#define E_INVALID_MESSAGE 1
-#define E_INVALID_PARAMETER_NAME 2
-#define E_INVALID_PARAMETER_TYPE 3
-#define E_INVALID_PARAMETER_VALUE 4
-
-class lua_message {
-public:
-  lua_message(const char *type) : msg(0), args(0) {
-    mtype = mt_find(type);
-    if (mtype) {
-      args = (variant*)calloc(mtype->nparameters, sizeof(variant));
-    }
-  }
-
-  ~lua_message() {
-    if (msg) msg_release(msg);
-    if (mtype) {
-      for (int i=0;i!=mtype->nparameters;++i) {
-        if (mtype->types[i]->release) {
-          mtype->types[i]->release(args[i]);
-        }
-      }
-    }
-  }
-
-  int set_resource(const char * param, const char * resname) {
-    if (mtype==0) return E_INVALID_MESSAGE;
-
-    int i = get_param(param);
-    if (i==mtype->nparameters) {
-      return E_INVALID_PARAMETER_NAME;
-    }
-    if (strcmp(mtype->types[i]->name, "resource")!=0) {
-      return E_INVALID_PARAMETER_TYPE;
-    }
-
-    args[i].v = (void*)rt_find(resname);
-
-    return E_OK;
-  }
-
-  int set_unit(const char * param, const unit * u) {
-    if (mtype==0) return E_INVALID_MESSAGE;
-
-    int i = get_param(param);
-    if (i==mtype->nparameters) {
-      return E_INVALID_PARAMETER_NAME;
-    }
-    if (strcmp(mtype->types[i]->name, "unit")!=0) {
-      return E_INVALID_PARAMETER_TYPE;
-    }
-
-    args[i].v = (void*)u;
-
-    return E_OK;
-  }
-
-  int set_region(const char * param, const region * r) {
-    if (mtype==0) return E_INVALID_MESSAGE;
-
-    int i = get_param(param);
-    if (i==mtype->nparameters) {
-      return E_INVALID_PARAMETER_NAME;
-    }
-    if (strcmp(mtype->types[i]->name, "region")!=0) {
-      return E_INVALID_PARAMETER_TYPE;
-    }
-
-    args[i].v = (void*)r;
-
-    return E_OK;
-  }
-
-  int set_string(const char * param, const char * value) {
-    if (mtype==0) return E_INVALID_MESSAGE;
-
-    int i = get_param(param);
-    if (i==mtype->nparameters) {
-      return E_INVALID_PARAMETER_NAME;
-    }
-    if (strcmp(mtype->types[i]->name, "string")!=0) {
-      return E_INVALID_PARAMETER_TYPE;
-    }
-
-    variant var;
-    var.v = (void*)value;
-    args[i] = mtype->types[i]->copy(var);
-
-    return E_OK;
-  }
-
-  int set_int(const char * param, int value) {
-    if (mtype==0) return E_INVALID_MESSAGE;
-
-    int i = get_param(param);
-    if (i==mtype->nparameters) {
-      return E_INVALID_PARAMETER_NAME;
-    }
-    if (strcmp(mtype->types[i]->name, "int")!=0) {
-      return E_INVALID_PARAMETER_TYPE;
-    }
-
-    args[i].i = value;
-
-    return E_OK;
-  }
-
-  int send_faction(faction * f) {
-    if (mtype==0) return E_INVALID_MESSAGE;
-    if (msg==NULL) {
-      msg = msg_create(mtype, args);
-    }
-    add_message(&f->msgs, msg);
-    return E_OK;
-  }
-
-  int send_region(region * r) {
-    if (mtype==0) return E_INVALID_MESSAGE;
-    if (msg==NULL) {
-      msg = msg_create(mtype, args);
-    }
-    add_message(&r->msgs, msg);
-    return E_OK;
-  }
-
-protected:
-  int get_param(const char * param) {
-    for (int i=0;i!=mtype->nparameters;++i) {
-      if (strcmp(mtype->pnames[i], param)==0) {
-        return i;
-      }
-    }
-    return mtype->nparameters;
-  }
-
-  const message_type * mtype;
-  message * msg;
-  variant * args;
-};
-
-static std::ostream&
-operator<<(std::ostream& stream, const lua_message& msg)
-{
-  stream << "(message object)";
-  return stream;
-}
-
-lua_message *
-create_lua_message(const char * str)
-{
-  return new lua_message(str);
-}
-
-void
-bind_message(lua_State * L)
-{
-  module(L)[
-    class_<lua_message>("message")
-      .def(constructor<const char *>())
-      .def(tostring(const_self))
-
-      .def("set_unit", &lua_message::set_unit)
-      .def("set_region", &lua_message::set_region)
-      .def("set_resource", &lua_message::set_resource)
-      .def("set_int", &lua_message::set_int)
-      .def("set_string", &lua_message::set_string)
-      .def("send_faction", &lua_message::send_faction)
-      .def("send_region", &lua_message::send_region)
-      .scope [
-        def("create", &create_lua_message)
-      ]
-  ];
-}
diff --git a/src/eressea/lua/objects.cpp b/src/eressea/lua/objects.cpp
deleted file mode 100644
index 5ec723045..000000000
--- a/src/eressea/lua/objects.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-#include "objects.h"
-
-#include <kernel/region.h>
-#include <kernel/unit.h>
-#include <kernel/faction.h>
-#include <kernel/ship.h>
-#include <kernel/building.h>
-#include <util/attrib.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/object.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-#include <string>
-
-using namespace luabind;
-
-namespace eressea {
-
-  object objects::get(const char * name) {
-    lua_State * L = (lua_State *) global.vm_state;
-    attrib * a = a_find(*mAttribPtr, &at_object);
-    for (; a && a->type == &at_object; a = a->next) {
-      if (strcmp(object_name(a), name) == 0) {
-        variant val;
-        object_type type;
-
-        object_get(a, &type, &val);
-        switch (type) {
-            case TNONE:
-              break;
-            case TINTEGER:
-              return object(L, val.i);
-            case TREAL:
-              return object(L, val.f);
-            case TREGION:
-              return object(L, (region*) val.v);
-            case TBUILDING:
-              return object(L, (building*) val.v);
-            case TUNIT:
-              return object(L, (unit*) val.v);
-            case TSHIP:
-              return object(L, (ship*) val.v);
-            case TSTRING:
-              return object(L, (const char*) val.v);
-            default:
-              assert(!"not implemented");
-        }
-      }
-    }
-    return object(); // nil
-  }
-
-  static void set_object(attrib **attribs, const char * name, object_type type,
-    variant val) {
-      attrib * a = a_find(*attribs, &at_object);
-      for (; a && a->type == &at_object; a = a->next) {
-        if (strcmp(object_name(a), name) == 0) {
-          object_set(a, type, val);
-          return;
-        }
-      }
-      a = a_add(attribs, object_create(name, type, val));
-  }
-
-  template<> void objects::set<int, TINTEGER>(const char * name, int value) {
-    variant val = { 0 };
-    val.i = value;
-    set_object(mAttribPtr, name, TINTEGER, val);
-  }
-
-  template<> void objects::set<double, TREAL>(const char * name, double value) {
-    variant val = { 0 };
-    val.f = (float) value;
-    set_object(mAttribPtr, name, TREAL, val);
-  }
-
-  template<> void objects::set<const char *, TSTRING>(const char * name,
-    const char * value) {
-      variant val = { 0 };
-      if (value) val.v = strdup(value);
-      set_object(mAttribPtr, name, TSTRING, val);
-  }
-
-  template<class V, object_type T> void objects::set(const char * name, V value) {
-    variant val = { 0 };
-    val.v = &value;
-    set_object(mAttribPtr, name, T, val);
-  }
-}
-
-void bind_objects(struct lua_State * L) {
-  using namespace eressea;
-
-  module(L)[class_<objects> ("objects") .def("get", &objects::get) .def(
-    "set",
-    (void(objects::*)(const char*, region&))&objects::set<region&, TREGION>)
-    .def("set", (void(objects::*)(const char*, unit&))&objects::set<unit&, TUNIT>)
-    .def("set", (void(objects::*)(const char*, faction&))&objects::set<faction&, TFACTION>)
-    .def("set", (void(objects::*)(const char*, building&))&objects::set<building&, TBUILDING>)
-    .def("set", (void(objects::*)(const char*, ship&))&objects::set<ship&, TSHIP>)
-    // POD:
-    //      .def("set", (void(objects::*)(const char*, int))&objects::set<int, TINTEGER>)
-    .def("set", (void(objects::*)(const char*, double))&objects::set<lua_Number, TREAL>)
-    .def("set", (void(objects::*)(const char*, const char *))&objects::set<const char *, TSTRING>)
-  ];
-}
diff --git a/src/eressea/lua/objects.h b/src/eressea/lua/objects.h
deleted file mode 100644
index 894c33b86..000000000
--- a/src/eressea/lua/objects.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef LUA_OBJECTS_H
-#define LUA_OBJECTS_H
-
-#include <attributes/object.h>
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <luabind/object.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-struct lua_State;
-
-namespace eressea {
-
-  class objects {
-  public:
-    objects(struct attrib ** attribs) : mAttribPtr(attribs) {}
-
-    luabind::object get(const char * name);
-    // void set(const char * name, int type, luabind::object& value);
-    template <class V, object_type T> void 
-    set(const char * name, V value);
-
-  private:
-    struct attrib ** mAttribPtr;
-  };
-
-
-  template<class T> eressea::objects
-  get_objects(const T& parent)
-  {
-    return eressea::objects(&const_cast<attrib *&>(parent.attribs));
-  }
-};
-
-#endif
-
diff --git a/src/eressea/lua/region.cpp b/src/eressea/lua/region.cpp
deleted file mode 100644
index 04e3bce91..000000000
--- a/src/eressea/lua/region.cpp
+++ /dev/null
@@ -1,381 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-#include "list.h"
-#include "objects.h"
-
-// kernel includes
-#include <kernel/building.h>
-#include <kernel/faction.h>
-#include <kernel/item.h>
-#include <kernel/message.h>
-#include <kernel/plane.h>
-#include <kernel/region.h>
-#include <kernel/resources.h>
-#include <kernel/ship.h>
-#include <kernel/terrain.h>
-#include <kernel/unit.h>
-
-#include <util/attrib.h>
-#include <util/log.h>
-
-#include <attributes/key.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#include <luabind/operator.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-#include <ostream>
-using namespace luabind;
-
-static eressea::list<region *>
-get_regions(void) {
-  return eressea::list<region *>(regions);
-}
-
-static eressea::list<unit *>
-region_units(const region * r) {
-  return eressea::list<unit *>(r->units);
-}
-
-static eressea::list<building *>
-region_buildings(const region * r) {
-  return eressea::list<building *>(r->buildings);
-}
-
-static eressea::list<ship *>
-region_ships(const region * r) {
-  return eressea::list<ship *>(r->ships);
-}
-
-static const char *
-region_getterrain(const region * r) {
-  return (const char *)r->terrain->_name;
-}
-
-static void
-lua_region_setowner(region * r, faction * f) {
-  region_set_owner(r, f, turn);
-}
-
-static faction *
-lua_region_getowner(const region * r) {
-  return region_get_owner(r);
-}
-
-static void
-region_setherbtype(region * r, const char * str) {
-  const struct resource_type * rtype = rt_find(str);
-  if (rtype!=NULL && rtype->itype!=NULL) {
-    rsetherbtype(r, rtype->itype);
-  }
-}
-
-static const char *
-region_getherbtype(const region * r) {
-  const struct item_type * itype = rherbtype(r);
-  if (itype==NULL) return NULL;
-  return itype->rtype->_name[0];
-}
-
-static int
-region_plane(const region * r)
-{
-  plane * pl = rplane(r);
-  return plane_id(pl);
-}
-
-static void
-region_addnotice(region * r, const char * str)
-{
-  addmessage(r, NULL, str, MSG_MESSAGE, ML_IMPORTANT);
-}
-
-static std::ostream&
-operator<<(std::ostream& stream, const region& r)
-{
-  stream << regionname(&r, NULL) << ", " << (const char *)r.terrain->_name;
-  return stream;
-}
-
-static bool
-operator==(const region& a, const region& b)
-{
-  return a.x==b.x && a.y==b.y;
-}
-
-static bool
-region_getflag(const region * r, int bit)
-{
-  if (r->flags & (1<<bit)) return true;
-  return false;
-}
-
-static void
-region_setflag(region * r, int bit, bool set)
-{
-  if (set) r->flags |= (1<<bit);
-  else r->flags &= ~(1<<bit);
-}
-
-static int
-region_get_resource(const region * r, const char * type)
-{
-  const resource_type * rtype = rt_find(type);
-  if (rtype!=NULL) {
-    return region_getresource(r, rtype);
-  } else {
-    if (strcmp(type, "seed")==0) return rtrees(r, 0);
-    if (strcmp(type, "sapling")==0) return rtrees(r, 1);
-    if (strcmp(type, "tree")==0) return rtrees(r, 2);
-    if (strcmp(type, "grave")==0) return deathcount(r);
-    if (strcmp(type, "chaos")==0) return chaoscount(r);
-  }
-  return 0;
-}
-
-static void
-region_set_resource(region * r, const char * type, int value)
-{
-  const resource_type * rtype = rt_find(type);
-  if (rtype!=NULL) {
-    region_setresource(r, rtype, value);
-  } else {
-    if (strcmp(type, "seed")==0) {
-      rsettrees(r, 0, value);
-    } else if (strcmp(type, "sapling")==0) {
-      rsettrees(r, 1, value);
-    } else if (strcmp(type, "tree")==0) {
-      rsettrees(r, 2, value);
-    } else if (strcmp(type, "grave")==0) {
-      int fallen = value-deathcount(r);
-      deathcounts(r, fallen);
-    } else if (strcmp(type, "chaos")==0) {
-      int fallen = value-chaoscount(r);
-      chaoscounts(r, fallen);
-    }
-  }
-}
-
-static void
-region_setroad(region * r, int dir, lua_Number size)
-{
-  if (r->terrain->max_road>0) {
-    rsetroad(r, (direction_t)dir, (short)(r->terrain->max_road * size));
-  }
-}
-
-static lua_Number
-region_getroad(region * r, int dir)
-{
-  lua_Number result = rroad(r, (direction_t)dir);
-  if (r->terrain->max_road<=0 || result<=0) return 0;
-  return r->terrain->max_road / result;
-}
-
-static region *
-region_terraform(int x, int y, const char * tname)
-{
-  const terrain_type * terrain = get_terrain(tname);
-  region * r = findregion(x, y);
-  if (terrain==NULL) {
-    if (r!=NULL) {
-      if (r->units!=NULL) {
-        // TODO: error message
-        return r;
-      }
-      // TODO: region l�schen
-      terraform_region(r, NULL);
-    }
-    return NULL;
-  }
-  if (r==NULL) {
-    struct plane * pl = findplane(x, y);
-    r = new_region(x, y, pl, 0);
-  }
-  terraform_region(r, terrain);
-  return r;
-}
-
-static region *
-region_next(const region * r, int dir)
-{
-  if (dir<0 || dir >=MAXDIRECTIONS) return NULL;
-  return r_connect(r, (direction_t)dir);
-}
-
-static void
-region_adddirection(region * r, region * rt, const char * name, const char * info)
-{
-  create_special_direction(r, rt, -1, info, name);
-  spec_direction * sd = special_direction(r, rt);
-  sd->active = 1;
-}
-
-static void
-region_remove(region * r)
-{
-  remove_region(&regions, r);
-}
-
-static void
-plane_remove(int plid)
-{
-  region ** rp = &regions;
-  while (*rp) {
-    region * r = *rp;
-    plane * pl = rplane(r);
-    if (pl && pl->id==plid) {
-      remove_region(rp, r);
-    } else {
-      rp = &r->next;
-    }
-  }
-}
-
-void
-region_move(region * r, int x, int y)
-{
-  if (findregion(x, y)) {
-    log_error(("Bei %d, %d gibt es schon eine Region.\n", x, y));
-    return;
-  }
-#ifdef FAST_CONNECT
-  direction_t dir;
-  plane * pl = rplane(r);
-  for (dir=0;dir!=MAXDIRECTIONS;++dir) {
-    region * rn = r->connect[dir];
-    int nx = x + delta_x[dir];
-    int ny = y + delta_y[dir];
-    pnormalize(&nx, &ny, pl);
-    if (rn!=NULL) {
-      direction_t reldir = reldirection(rn, r);
-      rn->connect[reldir] = NULL;
-    }
-    rn = findregion(nx, ny);
-    if (rn!=NULL) {
-      direction_t reldir = (direction_t)((dir + 3) % MAXDIRECTIONS);
-      rn->connect[reldir] = r;
-    }
-    r->connect[dir] = rn;
-  }
-#endif
-  runhash(r);
-  r->x = x;
-  r->y = y;
-  rhash(r);
-}
-
-static eressea::list<std::string, item *, eressea::bind_items>
-region_items(const region * r) {
-  if (r->land) {
-    return eressea::list<std::string, item *, eressea::bind_items>(r->land->items);
-  } else {
-    return eressea::list<std::string, item *, eressea::bind_items>(NULL);
-  }
-}
-
-static int
-region_additem(region * r, const char * iname, int number)
-{
-  if (iname!=NULL) {
-    const item_type * itype = it_find(iname);
-    if (itype!=NULL && r->land) {
-      item * i = i_change(&r->land->items, itype, number);
-      return i?i->number:0;
-    } // if (itype!=NULL)
-  }
-  return -1;
-}
-
-static bool
-region_getkey(region * r, const char * name)
-{
-  int flag = atoi36(name);
-  attrib * a = find_key(r->attribs, flag);
-  return (a!=NULL);
-}
-
-static void
-region_setkey(region * r, const char * name, bool value)
-{
-  int flag = atoi36(name);
-  attrib * a = find_key(r->attribs, flag);
-  if (a==NULL && value) {
-    add_key(&r->attribs, flag);
-  } else if (a!=NULL && !value) {
-    a_remove(&r->attribs, a);
-  }
-}
-
-static int
-plane_getbyname(const char * str)
-{
-  plane * pl = getplanebyname(str);
-  if (pl) return pl->id;
-  return 0;
-}
-
-
-void
-bind_region(lua_State * L)
-{
-  module(L)[
-    def("regions", &get_regions, return_stl_iterator),
-    def("get_region", &findregion),
-    def("get_region_by_id", &findregionbyid),
-    def("terraform", &region_terraform),
-    def("distance", &distance),
-    def("remove_region", &region_remove),
-    def("remove_plane", &plane_remove),
-    def("getplanebyname", &plane_getbyname),
-
-    class_<struct region>("region")
-    .def(tostring(const_self))
-    .def(self == region())
-    .property("name", &region_getname, &region_setname)
-    .property("info", &region_getinfo, &region_setinfo)
-    .property("owner", &lua_region_getowner, &lua_region_setowner)
-    .property("herbtype", &region_getherbtype, &region_setherbtype)
-    .property("terrain", &region_getterrain)
-    .def("add_notice", &region_addnotice)
-    .def("add_direction", &region_adddirection)
-
-    .def("get_key", &region_getkey)
-    .def("set_key", &region_setkey)
-
-    .def("get_flag", &region_getflag)
-    .def("set_flag", &region_setflag)
-
-    .def("move", &region_move)
-
-    .def("get_road", &region_getroad)
-    .def("set_road", &region_setroad)
-
-    .def("next", &region_next)
-    .def("get_resource", &region_get_resource)
-    .def("set_resource", &region_set_resource)
-    .def_readonly("x", &region::x)
-    .def_readonly("y", &region::y)
-    .def_readonly("id", &region::uid)
-    .def_readwrite("age", &region::age)
-    .def("add_item", &region_additem)
-    .property("items", &region_items, return_stl_iterator)
-    .property("plane_id", &region_plane)
-    .property("units", &region_units, return_stl_iterator)
-    .property("buildings", &region_buildings, return_stl_iterator)
-    .property("ships", &region_ships, return_stl_iterator)
-    .property("objects", &eressea::get_objects<region>)
-    .scope [
-      def("create", &region_terraform)
-    ]
-  ];
-}
diff --git a/src/eressea/lua/script.cpp b/src/eressea/lua/script.cpp
deleted file mode 100644
index 81179f4c0..000000000
--- a/src/eressea/lua/script.cpp
+++ /dev/null
@@ -1,330 +0,0 @@
-/* vi: set ts=2:
- +-------------------+
- |                   |  Christian Schlittchen <corwin@amber.kn-bremen.de>
- | Eressea PBEM host |  Enno Rehling <enno@eressea.de>
- | (c) 1998 - 2004   |  Katja Zedel <katze@felidae.kn-bremen.de>
- |                   |
- +-------------------+
-
- This program may not be used, modified or distributed
- without prior permission by the authors of Eressea.
-*/
-
-#include <config.h>
-#include <boost/version.hpp>
-#include <lua.hpp>
-#include <kernel/eressea.h>
-#include "script.h"
-#include "bindings.h"
-
-// kernel includes
-#include <kernel/equipment.h>
-#include <kernel/faction.h>
-#include <kernel/item.h>
-#include <kernel/race.h>
-#include <kernel/region.h>
-#include <kernel/spell.h>
-#include <kernel/unit.h>
-
-// util includes
-#include <util/attrib.h>
-#include <util/functions.h>
-#include <util/log.h>
-
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <luabind/luabind.hpp>
-#include <luabind/operator.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-#include <cstdio>
-#include <cstring>
-
-using namespace luabind;
-
-static void
-free_script(attrib * a) {
-  if (a->data.v!=NULL) {
-    object * f = (object *)a->data.v;
-    delete f;
-  }
-}
-
-attrib_type at_script = {
-  "script",
-  NULL, free_script, NULL,
-  NULL, NULL, ATF_UNIQUE
-};
-
-int
-call_script(struct unit * u)
-{
-  const attrib * a = a_findc(u->attribs, &at_script);
-  if (a==NULL) a = a_findc(u->race->attribs, &at_script);
-  if (a!=NULL && a->data.v!=NULL) {
-    object * func = (object *)a->data.v;
-    try {
-      func->operator()(u);
-    }
-    catch (error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error((error));
-      lua_pop(L, 1);
-      std::terminate();
-    }
-  }
-  return -1;
-}
-
-void
-setscript(struct attrib ** ap, void * fptr)
-{
-  attrib * a = a_find(*ap, &at_script);
-  if (a == NULL) {
-    a = a_add(ap, a_new(&at_script));
-  } else if (a->data.v!=NULL) {
-    object * f = (object *)a->data.v;
-    delete f;
-  }
-  a->data.v = fptr;
-}
-
-/** callback to use lua for spell functions */
-static int
-lua_callspell(castorder *co)
-{
-  const char * fname = co->sp->sname;
-  unit * mage = co->familiar?co->familiar:co->magician.u;
-  int retval = -1;
-  const char * hashpos = strchr(fname, '#');
-  char fbuf[64];
-
-  if (hashpos!=NULL) {
-    ptrdiff_t len = hashpos - fname;
-    assert(len<(ptrdiff_t)sizeof(fbuf));
-    strncpy(fbuf, fname, len);
-    fbuf[len] = '\0';
-    fname = fbuf;
-  }
-
-  lua_State * L = (lua_State *)global.vm_state;
-  if (is_function(L, fname)) {
-    try {
-      retval = call_function<int>(L, fname, co->rt, mage, co->level, co->force);
-    }
-    catch (error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error(("An exception occured while %s tried to call '%s': %s.\n",
-        unitname(mage), fname, error));
-      lua_pop(L, 1);
-      std::terminate();
-    }
-  }
-  return retval;
-}
-
-/** callback to initialize a familiar from lua. */
-static void
-lua_initfamiliar(unit * u)
-{
-  char fname[64];
-  snprintf(fname, sizeof(fname), "initfamiliar_%s", u->race->_name[0]);
-
-  lua_State * L = (lua_State *)global.vm_state;
-  if (is_function(L, fname)) {
-    try {
-      call_function<int>(L, fname, u);
-    }
-    catch (error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error(("An exception occured while %s tried to call '%s': %s.\n",
-        unitname(u), fname, error));
-      lua_pop(L, 1);
-      std::terminate();
-    }
-  }
-
-  snprintf(fname, sizeof(fname), "%s_familiar", u->race->_name[0]);
-  create_mage(u, M_GRAY);
-  equip_unit(u, get_equipment(fname));
-}
-
-static int
-lua_changeresource(unit * u, const struct resource_type * rtype, int delta)
-{
-  char fname[64];
-  snprintf(fname, sizeof(fname), "%s_changeresource", rtype->_name[0]);
-  int retval = -1;
-
-  lua_State * L = (lua_State *)global.vm_state;
-  if (is_function(L, fname)) {
-    try {
-      retval = call_function<int>(L, fname, u, delta);
-    }
-    catch (error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error(("An exception occured while %s tried to call '%s': %s.\n",
-        unitname(u), fname, error));
-      lua_pop(L, 1);
-      std::terminate();
-    }
-  }
-  return retval;
-}
-
-static int
-lua_getresource(unit * u, const struct resource_type * rtype)
-{
-  char fname[64];
-  snprintf(fname, sizeof(fname), "%s_getresource", rtype->_name[0]);
-  int retval = -1;
-
-  lua_State * L = (lua_State *)global.vm_state;
-  if (is_function(L, fname)) {
-    try {
-      retval = call_function<int>(L, fname, u);
-    }
-    catch (error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error(("An exception occured while %s tried to call '%s': %s.\n",
-        unitname(u), fname, error));
-      lua_pop(L, 1);
-      std::terminate();
-    }
-  }
-  return retval;
-}
-
-static int
-lua_wage(const region * r, const faction * f, const race * rc)
-{
-  const char * fname = "wage";
-  int retval = -1;
-  lua_State * L = (lua_State *)global.vm_state;
-
-  if (is_function(L, fname)) {
-    try {
-      retval = luabind::call_function<int>(L, fname, r, f, rc?rc->_name[0]:NULL);
-    }
-    catch (luabind::error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error(("An exception occured while calling '%s': %s.\n", fname, error));
-      lua_pop(L, 1);
-    }
-  }
-  return retval;
-}
-
-static int
-lua_maintenance(const unit * u)
-{
-  const char * fname = "maintenance";
-  int retval = -1;
-  lua_State * L = (lua_State *)global.vm_state;
-
-  if (is_function(L, fname)) {
-    try {
-      retval = luabind::call_function<int>(L, fname, u);
-    }
-    catch (luabind::error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error(("An exception occured while calling '%s': %s.\n", fname, error));
-      lua_pop(L, 1);
-    }
-  }
-  return retval;
-}
-
-static void
-unit_setscript(struct unit * u, const luabind::object& f)
-{
-  luabind::object * fptr = new luabind::object(f);
-  setscript(&u->attribs, fptr);
-}
-
-static void
-race_setscript(const char * rcname, const luabind::object& f)
-{
-  race * rc = rc_find(rcname);
-  if (rc!=NULL) {
-    luabind::object * fptr = new luabind::object(f);
-    setscript(&rc->attribs, fptr);
-  }
-}
-
-static void
-lua_equipmentcallback(const struct equipment * eq, unit * u)
-{
-  char fname[64];
-  snprintf(fname, sizeof(fname), "equip_%s", eq->name);
-
-  lua_State * L = (lua_State *)global.vm_state;
-  if (is_function(L, fname)) {
-    try {
-      call_function<int>(L, fname, u);
-    }
-    catch (error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error(("An exception occured while %s tried to call '%s': %s.\n",
-        unitname(u), fname, error));
-      lua_pop(L, 1);
-      std::terminate();
-    }
-  }
-}
-
-/** callback for an item-use function written in lua. */
-int
-lua_useitem(struct unit * u, const struct item_type * itype, int amount, struct order * ord)
-{
-  int retval = 0;
-  char fname[64];
-  snprintf(fname, sizeof(fname), "use_%s", itype->rtype->_name[0]);
-
-  lua_State * L = (lua_State *)global.vm_state;
-  if (is_function(L, fname)) {
-    try {
-      retval = luabind::call_function<int>(L, fname, u, amount);
-    }
-    catch (error& e) {
-      lua_State* L = e.state();
-      const char* error = lua_tostring(L, -1);
-      log_error(("An exception occured while %s tried to call '%s': %s.\n",
-        unitname(u), fname, error));
-      lua_pop(L, 1);
-      std::terminate();
-    }
-  }
-  return retval;
-}
-
-void
-bind_script(lua_State * L)
-{
-  register_function((pf_generic)&lua_callspell, "lua_castspell");
-  register_function((pf_generic)&lua_initfamiliar, "lua_initfamiliar");
-  register_item_use(&lua_useitem, "lua_useitem");
-  register_function((pf_generic)&lua_getresource, "lua_getresource");
-  register_function((pf_generic)&lua_changeresource, "lua_changeresource");
-  register_function((pf_generic)&lua_equipmentcallback, "lua_equip");
-
-  register_function((pf_generic)&lua_wage, "lua_wage");
-  register_function((pf_generic)&lua_maintenance, "lua_maintenance");
-
-  module(L)[
-    def("set_race_brain", &race_setscript),
-    def("set_unit_brain", &unit_setscript)
-  ];
-}
diff --git a/src/eressea/lua/script.h b/src/eressea/lua/script.h
deleted file mode 100644
index 046ca63d0..000000000
--- a/src/eressea/lua/script.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* vi: set ts=2:
- +-------------------+  
- |                   |  Christian Schlittchen <corwin@amber.kn-bremen.de>
- | Eressea PBEM host |  Enno Rehling <enno@eressea.de>
- | (c) 1998 - 2004   |  Katja Zedel <katze@felidae.kn-bremen.de>
- |                   |
- +-------------------+  
-
- This program may not be used, modified or distributed
- without prior permission by the authors of Eressea.
-*/
-#ifndef KRNL_SCRIPT_H
-#define KRNL_SCRIPT_H
-
-extern int call_script(struct unit * u);
-extern void setscript(struct attrib ** ap, void * fptr);
-
-extern int lua_useitem(struct unit * u, const struct item_type * itype, int amount, struct order * ord);
-
-#endif
diff --git a/src/eressea/lua/ship.cpp b/src/eressea/lua/ship.cpp
deleted file mode 100644
index 34c29fda9..000000000
--- a/src/eressea/lua/ship.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-#include "objects.h"
-
-// kernel includes
-#include <kernel/build.h>
-#include <kernel/ship.h>
-#include <kernel/region.h>
-#include <kernel/move.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#include <luabind/operator.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-#include <util/base36.h>
-
-#include <ostream>
-using namespace luabind;
-
-static std::ostream&
-operator<<(std::ostream& stream, const ship& sh)
-{
-  stream << sh.name;
-  stream << " (" << itoa36(sh.no) << ")";
-  stream << ", " << sh.type->name;
-  stream << " size " << sh.size;
-  return stream;
-}
-
-static bool
-operator==(const ship& a, const ship& sh)
-{
-  return a.no==sh.no;
-}
-
-static ship *
-add_ship(region * r, const char * sname)
-{
-  const ship_type * stype = st_find(sname);
-  ship * sh = new_ship(stype, NULL, r);
-  sh->size = stype->construction->maxsize;
-  return sh;
-}
-
-static int
-ship_maxsize(const ship * s) {
-  return s->type->construction->maxsize;
-}
-
-const char *
-ship_gettype(const ship * s) {
-  return s->type->name[0];
-}
-
-int
-ship_getweight(const ship * s) {
-  int w, c;
-  getshipweight(s, &w, &c);
-  return w;
-}
-
-int
-ship_getcapacity(const ship * s) {
-  return shipcapacity(s);
-}
-
-static void
-ship_setregion(ship * sh, region * r)
-{
-  move_ship(sh, sh->region, r, NULL);
-}
-
-static region *
-ship_getregion(const ship * sh)
-{
-  return sh->region;
-}
-
-void
-bind_ship(lua_State * L)
-{
-  module(L)[
-    def("get_ship", &findship),
-    def("add_ship", &add_ship),
-
-    class_<struct ship>("ship")
-    .def(self == ship())
-    .def(tostring(self))
-    .property("type", &ship_gettype)
-    .property("weight", &ship_getweight)
-    .property("capacity", &ship_getcapacity)
-    .property("maxsize", &ship_maxsize)
-    .def_readonly("name", &ship::name)
-    .property("region", &ship_getregion, &ship_setregion)
-    .def_readonly("id", &ship::no)
-    .def_readonly("info", &ship::display)
-    .def_readwrite("damage", &ship::damage)
-    .def_readwrite("size", &ship::size)
-    .def_readwrite("coast", &ship::coast)
-    .property("objects", &eressea::get_objects<ship>)
-    .scope [
-      def("create", &add_ship)
-    ]
-  ];
-}
diff --git a/src/eressea/lua/spell.cpp b/src/eressea/lua/spell.cpp
deleted file mode 100644
index ffc57c7d5..000000000
--- a/src/eressea/lua/spell.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-#include "list.h"
-
-// kernel includes
-#include <kernel/magic.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <luabind/luabind.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-using namespace luabind;
-
-static const char *
-spell_getschool(const spell& sp)
-{
-  return magic_school[sp.magietyp];
-}
-
-void
-bind_spell(lua_State * L)
-{
-  module(L)[
-    class_<struct spell>("spell")
-      .def_readonly("name", &spell::sname)
-      .def_readonly("level", &spell::level)
-      .property("school", &spell_getschool)
-  ];
-}
diff --git a/src/eressea/lua/test.cpp b/src/eressea/lua/test.cpp
deleted file mode 100644
index 916f52493..000000000
--- a/src/eressea/lua/test.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-
-#include "bindings.h"
-#include "list.h"
-
-// Lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-using namespace luabind;
-
-#include <util/language.h>
-#include <util/rng.h>
-#include <kernel/region.h>
-#include <kernel/skill.h>
-#include <kernel/terrainid.h>
-#include <modules/autoseed.h>
-
-static const char *
-loc_getskill(const char * loc, const char * locstring)
-{
-  struct locale * lang = find_locale(loc);
-  skill_t result = findskill(locstring, lang);
-  if (result==NOSKILL) return 0;
-  return skillnames[result];
-}
-
-static const char *
-loc_getkeyword(const char * loc, const char * locstring)
-{
-  struct locale * lang = find_locale(loc);
-  keyword_t result = findkeyword(locstring, lang);
-  if (result==NOKEYWORD) return 0;
-  return keywords[result];
-}
-
-static void
-adamantium_island(region * r)
-{
-  region_list *rp, *rlist = NULL;
-  get_island(r, &rlist);
-
-  for (rp=rlist;rp;rp=rp->next) {
-    region * ri = rp->data;
-    if (ri->terrain==newterrain(T_MOUNTAIN)) {
-      int base = 1 << (rng_int() % 4);
-      seed_adamantium(ri, base);
-    }
-  }
-  free_regionlist(rlist);
-}
-
-void
-bind_test(lua_State * L)
-{
-  module(L, "test")[
-    def("loc_skill", &loc_getskill),
-    def("loc_keyword", &loc_getkeyword),
-    def("reorder_units", &reorder_units),
-    def("adamantium_island", &adamantium_island)
-  ];
-}
diff --git a/src/eressea/lua/unit.cpp b/src/eressea/lua/unit.cpp
deleted file mode 100644
index 17078b955..000000000
--- a/src/eressea/lua/unit.cpp
+++ /dev/null
@@ -1,607 +0,0 @@
-#include <config.h>
-#include <kernel/eressea.h>
-#include "list.h"
-#include "objects.h"
-#include "bindings.h"
-#include "event.h"
-
-// Atributes includes
-#include <attributes/racename.h>
-#include <attributes/key.h>
-
-// kernel includes
-#include <kernel/building.h>
-#include <kernel/faction.h>
-#include <kernel/item.h>
-#include <kernel/magic.h>
-#include <kernel/message.h>
-#include <kernel/move.h>
-#include <kernel/order.h>
-#include <kernel/pool.h>
-#include <kernel/race.h>
-#include <kernel/region.h>
-#include <kernel/ship.h>
-#include <kernel/skill.h>
-#include <kernel/spell.h>
-#include <kernel/unit.h>
-
-// util includes
-#include <util/attrib.h>
-#include <util/base36.h>
-#include <util/event.h>
-#include <util/lists.h>
-#include <util/log.h>
-
-// lua includes
-#ifdef _MSC_VER
-#pragma warning (push)
-#pragma warning (disable: 4127)
-#endif
-#include <lua.hpp>
-#include <luabind/luabind.hpp>
-#include <luabind/iterator_policy.hpp>
-#include <luabind/operator.hpp>
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-
-#include <ostream>
-#include <string>
-using namespace luabind;
-
-class bind_spell_ptr {
-public:
-  static spell_list * next(spell_list * node) { return node->next; }
-  static spell * value(spell_list * node) { return node->data; }
-};
-
-static eressea::list<spell *, spell_list *, bind_spell_ptr>
-unit_spells(const unit * u) {
-  sc_mage * mage = get_mage(u);
-  if (mage==NULL) return eressea::list<spell *, spell_list *, bind_spell_ptr>(NULL);
-  spell_list * splist = mage->spells;
-  return eressea::list<spell *, spell_list *, bind_spell_ptr>(splist);
-}
-
-class bind_spell_list {
-public:
-  static spell_list * next(spell_list * node) { return node->next; }
-  static spell * value(spell_list * node) { return node->data; }
-};
-
-class bind_orders {
-public:
-  static order * next(order * node) { return node->next; }
-  static std::string value(order * node) {
-    char * cmd = (char*)getcommand(node);
-    std::string s(cmd);
-    free(cmd);
-    return s;
-  }
-};
-
-static eressea::list<std::string, order *, bind_orders>
-unit_orders(const unit * u) {
-  return eressea::list<std::string, order *, bind_orders>(u->orders);
-}
-
-static eressea::list<std::string, item *, eressea::bind_items>
-unit_items(const unit * u) {
-  return eressea::list<std::string, item *, eressea::bind_items>(u->items);
-}
-
-static unit *
-add_unit(faction * f, region * r)
-{
-  if (f->units==NULL) return addplayer(r, f);
-  return createunit(r, f, 0, f->race);
-}
-
-static void
-unit_setnumber(unit * u, int number)
-{
-  if (u->number==0) {
-    set_number(u, number);
-    u->hp = unit_max_hp(u) * number;
-  } else {
-    scale_number(u, number);
-  }
-}
-
-static void
-unit_setracename(unit * u, const char * name)
-{
-  set_racename(&u->attribs, name);
-}
-
-static int
-unit_getnumber(const unit * u)
-{
-  return u->number;
-}
-
-static int
-unit_getitem(const unit * u, const char * iname)
-{
-  if (iname!=NULL) {
-    const item_type * itype = it_find(iname);
-    if (itype!=NULL) {
-      return i_get(u->items, itype);
-    }
-  }
-  return -1;
-}
-
-static int
-unit_additem(unit * u, const char * iname, int number)
-{
-  if (iname!=NULL) {
-    const item_type * itype = it_find(iname);
-    if (itype!=NULL) {
-      item * i = i_change(&u->items, itype, number);
-      return i?i->number:0;
-    } // if (itype!=NULL)
-  }
-  const item_type * itype = it_find(iname);
-  if (itype!=NULL) {
-    item * i = i_change(&u->items, itype, number);
-    return i?i->number:0;
-  }
-  return -1;
-}
-
-static int
-unit_usepooled(unit * u, const char * iname, int number)
-{
-  const resource_type * rtype = rt_find(iname);
-  if (rtype!=NULL) {
-    return use_pooled(u, rtype, GET_DEFAULT, number);
-  }
-  return -1;
-}
-
-static int
-unit_getpooled(unit * u, const char * iname)
-{
-  const resource_type * rtype = rt_find(iname);
-  if (rtype!=NULL) {
-    return get_pooled(u, rtype, GET_DEFAULT, INT_MAX);
-  }
-  return -1;
-}
-
-static int
-unit_getskill(const unit * u, const char * skname)
-{
-  skill_t sk = sk_find(skname);
-  if (sk!=NOSKILL) {
-    skill * sv = get_skill(u, sk);
-    if (sv==NULL) return 0;
-    return sv->level;
-  }
-  return -1;
-}
-
-static int
-unit_effskill(const unit * u, const char * skname)
-{
-  skill_t sk = sk_find(skname);
-  if (sk!=NOSKILL) {
-    return effskill(u, sk);
-  }
-  return -1;
-}
-
-static int
-unit_setskill(unit * u, const char * skname, int level)
-{
-  skill_t sk = sk_find(skname);
-  if (sk!=NOSKILL) {
-    set_level(u, sk, level);
-    return level;
-  } // if (sk!=NULL)
-  return -1;
-}
-
-static const char *
-unit_getrace(const unit * u)
-{
-  return u->race->_name[0];
-}
-
-static void
-unit_setrace(unit * u, const char * rcname)
-{
-  race * rc = rc_find(rcname);
-  if (rc!=NULL) {
-    if (u->irace==u->race) u->irace = rc;
-    u->race = rc;
-  }
-}
-
-static void
-unit_castspell(unit * u, const char * name)
-{
-  spell_list * slist = spells;
-  while (slist!=NULL) {
-    spell * sp = slist->data;
-    if (strcmp(name, sp->sname)==0) {
-      castorder * co = (castorder*)malloc(sizeof(castorder));
-      co->distance = 0;
-      co->familiar = NULL;
-      co->force = sp->level;
-      co->level = sp->level;
-      co->magician.u = u;
-      co->order = NULL;
-      co->par = NULL;
-      co->rt = u->region;
-      co->sp = sp;
-      if (sp->sp_function==NULL) {
-        log_error(("spell '%s' has no function.\n", sp->sname));
-        co->level = 0;
-      } else {
-        sp->sp_function(co);
-      }
-      free(co);
-    }
-    slist=slist->next;
-  }
-}
-
-static void
-unit_addspell(unit * u, const char * name)
-{
-  bool add = false;
-  spell_list * slist = spells;
-  while (slist!=NULL) {
-    spell * sp = slist->data;
-    if (strcmp(name, sp->sname)==0) {
-      struct sc_mage * mage = get_mage(u);
-      if (add) log_error(("two spells are called %s.\n", name));
-      add_spell(get_spelllist(mage, u->faction), sp);
-      add = true;
-    }
-    slist=slist->next;
-  }
-  if (!add) log_error(("spell %s could not be found\n", name));
-}
-
-static unit *
-unit_isfamiliar(const unit * u)
-{
-  attrib * a = a_find(u->attribs, &at_familiarmage);
-  if (a!=NULL) {
-    return (unit*)a->data.v;
-  }
-  return NULL;
-}
-
-static unit *
-unit_getfamiliar(const unit * u)
-{
-  attrib * a = a_find(u->attribs, &at_familiar);
-  if (a!=NULL) {
-    return (unit*)a->data.v;
-  }
-  return NULL;
-}
-
-static void
-unit_setfamiliar(unit * mage, unit * familiar)
-{
-  create_newfamiliar(mage, familiar);
-}
-
-static void
-unit_removespell(unit * u, const spell * sp)
-{
-  sc_mage * mage = get_mage(u);
-  if (mage!=NULL) {
-    spell_list ** isptr = &mage->spells;
-    while (*isptr && (*isptr)->data != sp) {
-      isptr = &(*isptr)->next;
-    }
-    if (*isptr) {
-      spell_list * sptr = *isptr;
-      *isptr = sptr->next;
-      free(sptr);
-    }
-  }
-}
-
-static int
-unit_hpmax(const unit * u)
-{
-  return unit_max_hp(u);
-}
-
-static void
-unit_setregion(unit * u, region * r)
-{
-  move_unit(u, r, NULL);
-}
-
-static region *
-unit_getregion(const unit * u)
-{
-  return u->region;
-}
-
-static void
-unit_setship(unit * u, ship * s)
-{
-  leave(u, true);
-  if (u->region!=s->region) {
-    move_unit(u, s->region, NULL);
-  }
-  u->ship = s;
-}
-
-static ship *
-unit_getship(const unit * u)
-{
-  return u->ship;
-}
-
-static void
-unit_setbuilding(unit * u, building * b)
-{
-  leave(u, true);
-  if (u->region!=b->region) {
-    move_unit(u, b->region, NULL);
-  }
-  u->building = b;
-}
-
-static building *
-unit_getbuilding(const unit * u)
-{
-  return u->building;
-}
-
-static bool
-get_flag(const unit * u, const char * name)
-{
-  int flag = atoi36(name);
-  attrib * a = find_key(u->attribs, flag);
-  return (a!=NULL);
-}
-
-static void
-set_flag(unit * u, const char * name, bool value)
-{
-  int flag = atoi36(name);
-  attrib * a = find_key(u->attribs, flag);
-  if (a==NULL && value) {
-    add_key(&u->attribs, flag);
-  } else if (a!=NULL && !value) {
-    a_remove(&u->attribs, a);
-  }
-}
-
-static std::ostream&
-operator<<(std::ostream& stream, const unit& u)
-{
-  const char * rcname = get_racename(u.attribs);
-  stream << u.name << " (" << itoa36(u.no) << "), " << u.number << " " << u.race->_name[0];
-  if (rcname) stream << "/" << rcname;
-  return stream;
-}
-
-static bool
-operator==(const unit& a, const unit &b)
-{
-  return a.no==b.no;
-}
-
-static int
-unit_getaura(const unit * u)
-{
-  return get_spellpoints(u);
-}
-
-static void
-unit_setaura(unit * u, int points)
-{
-  return set_spellpoints(u, points);
-}
-
-static faction *
-unit_getfaction(const unit * u)
-{
-  return u->faction;
-}
-
-static void
-unit_setfaction(unit * u, faction * f)
-{
-  u_setfaction(u, f);
-}
-
-static const char *
-unit_getmagic(const unit * u)
-{
-  sc_mage * mage = get_mage(u);
-  return mage?magic_school[mage->magietyp]:NULL;
-}
-
-static void
-unit_setmagic(unit * u, const char * type)
-{
-  sc_mage * mage = get_mage(u);
-  magic_t mtype;
-  for (mtype=0;mtype!=MAXMAGIETYP;++mtype) {
-    if (strcmp(magic_school[mtype], type)==0) break;
-  }
-  if (mtype==MAXMAGIETYP) return;
-  if (mage==NULL) {
-    mage = create_mage(u, mtype);
-  }
-}
-
-static void
-unit_add_order(unit * u, const char * str)
-{
-  order * ord = parse_order(str, u->faction->locale);
-  unit_addorder(u, ord);
-}
-
-static void
-unit_clear_orders(unit * u)
-{
-  free_orders(&u->orders);
-}
-
-static int
-unit_weight(const struct unit * u)
-{
-  return weight(u);
-}
-
-typedef struct fctr_data {
-  unit * target;
-  luabind::object * fptr;
-} fctr_data;
-
-#include <exception>
-
-int
-fctr_handle(struct trigger * tp, void * data)
-{
-  trigger * t = tp;
-  event * evt = new event(NULL, (event_arg*)data);
-  fctr_data * fd = (fctr_data*)t->data.v;
-  try {
-    fd->fptr->operator()(fd->target, evt);
-  }
-  catch (luabind::error& e) {
-    lua_State* L = e.state();
-    const char* error = lua_tostring(L, -1);
-    log_error((error));
-    lua_pop(L, 1);
-    std::terminate();
-  }
-
-  delete evt;
-  return 0;
-}
-
-static void
-fctr_init(trigger * t)
-{
-  t->data.v = calloc(sizeof(fctr_data), 1);
-}
-
-static void
-fctr_done(trigger * t)
-{
-  free(t->data.v);
-}
-
-static struct trigger_type tt_functor = {
-  "functor",
-  fctr_init,
-  fctr_done,
-  fctr_handle
-};
-
-static trigger *
-trigger_functor(struct unit * u, const object& f)
-{
-  luabind::object * fptr = new luabind::object(f);
-  trigger * t = t_new(&tt_functor);
-  fctr_data * td = (fctr_data*)t->data.v;
-  td->target = u;
-  td->fptr = fptr;
-  return t;
-}
-
-static void
-unit_addhandler(struct unit * u, const char * event, const object& f)
-{
-  add_trigger(&u->attribs, event, trigger_functor(u, f));
-}
-
-static int
-unit_capacity(const struct unit * u)
-{
-  return walkingcapacity(u);
-}
-
-static void
-unit_addnotice(unit * u, const char * str)
-{
-  addmessage(u->region, u->faction, str, MSG_MESSAGE, ML_IMPORTANT);
-}
-
-void
-bind_unit(lua_State * L)
-{
-  module(L)[
-    def("get_unit", &findunit),
-    def("add_unit", &add_unit),
-
-    class_<struct unit>("unit")
-    .def(tostring(const_self))
-    .def(self == unit())
-    .property("name", &unit_getname, &unit_setname)
-    .property("info", &unit_getinfo, &unit_setinfo)
-    .property("id", &unit_getid, &unit_setid)
-    .property("faction", &unit_getfaction, &unit_setfaction)
-    .def_readwrite("hp", &unit::hp)
-    .def_readwrite("status", &unit::status)
-    .property("weight", &unit_weight)
-    .property("capacity", &unit_capacity)
-
-    .property("is_familiar", &unit_isfamiliar)
-    .property("familiar", &unit_getfamiliar, &unit_setfamiliar)
-
-    // orders:
-    .def("add_order", &unit_add_order)
-    .def("clear_orders", &unit_clear_orders)
-    .property("orders", &unit_orders, return_stl_iterator)
-
-    // key-attributes for named flags:
-    .def("set_flag", &set_flag)
-    .def("get_flag", &get_flag)
-    .def_readwrite("flags", &unit::flags)
-    .def_readwrite("age", &unit::age)
-
-    // items:
-    .def("get_item", &unit_getitem)
-    .def("add_item", &unit_additem)
-    .property("items", &unit_items, return_stl_iterator)
-
-    .def("get_pooled", &unit_getpooled)
-    .def("use_pooled", &unit_usepooled)
-
-    // skills:
-    .def("get_skill", &unit_getskill)
-    .def("eff_skill", &unit_effskill)
-    .def("set_skill", &unit_setskill)
-
-    .def("add_notice", &unit_addnotice)
-
-    // npc logic:
-    .def("add_handler", &unit_addhandler)
-
-    .def("set_racename", &unit_setracename)
-    .def("add_spell", &unit_addspell)
-    .def("remove_spell", &unit_removespell)
-    .def("cast_spell", &unit_castspell)
-
-    .property("magic", &unit_getmagic, &unit_setmagic)
-    .property("aura", &unit_getaura, &unit_setaura)
-    .property("building", &unit_getbuilding, &unit_setbuilding)
-    .property("ship", &unit_getship, &unit_setship)
-    .property("region", &unit_getregion, &unit_setregion)
-    .property("spells", &unit_spells, return_stl_iterator)
-    .property("number", &unit_getnumber, &unit_setnumber)
-    .property("race", &unit_getrace, &unit_setrace)
-    .property("hp_max", &unit_hpmax)
-    .property("objects", &eressea::get_objects<unit>)
-    .scope [
-      def("create", &add_unit)
-    ]
-  ];
-}
diff --git a/src/header.txt b/src/header.txt
deleted file mode 100644
index eacf4ef04..000000000
--- a/src/header.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/* vi: set ts=2:
-* +-------------------+  Christian Schlittchen <corwin@amber.kn-bremen.de>
-* |                   |  Enno Rehling <enno@eressea.de>
-* | Eressea PBEM host |  Katja Zedel <katze@felidae.kn-bremen.de>
-* | (c) 1998 - 2005   |  
-* |                   |  This program may not be used, modified or distributed
-* +-------------------+  without prior permission by the authors of Eressea.
-*  
-*/
diff --git a/src/premake.lua b/src/premake.lua
deleted file mode 100644
index 15604575f..000000000
--- a/src/premake.lua
+++ /dev/null
@@ -1,164 +0,0 @@
-project.name = "eressea"
-project.configs = { "Debug", "Profile", "Release" }
-
--- the name of the curses library on this system:
-c_defines = { }
-lib_curses = "curses"
-if (windows) then
-  lib_curses = "pdcurses"
-  c_defines = { "WIN32", "_CRT_SECURE_NO_DEPRECATE" }
-end
-
-package = newpackage()
-package.name = "util"
-package.kind = "lib"
-package.language = "c"
-package.path = "common"
-package.includepaths = { "..", "." }
-package.files = matchfiles("../config.h", "settings.h", "util/*.c", "util/*.h", "iniparser/*.c", "iniparser/*.h")
-package.excludes = { "util/strncpy.c" }
-for k,v in project.configs do
-  package.config[v].objdir   = v .. "/" .. package.name
-  package.config[v].libdir   = v .. "/" .. package.name
-  table.insert(package.config[v].buildflags, "extra-warnings")
-  table.insert(package.config[v].buildflags, "no-debug-runtime")
-  table.insert(package.config[v].buildflags, "singlethread-runtime")
-  for index, name in c_defines do
-    table.insert(package.config[v].defines, name)
-  end
-  if v~="Debug" then
-    table.insert(package.config[v].defines, "NDEBUG")
-  end
-end
-
-
-package = newpackage()
-package.name = "kernel"
-package.kind = "lib"
-package.language = "c"
-package.path = "common"
-package.includepaths = { "..", "." }
-package.files = matchfiles("kernel/*.c", "triggers/*.c", "spells/*.c", "items/*.c", "kernel/*.h", "triggers/*.h", "spells/*.h", "items/*.h", "modules/*.h", "modules/*.c", "attributes/*.h", "attributes/*.c")
-package.excludes = { 
-  "modules/victoryconditions.c",
-  "modules/victoryconditions.h",
-  "items/studypotion.c",
-  "items/studypotion.h",
-  "kernel/sqlstore.c",
-  "kernel/sqlstore.h"
-}
-for k,v in project.configs do
-  package.config[v].objdir   = v .. "/" .. package.name
-  package.config[v].libdir   = v .. "/" .. package.name
-  table.insert(package.config[v].buildflags, "extra-warnings")
-  table.insert(package.config[v].buildflags, "no-debug-runtime")
-  table.insert(package.config[v].buildflags, "singlethread-runtime")
-  for index, name in c_defines do
-    table.insert(package.config[v].defines, name)
-  end
-  if v~="Debug" then
-    table.insert(package.config[v].defines, "NDEBUG")
-  end
-end
-
-
-package = newpackage()
-package.name = "gamecode"
-package.kind = "lib"
-package.language = "c"
-package.path = "common"
-package.includepaths = { "..", "." }
-package.files = matchfiles("gamecode/*.c", "races/*.c", "gamecode/*.h", "races/*.h")
-for k,v in project.configs do
-  package.config[v].objdir   = v .. "/" .. package.name
-  package.config[v].libdir   = v .. "/" .. package.name
-  table.insert(package.config[v].buildflags, "extra-warnings")
-  table.insert(package.config[v].buildflags, "no-debug-runtime")
-  table.insert(package.config[v].buildflags, "singlethread-runtime")
-  for index, name in c_defines do
-    table.insert(package.config[v].defines, name)
-  end
-  if v~="Debug" then
-    table.insert(package.config[v].defines, "NDEBUG")
-  end
-end
-
-
-package = newpackage()
-package.name = "bindings"
-package.kind = "lib"
-package.language = "c++"
-package.path = "eressea/lua"
-package.includepaths = { "../..", "../../common" }
-package.files = matchfiles("*.cpp", "*.h")
-package.excludes = { "gm.cpp" }
-for k,v in project.configs do
-  package.config[v].objdir   = v .. "/" .. package.name
-  package.config[v].libdir   = v .. "/" .. package.name
-  table.insert(package.config[v].buildflags, "extra-warnings")
-  table.insert(package.config[v].buildflags, "no-debug-runtime")
-  table.insert(package.config[v].buildflags, "singlethread-runtime")
-  for index, name in c_defines do
-    table.insert(package.config[v].defines, name)
-  end
-  if v~="Debug" then
-    table.insert(package.config[v].defines, "NDEBUG")
-  end
-end
-
-package = newpackage()
-package.name = "editor"
-package.kind = "lib"
-package.language = "c++"
-package.path = "eressea"
-package.includepaths = { "..", "../common" }
-package.files = { "gmtool.h", "gmtool.c", "editing.c", "editing.h", "curses/listbox.h", "curses/listbox.c", "lua/gm.cpp" }
-for k,v in project.configs do
-  package.config[v].objdir   = v .. "/" .. package.name
-  package.config[v].libdir   = v .. "/" .. package.name
-  table.insert(package.config[v].buildflags, "extra-warnings")
-  table.insert(package.config[v].buildflags, "no-debug-runtime")
-  table.insert(package.config[v].buildflags, "singlethread-runtime")
-  for index, name in c_defines do
-    table.insert(package.config[v].defines, name)
-  end
-  if v~="Debug" then
-    table.insert(package.config[v].defines, "NDEBUG")
-  end
-end
-
-package = newpackage()
-package.name = "eressea-lua"
-package.kind = "exe"
-package.language = "c++"
-package.path = "eressea"
-package.includepaths = { "..", "../common" }
-package.files = { "korrektur.c", "server.cpp", "console.c", "console.h" }
-package.links = { "util", "kernel", "gamecode", "bindings", "editor", "libxml2", lib_curses}
-for k,v in project.configs do
-  package.config[v].objdir   = v
-  package.config[v].bindir   = v
-  table.insert(package.config[v].buildflags, "extra-warnings")
-  table.insert(package.config[v].buildflags, "no-debug-runtime")
-  table.insert(package.config[v].buildflags, "singlethread-runtime")
-  for index, name in c_defines do
-    table.insert(package.config[v].defines, name)
-  end
-  if (windows) then
-    if target=="vs2005" then
-      if v=="Debug" then
-          package.config[v].links = { "lua5.1_d", "luabind_d" }
-      else
-        package.config[v].links = { "lua5.1", "luabind" }
-      end
-    else
-      package.config[v].links = { "lua50", "luabind" }
-    end
-  end
-  if v~="Debug" then
-    table.insert(package.config[v].defines, "NDEBUG")
-  end
-end
-
--- kernel: util, triggers, attributes, spells, items
--- gamecode: races
diff --git a/src/rts.txt b/src/rts.txt
deleted file mode 100644
index 917cc18bf..000000000
--- a/src/rts.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-Aenderungen fuer Eressea RTS:
-
-* Befehle abgeschafft:
-  
-  ARBEITEN, LEHREN, SPIONIEREN, SABOTIEREN, KRIEG, FRIEDEN, FORSCHEN, TARNEN, TREIBEN, UNTERHALTEN, KAUFEN, VERKAUFEN, ZUECHTEN, LIEFERE, MEINUNG, MAGIEGEBIET, NEUSTART, OPFERE, BETEN, JIHAD, INFO, GM, WERWESEN, ALLIANZ, XONTORMIA, SYNONYM
-
-* Learning by doing abgeschafft.
-
-* Skills disabled:
-  
-  espionage, entertainment, taxation, tactics, stealth, trade, perception
-
-* Alle Gebaeude entfernt, mit Ausnahme von Burgen
-
-* Keine NPC-Monster
-
-* Einheiten koennen ueber ihre Grundskills hinaus keine neuen Skills lernen
-
-
-
-Offene Fragen:
-
-* Soll es eine Maximalanzahl Einheiten geben?
-
diff --git a/src/todo.txt b/src/todo.txt
deleted file mode 100644
index cc74c5149..000000000
--- a/src/todo.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-TODO:
-
-Eressea:
-- AI: Nicht mehr als n Wyrme in die gleiche region. Keine 12 auf jeden Fall.
-- Gletscheraufl�sung 4./5. welt
-- new ITF_NOLOOT f�r sonnensegel
-- Deathcloud: Magieresistenz des Magiers in das attribut, nicht aufl�sen wenn magier tot.
-
-Code cleanup:
-- curse type should contain effect-type
-- mehr itemtypes auslagern
-- getstrtoken() - das static loswerden?
-- readline implementieren
-- Make asserts into release-mode fails.
-- unterschiede in vin3 + wdw per config statt defines?
-- age branch (store birthdate instead of age)
-- give monsters name with lua
-- allocators aus economy nach XML
-- reporting units: http://eressea.upb.de/mantis/view.php?id=781
-- wdw pyramid spell could be written in lua (replace attrib with a flag)
-
-Larger Features:
-- eressea (b/g)zip reports?
-- ZERST�RE - Man sollte alle Materialien zur�ckkriegen k�nnen:
-
-Scripts, etc:
-- format=flowed annahme, eressea
-- english registration confirmation is deutsch!
-- XUL for Eressea
-
-Old Terrain still needed:
-- random people encounters (get_allies)
-- creating dragons
-- drought curse
-- volcanoes
-- glacier logic
-- make_summary, volcano-count
-- save.c, conversion
-- terraform, old syntax
-- terraform, more horses in plains
-- dragon name
-- arena-module
-- build.c, Strassenbau
-- monster.c, ent movement
-- economy.c, insekten
-
-unterschiede in vin3 + wdw per config statt defines?
-
-  #define NEWATSROI 1
-  #define ATSBONUS 2
-  #define ROIBONUS 4
-
-  #define ARENA_MODULE
-  #define WORMHOLE_MODULE
diff --git a/src/tools/codegen/codegen.cpp b/src/tools/codegen/codegen.cpp
deleted file mode 100644
index 3195cb839..000000000
--- a/src/tools/codegen/codegen.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/* libxml includes */
-#include <libxml/tree.h>
-#include <libxml/xpath.h>
-
-/* libc includes */
-#include <string.h>
-
-const char * prefix = "tolua_";
-const char * tmp_includes = 
-"#include <lua.h>\n"
-"#include <tolua.h>\n"
-;
-void
-read_templates()
-{
-}
-
-xmlDocPtr
-readfile(const char * filename)
-{
-  xmlDocPtr doc;
-#ifdef XML_PARSE_XINCLUDE
-  doc = xmlReadFile(filename, NULL, XML_PARSE_XINCLUDE);
-#else
-  doc = xmlParseFile(filename);
-#endif
-  return doc;
-}
-
-static void
-open_function(xmlNodePtr node, FILE * out)
-{
-  xmlChar * name = xmlGetProp(node, BAD_CAST "name");
-  xmlNodePtr call;
-
-  if (fname) {
-    fprintf(out, "  tolua_function(tolua_S, \"%s\", %s);\n", name, fname);
-  }
-  xmlFree(name);
-}
-
-static void
-open_variable(xmlNodePtr node, FILE * out)
-{
-  xmlChar * name = xmlGetProp(node, BAD_CAST "name");
-  xmlChar * getter = BAD_CAST "0";
-  xmlChar * setter = BAD_CAST "0";
-  fprintf(out, "  tolua_variable(tolua_S, \"%s\", %s%s, %s%s);\n", name, prefix, getter, prefix, setter);
-  xmlFree(name);
-}
-
-static void
-open_method(xmlNodePtr node, FILE * out)
-{
-  xmlChar * name = xmlGetProp(node, BAD_CAST "name");
-  xmlFree(name);
-}
-
-static void
-open_class(xmlNodePtr node, FILE * out)
-{
-  xmlChar * lname = xmlGetProp(node, BAD_CAST "name");
-  xmlChar * name = xmlGetProp(node, BAD_CAST "ctype");
-  xmlChar * base = xmlGetProp(node, BAD_CAST "base");
-  const char * col = "NULL";
-  fprintf(out, "  tolua_cclass(tolua_S, \"%s\", \"%s\", \"%s\", %s);\n",
-    lname, name, base, col);
-  xmlFree(lname);
-  xmlFree(name);
-  xmlFree(base);
-}
-
-static void
-open_module(xmlNodePtr root, FILE * out)
-{
-  xmlNodePtr node;
-  xmlChar * name = xmlGetProp(root, BAD_CAST "name");
-  if (name) {
-    fprintf(out, "  tolua_module(tolua_S, \"%s\", 0);\n", name);
-    fprintf(out, "  tolua_beginmodule(tolua_S, \"%s\");\n", name);
-    xmlFree(name);
-  } else {
-    fputs("  tolua_module(tolua_S, 0, 0);\n", out);
-    fputs("  tolua_beginmodule(tolua_S, 0);\n", out);
-  }
-
-  for (node=root->children;node;node=node->next) {
-    if (strcmp((const char *)node->name, "class")==0) {
-      open_class(node, out);
-    } else if (strcmp((const char *)node->name, "module")==0) {
-      open_module(node, out);
-    } else if (strcmp((const char *)node->name, "function")==0) {
-      open_function(node, out);
-    } else if (strcmp((const char *)node->name, "method")==0) {
-      open_method(node, out);
-    } else if (strcmp((const char *)node->name, "variable")==0) {
-      open_variable(node, out);
-    }
-  }
-  fputs("  tolua_endmodule(tolua_S);\n", out);
-}
-
-static void
-open_type(xmlNodePtr root, FILE * out)
-{
-  xmlChar * name = xmlGetProp(root, BAD_CAST "name");
-  fprintf(out, "  tolua_usertype(tolua_S, \"%s\");\n", name);
-  xmlFree(name);
-}
-
-void
-open_package(xmlNodePtr root, FILE * out)
-{
-  xmlNodePtr node;
-  xmlChar * pkg_name = xmlGetProp(root, BAD_CAST "name");
-  fprintf(out, "int %s%s_open(struct lua_State * L) {\n", prefix, pkg_name);
-  xmlFree(pkg_name);
-
-  fputs("  tolua_open(L);\n", out);
-
-  for (node=root->children;node;node=node->next) {
-    if (strcmp((const char *)node->name, "type")==0) {
-      open_type(node, out);
-    } else if (strcmp((const char *)node->name, "module")==0) {
-      open_module(node, out);
-    }
-  }
-  fputs("  return 0;\n", out);
-  fputs("}\n", out);
-}
-
-int
-writefile(xmlDocPtr doc, FILE * out)
-{
-  /* includes etc. */
-  fputs(tmp_includes, out);
-  fputc('\n', out);
-  /* functions */
-
-  /* open */
-  open_package(doc->children, out);
-  return 0;
-}
-
-int
-main(int argc, char* argv[])
-{
-  xmlDocPtr doc;
-  if (argc>1) {
-    FILE * out = stdout;
-    read_templates();
-    doc = readfile(argv[1]);
-    if (doc) {
-      return writefile(doc, stdout);
-    }
-  }
-  return 1;
-}
diff --git a/src/tools/codegen/codegen.vcproj b/src/tools/codegen/codegen.vcproj
deleted file mode 100644
index 17c01e332..000000000
--- a/src/tools/codegen/codegen.vcproj
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="codegen"
-	ProjectGUID="{BEF9E49F-3E98-4CE7-B641-62456E656E34}"
-	RootNamespace="codegen"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="kernel32.lib $(NoInherit) libxml2.lib "
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="kernel32.lib $(NoInherit)"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\codegen.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\..\eressea\tolua\message.xml"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath=".\ReadMe.txt"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/tools/fixes.c b/src/tools/fixes.c
deleted file mode 100644
index 86f19495a..000000000
--- a/src/tools/fixes.c
+++ /dev/null
@@ -1,362 +0,0 @@
-/* vi: set ts=2:
- +-------------------+  Christian Schlittchen <corwin@amber.kn-bremen.de>
- |                   |  Enno Rehling <enno@eressea-pbem.de>
- | Eressea PBEM host |  Katja Zedel <katze@felidae.kn-bremen.de>
- | (c) 1998 - 2001   |  Henning Peters <faroul@beyond.kn-bremen.de>
- |                   |  Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
- +-------------------+  Stefan Reich <reich@halbling.de>
-
- This program may not be used, modified or distributed 
- without prior permission by the authors of Eressea.
-*/
-#include <config.h>
-#include <eressea.h>
-
-#include <attributes/attributes.h>
-#include <attributes/key.h>
-#include <spells/spells.h>
-#include <triggers/triggers.h>
-#include <items/weapons.h>
-#include <items/items.h>
-
-#include <modules/xmas2000.h>
-#include <modules/arena.h>
-#include <modules/museum.h>
-#include <modules/gmcmd.h>
-
-#include <item.h>
-#include <faction.h>
-#include <race.h>
-#include <region.h>
-#include <reports.h>
-#include <resources.h>
-#include <save.h>
-#include <unit.h>
-#include <plane.h>
-#include <teleport.h>
-
-#include <ctype.h>
-#include <limits.h>
-#include <locale.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-extern boolean quiet;
-
-extern char *reportdir;
-extern char *datadir;
-extern char *basedir;
-extern int maxregions;
-char datafile[256];
-
-extern char * g_datadir;
-extern char * g_resourcedir;
-extern char * g_basedir;
-
-/**/
-
-static struct attrib_type at_age = { 
-	"age", NULL, NULL, NULL, NULL, NULL, ATF_UNIQUE 
-};
-
-/* make sure that this is done only once! */
-#define do_once(magic, fun) \
-{ \
-	attrib * a = find_key(global.attribs, atoi36(magic)); \
-	if (a) { \
-		log_warning(("[do_once] a unique fix %d=\"%s\" was called a second time\n", atoi36(magic), magic)); \
-	} else { \
-		(fun); \
-		a_add(&global.attribs, make_key(atoi36(magic))); \
-	} \
-}
-
-#if NEW_RESOURCEGROWTH
-static void
-convert_resources(void)
-{
-	region *r;
-	FILE * fixes = fopen("resource.fix", "w");
-	log_open("resourcefix.log");
-	for(r=regions;r;r=r->next) {
-		attrib *a = a_find(r->attribs, &at_resources);
-		r->resources = 0;
-		terraform_resources(r);
-		
-		if (a==NULL) continue;
-		else {
-			int INIT_STONE = 20; /* skip this many weeks */
-			double ironmulti = 0.40; 
-			double laenmulti = 0.50; 
-			double stonemulti = 0.30; /* half the stones used */
-			rawmaterial * rmiron = rm_get(r, rm_iron.rtype);
-			rawmaterial * rmlaen = rm_get(r, rm_laen.rtype);
-			rawmaterial * rmstone = rm_get(r, rm_stones.rtype);
-
-			int oldiron;
-			int oldlaen = MAXLAENPERTURN * MIN(r->age, 100) / 2;
-			int oldstone = terrain[rterrain(r)].quarries * MAX(0, r->age - INIT_STONE);
-			int iron = a->data.sa[0];
-			int laen = a->data.sa[1];
-			int stone, level;
-			int i, base;
-
-			/** STONE **/
-			for (i=0;terrain[r->terrain].rawmaterials[i].type;++i) {
-				if (terrain[r->terrain].rawmaterials[i].type == &rm_stones) break;
-			}
-			if (terrain[r->terrain].rawmaterials[i].type) {
-				base = terrain[r->terrain].rawmaterials[i].base;
-				stone = max (0, (int)(oldstone * stonemulti));
-				level = 1;
-				base = (int)(terrain[r->terrain].rawmaterials[i].base*(1+level*terrain[r->terrain].rawmaterials[i].divisor));
-				while (stone >= base) {
-					stone-=base;
-					++level;
-					base = (int)(terrain[r->terrain].rawmaterials[i].base*(1+level*terrain[r->terrain].rawmaterials[i].divisor));
-				}
-				rmstone->level = level;
-				rmstone->amount = base - stone;
-				assert (rmstone->amount > 0);
-				log_printf("CONVERSION: %d stones @ level %d in %s\n", rmstone->amount, rmstone->level, regionname(r, NULL));
-			} else {
-				log_error(("found stones in %s of %s\n", terrain[r->terrain].name, regionname(r, NULL)));
-			}
-
-			/** IRON **/
-			if (r_isglacier(r) || r->terrain==T_ICEBERG) {
-				oldiron = GLIRONPERTURN * MIN(r->age, 100) / 2;
-			} else {
-				oldiron = IRONPERTURN * r->age;
-			}
-			for (i=0;terrain[r->terrain].rawmaterials[i].type;++i) {
-				if (terrain[r->terrain].rawmaterials[i].type == &rm_iron) break;
-			}
-			if (terrain[r->terrain].rawmaterials[i].type) {
-				base = terrain[r->terrain].rawmaterials[i].base;
-				iron = MAX(0, (int)(oldiron * ironmulti - iron ));
-				level = 1;
-				base = (int)(terrain[r->terrain].rawmaterials[i].base*(1+level*terrain[r->terrain].rawmaterials[i].divisor));
-				while (iron >= base) {
-					iron-=base;
-					++level;
-					base = (int)(terrain[r->terrain].rawmaterials[i].base*(1+level*terrain[r->terrain].rawmaterials[i].divisor));
-				}
-				rmiron->level = level;
-				rmiron->amount = base - iron;
-				assert (rmiron->amount > 0);
-				log_printf("CONVERSION: %d iron @ level %d in %s\n", rmiron->amount, rmiron->level, regionname(r, NULL));
-			} else {
-				log_error(("found iron in %s of %s\n", terrain[r->terrain].name, regionname(r, NULL)));
-			}
-
-			/** LAEN **/
-			if (laen>=0) {
-				if (rmlaen==NULL) {
-					rmlaen = calloc(sizeof(rawmaterial), 1);
-					rmlaen->next = r->resources;
-					r->resources = rmlaen;
-				}
-				for (i=0;terrain[r->terrain].rawmaterials[i].type;++i) {
-					if (terrain[r->terrain].rawmaterials[i].type == &rm_laen) break;
-				}
-				if (terrain[r->terrain].rawmaterials[i].type) {
-					laen = MAX(0, (int)(oldlaen * laenmulti - laen));
-					level = 1;
-					base = (int)(terrain[r->terrain].rawmaterials[i].base*(1+level*terrain[r->terrain].rawmaterials[i].divisor));
-					while (laen >= base) {
-						laen-=base;
-						++level;
-						base = (int)(terrain[r->terrain].rawmaterials[i].base*(1+level*terrain[r->terrain].rawmaterials[i].divisor));
-					}
-					rmlaen->level = level;
-					rmlaen->amount = base - laen;
-					assert(rmlaen->amount>0);
-					log_printf("CONVERSION: %d laen @ level %d in %s\n", rmlaen->amount, rmlaen->level, regionname(r, NULL));
-					rmlaen = NULL;
-				}
-			} 
-			if (rmlaen) {
-				struct rawmaterial *res;
-				struct rawmaterial ** pres = &r->resources;
-				if (laen!=-1) log_error(("found laen in %s of %s\n", terrain[r->terrain].name, regionname(r, NULL)));
-				while (*pres!=rmlaen) pres = &(*pres)->next;
-				res = *pres;
-				*pres = (*pres)->next;
-				free(res);
-			}
-#ifndef NDEBUG
-			{
-				rawmaterial * res = r->resources;
-				while (res) {
-					assert(res->amount>0);
-					assert(res->level>0);
-					res = res->next;
-				}
-			}
-#endif
-			{
-				rawmaterial * rmiron = rm_get(r, rm_iron.rtype);
-				rawmaterial * rmlaen = rm_get(r, rm_laen.rtype);
-				rawmaterial * rmstone = rm_get(r, rm_stones.rtype);
-				fprintf(fixes, "%d %d %d %d %d %d %d %d %d\n", 
-				r->x, r->y, r->age, 
-				(rmstone)?rmstone->amount:-1, (rmiron)?rmiron->amount:-1, (rmlaen)?rmlaen->amount:-1, 
-				(rmstone)?rmstone->level:-1, (rmiron)?rmiron->level:-1, (rmlaen)?rmlaen->level:-1);
-			}
-		}
-	}
-	log_close();
-	fclose(fixes);
-}
-#endif
-
-static void
-fix_age(void)
-{
-	region * r;
-	int c;
-	for (r=regions;r;r=r->next) {
-		const unit * u;
-		attrib * a = a_find(r->attribs, &at_age);
-		if (a==NULL) {
-			a = a_add(&r->attribs, a_new(&at_age));
-		}
-
-		for (u=r->units;u;u=u->next) {
-			faction * f = u->faction;
-			if (f->age<=r->age) {
-				a->data.sa[0]+= f->age;
-				a->data.sa[1]++;
-				if (a->data.sa[0]>0x7000) {
-					a->data.sa[0] /= 10;
-					a->data.sa[1] /= 10;
-				}
-			}
-		}
-	}
-#define STEPS 3
-	for (c=0;c!=STEPS;++c) for (r=regions;r;r=r->next) {
-		attrib * a = a_find(r->attribs, &at_age);
-		int x = 0;
-		direction_t i;
-		int age = a->data.sa[0], div = a->data.sa[1];
-		if (age) ++x;
-		for (i=0;i!=MAXDIRECTIONS;++i) {
-			region * nr = rconnect(r, i);
-			if (nr!=NULL) {
-				attrib * na = a_find(nr->attribs, &at_age);
-				age += na->data.sa[0];
-				div += na->data.sa[1];
-				++x;
-			}
-		}
-		if (x) {
-			a->data.sa[0] = (short)(age / x);
-			a->data.sa[1] = (short)(div / x);
-		}
-	}
-
-	log_open("agefix.log");
-	for (r=regions;r;r=r->next) {
-		attrib * a = a_find(r->attribs, &at_age);
-		int age = a->data.sa[0];
-		if (a->data.sa[1]==0) continue;
-		age /= a->data.sa[1];
-		if (age*100<r->age*90) {
-			log_printf("AGE: from %d to %d in region %s\n", r->age, age, regionname(r, NULL));
-			r->age = age;
-		}
-	}
-	log_close();
-}
-
-static void
-fixit(void)
-{
-	fix_age();
-	do_once("rgrw", convert_resources());
-}
-
-int
-main(int argc, char *argv[])
-{
-	char zText[MAX_PATH];
-	boolean backup = true;
-	boolean save = true;
-	int i = 1;
-
-	setlocale(LC_ALL, "");
-
-	*datafile = 0;
-
-	while (i < argc && argv[i][0] == '-') {
-		switch (argv[i][1]) {
-		case 't':
-			if (argv[i][2])
-				turn = atoi((char *)(argv[i] + 2));
-			else
-				turn = atoi(argv[++i]);
-			break;
-		case 'x':
-			maxregions = atoi(argv[++i]);
-			maxregions = (maxregions*81+80) / 81;
-			break;
-		case 'q': quiet = true; break;
-		case 'n':
-			switch (argv[i][2]) {
-			case 'b' : backup = false; break;
-			case 's' : save = false; break;
-			}
-			break;
-		case 'd':
-			g_datadir = argv[++i];
-			break;
-		case 'r':
-			g_resourcedir = argv[++i];
-			break;
-		case 'o':
-			strcpy(datafile, argv[++i]);
-			break;
-		case 'b':
-			g_basedir = argv[++i];
-			break;
-		}
-		i++;
-	}
-
-	kernel_init();
-
-	init_triggers();
-
-	register_races();
-	register_spells();
-
-	debug_language("locales.log");
-	sprintf(zText, "%s/%s", resourcepath(), "eressea.xml");
-	init_data(zText);
-	init_locales();
-
-	init_attributes();
-	init_resources();
-	register_items();
-
-	init_rawmaterials();
-	init_museum();
-	init_arena();
-	init_xmas2000();
-
-	init_gmcmd();
-
-	if(!*datafile)
-		sprintf(datafile, "%s/%d", datapath(), turn);
-
-	readgame(backup);
-
-	fixit();
-
-	if (save) writegame(datafile, 1);
-	return 0;
-}
diff --git a/src/tools/misc/Spielerumfrage b/src/tools/misc/Spielerumfrage
deleted file mode 100644
index 61e6692a7..000000000
--- a/src/tools/misc/Spielerumfrage
+++ /dev/null
@@ -1,282 +0,0 @@
-
-Nach den sehr erfolgreichen vergangenen drei Spielerbefragungen (unter
-http://pegasus.upb.de/umfrage-1999/index.html findet ihr die Ergebnisse
-der letzten Befragung) gibt es jetzt die vierte Spielerbefragung. Sie
-soll uns helfen, besser zu erfassen, wer die Spieler sind, was sie sich
-vom Spiel erhoffen, und ob wir auf dem richtigen Weg sind.
-
-Diesmal hat sie noch einen ganz besonderen Grund (siehe Frage 2). Und wir
-wollen die sehr erfolgreiche Befragung zu den Clients fortsetzen.
-
-Da wir den Fragebogen automatisch auswerten wollen, halte dich bitte
-an folgende Richtlinien:
-
-- Bei Fragen, in denen ein Feld ([ ]) zur Auswahl steht, kreuze
-  bitte das Feld an ([x]) oder schreibe die Antwort hinein
-  ([1234]).
-
-  [x] ich bin ein [99] Jahre alter Ork
-
-  Wo Schulnoten gefragt sind, benutze bitte nur die Standardschulnoten
-  von 1-6, ohne Modifikatoren (+/-).
-
-  [1] D�monen werden die Welt �bernehmen
-
-- Aendere die Formatierung des Fragebogens moeglichst nicht! Fuege
-  insbesondere keine zusaetzlichen Umbrueche ein.
-
-- Schicke deine Antwort mit dem Betreff 'Spielerumfrage' an
-  eressea@eressea.amber.kn-bremen.de. Am einfachsten machst du
-  dafuer einfach ein Reply auf diese Mail. Bitte schicke die
-  Antwort nicht als Attachment und nicht in HTML!
-
-
-1. Angaben zur Person
-
-   Uns interessiert immer wieder, wer die Person hinter der Partei ist,
-   fuer wen wir das Spiel eigentlich machen. Wie alt bist Du? Bist du
-   maennlich oder weiblich?
-
-   1.1.1  [  ] Jahre alt
-   1.1.2  [ ] maennlich
-   1.1.3  [ ] weiblich
-
-   In welchem Land lebst du? Bitte keine Scherze wie "Tirol" oder
-   "Sauerland". Wir werten das ganze elektronisch aus, und sowas kostet
-   uns immer viel Zeit bei der Bereinigung der Daten.
-
-   1.2.1  [ ] Deutschland
-   1.2.2  [ ] Oesterreich
-   1.2.3  [ ] Schweiz
-   1.2.4  [ ] anderes Land, und zwar: [  ]
-
-   Wie viele Monate spielst du schon Eressea?
-
-   1.3.1  [  ] Wochen
-
-   Wieviele Parteien hast du in dieser Zeit gespielt?
-   (Urlaubsvertretungen nicht mitgezaehlt)
-
-   1.3.2  [  ] Parteien gespielt
-     
-   Was waren der/die Grund/Gruende fuer den Neubeginn:
-
-   1.4.1  [ ] Schlechte Startbedingungen
-   1.4.2  [ ] Krieg verloren
-   1.4.3  [ ] Zuviele eigene Fehler
-   1.4.4  [ ] Zuviele NMRs
-   1.4.5  [ ] Unsympathische/schwierige Nachbarn
-   1.4.6  [ ] Zu wenige Nachbarn
-   1.4.7  [ ] Zu viele Nachbarn
-   1.4.8  [ ] Das Gefuehl, alles erreicht zu haben
-   1.4.9  [ ] Sonstiges, und zwar: [  ]
-
-   Wie gef�llt dir das Spiel?
-
-   1.5.1  [ ] Bestes Spiel der Welt
-   1.5.2  [ ] macht Spass
-   1.5.3  [ ] ist okay
-   1.5.4  [ ] ich mache demnaechst Schluss
-
-   Bitte benote, wie wichtig dir die folgenden Aspekte von Eressea sind.
-   (1 - sehr wichtig, 6 - mir unwichtig)
-
-   1.6.1  [ ] Rollenspiel und Diplomatie
-   1.6.2  [ ] Schlachten und Konflikte
-   1.6.3  [ ] Entwicklung und Forscherdrang
-   1.6.4  [ ] Geschichte und Geschichten von Eressea
-
-   Wie benotest du die folgenden Punkte? (1 - Klasse, 6 - Furchtbar)
-
-   1.7.1  [ ] Hilfe durch Entwickler, z.B. bei technischen Problemen
-   1.7.2  [ ] Hilfen f�r Anfaenger
-   1.7.3  [ ] Mailhandling (Befehle, Reports nachbestellen, etc.)
-   1.7.4  [ ] Lesbarkeit der Reports
-   1.7.5  [ ] Anzahl der Reportoptionen
-   1.7.6  [ ] Umgangston unter den Spielern
-   1.7.7  [ ] Xontormia Express
-
-   Bist Du Schueler, Student oder berufstaetig?
-
-   1.8.1  [ ] Schueler
-   1.8.2  [ ] Student/Auszubildender
-   1.8.3  [ ] Berufstaetig
-   1.8.4  [ ] Nicht berufstaetig und nicht in Ausbildung
-
-   Noch ein paar Zusatzfragen. Kreuze an, was auf dich zutrifft.
-
-   1.9.1  [ ] Ich habe schon mindestens eine(n) Freund(in) zum Spiel ueberredet
-   1.9.2  [ ] Eressea ist dasjenige Hobby, dem ich die meiste Zeit widme
-   1.9.3  [ ] Ich spiele regelmaessig Onlinespiele
-              (z.B. Halflife, Ultima Online)
-   1.9.4  [ ] Meine Telefonrechnung (ohne Grundgebuehr) uebersteigt 40 DM/Monat
-   1.9.5  [ ] Ich war schon einmal auf einem Eressea-Spielertreffen
-   1.9.6  [ ] Ich spiele regelmaessig Pen&Paper Rollenspiele
-   1.9.7  [ ] Ich habe durch das Spiel Freunde gefunden, mit denen ich auch
-              ausserhalb Eresseas etwas unternehme
-
-
-
-2. Zweites Spiel
-
-   Wir haben mehrfach darueber nachgedacht, ein zweites Spiel zu starten.
-   Vor allem wollen wir das aktuelle Spiel am Leben erhalten, und das
-   aktuelle Eressea wuerde davon auch nicht betroffen. Aber ein neues
-   Spiel bietet die Moeglichkeit groesserer Veraenderungen, und die
-   Beseitigung von Fehlern, die im laufenden Spiel nicht denkbar sind.
-   Angenommen, es wuerde noch ein zweites Spiel wie Eressea gestartet.
-   Wuerdest Du da mitspielen?
-
-   2.1.1  [ ] Ja, und in Eressea weiterspielen
-   2.1.2  [ ] Ja, und mit Eressea aufhoeren
-   2.1.3  [ ] Nein, ich habe an Eressea genug
-
-   Da so etwas wieder viel zusaetzliche Zeit in Anspruch nimmt, ist es
-   wahrscheinlich fuer uns nicht vertretbar, so etwas kostenlos
-   anzubieten. Waerst Du bereit, fuer ein zweites Spiel Geld auszugeben?
-
-   2.2.1  [ ] Nein, auf keinen Fall.
-   2.2.2  [ ] Ja, aber dafuer muss es sich von Eressea ausreichend unterscheiden
-   2.2.3  [ ] Ja.
-
-   Viele von uns haben durch Onlinespiele oder Handys bereits eine hohe
-   Telefonrechnung. Der Preis eines PBeM kann wahrscheinlich mit der
-   Telefoniersucht des durchschnittlichen Deutschen garnicht
-   konkurrieren. Bitte ueberleg, wieviel es Dir wirklich wert ist. Ob es
-   sich fuer uns lohnt, und wir uns fuer ein zweites Spiel einsetzen
-   haengt vor allem von der Antwort auf diese Frage ab. Uns ist nicht
-   geholfen, wenn jeder 50 Pfg schreibt, und auch nicht, wenn Fabelpreise
-   entstehen, die spaeter niemand zahlt.  Also: Falls ja, was waerst Du zu
-   zahlen bereit?
-
-   2.3.1  [  ] DM/ZAT
-
-
-3. Welche Clients benutzt Du?
-
-   Bitte kreuze nur solche Clients an, die du REGELMAESSIG benutzt, um
-   deine Zuege zu erstellen, nicht solche, die du nur ausprobiert hast.
-   Falls Du der Autor eines der Programme bist, kreuze bitte nicht
-   zusaetzlich 'Selbstgemachtes Programm' an.
-
-   3.1.1  [ ] crtools, eva, eformat (E. Rehling)
-   3.1.2  [ ] Den Java-Client
-   3.1.3  [ ] E/V Assistent (M. Pollaschke)
-   3.1.4  [ ] ECheck (H. Peters)
-   3.1.5  [ ] ECheck Frontend (J. Kirchhoff)
-   3.1.6  [ ] EHMV (C. Schubert
-   3.1.7  [ ] Einen Namensgenerator
-   3.1.8  [ ] EMap (P. Stern)
-   3.1.9  [ ] eSurvey (S. Tusk)
-   3.1.10 [ ] gReport (S. Reich)
-   3.1.11 [ ] HexMap (H. Peters)
-   3.1.12 [ ] Kampfsimulator (F. Schatz)
-   3.1.13 [ ] Mercator (R. Butenuth)
-   3.1.14 [ ] NameMe (H. Peters)
-   3.1.15 [ ] Perl Tools (G. Edelmayer, F. Wolkwitz)
-   3.1.16 [ ] Vorlage (S. Schuemann)
-   3.1.17 [ ] VPP (S. Schuemann)
-   3.1.18 [ ] anderes, selbstgemachtes Programm
-   3.1.19 [ ] andere, und zwar: [  ]
-
-
-4. Anleitung
-
-   Welches Format fuer die Anleitung ist Dir am liebsten, d.h. welche
-   benutzt Du am meisten? Mehrfachnennungen sind erlaubt.
-
-   4.1.1  [ ] Word-Dokument
-   4.1.2  [ ] Latex-Quelltext
-   4.1.3  [ ] Postscript
-   4.1.4  [ ] PDF
-   4.1.5  [ ] HTML
-   4.1.6  [ ] Windows Hilfedatei (CHM)
-   4.1.7  [ ] ASCII
-   4.1.8  [ ] andere, und zwar: [  ]
-
-   Wie bewertest du die Qualitaet der folgenden Aspekte der Anleitung?
-   Bitte benutze normale Schulnoten (1-6).
-
-   4.2.1  [ ] Einsteigerfreundlichkeit
-   4.2.2  [ ] Uebersichtlichkeit
-   4.2.3  [ ] Informationsgehalt
-   4.2.4  [ ] Stil
-
-
-5. Spielkonzepte
-
-   Natuerlich interessiert uns, wie ihr bestimmte Aspekte des Spiels
-   bewertet, und wo ihr Handlungsbedarf f�r Aenderungen seht. Bitte
-   bewerte auf einer Skala von 1-6, f�r wie gelungen du den betreffende
-   Spielaspekt haelst. (1 - sehr gut/keine Aenderungen notwendig, 6 -
-   miserabel/sofort aendern)
-
-   5.1.1  [ ] taktisches Kampfsystem
-              (Alles, was den Ablauf einer einzigen Schlacht betrifft)
-   5.1.2  [ ] strategisches Kampfsystem
-              (Hierunter fallen 'groessere' Aspekte als eine einzelne Schlacht)
-   5.1.3  [ ] Welt/Geographie
-   5.1.4  [ ] Handel
-   5.1.5  [ ] Seefahrt
-   5.1.6  [ ] Monster/NPC
-   5.1.7  [ ] Einsteigerbedingungen
-   5.1.8  [ ] Rassenbalance
-   5.1.9  [ ] anderes, und zwar: [  ]
-
-   In der Vergangenheit wurde in verschiedenen Diskussionen haeufig die
-   Starre in den aelteren Welten kritisiert und als Abhilfe vorgeschlagen,
-   drastische 'Questen' einzuf�hren, die bei Nichtgelingen auch schon
-   einmal eine Welt praktisch zerstoeren koennen. Wie stehst du zu dieser
-   Idee?
-
-   5.2.1  [ ] Bin ich voellig gegen
-   5.2.2  [ ] Kommt drauf an
-   5.2.3  [ ] Von mir aus in Ordnung
-
-   Im Fruehjahr wurde das Magiesystem umgestellt. Uns ist bewusst, das es
-   noch Schwaechen gibt, trotzdem wuerde uns deine Meinung zum neuen
-   Magiesystem interessieren. Bitte bewerte die folgenden Aussagen mit
-   Schulnoten.
-
-   5.3.1  [ ] Das neue Magiesystem ist besser als das alte.
-   5.3.2  [ ] Die Magiegebiete sind ausbalanciert.
-   5.3.3  [ ] Die Gebiete und Zauber machen das Spiel interessanter.
-   5.3.4  [ ] Die Zauberpatzer machen das Spiel interessanter.
-
-
-6. Uns interessiert, wie die Spielerschaft die 'Staerke' der einzelnen
-   Rassen einschaetzt. Bitte ordne den unten angegebenen Rassen
-   Zahlenwerte von 1-6 zu. (1 - sehr gute Rasse, 6 - sehr schlechte
-   Rasse)
-
-   6.1.1  [ ] Goblins
-   6.1.2  [ ] Trolle
-   6.1.3  [ ] Orks
-   6.1.4  [ ] Daemonen
-   6.1.5  [ ] Elfen
-   6.1.6  [ ] Meermenschen
-   6.1.7  [ ] Menschen
-   6.1.8  [ ] Zwerge
-   6.1.9  [ ] Katzen
-   6.1.10 [ ] Insekten
-   6.1.11 [ ] Halblinge
-
-   Welche Rasse hat deine eigene Partei?
-   
-   6.2.1  [ ] Goblins
-   6.2.2  [ ] Trolle
-   6.2.3  [ ] Orks
-   6.2.4  [ ] Daemonen
-   6.2.5  [ ] Elfen
-   6.2.6  [ ] Meermenschen
-   6.2.7  [ ] Menschen
-   6.2.8  [ ] Zwerge
-   6.2.9  [ ] Katzen
-   6.2.10 [ ] Insekten
-   6.2.11 [ ] Halblinge
-
-
-7. Wenn du noch etwas loswerden willst, Kritik, Anregungen, Kommentare
-   aller Art, dann kannst Du das hier tun:
-
-
diff --git a/src/tools/misc/filter b/src/tools/misc/filter
deleted file mode 100644
index 7012499e5..000000000
--- a/src/tools/misc/filter
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-sed -e 's/^ *[Ll][Ee][rR].*[Ss][Cc][Hh][Ww].*$/LERNE HIEBWAFFEN/g' | \
-sed -e 's/^ *[Ll][Ee][rR].*[Ss][Pp].*$/LERNE STANGENWAFFEN/g' | \
-sed -e 's/^ *[Ss][Ee][Nn][Dd][Ee] /OPTION /g'
-
-
diff --git a/src/tools/misc/secure-include.pl b/src/tools/misc/secure-include.pl
deleted file mode 100644
index fd2e9cbc5..000000000
--- a/src/tools/misc/secure-include.pl
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/perl
-
-use Getopt::Std;
-
-sub output_file {
-	my $file = shift(@_);
-
-	foreach $dir (@searchpath) {
-		$absname = $dir."/".$file;
-		if ( -r $absname ) {
-			system "cat $absname";
-			last;
-		}
-	}
-}
-
-getopt('I');
-@searchpath = split(/:/,$opt_I);
-
-while(<STDIN>) {
-	$line = $_;
-
-	if( $line =~ /^\s*#include\s+\"(.*)\"/ ) {
-		$file = $1;
-		if(not ($file =~ /\.\./ or $file =~ /^\//) or $file =~ /;/) {
-			output_file($file);
-		}
-	} else if ( $line =~ /^\s*#perl\s+\"(.*)\"/ ) {
-		$script = $1;
-		do $script;
-	} else {
-		print $line;
-	}
-}
-
diff --git a/src/tools/misc/secure-include.pl.readme b/src/tools/misc/secure-include.pl.readme
deleted file mode 100644
index c08dd6786..000000000
--- a/src/tools/misc/secure-include.pl.readme
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Dies ist eine sichere Implementation der #include - Funktionalit�t
-der C-Pr�prozessors. Er l��t keine absoluten Pfade oder .. in den
-Filenamen zu, und durchsucht nur die mit -I angegebenen Directories.
-
diff --git a/src/tools/msg2xml.c b/src/tools/msg2xml.c
deleted file mode 100644
index 17cd36cec..000000000
--- a/src/tools/msg2xml.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/* vi: set ts=2:
- +-------------------+  Christian Schlittchen <corwin@amber.kn-bremen.de>
- |                   |  Enno Rehling <enno@eressea-pbem.de>
- | Eressea PBEM host |  Katja Zedel <katze@felidae.kn-bremen.de>
- | (c) 1998 - 2001   |  Henning Peters <faroul@beyond.kn-bremen.de>
- |                   |  Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
- +-------------------+  Stefan Reich <reich@halbling.de>
-
- This program may not be used, modified or distributed 
- without prior permission by the authors of Eressea.
-*/
-#include <config.h>
-
-#include <stdio.h>
-#include <string.h>
-
-static struct vartype {
-	const char * name;
-	const char * type;
-	const char * msg;
-} vartype[] = {
-	{ "from", "unit", "donation"},
-	{ "to", "unit", "donation" },
-
-	/* strange and to be changed */
-	{ "destruction", "int", "siege" },
-	{ "mode", "int", "travel" },
-	{ "discover", "string", "givedumb" },
-	{ "receipient", "unit", "givecommand" },
-	{ "sink", "string", "entermaelstrom" },
-	{ "sink", "string", "storm" },
-	{ "using", "resource", "errusingpotion" },
-	{ "type", "string", "scunicorn" },
-	{ "special", "string", "new_fspecial" },
-	{ "special", "string", "new_fspecial_level" },
-
-	/* broadband */
-
-	{ "regions", "string" },
-	{ "succ", "string" },
-	{ "renamed", "string" },
-	{ "reason", "string" },
-	{ "message", "string" },
-	{ "value", "string" },
-	{ "error", "string" },
-	{ "string", "string" },
-	{ "command", "string" },
-	{ "spell", "string" }, /* ? */
-
-	{ "building", "building" },
-
-	{ "ship", "ship" },
-
-	{ "resource", "resource" },
-	{ "potion", "resource" },
-	{ "item", "resource" },
-	{ "herb", "resource" },
-
-	{ "teacher", "unit" },
-	{ "student", "unit" },
-	{ "unit", "unit" },
-	{ "renamer", "unit" },
-	{ "spy", "unit" },
-	{ "mage", "unit" },
-	{ "opfer", "unit" },
-	{ "target", "unit" },
-	{ "recipient", "unit" },
-	{ "follower", "unit" },
-
-	{ "skill", "skill" },
-
-	{ "faction", "faction" },
-
-	{ "region", "region" },
-	{ "source", "region" },
-	{ "regionn", "region" },
-	{ "regionv", "region" },
-	{ "end", "region" },
-	{ "start", "region" },
-	{ "runto", "region" },
-	{ "to", "region" },
-	{ "from", "region" },
-
-	{ "kills", "int" },
-	{ "fallen", "int" },
-	{ "amount", "int" },
-	{ "aura", "int" },
-	{ "months", "int" },
-	{ "wanted", "int" },
-	{ "money", "int" },
-	{ "dead", "int" },
-	{ "level", "int" },
-	{ "days", "int" },
-	{ "damage", "int" },
-	{ "cost", "int" },
-	{ "want", "int" },
-	{ "size", "int" },
-	{ "alive", "int" },
-	{ "run", "int" },
-	{ "hits", "int" },
-	{ "turns", "int" },
-
-	{ "race", "race" },
-
-	{ "direction", "direction" },
-	{ "dir", "direction" },
-
-	{ "id", "int" },
-	{ NULL, NULL }
-};
-
-static const char * 
-type(const char * name,const char * msg)
-{
-	int i = 0;
-	while (vartype[i].name) {
-		if (strcmp(name, vartype[i].name)==0 && 
-			(vartype[i].msg==NULL || strcmp(vartype[i].msg, msg)==0)) {
-			return vartype[i].type;
-		}
-		++i;
-	}
-	fprintf(stderr, "unknown type for \"%s\" in message \"%s\".\n", name, msg);
-	return "unknown";
-}
-
-static void
-parse_message(char * b, FILE * ostream)
-{
-	const char * vtype;
-	char *m, *a = NULL, message[8192];
-	char * name;
-	char * language;
-	char * section = NULL;
-	int i, level = 0;
-	char * args[16];
-	boolean f_symbol = false;
-
-	/* skip comments */
-	if (b[0]=='#' || b[0]==0) return;
-
-	/* the name of this type */
-	name = b;
-	while (*b && *b!=';') ++b;
-	if (!*b) return;
-	*b++ = 0;
-
-	/* the section for this type */
-	section = b;
-	while (*b && *b!=';' && *b!=':') ++b;
-	if (!strcmp(section, "none")) section=NULL;
-
-	/* if available, the level for this type */
-	if (*b==':') {
-		char * x;
-		*b++ = 0;
-		x = b;
-		while (*b && *b!=';') ++b;
-		level=atoi(x);
-	}
-	*b++ = 0;
-
-	/* the locale */
-	language = b;
-	while (*b && *b!=';') ++b;
-	*b++ = 0;
-
-	/* parse the message */
-	i = 0;
-	m = message;
-	*m++='\"';
-	while (*b) {
-		switch (*b) {
-		case '{':
-			f_symbol = true;
-			a = ++b;
-			break;
-		case '}':
-			*b++ = '\0';
-			args[i] = strdup(a);
-			vtype = type(args[i], name);
-			if (strcmp(vtype, "string")==0) {
-				sprintf(m, "$%s", args[i]);
-			} else {
-				sprintf(m, "$%s($%s)", vtype, args[i]);
-			}
-			m+=strlen(m);
-			i++;
-			f_symbol = false;
-			break;
-		case ' ':
-			if (f_symbol) {
-				a = ++b;
-				break;
-			}
-			/* fall-through intended */
-		default:
-			if (!f_symbol) {
-				*m++ = *b++;
-			} else b++;
-		}
-	}
-	strcpy(m, "\"");
-	args[i] = NULL;
-
-	/* add the messagetype */
-	fprintf(ostream, "<message name=\"%s\">\n", name);
-	fputs("\t<type>\n", ostream);
-	for (i=0;args[i];++i) {
-		fprintf(ostream, "\t\t<arg name=\"%s\" type=\"%s\"></arg>\n", args[i], type(args[i], name));
-	}
-	fputs("\t</type>\n", ostream);
-	fprintf(ostream, "\t<locale name=\"%s\">\n", language);
-	fprintf(ostream, "\t\t<nr section=\"%s\">\n", 
-		section);
-	fprintf(ostream, "\t\t\t<text>%s</text>\n", message);
-	fputs("\t\t</nr>\n", ostream);
-	fputs("\t</locale>\n", ostream);
-	fputs("</message>\n\n", ostream);
-}
-
-void
-read_messages(FILE * istream, FILE * ostream)
-{
-	char buf[8192];
-	fputs("<messages>\n", ostream);
-	while (fgets(buf, sizeof(buf), istream)) {
-		buf[strlen(buf)-1] = 0; /* \n weg */
-		parse_message(buf, ostream);
-	}
-	fputs("</messages>\n", ostream);
-}
-
-int 
-main(int argc, char** argv)
-{
-	FILE * istream = stdin;
-	FILE * ostream = stdout;
-	int nretval = -1;
-	if (argc>1) istream = fopen(argv[1], "rt+");
-	if (argc>2) ostream = fopen(argv[2], "wt+");
-	if (istream && ostream) {
-		read_messages(istream, ostream);
-	}
-	return nretval;
-}
diff --git a/src/tools/prototype-advance/Graph.py b/src/tools/prototype-advance/Graph.py
deleted file mode 100644
index a196af810..000000000
--- a/src/tools/prototype-advance/Graph.py
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/usr/bin/python
-
-from Stack import *
-
-class Node:
-	def __init__(self, obj):
-		self.obj    = obj
-		self.marker = 0
-
-class Vertex:
-	def __init__(self, node1, node2):
-		self.nodes  = (node1, node2)
-		self.marker = 0
-
-class Graph:
-
-	def __init__(self):
-		self.nodes = []
-		self.vertices = []
-
-	def remove_node(self, node):
-		self.nodes.remove(node)
-		for v in self.vertices:
-			if v.nodes[0] == node or v.nodes[1] == node:
-				self.vertices.remove(v)
-
-	def find_node(self, obj):
-		for n in self.nodes:
-			if n.obj == obj:
-				return n
-
-		return None
-
-	def neighbours(self, node):
-		n = []
-		for v in self.vertices:
-			if v.nodes[0] == node and v.nodes[1] not in n:
-				n.append(v.nodes[1])
-			elif v.nodes[1] == node and v.nodes[0] not in n:
-				n.append(v.nodes[0])
-
-		return n
-
-	def reset_marker(self):
-		for n in self.nodes:
-			n.marker = 0
-		for v in self.vertices:
-			v.marker = 0
-
-	def dsearch(self,node):
-		reset_marker()
-		dg = [node]
-		s = Stack()
-		node.marker = 1
-		s.push(node)
-		while not s.empty():
-			n = s.pop()
-			for nb in self.neighbours(n):
-				if nb.marker == 0:
-					nb.marker = 1
-					dg.append(nb)
-					s.push(nb)
-		return dg
-
-	def dgraphs(self):
-		rl       = []
-		nodelist = self.nodes[:]
-		while nodelist != []:
-			start = nodelist.pop()
-			self.reset_marker()
-			g = Graph()
-			g.nodes.append(start)
-			start.marker = 1
-			s = Stack()
-			s.push(start)
-			while not s.empty():
-				tnode = s.pop()
-				for nb in self.neighbours(tnode):
-					if nb.marker == 0:
-						nb.marker = 1
-						g.nodes.append(nb)
-						nodelist.remove(nb)
-						s.push(nb)
-
-			for v in self.vertices:
-				if v.nodes[0] in g.nodes:
-					g.vertices.append(v)
-
-			rl.append(g)
-
-		return rl
-
-# g = Graph()
-
-# n1 = Node(1)
-# n2 = Node(2)
-# n3 = Node(3)
-# n4 = Node(4)
-# n5 = Node(5)
-# n6 = Node(6)
-
-# g.nodes.append(n1)
-# g.nodes.append(n2)
-# g.nodes.append(n3)
-# g.nodes.append(n4)
-# g.nodes.append(n5)
-# g.nodes.append(n6)
-
-# g.vertices.append(Vertex(n1,n2))
-# g.vertices.append(Vertex(n1,n4))
-# g.vertices.append(Vertex(n2,n6))
-
-# for dg in g.dgraphs():
-# 	for e in dg:
-# 		print e.obj,
-# 	print
-
-
-
diff --git a/src/tools/prototype-advance/Stack.py b/src/tools/prototype-advance/Stack.py
deleted file mode 100644
index 0cec799bb..000000000
--- a/src/tools/prototype-advance/Stack.py
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/python
-
-class Stack:
-	def __init__(self):
-		self.data = []
-
-	def push(self, obj):
-		self.data.append(obj)
-
-	def pop(self):
-		return self.data.pop()
-
-	def empty(self):
-		if self.data == []:
-			return 1
-		return 0
-
diff --git a/src/tools/prototype-advance/battle.py b/src/tools/prototype-advance/battle.py
deleted file mode 100755
index 9652da755..000000000
--- a/src/tools/prototype-advance/battle.py
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/usr/bin/python
-# vi:set ts=4:
-
-# Algorithmus zur Berechnung von regions�bergreifenden Schlachten.
-# Testprogramm.
-
-# 1) Graph aufbauen aus alle Attackierern und allen direkt attackierten
-
-# 2) Helfer in den Graphen aufnehmen
-
-# 3) Disjunkte Teilgraphen ermitteln
-
-# 4) Innerhalb der Teilgraphen die 'Wer-schl�gt-wen-Beziehung' aufbauen
-
-import re
-from Graph import *
-
-class heer:
-	def __init__(self, rx, ry, f, p, o):
-		self.rx = rx
-		self.ry = ry
-		self.f  = f
-		self.part = p
-		self.o  = o
-		self.attacked = []
-
-	def toString(self):
-		return "("+self.f+"/"+str(self.part)+","+str(self.rx)+","+str(self.ry)+")"
-
-
-def dist(x1, y1, x2, y2):
-	dx = x1 - x2
-	dy = y1 - y2
-	if dy < 0:
-		dy = -dy
-		dx = -dx
-	if dx >= 0:
-		return dx + dy;
-	if -dx >= dy:
-		return -dx
-	return dy
-
-
-def is_neighbour(h, r1, r2):
-	x1 = r1[0]
-	y1 = r1[1]
-	x2 = r2[0]
-	y2 = r2[1]
-
-	if dist(h.rx, h.ry, x1, y1) <= 1 and dist(h.rx, h.ry, x2, y2) <= 1:
-		return 1
-
-	return 0
-
-heere = [
-	Node(heer(0,0,  'A', 1, 'A->B:-1,1')),
-	Node(heer(0,0,  'A', 2, 'A->B:0,1')),
-	Node(heer(-1,1, 'B', 1, '')),
-	Node(heer(1,-1, 'B', 1, '')),
-	Node(heer(0,1,  'B', 1, ''))
-]
-
-def find_heer_node(x, y, f):
-	for node in heere:
-		h = node.obj
-		if h.rx == x and h.ry == y and h.f == f:
-			return node
-	return None
-
-def allied(f1, f2):
-	if f1 == f2:
-		return 1
-	return 0
-
-g1 = Graph()
-
-a_re = re.compile('A->(\w):(-?\d+),(-?\d+)')
-l_re = re.compile('L->(\w)')
-
-# Schritt 1
-
-for node in heere:
-	f = ''
-	h = node.obj
-
-	mo = a_re.match(h.o)
-	if mo != None:
-		f = mo.group(1)
-		x = int(mo.group(2))
-		y = int(mo.group(3))
-		
-	mo = l_re.match(h.o)
-	if mo != None:
-		f = mo.group(1)
-		x = h.rx
-		y = h.ry
-
-	if f != '':
-		tnode = find_heer_node(x,y,f)
-		if node not in g1.nodes:
-			g1.nodes.append(node)
-		if tnode not in g1.nodes:
-			g1.nodes.append(tnode)
-		g1.vertices.append(Vertex(node,tnode))
-		tnode.obj.attacked.append((x,y,node))
-
-# Schritt 2
-
-for node1 in g1.nodes:
-	heer1 = node1.obj
-	for attack in heer1.attacked:
-		attacker_node = attack[2]
-		for node2 in heere:
-			heer2 = node2.obj
-			# heer 1 ist der angegriffene
-			# heer 2 der potentielle Helfer
-			if heer1 != heer2 and allied(heer1.f,heer2.f) and not allied(heer2.f, attacker_node.obj.f):
-				if is_neighbour(heer2, (heer1.rx, heer1.ry), attack):
-					if node2 not in g1.nodes:
-						g1.nodes.append(node2)
-					g1.vertices.append(Vertex(attacker_node,node2))
-
-# Schritt 3
-
-battles = g1.dgraphs()
-
-count = 1
-
-for battle in battles:
-	print "Schlacht "+str(count),
-	count = count + 1
-	for node in battle.nodes:
-		heer = node.obj
-		print heer.toString()+",",
-	print
-
-	# Schritt 4
-
-	for node in battle.nodes:
-		heer = node.obj
-		print "\tHeer "+str(heer.toString())+" attackiert gegen",
-		for enemy in battle.neighbours(node):
-			print str(enemy.obj.toString())+",",
-		print
-
diff --git a/src/tools/reduce.c b/src/tools/reduce.c
deleted file mode 100644
index fcbbefc18..000000000
--- a/src/tools/reduce.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/* vi: set ts=2:
- +-------------------+  Christian Schlittchen <corwin@amber.kn-bremen.de>
- |                   |  Enno Rehling <enno@eressea-pbem.de>
- | Eressea PBEM host |  Katja Zedel <katze@felidae.kn-bremen.de>
- | (c) 1998 - 2001   |  Henning Peters <faroul@beyond.kn-bremen.de>
- |                   |  Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
- +-------------------+  Stefan Reich <reich@halbling.de>
-
- This program may not be used, modified or distributed 
- without prior permission by the authors of Eressea.
-*/
-#include <config.h>
-#include <kernel/eressea.h>
-
-#include <kernel/region.h>
-#include <kernel/faction.h>
-#include <kernel/unit.h>
-#include <kernel/save.h>
-
-#include <util/base36.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <locale.h>
-
-static char * orderfile = NULL;
-
-static void mark_region(region * r, boolean mark)
-{
-	if (!r) return;
-	if (mark) fset(r, FL_MARK);
-	else freset(r, FL_MARK);
-}
-
-static void 
-markup(FILE * in)
-{
-	char command[16];
-	char choice[16];
-	int x, y;
-	region * r;
-	boolean mark;
-
-	while (!feof(in)) {
-		fscanf(in, "%s %s", choice, command);
-		if (choice[0]=='#') {
-			fgets(buf, sizeof(buf), in);
-			continue;
-		}
-		if (choice[0]=='e') return; /* end */
-		if (choice[0]=='o') {
-			orderfile = strdup(command);
-			readorders(orderfile);
-			continue;
-		}
-		mark = (choice[0]=='a'); /* add/del */
-		switch (command[0]) {
-		case 'r':
-			if (!strcmp(command, "region")) {
-				fscanf(in, "%d %d", &x, &y);
-				r = findregion(x, y);
-				if (r==NULL)
-					printf("region %d,%d not found\n", x, y);
-				else mark_region(r, mark);
-			}
-			break;
-		case 'a':
-			if (!strcmp(command, "area")) {
-				int radius;
-				fscanf(in, "%d %d %d", &x, &y, &radius);
-				for (r=regions;r!=NULL;r=r->next) {
-					if (koor_distance(x, y, r->x, r->y)<=radius)
-						mark_region(r, mark);
-				}
-			} else if (!strcmp(command, "all")) {
-				for (r==regions;r!=NULL;r=r->next) {
-					mark_region(r, mark);
-				}
-			}
-			break;
-		}
-	}
-}
-
-static void
-reduce(void)
-{
-	faction * f;
-	region ** rp = &regions;
-	/* let's leak regions, big time. */
-	for (f=factions;f;f=f->next) f->alive=0;
-	while (*rp) {
-		region * r = *rp;
-		if (fval(r, FL_MARK)) {
-			unit * u;
-			for (u=r->units;u;u=u->next) u->faction->alive=1;
-			rp=&r->next;
-		}
-		else *rp = r->next;
-	}
-}
-
-static int
-usage(void)
-{
-	fputs("usage: reduce [infile]\n", stderr);
-	fputs("\ninput file syntax:\n"
-		"\torders orderfile\n"
-		"\tadd all\n"
-		"\tadd region x y\n"
-		"\tadd area x y r\n"
-		"\tdel all\n"
-		"\tdel region x y\n"
-		"\tdel area x y r\n"
-		"\tend\n", stderr);
-	return -1;
-}
-
-static void
-writeorders(const char * orderfile)
-{
-	FILE * F = fopen(orderfile, "wt");
-	faction * f;
-	if (F==NULL) return;
-
-	/* let's leak regions, big time. */
-	for (f=factions;f;f=f->next) {
-		region * r;
-		if (f->alive==0) continue;
-		fprintf(F, "PARTEI %s \"%s\"\n", itoa36(f->no), f->passw);
-		for (r=regions;r;r=r->next) {
-			if (fval(r, FL_MARK)) {
-				unit * u;
-				for (u=r->units;u;u=u->next) {
-					strlist * o;
-					fprintf(F, "EINHEIT %s\n", itoa36(u->no));
-					for (o=u->orders;o;o=o->next) {
-						fputs(o->s, F);
-					}
-				}
-			}
-		}
-	}
-	fclose(F);
-}
-
-int
-main(int argc, char ** argv)
-{
-	char * datadir = "data";
-	char outfile[64];
-	FILE * in = stdin;
-
-	setlocale(LC_ALL, "");
-
-	if (argc>1) {
-		in = fopen(argv[1], "rt+");
-		if (in==NULL) return usage();
-	} 
-
-	kernel_init();
-	readgame(false);
-
-	markup(in);
-	reduce();
-
-	remove_empty_factions();
-	sprintf(outfile, "%s.cut", orderfile);
-	if (orderfile) {
-		writeorders(orderfile);
-	}
-	sprintf(outfile, "%s/%d.cut", datadir, turn);
-	writegame(outfile, 0);
-
-	if (in!=stdin) fclose(in);
-	return 0;
-}
diff --git a/src/tools/reduce.txt b/src/tools/reduce.txt
deleted file mode 100644
index 3e6395997..000000000
--- a/src/tools/reduce.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# we want this region:
-add region 1023 999
-# everything within 2 of (985,1035):
-add area 985 1035 2
-# but not the center itself:
-del region 985 1035
-# that's all folks.
-end
-# will not be executed:
-del all
diff --git a/src/tools/syntax-test-messages.pl b/src/tools/syntax-test-messages.pl
deleted file mode 100755
index fa7c7aa00..000000000
--- a/src/tools/syntax-test-messages.pl
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/perl
-# vi:set ts=2:
-
-$errorcount = 0;
-$linecount = 0;
-
-while(<>) {
-	$line = $_;
-
-	$linecount++;
-
-	if($line !~ /^\s*#/ && $line !~ /^\s*$/ && $line !~ /^\w+;(events|magic|errors|study|economy|battle|movement|production):[012345];(de|en);.+/) {
-		print "syntax error in line $linecount: $line\n";
-		$errorcount++;
-	}
-}
-
-if($errorcount > 0) {
-	print "$errorcount errors found.\n";
-} else {
-	print "No errors found.\n";
-}
-
diff --git a/src/tools/translator.c b/src/tools/translator.c
deleted file mode 100644
index 1f13ba79c..000000000
--- a/src/tools/translator.c
+++ /dev/null
@@ -1,284 +0,0 @@
-/* vi: set ts=2:
- +-------------------+  Christian Schlittchen <corwin@amber.kn-bremen.de>
- |                   |  Enno Rehling <enno@eressea-pbem.de>
- | Eressea PBEM host |  Katja Zedel <katze@felidae.kn-bremen.de>
- | (c) 1998 - 2001   |  Henning Peters <faroul@beyond.kn-bremen.de>
- |                   |  Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
- +-------------------+  Stefan Reich <reich@halbling.de>
-
- This program may not be used, modified or distributed 
- without prior permission by the authors of Eressea.
-*/
-#include <config.h>
-
-#include <message.h>
-#include <crmessage.h>
-#include <nrmessage.h>
-#include <translation.h>
-
-#include <assert.h>
-#include <ctype.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static const char * sample = "\"enno and $if($eq($i,0),\"nobody else\",$if($eq($i,1),\"another guy\",\"$int($i) other people\")).\"";
-
-void
-test_translation(void)
-{
-	int x;
-	const char * c;
-
-	c = translate_va("\"$name is a godlike $role.\"", "name role", "enno", "coder");
-	if (c) puts(c);
-
-	for (x=0;x!=4;++x) {
-		c = translate_va(sample, "i", x);
-		if (c) puts(c);
-	}
-}
-
-
-void
-test_message(void)
-{
-	char buffer[1024];
-	struct message_type * mt_example = mt_new_va("example", "subject:string", "number:int", "object:string", NULL);
-	message * msg = msg_create_va(mt_example, "enno", (void*)7, "autos");
-
-	tsf_register("string", &cr_string);
-	tsf_register("int", &cr_int);
-
-	crt_register(mt_example);
-	nrt_register(mt_example, NULL, "\"$subject hat $int($number) $object\"", 0, "default");
-	cr_render(msg, buffer);
-	puts(buffer);
-	nr_render(msg, NULL, buffer);
-	puts(buffer);
-}
-
-#include <string.h>
-#include <util/language.h>
-
-message *
-new_message(struct faction * receiver, const char* sig, ...)
-	/* compatibility function, to keep the old function calls valid *
-	 * all old messagetypes are converted into a message with ONLY string parameters,
-	 * this function will convert given parameters to a string representation
-	 * based on the signature - like render() once did */
-{
-	const message_type * mtype;
-	va_list marker;
-	const char * signature = strchr(sig, '%');
-	char buffer[128];
-	int i=0;
-	const char * c = sig;
-	const char * args[16];
-
-	strncpy(buffer, sig, signature-sig);
-	buffer[signature-sig] = '\0';
-	mtype = mt_find(buffer);
-
-	if (!mtype) {
-		fprintf(stderr, "trying to create message of unknown type \"%s\"\n", buffer);
-		return NULL;
-	}
-
-	while(*c!='%') buffer[i++] = *(c++);
-	buffer[i] = 0;
-
-	va_start(marker, sig);
-	while (*c) {
-		char type;
-		char *p = buffer;
-		assert(*c=='%');
-		type = *(++c);
-	/*
-			case 'f': (*ep)->type = IT_FACTION; break;
-			case 'u': (*ep)->type = IT_UNIT; break;
-			case 'r': (*ep)->type = IT_REGION; break;
-			case 'h': (*ep)->type = IT_SHIP; break;
-			case 'b': (*ep)->type = IT_BUILDING; break;
-			case 'X': (*ep)->type = IT_RESOURCETYPE; break;
-			case 'x': (*ep)->type = IT_RESOURCE; break;
-			case 't': (*ep)->type = IT_SKILL; break;
-			case 's': (*ep)->type = IT_STRING; break;
-			case 'i': (*ep)->type = IT_INT; break;
-			case 'd': (*ep)->type = IT_DIRECTION; break;
-			case 'S': (*ep)->type = IT_FSPECIAL; break;
-*/
-		c+=2;
-		while (*c && isalnum(*(unsigned char*)c)) *(p++) = *(c++);
-		*p = '\0';
-		for (i=0;i!=mtype->nparameters;++i) {
-			if (!strcmp(buffer, mtype->pnames[i])) break;
-		}
-		assert(i!=mtype->nparameters || !"unknown parameter");
-
-		switch(type) {
-			case 's':
-				args[i] = va_arg(marker, const char *);
-				break;
-			case 'i':
-				itoa(va_arg(marker, int), buffer, sizeof(buffer));
-				args[i] = strdup(buffer);
-				break;
-#ifdef ERESSEA_KERNEL
-			case 'f':
-				args[i] = factionname(va_arg(marker, const struct faction*));
-				break;
-			case 'u':
-				args[i] = unitname(va_arg(marker, const struct unit*));
-				break;
-			case 'r':
-				args[i] = rname(va_arg(marker, const struct region*), receiver->lang);
-				break;
-			case 'h':
-				args[i] = shipname(va_arg(marker, const struct ship*));
-				break;
-			case 'b':
-				args[i] = buildingname(va_arg(marker, const struct ship*));
-				break;
-			case 'X':
-				args[i] = resourcename(va_arg(marker, const resource_type *), 0);
-				break;
-			case 'x':
-				args[i] = resourcename(oldresourcetype[(resource_t)va_arg(marker, resource_t)], 0);
-				break;
-			case 't':
-				args[i] = skillname(va_arg(marker, skill_t), NULL);
-				break;
-			case 'd':
-				args[i] = directions[i];
-				break;
-			case 'S':
-#endif
-			default:
-				args[i] = NULL;
-		}
-	}
-	return msg_create(mtype, args);
-}
-
-static void
-parse_message(char * b)
-{
-	char *m, *a, message[8192];
-	char * name;
-	char * language;
-	struct locale * lang;
-	char * section = NULL;
-	int i, level = 0;
-	char * args[16];
-	boolean f_symbol = false;
-	const struct message_type * mtype;
-
-	/* skip comments */
-	if (b[0]=='#' || b[0]==0) return;
-
-	/* the name of this type */
-	name = b;
-	while (*b && *b!=';') ++b;
-	if (!*b) return;
-	*b++ = 0;
-
-	/* the section for this type */
-	section = b;
-	while (*b && *b!=';' && *b!=':') ++b;
-	if (!strcmp(section, "none")) section=NULL;
-
-	/* if available, the level for this type */
-	if (*b==':') {
-		char * x;
-		*b++ = 0;
-		x = b;
-		while (*b && *b!=';') ++b;
-		level=atoi(x);
-	}
-	*b++ = 0;
-
-	/* the locale */
-	language = b;
-	while (*b && *b!=';') ++b;
-	*b++ = 0;
-	lang = find_locale(language);
-	if (!lang) lang = make_locale(language);
-
-	/* parse the message */
-	i = 0;
-	m = message;
-	*m++='\"';
-	while (*b) {
-		switch (*b) {
-		case '{':
-			f_symbol = true;
-			a = ++b;
-			break;
-		case '}':
-			*b++ = '\0';
-			args[i] = strdup(a);
-			sprintf(m, "$%s", args[i]);
-			m+=strlen(m);
-			i++;
-			f_symbol = false;
-			break;
-		case ' ':
-			if (f_symbol) {
-				a = ++b;
-				break;
-			}
-			/* fall-through intended */
-		default:
-			if (!f_symbol) {
-				*m++ = *b++;
-			} else b++;
-		}
-	}
-	strcpy(m, "\"");
-	args[i] = NULL;
-
-	/* add the messagetype */
-	mtype = mt_register(mt_new(name, args));
-	nrt_register(mtype, lang, message, 0, "default");
-	crt_register(mtype);
-}
-
-static void
-read_messages(FILE * F)
-{
-	char buf[8192];
-	while (fgets(buf, sizeof(buf), F)) {
-		buf[strlen(buf)-1] = 0; /* \n weg */
-		parse_message(buf);
-	}
-}
-
-static void 
-test_compat()
-{
-	char buffer[1024];
-	FILE * F = fopen("res/de/messages.txt", "rt");
-	message * msg;
-	if (F) {
-		read_messages(F);
-		fclose(F);
-		msg = new_message(NULL, "entrise%s:region", "Porzel (8,7)");
-		if (cr_render(msg, buffer)==0) puts(buffer);
-		if (nr_render(msg, NULL, buffer)==0) puts(buffer);
-	}
-}
-
-int 
-main(int argc, char**argv)
-{
-	translation_init();
-
-	test_message();
-	test_translation();
-	test_compat();
-
-	translation_done();
-	return 0;
-}
diff --git a/src/tools/xmltest.c b/src/tools/xmltest.c
deleted file mode 100644
index ebfcc572a..000000000
--- a/src/tools/xmltest.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* vi: set ts=2:
- +-------------------+  Christian Schlittchen <corwin@amber.kn-bremen.de>
- |                   |  Enno Rehling <enno@eressea-pbem.de>
- | Eressea PBEM host |  Katja Zedel <katze@felidae.kn-bremen.de>
- | (c) 1998 - 2001   |  Henning Peters <faroul@beyond.kn-bremen.de>
- |                   |  Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
- +-------------------+  Stefan Reich <reich@halbling.de>
-
- This program may not be used, modified or distributed 
- without prior permission by the authors of Eressea.
-*/
-#include <config.h>
-#include <xml.h>
-
-#include <stdio.h>
-#include <string.h>
-
-static int 
-cbplaintext(const struct xml_stack * stack, const char * c)
-{
-	puts(c);
-	fflush(stdout);
-	return XML_OK;
-}
-
-static int 
-cbtagend(const struct xml_stack * stack)
-{
-	xml_tag * tag = stack->tag;
-	printf("</%s>\n", tag->name);
-	fflush(stdout);
-	return XML_OK;
-}
-
-static int 
-cbtagbegin(const struct xml_stack * stack)
-{
-	xml_tag * tag = stack->tag;
-	xml_attrib * xa= tag->attribs;
-	printf("<%s", tag->name);
-	while (xa) {
-		printf(" %s=\"%s\"", xa->name, xa->value);
-		xa = xa->next;
-	}
-	printf(">\n");
-	fflush(stdout);
-	return XML_OK;
-}
-
-int 
-main(int argc, char** argv)
-{
-	FILE * istream = stdin;
-	int nretval = -1;
-	if (argc>1) istream = fopen(argv[1], "rt+");
-	if (istream) {
-		xml_callbacks xml_cb = { NULL };
-		xml_cb.plaintext = cbplaintext;
-		xml_cb.tagbegin = cbtagbegin;
-
-		nretval = xml_parse(istream, &xml_cb, NULL);
-		if (istream!=stdin) fclose(istream);
-		if (ostream!=stdout) fclose(ostream);
-	}
-	return nretval;
-}