Merge branch 'develop' into lighthouse-speedup

Conflicts:
	src/reports.c
	src/reports.test.c
This commit is contained in:
Enno Rehling 2017-03-11 16:08:14 +01:00
commit 3f562e7fc9
476 changed files with 10197 additions and 11825 deletions

83
.gitignore vendored
View File

@ -1,39 +1,44 @@
*.orig
eressea.ini
Debug
Release
# SlickEdit
*.vtg
*.vpwhistu
# Microsoft Visual Studio build artefacts
src/Debug/
src/Release/
src/*.vcproj.*.user
Debug/
Release/
ipch/
*.ipch
*.ncb
*.opensdf
*.pdb
*.sdf
*.suo
*.user
*~
*.bak
bin/
build*/
*.log
*.log.*
tags
Thumbs.db
.gdb_history
*.cfg
*.cmd
tmp/
tests/config.lua
tests/reports/
tests/data/185.dat
tolua/
.vscode/
*.orig
eressea.ini
Debug
Release
# SlickEdit
*.vtg
*.vpwhistu
# Microsoft Visual Studio build artefacts
src/Debug/
src/Release/
src/*.vcproj.*.user
Debug/
Release/
ipch/
*.ipch
*.ncb
*.opensdf
*.pdb
*.sdf
*.suo
*.user
*~
*.bak
bin/
build*/
*.log
*.log.*
tags
Thumbs.db
.gdb_history
*.cfg
*.cmd
tmp/
tests/config.lua
tests/reports/
tests/data/185.dat
/quicklist/
/cutest/
/critbit/

15
.gitmodules vendored
View File

@ -4,18 +4,9 @@
[submodule "cmake"]
path = cmake
url = https://github.com/ennorehling/cmake.git
[submodule "quicklist"]
path = quicklist
url = https://github.com/ennorehling/quicklist.git
[submodule "critbit"]
path = critbit
url = https://github.com/ennorehling/critbit.git
[submodule "dlmalloc"]
path = dlmalloc
url = https://github.com/ennorehling/dlmalloc.git
[submodule "cutest"]
path = cutest
url = https://github.com/ennorehling/cutest.git
[submodule "iniparser"]
path = iniparser
url = https://github.com/ennorehling/iniparser.git
@ -26,6 +17,6 @@
path = storage
url = https://github.com/ennorehling/storage.git
branch = master
[submodule "tolua"]
path = tolua
url = https://github.com/ennorehling/tolua.git
[submodule "clibs"]
path = clibs
url = https://github.com/ennorehling/clibs

View File

@ -7,7 +7,8 @@ script: s/travis-build
addons:
apt:
packages:
- liblua5.2-dev
- liblua5.1-dev
- libtolua-dev
- libncurses5-dev
- libsqlite3-dev
- libxml2-dev

View File

@ -6,7 +6,6 @@ endif(WIN32)
project (eressea-server C)
enable_testing()
find_package (LibXml2)
find_package (SQLite3)
@ -14,63 +13,14 @@ find_package (Curses)
find_package (Lua REQUIRED)
find_package (ToLua REQUIRED)
INCLUDE (CheckIncludeFiles)
INCLUDE (CheckSymbolExists)
CHECK_INCLUDE_FILES (stdbool.h HAVE_STDBOOL_H)
CHECK_INCLUDE_FILES (windows.h HAVE_WINDOWS_H)
CHECK_INCLUDE_FILES (io.h HAVE_IO_H)
CHECK_INCLUDE_FILES (strings.h HAVE_STRINGS_H)
CHECK_INCLUDE_FILES (unistd.h HAVE_UNISTD_H)
IF (HAVE_IO_H)
CHECK_SYMBOL_EXISTS (_access "io.h" HAVE__ACCESS)
ENDIF (HAVE_IO_H)
IF (HAVE_WINDOWS_H)
CHECK_SYMBOL_EXISTS (_sleep "windows.h" HAVE__SLEEP)
ENDIF(HAVE_WINDOWS_H)
IF(HAVE_STDBOOL_H)
CHECK_SYMBOL_EXISTS (_Bool "stdbool.h" HAVE__BOOL)
ENDIF(HAVE_STDBOOL_H)
IF(HAVE_UNISTD_H)
CHECK_SYMBOL_EXISTS (sleep "unistd.h" HAVE_SLEEP)
CHECK_SYMBOL_EXISTS (usleep "unistd.h" HAVE_USLEEP)
CHECK_SYMBOL_EXISTS (access "unistd.h" HAVE_ACCESS)
ENDIF(HAVE_UNISTD_H)
CHECK_SYMBOL_EXISTS (strlcpy "string.h" HAVE_STRLCPY)
CHECK_SYMBOL_EXISTS (strlcat "string.h" HAVE_STRLCAT)
CHECK_SYMBOL_EXISTS (slprintf "string.h" HAVE_SLPRINTF)
CHECK_SYMBOL_EXISTS (strcasecmp "string.h" HAVE_STRCASECMP)
CHECK_SYMBOL_EXISTS (strncasecmp "string.h" HAVE_STRNCASECMP)
CHECK_SYMBOL_EXISTS (_strlwr "string.h" HAVE__STRLWR)
CHECK_SYMBOL_EXISTS (_strcmpl "string.h" HAVE__STRCMPL)
CHECK_SYMBOL_EXISTS (_strdup "string.h" HAVE__STRDUP)
CHECK_SYMBOL_EXISTS (_stricmp "string.h" HAVE__STRICMP)
CHECK_SYMBOL_EXISTS (_memicmp "string.h" HAVE__MEMICMP)
CHECK_SYMBOL_EXISTS (strcmpl "string.h" HAVE_STRCMPL)
CHECK_SYMBOL_EXISTS (strdup "string.h" HAVE_STRDUP)
CHECK_SYMBOL_EXISTS (stricmp "string.h" HAVE_STRICMP)
CHECK_SYMBOL_EXISTS (memicmp "string.h" HAVE_MEMICMP)
CHECK_SYMBOL_EXISTS (strlwr "string.h" HAVE_STRLWR)
CHECK_SYMBOL_EXISTS (snprintf "stdio.h" HAVE_SNPRINTF)
CHECK_SYMBOL_EXISTS (_snprintf "stdio.h" HAVE__SNPRINTF)
CHECK_SYMBOL_EXISTS (mkdir "sys/stat.h" HAVE_SYS_STAT_MKDIR)
CHECK_SYMBOL_EXISTS (mkdir "direct.h" HAVE_DIRECT_MKDIR)
CHECK_SYMBOL_EXISTS (_mkdir "direct.h" HAVE_DIRECT__MKDIR)
CONFIGURE_FILE (
${CMAKE_CURRENT_SOURCE_DIR}/autoconf.h.in
${CMAKE_BINARY_DIR}/include/autoconf.h)
INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/include)
add_definitions(-DUSE_AUTOCONF)
add_subdirectory (cutest)
add_subdirectory (cJSON)
add_subdirectory (storage)
add_subdirectory (iniparser)
add_subdirectory (quicklist)
add_subdirectory (critbit)
add_subdirectory (clibs)
add_subdirectory (process)
add_subdirectory (src eressea)
install(DIRECTORY res conf DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.xml")
install(DIRECTORY res conf DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.json")
install(DIRECTORY scripts DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.lua")
install(DIRECTORY lunit DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.lua")
install(DIRECTORY share DESTINATION ${CMAKE_INSTALL_PREFIX})

View File

@ -1,159 +0,0 @@
#pragma once
#ifndef CMAKE_AUTOCONF_H
#define CMAKE_AUTOCONF_H
#cmakedefine HAVE_STDBOOL_H 1
#cmakedefine HAVE_STRINGS_H 1
#cmakedefine HAVE_WINDOWS_H 1
#cmakedefine HAVE_IO_H 1
#cmakedefine HAVE_UNISTD_H 1
#cmakedefine HAVE__BOOL 1
#cmakedefine HAVE_STRCASECMP 1
#cmakedefine HAVE_STRNCASECMP 1
#cmakedefine HAVE__STRICMP 1
#cmakedefine HAVE_SNPRINTF 1
#cmakedefine HAVE__SNPRINTF 1
#cmakedefine HAVE_ACCESS 1
#cmakedefine HAVE__ACCESS 1
#cmakedefine HAVE_SLEEP 1
#cmakedefine HAVE_USLEEP 1
#cmakedefine HAVE__SLEEP 1
#cmakedefine HAVE_STRDUP 1
#cmakedefine HAVE__STRDUP 1
#cmakedefine HAVE_STRICMP 1
#cmakedefine HAVE__STRCMPL 1
#cmakedefine HAVE_STRCMPL 1
#cmakedefine HAVE__MEMICMP 1
#cmakedefine HAVE_MEMICMP 1
#cmakedefine HAVE__STRLWR 1
#cmakedefine HAVE_STRLWR 1
#cmakedefine HAVE_STRLCPY 1
#cmakedefine HAVE_STRLCAT 1
#cmakedefine HAVE_SLPRINTF 1
#cmakedefine HAVE_SYS_STAT_MKDIR 1
#cmakedefine HAVE_DIRECT_MKDIR 1
#cmakedefine HAVE_DIRECT__MKDIR 1
#if defined(HAVE_STRINGS_H)
#include <strings.h>
#endif
#if defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#if defined(HAVE_IO_H)
#include <io.h>
#endif
#if defined(HAVE_WINDOWS_H)
#include <windows.h>
#endif
#if defined(HAVE_STDBOOL_H)
# include <stdbool.h>
#else
# if ! HAVE__BOOL
# ifdef __cplusplus
typedef bool _Bool;
# else
typedef unsigned char _Bool;
# endif
# endif
# define bool _Bool
# define false 0
# define true 1
# define __bool_true_false_are_defined 1
#endif
#ifndef HAVE__ACCESS
#ifdef HAVE_ACCESS
#define _access(path, mode) access(path, mode)
#endif
#endif
#ifndef _A_RDONLY
#ifdef R_OK
#define _A_RDONLY R_OK
#endif
#endif
#if !defined(HAVE__MEMICMP)
#if defined(HAVE_MEMICMP)
#define _memicmp(a, b, n) memicmp(a, b, n)
#elif defined(HAVE_STRNCASECMP)
#define _memicmp(a, b, n) strncasecmp(a, b, n)
#else
#define _memicmp(a, b, n) lcp_memicmp(a, b, n)
#endif
#endif
#if !defined(HAVE__STRCMPL)
#if defined(HAVE_STRCMPL)
#define _strcmpl(a, b) strcmpl(a, b)
#elif defined(HAVE__STRICMP)
#define _strcmpl(a, b) _stricmp(a, b)
#elif defined(HAVE_STRICMP)
#define _strcmpl(a, b) stricmp(a, b)
#elif defined(HAVE_STRCASECMP)
#define _strcmpl(a, b) strcasecmp(a, b)
#else
#define _strcmpl(a, b) lcp_strcmpl(a, b)
#endif
#endif
#if defined(HAVE_DIRECT__MKDIR)
#include <direct.h>
#elif defined(HAVE_DIRECT_MKDIR)
#include <direct.h>
#define _mkdir(a) mkdir(a)
#elif defined(HAVE_SYS_STAT_MKDIR)
#include <sys/stat.h>
#define _mkdir(a) mkdir(a, 0777)
#endif
#if !defined(HAVE__STRLWR)
#if defined(HAVE_STRLWR)
#define _strlwr(a) strlwr(a)
#else
#define _strlwr(a) lcp_strlwr(a)
#endif
#endif
#if !defined(HAVE__STRDUP)
#if defined(HAVE_STRDUP)
#define _strdup(a) strdup(a)
#else
#define _strdup(a) lcp_strdup(a)
#endif
#endif
#if !defined(HAVE__SLEEP)
#if defined(HAVE_USLEEP)
#define _sleep(a) usleep(a)
#elif defined(HAVE_SLEEP)
#define _sleep(a) sleep((a)/1000)
#else
#define _sleep(a) lcp_sleep(a)
#endif
#endif
#if !defined(HAVE__SNPRINTF)
#if defined(HAVE_SNPRINTF)
#define _snprintf snprintf
#else
#define _snprintf lcp_snprintf
#endif
#endif
#ifndef _min
#define _min(a,b) ((a) < (b) ? (a) : (b))
#endif
#ifndef _max
#define _max(a,b) ((a) > (b) ? (a) : (b))
#endif
#if !defined(DBG_UNREFERENCED_PARAMETER)
#define DBG_UNREFERENCED_PARAMETER(x) x
#endif
#endif

1
clibs Submodule

@ -0,0 +1 @@
Subproject commit d286006a28c8aa7cd70ed7fd4cd172b50ade9727

View File

@ -5,12 +5,11 @@
"e2/terrains.json"
],
"disabled": [
"pay",
"jsreport"
],
"settings": {
"game.id": 2,
"game.name": "Eressea",
"game.name" : "Eressea",
"game.id" : 2,
"orders.default": "work",
"NewbieImmunity": 8,
"modules.wormholes": true,

13
conf/e2/locales.xml Normal file
View File

@ -0,0 +1,13 @@
<?xml version="1.0"?>
<eressea xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="config://core/messages.xml"/>
<xi:include href="config://core/de/strings.xml"/>
<xi:include href="config://core/en/strings.xml"/>
<xi:include href="config://game/strings.xml"/>
<xi:include href="config://game/spellinfo.xml" />
<xi:include href="config://default/names-undead.xml"/>
<xi:include href="config://default/names-skeletons.xml"/>
<xi:include href="config://default/names-zombies.xml"/>
<xi:include href="config://default/names-ghouls.xml"/>
<xi:include href="config://default/names-dragons.xml"/>
</eressea>

View File

@ -1,11 +1,5 @@
<?xml version="1.0"?>
<eressea xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="config://core/messages.xml"/>
<!-- Localization -->
<xi:include href="config://core/de/strings.xml"/>
<xi:include href="config://core/en/strings.xml"/>
<xi:include href="config://game/spellinfo.xml" />
<xi:include href="config://core/common/items.xml" />
<xi:include href="config://core/common/armor.xml" />
@ -26,10 +20,9 @@
<xi:include href="config://game/equipment.xml"/>
<xi:include href="config://game/items.xml"/>
<xi:include href="config://game/spells.xml"/>
<xi:include href="config://game/strings.xml"/>
<xi:include href="config://default/adamantium.xml"/>
<equipment>
<set name="first_unit">
<set name="autoseed_unit">
<item name="log" amount="50"/>
<item name="stone" amount="50"/>
<item name="iron" amount="50"/>
@ -42,30 +35,8 @@
<skill name="perception" level="30"/>
<skill name="melee" level="1"/>
</set>
<set name="new_faction">
<set name="autoseed_faction">
<item name="adamantium" amount="1"/>
</set>
</equipment>
<xi:include href="config://default/names-undead.xml"/>
<xi:include href="config://default/names-skeletons.xml"/>
<xi:include href="config://default/names-zombies.xml"/>
<xi:include href="config://default/names-ghouls.xml"/>
<xi:include href="config://default/names-dragons.xml"/>
<strings>
<string name="mailto">
<text locale="de">eressea-server@eressea.de</text>
<text locale="en">eressea-server@eressea.de</text>
</string>
<string name="newbie_info_game">
<text locale="de">Bitte denke daran, deine Befehle mit dem Betreff
ERESSEA 2 BEFEHLE an eressea-server@eressea.de zu senden.</text>
<text locale="en">Remember to send your orders to
eressea-server@eressea.de with the subject ERESSEA 2 ORDERS.</text>
</string>
<string name="mailcmd">
<text locale="de">ERESSEA 2 BEFEHLE</text>
<text locale="en">ERESSEA 2 ORDERS</text>
</string>
</strings>
</eressea>

View File

@ -1,9 +1,9 @@
{
"include": [
"keywords.json",
"include": [
"keywords.json",
"prefixes.json",
"e3/terrains.json"
],
],
"disabled": [
"herbalism",
"alchemy",
@ -25,8 +25,8 @@
"jsreport"
],
"settings": {
"game.id": 3,
"game.name": "E3",
"game.name" : "Eressea",
"game.id" : 3,
"orders.default": "work",
"database.gameid": 7,
"NewbieImmunity": 4,
@ -42,6 +42,7 @@
"nmr.timeout": 5,
"nmr.removenewbie": 0,
"GiveRestriction": 3,
"healing.forest": 2.0,
"hunger.long": false,
"hunger.damage": "1d9+9",
"hunger.demons.skill": true,

13
conf/e3/locales.xml Normal file
View File

@ -0,0 +1,13 @@
<?xml version="1.0"?>
<eressea xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="config://core/messages.xml"/>
<xi:include href="config://core/de/strings.xml"/>
<xi:include href="config://core/en/strings.xml"/>
<xi:include href="config://game/strings.xml"/>
<xi:include href="config://game/messages.xml"/>
<xi:include href="config://default/names-undead.xml"/>
<xi:include href="config://default/names-skeletons.xml"/>
<xi:include href="config://default/names-zombies.xml"/>
<xi:include href="config://default/names-ghouls.xml"/>
<xi:include href="config://default/names-dragons.xml"/>
</eressea>

View File

@ -1,8 +1,5 @@
<?xml version="1.0"?>
<eressea xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="config://core/messages.xml"/>
<xi:include href="config://core/de/strings.xml"/>
<xi:include href="config://core/en/strings.xml"/>
<xi:include href="config://core/common/items.xml"/>
<xi:include href="config://core/common/herbs.xml" />
<xi:include href="config://core/spoils.xml"/>
@ -15,8 +12,6 @@
<xi:include href="config://game/shipnames.xml"/>
<xi:include href="config://core/calendar.xml"/>
<xi:include href="config://game/items.xml" />
<xi:include href="config://game/strings.xml"/>
<xi:include href="config://game/messages.xml"/>
<xi:include href="config://game/races.xml"/>
<xi:include href="config://game/buildings.xml"/>
<xi:include href="config://game/equipment.xml"/>
@ -28,14 +23,6 @@
<calendar name="thirdage" newyear="month_1" start="1"/>
<equipment>
<set name="first_unit">
<item name="log" amount="10"/>
<item name="stone" amount="10"/>
<item name="money" amount="5000"/>
</set>
</equipment>
<xi:include href="config://default/names-undead.xml"/>
<xi:include href="config://default/names-skeletons.xml"/>
<xi:include href="config://default/names-zombies.xml"/>
@ -44,20 +31,4 @@
<rules>
<function name="wage" value="minimum_wage"/>
</rules>
<strings>
<string name="mailto">
<text locale="de">eressea-server@eressea.de</text>
<text locale="en">eressea-server@eressea.de</text>
</string>
<string name="newbie_info_game">
<text locale="de">Bitte denke daran, deine Befehle mit dem Betreff
ERESSEA 3 BEFEHLE an eressea-server@eressea.de zu senden.</text>
<text locale="en">Remember to send your orders to
eressea-server@eressea.de with the subject E3 ORDERS.</text>
</string>
<string name="mailcmd">
<text locale="de">ERESSEA 3 BEFEHLE</text>
<text locale="en">ERESSEA 3 ORDERS</text>
</string>
</strings>
</eressea>

View File

@ -222,14 +222,6 @@
"div": "100"
}
}
},
"default": {
"size": 0,
"herbs": [],
"seed": 0,
"road": 0,
"flags": [ "land", "walk", "sail", "fly" ],
"production": {}
}
}
}

View File

@ -1,16 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE catalog
PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN"
"http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<rewriteURI
uriStartString="config://core/"
rewritePrefix="../../res/core/" />
<rewriteURI
uriStartString="config://game/"
rewritePrefix="../../res/e3a/" />
<rewriteURI
uriStartString="config://default/"
rewritePrefix="../../res/" />
</catalog>

View File

@ -1,95 +0,0 @@
{
"include": [
"keywords.json",
"prefixes.json",
"e3/terrains.json"
],
"disabled": [
"herbalism",
"alchemy",
"entertainment",
"espionage",
"perception",
"stealth",
"taxation",
"trade",
"besiege",
"steal",
"buy",
"teach",
"sabotage",
"spy",
"tax",
"entertain",
"sell",
"jsreport"
],
"settings": {
"game.id": 4,
"game.name": "Deveron",
"orders.default": "work",
"database.gameid": 7,
"NewbieImmunity": 4,
"modules.astralspace": false,
"modules.wormholes": false,
"modules.markets": true,
"magic.regeneration": 0.75,
"magic.power": 0.5,
"resource.factor": 0.25,
"skills.cost.tactics": 500,
"entertain.base": 0,
"entertain.perlevel": 20,
"nmr.timeout": 5,
"nmr.removenewbie": 0,
"GiveRestriction": 3,
"hunger.long": false,
"hunger.damage": "1d9+9",
"hunger.demons.skill": true,
"hunger.demons.peasant_tolerance": true,
"init_spells": 0,
"recruit.allow_merge": true,
"study.expensivemigrants": true,
"study.speedup": 2,
"study.produceexp": 12,
"world.era": 3,
"rules.reserve.twophase": true,
"rules.owners.force_leave": false,
"rules.transfermen": false,
"stealth.faction.other": false,
"rules.stealth.anon_battle": false,
"rules.check_overload": false,
"rules.combat.goblinbonus": 3,
"rules.alliances": true,
"rules.combat.herospeed": 3,
"rules.combat.demon_vampire": 5,
"rules.combat.skill_bonus": 0,
"rules.combat.nat_armor": 1,
"rules.items.loot_divisor": 2,
"rules.items.give_divisor": 2,
"rules.move.owner_leave": true,
"rules.region_owners": true,
"rules.cavalry.skill": 2,
"rules.cavalry.mode": 1,
"rules.magic.multipotion": true,
"rules.magic.wol_effect": 5,
"rules.magic.factionlist": true,
"rules.magic.wol_type": 2,
"rules.blessed_harvest.flags": 1,
"rules.magic.elfpower": true,
"rules.magic.playerschools": "gwyrrd illaun draig cerddor",
"rules.build.other_buildings": true,
"rules.economy.taxation": 1,
"rules.food.flags": 2,
"rules.economy.roqf": 5,
"rules.economy.herbrot": 0,
"rules.region_owner_pay_building": "market harbour lighthouse",
"rules.dwarf_castles": true,
"rules.limit.faction": 250,
"rules.grow.formula": 1,
"rules.tactics.formula": 1,
"rules.help.mask": "fight guard money give",
"movement.shipspeed.skillbonus": 6,
"alliance.auto": "fight",
"alliance.restricted": "fight"
}
}

View File

@ -1,64 +0,0 @@
<?xml version="1.0"?>
<eressea xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="config://core/messages.xml"/>
<xi:include href="config://core/de/strings.xml"/>
<xi:include href="config://core/en/strings.xml"/>
<xi:include href="config://core/common/items.xml"/>
<xi:include href="config://core/common/herbs.xml" />
<xi:include href="config://core/spoils.xml"/>
<xi:include href="config://core/common/buildings.xml"/>
<xi:include href="config://game/familiars.xml"/>
<xi:include href="config://default/adamantium.xml" />
<xi:include href="config://game/ships.xml"/>
<xi:include href="config://game/shipnames.xml"/>
<xi:include href="config://core/calendar.xml"/>
<xi:include href="config://game/items.xml" />
<xi:include href="config://game/strings.xml"/>
<xi:include href="config://game/messages.xml"/>
<xi:include href="config://game/races.xml"/>
<xi:include href="config://game/buildings.xml"/>
<xi:include href="config://game/equipment.xml"/>
<xi:include href="config://game/spells.xml"/>
<xi:include href="config://game/luxuries.xml" />
<xi:include href="config://game/weapons.xml" />
<xi:include href="config://game/armor.xml" />
<xi:include href="config://game/resources.xml" />
<calendar name="thirdage" newyear="month_1" start="1"/>
<equipment>
<set name="first_unit">
<item name="log" amount="10"/>
<item name="stone" amount="10"/>
<item name="money" amount="5000"/>
</set>
</equipment>
<xi:include href="config://default/names-undead.xml"/>
<xi:include href="config://default/names-skeletons.xml"/>
<xi:include href="config://default/names-zombies.xml"/>
<xi:include href="config://default/names-ghouls.xml"/>
<xi:include href="config://default/names-dragons.xml"/>
<rules>
<function name="wage" value="minimum_wage"/>
</rules>
<strings>
<string name="mailto">
<text locale="de">eressea-server@eressea.de</text>
<text locale="en">eressea-server@eressea.de</text>
</string>
<string name="newbie_info_game">
<text locale="de">Bitte denke daran, deine Befehle mit dem Betreff
ERESSEA 4 BEFEHLE an eressea-server@eressea.de zu senden.</text>
<text locale="en">Remember to send your orders to
eressea-server@eressea.de with the subject ERESSEA 4 ORDERS.</text>
</string>
<string name="mailcmd">
<text locale="de">ERESSEA 4 BEFEHLE</text>
<text locale="en">ERESSEA 4 ORDERS</text>
</string>
</strings>
</eressea>

View File

@ -1,5 +1,7 @@
[eressea]
[game]
email = eressea-server@kn-bremen.de
sender = Eressea Server
name = Eressea
base = .
report = reports
verbose = 0

View File

@ -1,69 +1,69 @@
{
"keywords": {
"en" : {
"grow": [ "GROW", "BREED", "PLANT" ],
"combat": [ "COMBAT", "FIGHT" ]
},
"de": {
"//" : "//",
"banner": "BANNER",
"work": [ "ARBEITE", "ARBEITEN" ],
"attack": ["ATTACKIERE", "ATTACKIEREN"],
"steal": [ "BEKLAUE", "BEKLAUEN" ],
"besiege": ["BELAGERE", "BELAGERN" ],
"name": [ "BENENNE", "BENENNEN" ],
"use": [ "BENUTZE", "BENUTZEN" ],
"describe": [ "BESCHREIBE", "BESCHREIBEN" ],
"enter": ["BETRETE", "BETRETEN"],
"guard": ["BEWACHE", "BEWACHEN"],
"message": "BOTSCHAFT",
"end": "ENDE",
"ride": ["FAHRE", "FAHREN"],
"number": "NUMMER",
"follow": ["FOLGE","FOLGEN"],
"research": ["FORSCHE", "FORSCHEN"],
"give": "GIB",
"help": [ "HELFE", "HELFEN" ],
"combat": [ "KÄMPFE", "KÄMPFEN" ],
"ready" : "KAMPFZAUBER",
"buy" : [ "KAUFE", "KAUFEN"],
"contact": [ "KONTAKT", "KONTAKTIEREN"],
"teach": ["LEHRE", "LEHREN"],
"study": ["LERNE", "LERNEN"],
"make": ["MACHE", "MACHEN"],
"maketemp": ["MACHE TEMP", "MACHETEMP"],
"move" : "NACH",
"password" : "PASSWORT",
"loot" : ["PLÜNDERE", "PLÜNDERN"],
"recruit": ["REKRUTIERE", "REKRUTIEREN"],
"reserve": ["RESERVIERE", "RESERVIEREN"],
"route": "ROUTE",
"sabotage": ["SABOTIERE", "SABOTIEREN"],
"option": "OPTION",
"spy": ["SPIONIERE", "SPIONIEREN"],
"quit": "STIRB",
"hide": ["TARNE", "TARNEN"],
"carry": ["TRANSPORTIERE", "TRANSPORTIEREN"],
"tax": ["TREIBE", "TREIBEN", "STEUERN"],
"entertain": ["UNTERHALTE", "UNTERHALTEN"],
"sell": ["VERKAUFE", "VERKAUFEN"],
"leave": ["VERLASSE", "VERLASSEN"],
"forget": ["VERGISS", "VERGESSEN"],
"cast": ["ZAUBERE", "ZAUBERN"],
"show": ["ZEIGE", "ZEIGEN"],
"destroy": ["ZERSTÖRE", "ZERSTÖREN"],
"grow": ["ZÜCHTE", "PFLANZE", "ZÜCHTEN", "PFLANZEN"],
"default": "DEFAULT",
"origin": "URSPRUNG",
"email": "EMAIL",
"piracy": "PIRATERIE",
"group": "GRUPPE",
"sort": ["SORTIERE", "SORTIEREN"],
"prefix": "PRÄFIX",
"alliance": "ALLIANZ",
"claim": ["BEANSPRUCHE", "BEANSPRUCHEN"],
"promote": ["BEFÖRDERE", "BEFÖRDERUNG"],
"pay": ["BEZAHLE", "BEZAHLEN"]
}
}
"keywords": {
"en" : {
"grow": [ "GROW", "BREED", "PLANT" ],
"combat": [ "COMBAT", "FIGHT" ]
},
"de": {
"//" : "//",
"banner": "BANNER",
"work": [ "ARBEITE", "ARBEITEN" ],
"attack": ["ATTACKIERE", "ATTACKIEREN"],
"steal": [ "BEKLAUE", "BEKLAUEN" ],
"besiege": ["BELAGERE", "BELAGERN" ],
"name": [ "BENENNE", "BENENNEN" ],
"use": [ "BENUTZE", "BENUTZEN" ],
"describe": [ "BESCHREIBE", "BESCHREIBEN" ],
"enter": ["BETRETE", "BETRETEN"],
"guard": ["BEWACHE", "BEWACHEN"],
"message": "BOTSCHAFT",
"end": "ENDE",
"ride": ["FAHRE", "FAHREN"],
"number": "NUMMER",
"follow": ["FOLGE","FOLGEN"],
"research": ["FORSCHE", "FORSCHEN"],
"give": "GIB",
"help": [ "HELFE", "HELFEN" ],
"combat": [ "KÄMPFE", "KÄMPFEN" ],
"ready" : "KAMPFZAUBER",
"buy" : [ "KAUFE", "KAUFEN"],
"contact": [ "KONTAKT", "KONTAKTIEREN"],
"teach": ["LEHRE", "LEHREN"],
"study": ["LERNE", "LERNEN"],
"make": ["MACHE", "MACHEN"],
"maketemp": ["MACHE TEMP", "MACHETEMP"],
"move" : "NACH",
"password" : "PASSWORT",
"loot" : ["PLÜNDERE", "PLÜNDERN"],
"recruit": ["REKRUTIERE", "REKRUTIEREN"],
"reserve": ["RESERVIERE", "RESERVIEREN"],
"route": "ROUTE",
"sabotage": ["SABOTIERE", "SABOTIEREN"],
"option": "OPTION",
"spy": ["SPIONIERE", "SPIONIEREN"],
"quit": "STIRB",
"hide": ["TARNE", "TARNEN"],
"carry": ["TRANSPORTIERE", "TRANSPORTIEREN"],
"tax": ["TREIBE", "TREIBEN", "STEUERN"],
"entertain": ["UNTERHALTE", "UNTERHALTEN"],
"sell": ["VERKAUFE", "VERKAUFEN"],
"leave": ["VERLASSE", "VERLASSEN"],
"forget": ["VERGISS", "VERGESSEN"],
"cast": ["ZAUBERE", "ZAUBERN"],
"show": ["ZEIGE", "ZEIGEN"],
"destroy": ["ZERSTÖRE", "ZERSTÖREN"],
"grow": ["ZÜCHTE", "PFLANZE", "ZÜCHTEN", "PFLANZEN"],
"default": "DEFAULT",
"origin": "URSPRUNG",
"email": "EMAIL",
"piracy": "PIRATERIE",
"group": "GRUPPE",
"sort": ["SORTIERE", "SORTIEREN"],
"prefix": "PRÄFIX",
"alliance": "ALLIANZ",
"claim": ["BEANSPRUCHE", "BEANSPRUCHEN"],
"promote": ["BEFÖRDERE", "BEFÖRDERUNG"],
"pay": ["BEZAHLE", "BEZAHLEN"]
}
}
}

@ -1 +0,0 @@
Subproject commit 971836241277e37274aa3110344836499816ff21

1
cutest

@ -1 +0,0 @@
Subproject commit 6e268687dbf6ae55afb63210c3753530d216a622

View File

@ -6,7 +6,7 @@ if [ -z $ERESSEA ]; then
fi
GAME=$ERESSEA/game-$1
GAME_NAME=$(grep name $GAME/eressea.ini | sed 's/.*=\s*//')
GAME_NAME=$(grep -w name $GAME/eressea.ini | sed 's/.*=\s*//')
TURN=$2
if [ -z $TURN ]
@ -20,5 +20,5 @@ if [ ! -d $GAME/reports ]; then
fi
cd $GAME/reports
$HOME/bin/compress.py $TURN "$GAME_NAME"
$ERESSEA/server/bin/compress.py $TURN "$GAME_NAME"
cd -

View File

@ -7,7 +7,6 @@ if [ -e ${ERESSEA}/build/.preview ]; then
fi
SRC=${ERESSEA}/git
${SRC}/s/preview build ${branch} || exit $?
${SRC}/s/preview version
for game in 2 3 4 ; do
${SRC}/s/preview -g ${game} run && \
${SRC}/s/preview -g ${game} send

View File

@ -3,22 +3,53 @@
from email.Utils import parseaddr
from email.Parser import Parser
from os import mkdir, rename, stat, utime, unlink, symlink
from os.path import exists
import os
import os.path
import ConfigParser
from re import compile, IGNORECASE
from stat import ST_MTIME
from string import upper, split, replace
import logging
from sys import argv, stdin, exit
import sys
from sys import stdin
from time import ctime, sleep, time
from socket import gethostname
from rfc822 import parsedate_tz, mktime_tz
LOG_FILENAME='/home/eressea/log/orders.log'
if 'ERESSEA' in os.environ:
dir = os.environ['ERESSEA']
elif 'HOME' in os.environ:
dir = os.path.join(os.environ['HOME'], '/eressea')
else: # WTF? No HOME?
dir = "/home/eressea/eressea"
if not os.path.isdir(dir):
print "please set the ERESSEA environment variable to the install path"
sys.exit(1)
rootdir = dir
game = int(sys.argv[1])
gamedir = os.path.join(rootdir, "game-%d" % (game, ))
frommail = 'eressea-server@kn-bremen.de'
gamename = 'Eressea'
sender = '%s Server <%s>' % (gamename, frommail)
inifile = os.path.join(gamedir, 'eressea.ini')
if not os.path.exists(inifile):
print "no such file: " . inifile
else:
config = ConfigParser.ConfigParser()
config.read(inifile)
if config.has_option('game', 'email'):
frommail = config.get('game', 'email')
if config.has_option('game', 'name'):
gamename = config.get('game', 'name')
if config.has_option('game', 'sender'):
sender = config.get('game', 'sender')
else:
sender = "%s Server <%s>" % (gamename, frommail)
config = None
prefix = 'turn-'
hostname = gethostname()
# base directory for all your games:
rootdir = "/home/eressea"
orderbase = "orders.dir"
sendmail = True
# maximum number of reports per sender:
@ -28,36 +59,21 @@ writeheaders = True
# reject all html email?
rejecthtml = True
games = [
{
"from" : "Eressea Server <eressea-server@eressea.de>",
"prefix" : "Eressea"
},
{
"from" : "Eressea Server <eressea-server@eressea.de>",
"prefix": "E3"
},
{
"from" : "Eressea Server <eressea-server@eressea.de>",
"prefix": "E4"
},
]
def unlock_file(filename):
try:
unlink(filename+".lock")
os.unlink(filename+".lock")
except:
print "could not unlock %s.lock, file not found" % filename
def lock_file(filename):
i = 0
wait = 1
if not exists(filename):
if not os.path.exists(filename):
file=open(filename, "w")
file.close()
while True:
try:
symlink(filename, filename+".lock")
os.symlink(filename, filename+".lock")
return
except:
i = i+1
@ -74,17 +90,17 @@ messages = {
"software and re-send the orders.",
"multipart-de" :
"FEHLER: Die von dir eingeschickte Mail enthält keinen " \
"FEHLER: Die von dir eingeschickte Mail enth<EFBFBD>lt keinen " \
"Text. Evtl. hast Du den Zug als HTML oder als anderweitig " \
"ungültig formatierte Mail ingeschickt. Wir können ihn " \
"deshalb nicht berücksichtigen. Schicke den Zug nochmals " \
"ung<EFBFBD>ltig formatierte Mail ingeschickt. Wir k<>nnen ihn " \
"deshalb nicht ber<EFBFBD>cksichtigen. Schicke den Zug nochmals " \
"als reinen Text ohne Formatierungen ein.",
"maildate-de":
"Es erreichte uns bereits ein Zug mit einem späteren " \
"Es erreichte uns bereits ein Zug mit einem sp<EFBFBD>teren " \
"Absendedatum (%s > %s). Entweder ist deine " \
"Systemzeit verstellt, oder ein Zug hat einen anderen Zug von " \
"dir auf dem Transportweg überholt. Entscheidend für die " \
"dir auf dem Transportweg <EFBFBD>berholt. Entscheidend f<>r die " \
"Auswertungsreihenfolge ist das Absendedatum, d.h. der Date:-Header " \
"deiner Mail.",
@ -173,8 +189,8 @@ def available_file(dirname, basename):
ver = 0
maxdate = 0
filename = "%s/%s,%s,%d" % (dirname, basename, hostname, ver)
while exists(filename):
maxdate = max(stat(filename)[ST_MTIME], maxdate)
while os.path.exists(filename):
maxdate = max(os.stat(filename)[ST_MTIME], maxdate)
ver = ver + 1
filename = "%s/%s,%s,%d" % (dirname, basename, hostname, ver)
if ver >= maxfiles:
@ -234,7 +250,7 @@ def copy_orders(message, filename, sender):
from os.path import split
dirname, basename = split(filename)
dirname = dirname + '/headers'
if not exists(dirname): mkdir(dirname)
if not os.path.exists(dirname): os.mkdir(dirname)
outfile = open(dirname + '/' + basename, "w")
for name, value in message.items():
outfile.write(name + ": " + value + "\n")
@ -265,104 +281,98 @@ def copy_orders(message, filename, sender):
# create a file, containing:
# game=0 locale=de file=/path/to/filename email=rcpt@domain.to
def accept(game, locale, stream, extend=None):
global rootdir, orderbase
global rootdir, orderbase, gamedir, gamename, sender
if extend is not None:
orderbase = orderbase + ".pre-" + extend
gamename = games[game-2]["prefix"]
gamedir = rootdir+"/eressea/game-%d" % (game, )
savedir = gamedir+"/"+orderbase
savedir = os.path.join(gamedir, orderbase)
# check if it's one of the pre-sent orders.
# create the save-directories if they don't exist
if not exists(gamedir): mkdir(gamedir)
if not exists(savedir): mkdir(savedir)
if not os.path.exists(gamedir): os.mkdir(gamedir)
if not os.path.exists(savedir): os.mkdir(savedir)
# parse message
message = Parser().parse(stream)
sender = get_sender(message)
logger = logging.getLogger(sender)
email = get_sender(message)
logger = logging.getLogger(email)
# write syslog
if sender is None or valid_email(sender)==0:
logger.warning("invalid email address: " + str(sender))
if email is None or valid_email(email)==0:
logger.warning("invalid email address: " + str(email))
return -1
logger.info("received orders from " + sender)
logger.info("received orders from " + email)
# get an available filename
lock_file(gamedir + "/orders.queue")
maxdate, filename = available_file(savedir, prefix + sender)
maxdate, filename = available_file(savedir, prefix + email)
if filename is None:
logger.warning("more than " + str(maxfiles) + " orders from " + sender)
logger.warning("more than " + str(maxfiles) + " orders from " + email)
return -1
# copy the orders to the file
text_ok = copy_orders(message, filename, sender)
text_ok = copy_orders(message, filename, email)
unlock_file(gamedir + "/orders.queue")
warning, msg, fail = None, "", False
maildate = message.get("Date")
if maildate != None:
turndate = mktime_tz(parsedate_tz(maildate))
utime(filename, (turndate, turndate))
os.utime(filename, (turndate, turndate))
logger.debug("mail date is '%s' (%d)" % (maildate, turndate))
if turndate < maxdate:
logger.warning("inconsistent message date " + sender)
logger.warning("inconsistent message date " + email)
warning = " (" + messages["warning-" + locale] + ")"
msg = msg + formatpar(messages["maildate-" + locale] % (ctime(maxdate),ctime(turndate)), 76, 2) + "\n"
else:
logger.warning("missing message date " + sender)
logger.warning("missing message date " + email)
warning = " (" + messages["warning-" + locale] + ")"
msg = msg + formatpar(messages["nodate-" + locale], 76, 2) + "\n"
if not text_ok:
warning = " (" + messages["error-" + locale] + ")"
msg = msg + formatpar(messages["multipart-" + locale], 76, 2) + "\n"
logger.warning("rejected - no text/plain in orders from " + sender)
unlink(filename)
logger.warning("rejected - no text/plain in orders from " + email)
os.unlink(filename)
savedir = savedir + "/rejected"
if not exists(savedir): mkdir(savedir)
if not os.path.exists(savedir): os.mkdir(savedir)
lock_file(gamedir + "/orders.queue")
maxdate, filename = available_file(savedir, prefix + sender)
maxdate, filename = available_file(savedir, prefix + email)
store_message(message, filename)
unlock_file(gamedir + "/orders.queue")
fail = True
if sendmail and warning is not None:
frommail = games[key]["from"]
subject = gamename + " " + messages["subject-"+locale] + warning
mail = "Subject: %s\nFrom: %s\nTo: %s\n\n" % (subject, frommail, sender) + msg
mail = "Subject: %s\nFrom: %s\nTo: %s\n\n" % (subject, sender, email) + msg
from smtplib import SMTP
server = SMTP("localhost")
server.sendmail(frommail, sender, mail)
server.sendmail(sender, email, mail)
server.close()
if not sendmail:
print text_ok, fail, sender
print text_ok, fail, email
print filename
if not fail:
lock_file(gamedir + "/orders.queue")
queue = open(gamedir + "/orders.queue", "a")
queue.write("email=%s file=%s locale=%s game=%s\n" % (sender, filename, locale, game))
queue.write("email=%s file=%s locale=%s game=%s\n" % (email, filename, locale, game))
queue.close()
unlock_file(gamedir + "/orders.queue")
logger.info("done - accepted orders from " + sender)
logger.info("done - accepted orders from " + email)
return 0
# the main body of the script:
try:
os.mkdir(os.path.join(rootdir, 'log'))
except:
pass # already exists?
LOG_FILENAME=os.path.join(rootdir, 'log/orders.log')
logging.basicConfig(level=logging.DEBUG, filename=LOG_FILENAME)
logger = logging
delay=None # TODO: parse the turn delay
try:
game = int(argv[1])
except:
game = argv[1]
if game[:3]=='e3a':
game = 3
elif game[:7]=='eressea':
game = 2
locale = argv[2]
locale = sys.argv[2]
infile = stdin
if len(argv)>3:
infile = open(argv[3], "r")
if len(sys.argv)>3:
infile = open(sys.argv[3], "r")
retval = accept(game, locale, infile, delay)
if infile!=stdin:
infile.close()
exit(retval)
sys.exit(retval)

View File

@ -2,7 +2,10 @@
# -*- coding: iso-8859-1 -*-
from os import unlink, symlink, rename, popen, tmpfile
from os.path import exists
import sys
import os
import os.path
import ConfigParser
from re import compile, IGNORECASE
from string import split, join, upper, strip
from sys import argv, exit
@ -14,9 +17,8 @@ from epasswd import EPasswd
def pwd_get_email(faction, pwd, pwdfile=None):
return None
def splitfilename(filename):
from os.path import split
return split(filename)
def split_filename(filename):
return os.path.split(filename)
def unlock_file(filename):
try:
@ -28,7 +30,7 @@ def unlock_file(filename):
def lock_file(filename):
i = 0
wait = 1
if not exists(filename):
if not os.path.exists(filename):
file=open(filename, "w")
file.close()
while True:
@ -62,17 +64,47 @@ messages = {
"error-en": "Error",
}
game = int(sys.argv[1])
echeck_cmd = "/home/eressea/echeck/echeck.sh"
maxlines = 25
# base directory for all your games:
rootdir = "/home/eressea/eressea"
frommail = "Eressea Server <eressea-server@eressea.de>"
orderbase = "orders.dir"
sendmail = True
maxlines = 25
echeck_cmd = "/home/eressea/echeck/echeck.sh"
install_dir = "/home/eressea/eressea"
if 'ERESSEA' in os.environ:
install_dir = os.environ['ERESSEA']
elif 'HOME' in os.environ:
install_dir = os.path.join(os.environ['HOME'], '/eressea')
if not os.path.isdir(install_dir):
print "please set the ERESSEA environment variable to the install path"
sys.exit(1)
game_dir = os.path.join(install_dir, "game-%d" % (game, ))
frommail = 'eressea-server@kn-bremen.de'
gamename = 'Eressea'
sender = '%s Server <%s>' % (gamename, frommail)
inifile = os.path.join(game_dir, 'eressea.ini')
if not os.path.exists(inifile):
print "no such file: " . inifile
else:
config = ConfigParser.ConfigParser()
config.read(inifile)
if config.has_option('game', 'email'):
frommail = config.get('game', 'email')
if config.has_option('game', 'name'):
gamename = config.get('game', 'name')
if config.has_option('game', 'sender'):
sender = config.get('game', 'sender')
else:
sender = "%s Server <%s>" % (gamename, frommail)
config = None
queue_file = os.path.join(game_dir, "orders.queue")
if not os.path.exists(queue_file):
exit(0)
# regular expression that finds the start of a faction
fact_re = compile("^\s*(eressea|vinyambar|partei|faction)\s+([a-zA-Z0-9]+)\s+\"?([^\"]*)\"?", IGNORECASE)
fact_re = compile("^\s*(eressea|partei|faction)\s+([a-zA-Z0-9]+)\s+\"?([^\"]*)\"?", IGNORECASE)
def check_pwd(filename, email, pw_data):
results = []
@ -98,7 +130,7 @@ def check_pwd(filename, email, pw_data):
return results
def echeck(filename, locale, rules):
dirname, filename = splitfilename(filename)
dirname, filename = split_filename(filename)
stream = popen("%s %s %s %s %s" % (echeck_cmd, locale, filename, dirname, rules), 'r')
lines = stream.readlines()
if len(lines)==0:
@ -111,14 +143,6 @@ def echeck(filename, locale, rules):
stream.close()
return mail
## the main body of the script
game = int(argv[1])
basedir = rootdir + "/game-%d" % (game, )
queuename = basedir + "/orders.queue"
if not exists(queuename):
exit(0)
# parse the queue file -
#print "connecting to SMTP..."
from smtplib import SMTP
@ -127,16 +151,17 @@ try:
except:
print "could not connect to SMTP server"
exit(0)
#print "reading password file..."
pw_data = EPasswd(basedir + "/passwd")
pw_data = EPasswd(os.path.join(game_dir,"passwd"))
#print "reading orders.queue..."
# move the queue file to a save space while locking it:
try:
lock_file(queuename)
lock_file(queue_file)
except:
exit(0)
queuefile = open(queuename, "r")
queuefile = open(queue_file, "r")
lines = queuefile.readlines()
queuefile.close()
@ -154,9 +179,9 @@ tmpfile.close()
openlog("orders")
unlink(queuename)
unlink(queue_file)
try:
unlock_file(queuename)
unlock_file(queue_file)
except:
pass
@ -170,15 +195,15 @@ for line in lines:
email = dict["email"]
locale = dict["locale"]
game = int(dict["game"])
file = dict["file"]
infile = dict["file"]
gamename='[E%d]' % game
rules='e%d' % game
warning = ""
failed = True
results = check_pwd(file, email, pw_data)
logfile = open(basedir+"/zug.log", "a")
dirname, filename = splitfilename(file)
msg = messages["validate-"+locale] + " " + filename + "\n\n"
results = check_pwd(infile, email, pw_data)
logfile = open(os.path.join(game_dir, "zug.log"), "a")
dirname, filename = split_filename(infile)
msg = messages["validate-"+locale] + " " + infile + "\n\n"
for faction, game_email, success, pwd in results:
msg = msg + messages["faction-"+locale] + " " + faction + "\n"
if success: failed = False
@ -189,25 +214,24 @@ for line in lines:
if failed:
warning = " (" + messages["warning-" + locale] + ")"
syslog("failed - no valid password in " + file)
syslog("failed - no valid password in " + infile)
else:
result = echeck(file, locale, rules)
if email=='eressea':
print result
continue
elif result is None:
result = None
if os.path.exists(echeck_cmd):
result = echeck(infile, locale, rules)
if result is None:
# echeck did not finish
msg = msg + "Echeck was killed. Your turn was accepted, but could not be verified.\n"
msg = msg + "Echeck is broken. Your turn was accepted, but could not be verified.\n"
warning = " (" + messages["warning-" + locale] + ")"
syslog("process - echeck got killed, " + file)
syslog("process - echeck broken, " + infile)
else:
msg = msg + result
syslog("process - checked orders in " + file)
syslog("process - checked orders in " + infile)
subject = gamename + " " + messages["subject-" + locale] + warning
msg = "Subject: %s\nFrom: %s\nTo: %s\nContent-Type: text/plain; charset=utf-8\n\n" % (subject, frommail, email) + msg
msg = "Subject: %s\nFrom: %s\nTo: %s\nContent-Type: text/plain; charset=utf-8\n\n" % (subject, sender, email) + msg
try:
server.sendmail(frommail, email, msg)
server.sendmail(sender, email, msg)
except:
syslog("failed - cannot send to " + email)

View File

@ -8,7 +8,6 @@ if [ ! -f reports.txt ]; then
exit -2
fi
source $HOME/bin/functions.sh
source $ERESSEA/etc/eressea.conf
TEMPLATE=report-mail.txt
if [ "$1" == "-Lde" ]

View File

@ -8,13 +8,12 @@ if [ -z $ERESSEA ]; then
exit -2
fi
source $HOME/bin/functions.sh
source $HOME/etc/eressea.conf
GAME=$1
EMAIL=$2
FACTION=$3
PASSWD=$4
echo "$GAME $EMAIL $FACTION $PASSWD" >> /tmp/report.log
#echo "$GAME $EMAIL $FACTION $PASSWD" >> /tmp/report.log
function reply() {
echo $@ | mutt -s "Reportnachforderung Partei ${FACTION}" $EMAIL

View File

@ -8,7 +8,6 @@ if [ -z $ERESSEA ]; then
exit -2
fi
source $HOME/bin/functions.sh
source $ERESSEA/etc/eressea.conf
if [ ! -z $1 ]; then
GAME=$ERESSEA/game-$1

@ -1 +0,0 @@
Subproject commit f837dd31e5fcf13c706db1ac2c86b7de3e706578

View File

@ -1,14 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<resource name="adamantium" limited="yes" material="rm_adamantium">
<resource name="adamantium" limited="yes" material="yes">
<item weight="200" score="200">
<construction skill="mining" minskill="8"/>
</item>
<resourcelimit>
<modifier type="require" building="mine"/>
<guard flag="mining"/>
</resourcelimit>
<modifier type="require" building="mine"/>
</resource>
<resource name="adamantiumaxe">

View File

@ -1,24 +1,23 @@
<?xml version="1.0"?>
<building name="castle" capacity="1" fort="yes">
<function name="name" value="castle_name_2"/>
<function name="protection" value="building_protection"/>
<function name="taxes" value="lua_building_taxes"/>
<construction skill="building" minskill="1" maxsize="10" defense_bonus="0">
<construction skill="building" minskill="1" maxsize="10">
<requirement type="stone" quantity="1"/>
</construction>
<construction skill="building" minskill="2" maxsize="40" defense_bonus="1">
<construction skill="building" minskill="2" maxsize="40">
<requirement type="stone" quantity="1"/>
</construction>
<construction skill="building" minskill="3" maxsize="200" defense_bonus="3">
<construction skill="building" minskill="3" maxsize="200">
<requirement type="stone" quantity="1"/>
</construction>
<construction skill="building" minskill="4" maxsize="1000" defense_bonus="5">
<construction skill="building" minskill="4" maxsize="1000">
<requirement type="stone" quantity="1"/>
</construction>
<construction skill="building" minskill="5" maxsize="5000" defense_bonus="8">
<construction skill="building" minskill="5" maxsize="5000">
<requirement type="stone" quantity="1"/>
</construction>
<construction skill="building" minskill="6" defense_bonus="12">
<construction skill="building" minskill="6">
<requirement type="stone" quantity="1"/>
</construction>
</building>

View File

@ -1,26 +1,25 @@
<?xml version="1.0"?>
<building name="castle" capacity="1" fort="yes">
<function name="name" value="castle_name"/>
<function name="protection" value="building_protection"/>
<construction skill="building" minskill="1" maxsize="2" defense_bonus="0">
<construction skill="building" minskill="1" maxsize="2">
<requirement type="stone" quantity="1"/>
</construction>
<construction skill="building" minskill="1" maxsize="8" defense_bonus="0">
<construction skill="building" minskill="1" maxsize="8">
<requirement type="stone" quantity="1"/>
</construction>
<construction skill="building" minskill="2" maxsize="40" defense_bonus="1">
<construction skill="building" minskill="2" maxsize="40">
<requirement type="stone" quantity="1"/>
</construction>
<construction skill="building" minskill="3" maxsize="200" defense_bonus="3">
<construction skill="building" minskill="3" maxsize="200">
<requirement type="stone" quantity="1"/>
</construction>
<construction skill="building" minskill="4" maxsize="1000" defense_bonus="5">
<construction skill="building" minskill="4" maxsize="1000">
<requirement type="stone" quantity="1"/>
</construction>
<construction skill="building" minskill="5" maxsize="5000" defense_bonus="8">
<construction skill="building" minskill="5" maxsize="5000">
<requirement type="stone" quantity="1"/>
</construction>
<construction skill="building" minskill="6" defense_bonus="12">
<construction skill="building" minskill="6">
<requirement type="stone" quantity="1"/>
</construction>
</building>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="plate">
<item weight="400" score="150">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="armorer" minskill="4">
<requirement type="iron" quantity="5"/>
</construction>

View File

@ -4,9 +4,7 @@
<building name="illusioncastle" capacity="0" maxcapacity="0" maxsize="0" nobuild="yes"/>
<building name="xmas_exit" maxsize="10" maxcapacity="2" nobuild="yes" nodestroy="yes" unique="yes"/>
<building name="caldera" capacity="1" nodestroy="yes" nobuild="yes"/>
<building name="genericbuilding" namechange="no" maxsize="1" nobuild="yes"/>
<building name="artacademy" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/>
<building name="artsculpture" namechange="no" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/>
<building name="building" namechange="no" maxsize="1" nobuild="yes"/>
<building name="blessedstonecircle" maxcapacity="3" maxsize="100" nobuild="yes" magic="yes" magres="60" magresbonus="30" auraregen="1.50">
<construction skill="building" minskill="2" reqsize="100" maxsize="100">
@ -23,7 +21,7 @@
</building>
<building name="inn" capacity="1">
<maintenance type="money" amount="5" variable="yes" vital="yes"/>
<maintenance type="money" amount="5" variable="yes"/>
<construction skill="building" minskill="2" reqsize="10">
<requirement type="iron" quantity="10"/>
<requirement type="log" quantity="30"/>
@ -34,7 +32,7 @@
<building name="tunnel" capacity="1" maxsize="100">
<maintenance type="stone" amount="2"/>
<maintenance type="money" amount="100" vital="yes"/>
<maintenance type="money" amount="100"/>
<construction skill="building" minskill="6" reqsize="100" maxsize="100">
<requirement type="iron" quantity="100"/>
<requirement type="log" quantity="500"/>
@ -45,7 +43,7 @@
<building name="caravan" capacity="1" maxsize="10">
<maintenance type="horse" amount="2"/>
<maintenance type="money" amount="3000" vital="yes"/>
<maintenance type="money" amount="3000"/>
<construction skill="building" minskill="2" reqsize="10" maxsize="10">
<requirement type="iron" quantity="10"/>
<requirement type="log" quantity="50"/>
@ -56,7 +54,7 @@
<building name="dam" capacity="1" maxsize="50">
<maintenance type="log" amount="3"/>
<maintenance type="money" amount="1000" vital="yes"/>
<maintenance type="money" amount="1000"/>
<construction skill="building" minskill="4" reqsize="50" maxsize="50">
<requirement type="iron" quantity="50"/>
<requirement type="log" quantity="500"/>
@ -75,7 +73,7 @@
</building>
<building name="stables" capacity="1">
<maintenance type="money" amount="150" vital="yes"/>
<maintenance type="money" amount="150"/>
<construction skill="building" minskill="2">
<requirement type="log" quantity="4"/>
<requirement type="stone" quantity="2"/>
@ -85,7 +83,7 @@
</building>
<building name="sawmill" capacity="1">
<maintenance type="money" amount="250" vital="yes"/>
<maintenance type="money" amount="250"/>
<construction skill="building" minskill="3">
<requirement type="log" quantity="5"/>
<requirement type="stone" quantity="5"/>
@ -96,7 +94,7 @@
<building name="smithy" capacity="1">
<function name="init" value="init_smithy"/>
<maintenance type="money" amount="300" vital="yes"/>
<maintenance type="money" amount="300"/>
<maintenance type="log" amount="1"/>
<construction skill="building" minskill="3">
<requirement type="log" quantity="5"/>
@ -107,7 +105,7 @@
</building>
<building name="magictower" maxcapacity="2" maxsize="50" magic="yes" magres="40" fumblebonus="10" auraregen="1.75">
<maintenance type="money" amount="1000" vital="yes"/>
<maintenance type="money" amount="1000"/>
<construction skill="building" minskill="5" reqsize="50" maxsize="50">
<requirement type="log" quantity="150"/>
<requirement type="stone" quantity="250"/>
@ -119,7 +117,7 @@
</building>
<building name="academy" maxcapacity="25" maxsize="25">
<maintenance type="money" amount="1000" vital="yes"/>
<maintenance type="money" amount="1000"/>
<construction skill="building" minskill="3" reqsize="25" maxsize="25">
<requirement type="log" quantity="125"/>
<requirement type="stone" quantity="125"/>
@ -129,7 +127,7 @@
</building>
<building name="harbour" capacity="1" maxcapacity="25" maxsize="25" unique="yes">
<maintenance type="money" amount="250" vital="yes"/>
<maintenance type="money" amount="250"/>
<construction skill="building" minskill="3" reqsize="25" maxsize="25">
<requirement type="log" quantity="125"/>
<requirement type="stone" quantity="125"/>
@ -138,7 +136,7 @@
</building>
<building name="quarry" capacity="1">
<maintenance type="money" amount="250" vital="yes"/>
<maintenance type="money" amount="250"/>
<construction skill="building" minskill="2">
<requirement type="iron" quantity="1"/>
<requirement type="log" quantity="5"/>
@ -148,7 +146,7 @@
</building>
<building name="mine" capacity="1">
<maintenance type="money" amount="500" vital="yes"/>
<maintenance type="money" amount="500"/>
<construction skill="building" minskill="4">
<requirement type="iron" quantity="1"/>
<requirement type="log" quantity="10"/>
@ -158,7 +156,7 @@
</building>
<building name="lighthouse" capacity="1" maxcapacity="4">
<maintenance type="money" amount="100" vital="yes"/>
<maintenance type="money" amount="100"/>
<construction skill="building" minskill="3">
<requirement type="iron" quantity="1"/>
<requirement type="log" quantity="1"/>

View File

@ -61,16 +61,8 @@
<item weight="0" score="6000"/>
</resource>
<resource name="aoc" appearance="amulet">
<item weight="100">
<function name="use" value="use_birthdayamulet"/>
</item>
</resource>
<resource name="dreameye">
<item weight="100">
<function name="use" value="use_tacticcrystal"/>
</item>
<item weight="100" use="yes" />
</resource>
<resource name="pegasus">
@ -78,9 +70,7 @@
</resource>
<resource name="elvenhorse">
<item weight="5000" notlost="yes" big="yes" score="6000" capacity="7000" animal="yes">
<function name="give" value="givehorses"/>
</item>
<item weight="5000" notlost="yes" big="yes" score="6000" capacity="7000" animal="yes"/>
</resource>
<resource name="dolphin">
@ -100,45 +90,34 @@
</resource>
<!-- XE items -->
<resource name="skillpotion">
<resource name="studypotion" appearance="vial">
<!-- gives user one free learning attempt -->
<item weight="0">
<function name="use" value="use_skillpotion"/>
</item>
<item weight="0" use="yes" />
</resource>
<resource name="manacrystal">
<resource name="skillpotion" appearance="vial">
<!-- gives user one free learning attempt -->
<item weight="0" use="yes" />
</resource>
<resource name="manacrystal" appearance="amulet">
<!-- gives user free aura -->
<item weight="0">
<function name="use" value="use_manacrystal"/>
</item>
<item weight="0" use="yes" />
</resource>
<!-- xmas items -->
<resource name="mistletoe">
<!-- Sets the chance of escape in a fight to 100 percent -->
<item notlost="yes" weight="0">
<function name="use" value="usemistletoe"/>
</item>
<item notlost="yes" weight="0" use="yes" />
</resource>
<resource name="speedsail">
<item weight="0">
<function name="use" value="use_speedsail"/>
</item>
<item weight="0" use="yes" />
</resource>
<!-- items -->
<resource name="antimagic" appearance="amulet">
<item weight="0" score="2000">
<function name="use" value="use_antimagiccrystal"/>
</item>
</resource>
<resource name="wand_of_tears">
<item notlost="yes" weight="0">
<function name="use" value="use_wand_of_tears"/>
</item>
<item weight="0" score="2000" use="yes" />
</resource>
<resource name="catapultammo">

View File

@ -4,8 +4,7 @@
<!-- potions -->
<resource name="p0" appearance="vial">
<item weight="0" score="30">
<function name="use" value="usepotion"/>
<item weight="0" score="30" use="yes">
<potion level="1"/>
<construction skill="alchemy" minskill="2">
<requirement type="h4"/>
@ -15,8 +14,7 @@
</resource>
<resource name="goliathwater" appearance="vial">
<item weight="0" score="30">
<function name="use" value="usepotion"/>
<item weight="0" score="30" use="yes">
<potion level="1"/>
<construction skill="alchemy" minskill="2">
<requirement type="h6"/>
@ -26,8 +24,7 @@
</resource>
<resource name="truthpotion" appearance="vial">
<item weight="0" score="30">
<function name="use" value="usepotion"/>
<item weight="0" score="30" use="yes">
<potion level="1"/>
<construction skill="alchemy" minskill="2">
<requirement type="h0"/>
@ -37,8 +34,7 @@
</resource>
<resource name="p2" appearance="vial">
<item weight="0" score="30">
<function name="use" value="usepotion"/>
<item weight="0" score="30" use="yes">
<potion level="1"/>
<construction skill="alchemy" minskill="2">
<requirement type="h5"/>
@ -48,8 +44,7 @@
</resource>
<resource name="p3" appearance="vial">
<item weight="0" score="60">
<function name="use" value="usepotion"/>
<item weight="0" score="60" use="yes">
<potion level="2"/>
<construction skill="alchemy" minskill="4">
<requirement type="h14"/>
@ -61,8 +56,7 @@
<resource name="ointment" appearance="vial">
<!-- Wundsalbe -->
<item weight="0" score="60">
<function name="use" value="usehealingpotion"/>
<item weight="0" score="60" use="yes">
<potion level="2"/>
<construction skill="alchemy" minskill="4">
<requirement type="h19"/>
@ -74,8 +68,7 @@
<resource name="peasantblood" appearance="vial">
<!-- Bauernblut -->
<item weight="0" score="60">
<function name="use" value="usebloodpotion"/>
<item weight="0" score="60" use="yes">
<potion level="2"/>
<construction skill="alchemy" minskill="4">
<requirement type="h17"/>
@ -87,8 +80,7 @@
</resource>
<resource name="p6" appearance="vial">
<item weight="0" score="90">
<function name="use" value="usepotion"/>
<item weight="0" score="90" use="yes">
<potion level="3"/>
<construction skill="alchemy" minskill="6">
<requirement type="h9"/>
@ -100,8 +92,7 @@
</resource>
<resource name="p7" appearance="vial">
<item weight="0" score="90">
<function name="useonother" value="usefoolpotion"/>
<item weight="0" score="90" use="yes">
<potion level="3"/>
<construction skill="alchemy" minskill="6">
<requirement type="h2"/>
@ -113,8 +104,7 @@
</resource>
<resource name="nestwarmth" appearance="vial">
<item weight="0" score="90">
<function name="use" value="usewarmthpotion"/>
<item weight="0" score="90" use="yes">
<potion level="3"/>
<construction skill="alchemy" minskill="6">
<requirement type="h18"/>
@ -126,8 +116,7 @@
</resource>
<resource name="p9" appearance="vial">
<item weight="0" score="90">
<function name="use" value="usepotion"/>
<item weight="0" score="90" use="yes">
<potion level="3"/>
<construction skill="alchemy" minskill="6">
<requirement type="h4"/>
@ -139,8 +128,7 @@
</resource>
<resource name="p10" appearance="vial">
<item weight="0" score="90">
<function name="use" value="usepotion"/>
<item weight="0" score="90" use="yes">
<potion level="3"/>
<construction skill="alchemy" minskill="6">
<requirement type="h19"/>
@ -152,8 +140,7 @@
</resource>
<resource name="p11" appearance="vial">
<item weight="0" score="120">
<function name="use" value="usepotion"/>
<item weight="0" score="120" use="yes">
<potion level="4"/>
<construction skill="alchemy" minskill="8">
<requirement type="h14"/>
@ -166,8 +153,7 @@
</resource>
<resource name="p13" appearance="vial">
<item weight="0" score="120">
<function name="use" value="usepotion"/>
<item weight="0" score="120" use="yes">
<potion level="4"/>
<construction skill="alchemy" minskill="8">
<requirement type="h5"/>
@ -181,8 +167,7 @@
</resource>
<resource name="p14" appearance="vial">
<item weight="0" score="120">
<function name="use" value="usepotion"/>
<item weight="0" score="120" use="yes">
<potion level="4"/>
<construction skill="alchemy" minskill="8">
<requirement type="h6"/>

View File

@ -6,6 +6,10 @@
_x: preposition (15 /Schlumpf/schwerter)
_a: including article (ein Schlumpf, a smurf)
-->
<string name="mailcmd">
<text locale="de">BEFEHLE</text>
<text locale="en">ORDERS</text>
</string>
<string name="vortex">
<text locale="de">Wirbel</text>
<text locale="en">vortex</text>
@ -235,11 +239,6 @@
einzige Vorteil ihrer geringen Größe ist, dass sie sich leichter
verstecken kann.</text>
</string>
<string name="wand_of_tears">
<text locale="de">Dieses magische Szepter, ein Geschenk Igjarjuks, sorgt für große
Verwirrung und Gedächtnisverlust. Syntax: BENUTZE "Szepter der
Tränen"</text>
</string>
<string name="speedsail">
<text locale="de">Setzt eine Einheit dieses Segel auf einem Schiff, so erhöht
sich dessen Reichweite permanent um 1 Region.</text>
@ -913,17 +912,9 @@
<string name="illusioncastle">
<text locale="de">Traumschlößchen</text>
</string>
<string name="genericbuilding">
<string name="building">
<text locale="de">Struktur</text>
</string>
<string name="artacademy">
<text locale="de">Akademie der Künste</text>
<text locale="en">academy of arts</text>
</string>
<string name="artsculpture">
<text locale="de">Skulptur</text>
<text locale="en">sculpture</text>
</string>
<!--Testitem -->
<string name="wand">
@ -1467,12 +1458,6 @@
<string name="aots_p">
<text locale="de">Amulette des wahren Sehens</text>
</string>
<string name="aoc">
<text locale="de">Katzenamulett</text>
</string>
<string name="aoc_p">
<text locale="de">Katzenamulette</text>
</string>
<string name="roi">
<text locale="de">Ring der Unsichtbarkeit</text>
</string>
@ -1614,14 +1599,6 @@
<string name="presspass_p">
<text locale="de">Akkreditionen des Xontormia-Expreß</text>
</string>
<string name="wand_of_tears">
<text locale="de">Szepter der Tränen</text>
<text locale="en">wand of tears</text>
</string>
<string name="wand_of_tears_p">
<text locale="de">Szepter der Tränen</text>
<text locale="en">wands of tears</text>
</string>
<string name="snowball">
<text locale="de">Schneeball</text>
<text locale="en">snowball</text>
@ -2388,19 +2365,19 @@
<text locale="en">ghoul</text>
</string>
<string name="juju-zombie">
<string name="juju">
<text locale="de">Juju-Zombie</text>
<text locale="en">juju-zombie</text>
</string>
<string name="juju-zombie_p">
<string name="juju_p">
<text locale="de">Juju-Zombies</text>
<text locale="en">juju-zombies</text>
</string>
<string name="juju-zombie_d">
<string name="juju_d">
<text locale="de">Juju-Zombies</text>
<text locale="en">juju-zombies</text>
</string>
<string name="juju-zombie_x">
<string name="juju_x">
<text locale="de">Juju-Zombie</text>
<text locale="en">juju-zombie</text>
</string>
@ -3828,10 +3805,6 @@
<text locale="de">Meteorregen</text>
<text locale="en">Meteor Shower</text>
</string>
<string name="shadowcall">
<text locale="de">Schattenruf</text>
<text locale="en">Shadow Call</text>
</string>
<string name="create_ror">
<text locale="de">Erschaffe einen Ring der Regeneration</text>
<text locale="en">Create A Ring of Regeneration</text>
@ -4512,10 +4485,6 @@
<text locale="de">Verletzt alle Gegner.</text>
<text locale="en">Injures all enemies.</text>
</string>
<string name="shadowcall">
<text locale="de">Ruft Schattenwesen.</text>
<text locale="en">Calls beings from shadow.</text>
</string>
<string name="aura_of_fear">
<text locale="de">Panik.</text>
<text locale="en">Panic.</text>
@ -6636,53 +6605,17 @@
<text locale="de">EINLADEN</text>
<text locale="en">INVITE</text>
</string>
<string name="rm_stone">
<text locale="de">Steine</text>
<text locale="en">stones</text>
</string>
<string name="rm_horse">
<text locale="de">Pferde</text>
<text locale="en">horses</text>
</string>
<string name="rm_peasant">
<text locale="de">Bauern</text>
<text locale="en">peasants</text>
</string>
<string name="rm_money">
<text locale="de">Silber</text>
<text locale="en">silver</text>
</string>
<string name="rm_laen">
<text locale="de">Laen</text>
<text locale="en">laen</text>
</string>
<string name="rm_sapling">
<string name="sapling">
<text locale="de">Schößlinge</text>
<text locale="en">saplings</text>
</string>
<string name="rm_mallornsapling">
<string name="mallornsapling">
<text locale="de">Mallornschößlinge</text>
<text locale="en">mallorn saplings</text>
</string>
<string name="rm_tree">
<text locale="de">Bäume</text>
<text locale="en">trees</text>
</string>
<string name="rm_mallorn">
<text locale="de">Mallorn</text>
<text locale="en">mallorn</text>
</string>
<string name="rm_iron">
<text locale="de">Eisen</text>
<text locale="en">iron</text>
</string>
<string name="Winter">
<text locale="de">Winter</text>
<text locale="en">winter</text>

View File

@ -310,7 +310,7 @@
<string name="dam">
<text locale="en">dam</text>
</string>
<string name="genericbuilding">
<string name="building">
<text locale="en">structure</text>
</string>
<string name="harbour">
@ -444,12 +444,6 @@
<string name="ao_chastity_p">
<text locale="en">amulets of chastity</text>
</string>
<string name="aoc">
<text locale="en">amulet of the kitten</text>
</string>
<string name="aoc_p">
<text locale="en">amulets of the kitten</text>
</string>
<string name="aod">
<text locale="en">amulet of darkness</text>
</string>

View File

@ -324,7 +324,7 @@
<string name="dam">
<text locale="fr">barrage</text>
</string>
<string name="genericbuilding">
<string name="building">
<text locale="fr">bâtiment</text>
</string>
<string name="harbour">
@ -458,12 +458,6 @@
<string name="ao_chastity_p">
<text locale="fr">amulettes de chasteté</text>
</string>
<string name="aoc">
<text locale="fr">amulette du chaton</text>
</string>
<string name="aoc_p">
<text locale="fr">amulettes du chaton</text>
</string>
<string name="aod">
<text locale="fr">amulette de ténčbres</text>
</string>
@ -1912,10 +1906,10 @@
<string name="zombie">
<text locale="fr">zombie</text>
</string>
<string name="juju-zombie_p">
<string name="juju_p">
<text locale="fr">zombies juju</text>
</string>
<string name="juju-zombie">
<string name="juju">
<text locale="fr">zombie juju</text>
</string>
<string name="ghoul_p">

View File

@ -1,5 +1,23 @@
<?xml version="1.0" encoding="utf-8" ?>
<messages>
<message name="newbie_info_game" section="events">
<type>
<arg name="subject" type="string"/>
<arg name="email" type="string"/>
</type>
<text locale="de">Bitte denke daran, deine Befehle mit dem Betreff
$subject an $email zu senden.</text>
<text locale="en">Remember to send your orders to
$email with the subject ${subject}.</text>
</message>
<message name="parse_error" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="command" type="string"/>
</type>
<text locale="de">"$unit($unit): '$command' - Dieser Befehl ist unbekannt."</text>
<text locale="en">"$unit($unit): '$command' - Parse error, unknown command."</text>
</message>
<message name="reduced_production">
<text locale="de">Die Region ist verwüstet, der Boden karg.</text>
<text locale="en">The region is ravaged, the ground infertile.</text>
@ -1245,14 +1263,6 @@
<text locale="en">"$unit($unit) dies from poison damage taken in $region($region)."</text>
</message>
<message name="wand_of_tears_usage" section="events">
<type>
<arg name="unit" type="unit"/>
</type>
<text locale="de">"$unit($unit) schwenkt sein Szepter und sorgt für Verwirrung und Chaos in der Region."</text>
<text locale="en">"$unit($unit) waves their scepter and causes chaos and confusion in the region."</text>
</message>
<message name="find_manual" section="events">
<type>
<arg name="unit" type="unit"/>
@ -1565,20 +1575,6 @@
<text locale="de">"$unit($mage) konnte $int($amount) $if($eq($amount,1),"Bauer","Bauern") anwerben."</text>
<text locale="en">"$unit($mage) managed to recruit $int($amount) $if($eq($amount,1),"peasant","peasants")."</text>
</message>
<message name="wand_of_tears_effect" section="events">
<type>
<arg name="unit" type="unit"/>
</type>
<text locale="de">"Ein bohrender Schmerz durchzuckt $unit($unit), Verwirrung macht sich breit."</text>
<text locale="en">"Pain pulses through $unit($unit), confusion spreads."</text>
</message>
<message name="cryinpain" section="events">
<type>
<arg name="unit" type="unit"/>
</type>
<text locale="de">""AAAAAAAGHHHHHH!" - Ein Schrei durchzieht die Region, $unit($unit) windet sich vor Schmerz."</text>
<text locale="en">""AAAAAAAGHHHHHH!" - $unit($unit) screams and squirms with pain."</text>
</message>
<message name="error_giveeye" section="events">
<type>
@ -1590,14 +1586,6 @@
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - A higher power prevents $unit($unit) from giving the object away. 'IT IS YOURS MY CHILD. ONLY YOURS.'."</text>
</message>
<message name="praytoigjarjuk" section="events">
<type>
<arg name="unit" type="unit"/>
</type>
<text locale="de">"$unit($unit) sendet ein Stoßgebet an den Herrn der Schreie."</text>
<text locale="en">"$unit($unit) sends a prayer to the Lord of Screams."</text>
</message>
<message name="iceberg_melt" section="events">
<type>
<arg name="region" type="region"/>
@ -1826,7 +1814,7 @@
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Der Magier erschafft ein Traumgebäude."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - The magician creates an illusionary building."</text>
</message>
<message name="sp_shapeshift_fail" section="magic">
<message name="sp_shapeshift_fail" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
@ -1922,10 +1910,9 @@
<message name="use_antimagiccrystal" section="magic">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
</type>
<text locale="de">"$unit($unit) benutzt in $region($region) einen Antimagiekristall."</text>
<text locale="en">"$unit($unit) uses an antimagic crystal in $region($region)."</text>
<text locale="de">"$unit($unit) benutzt einen Antimagiekristall."</text>
<text locale="en">"$unit($unit) uses an antimagic crystal."</text>
</message>
<message name="magicboost_effect" section="magic">
<type>
@ -2424,7 +2411,7 @@
<text locale="de">"Eine Botschaft von $unit.dative($unit) in $region($region): 'Ups! Quack, Quack!'"</text>
<text locale="en">"A message from $unit($unit) in $region($region): 'Oops! Croak, Croak!'"</text>
</message>
<message name="familiar_farcast" section="magic">
<message name="familiar_farcast" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
@ -2434,7 +2421,7 @@
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - $unit($mage) kann Zauber, die durch $unit($unit) gewirkt werden, nicht zusätzlich in die Ferne richten."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - $unit($mage) cannot direct spells that are channeled through $unit($unit) into distant regions."</text>
</message>
<message name="familiar_toofar" section="magic">
<message name="familiar_toofar" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
@ -2574,13 +2561,6 @@
<text locale="de">"$unit($unit) in $region($region) regeneriert $int($amount) Aura."</text>
<text locale="en">"$unit($unit) regenerates $int($amount) aura in $region($region)."</text>
</message>
<message name="msg_magic" section="magic">
<type>
<arg name="string" type="string"/>
</type>
<text locale="de">"$string"</text>
<text locale="en">"$string"</text>
</message>
<message name="studycost" section="study">
<type>
<arg name="unit" type="unit"/>
@ -2618,13 +2598,6 @@
<text locale="de">"$unit($teacher) lehrt $unit($student) $skill($skill)."</text>
<text locale="en">"$unit($teacher) teaches $unit($student) $skill($skill)."</text>
</message>
<message name="msg_study" section="study">
<type>
<arg name="string" type="string"/>
</type>
<text locale="de">"$string"</text>
<text locale="en">"$string"</text>
</message>
<message name="sellamount" section="economy">
<type>
<arg name="unit" type="unit"/>
@ -2856,13 +2829,6 @@
<text locale="de">"$unit($unit) baut für $int($size) an $ship($ship) weiter."</text>
<text locale="en">"$unit($unit) builds $int($size) more on $ship($ship)."</text>
</message>
<message name="msg_production" section="production">
<type>
<arg name="string" type="string"/>
</type>
<text locale="de">"$string"</text>
<text locale="en">"$string"</text>
</message>
<message name="firewall_death" section="movement">
<type>
<arg name="unit" type="unit"/>
@ -2900,15 +2866,7 @@
<text locale="de">"$unit($unit) $if($eq($mode,1),"reitet", "wandert") von $region($start) nach $region($end).$if($isnull($regions),""," Dabei wurde $trail($regions) durchquert.")"</text>
<text locale="en">"$unit($unit) $if($eq($mode,1),"rides", "walks") from $region($start) to $region($end)$if($isnull($regions),""," by way of $trail($regions)")."</text>
</message>
<message name="detectoceandir" section="movement">
<type>
<arg name="unit" type="unit"/>
<arg name="direction" type="direction"/>
</type>
<text locale="de">"$unit($unit) entdeckt dass im $direction($direction) $terrain($region) ist."</text>
<text locale="en">"$unit($unit) discovered that $terrain($region) lies in the $direction($direction)."</text>
</message>
<message name="detectocean" section="movement">
<message name="detectocean" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
@ -2917,7 +2875,7 @@
<text locale="de">"$unit($unit) entdeckt, dass $region($region) $localize($terrain) ist."</text>
<text locale="en">"$unit($unit) discovered that $region($region) is $localize($terrain)."</text>
</message>
<message name="leftship" section="movement">
<message name="leftship" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
@ -2925,7 +2883,7 @@
<text locale="de">"$unit($unit) ist in dieser Runde gelandet und kann nicht weiter ins Landesinnere nach $region($region) vorstossen."</text>
<text locale="en">"$unit($unit) has just landed and cannot continue moving to $region($region)."</text>
</message>
<message name="sailnolandingstorm" section="movement">
<message name="sailnolandingstorm" section="errors">
<type>
<arg name="ship" type="ship"/>
<arg name="region" type="region"/>
@ -2933,7 +2891,7 @@
<text locale="de">"Die Mannschaft der $ship($ship) kann in letzter Sekunde verhindern, dass das Schiff in $region($region) auf Land aufläuft."</text>
<text locale="en">"At the very last moment, the crew of the $ship($ship) saved the ship from running aground in $region($region)."</text>
</message>
<message name="sailnolanding" section="movement">
<message name="sailnolanding" section="errors">
<type>
<arg name="ship" type="ship"/>
<arg name="region" type="region"/>
@ -2941,7 +2899,7 @@
<text locale="de">"Die $ship($ship) konnte in $region($region) nicht einreisen, die Küste ist zu gefährlich für das Schiff."</text>
<text locale="en">"The $ship($ship) could not berth in $region($region). The coast is too dangerous for the vessel."</text>
</message>
<message name="sailforbiddendir" section="movement">
<message name="sailforbiddendir" section="errors">
<type>
<arg name="ship" type="ship"/>
<arg name="direction" type="direction"/>
@ -2949,7 +2907,7 @@
<text locale="de">"Die Mannschaft der $ship($ship) weigert sich, nach $direction($direction) zu reisen."</text>
<text locale="en">"The crew of the $ship($ship) refuses to travel to the $direction($direction)."</text>
</message>
<message name="sailforbidden" section="movement">
<message name="sailforbidden" section="errors">
<type>
<arg name="ship" type="ship"/>
<arg name="region" type="region"/>
@ -2957,7 +2915,7 @@
<text locale="de">"Die Mannschaft der $ship($ship) weigert sich, nach $region($region) zu reisen."</text>
<text locale="en">"The crew of the $ship($ship) refuses to travel to $region($region)."</text>
</message>
<message name="detectforbiddendir" section="movement">
<message name="detectforbiddendir" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="direction" type="direction"/>
@ -2965,7 +2923,7 @@
<text locale="de">"$unit($unit) weigert sich, nach $direction($direction) zu reisen."</text>
<text locale="en">"$unit($unit) refuses to travel to the $direction($direction)."</text>
</message>
<message name="detectforbidden" section="movement">
<message name="detectforbidden" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
@ -2973,7 +2931,7 @@
<text locale="de">"$unit($unit) weigert sich, nach $region($region) zu reisen."</text>
<text locale="en">"$unit($unit) refuses to travel to $region($region)."</text>
</message>
<message name="sailfail" section="movement">
<message name="sailfail" section="errors">
<type>
<arg name="ship" type="ship"/>
<arg name="region" type="region"/>
@ -2981,7 +2939,7 @@
<text locale="de">"Die $ship($ship) konnte $region($region) nicht verlassen."</text>
<text locale="en">"The $ship($ship) could not leave $region($region)."</text>
</message>
<message name="moveblockedbyguard" section="movement">
<message name="moveblockedbyguard" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
@ -2990,35 +2948,7 @@
<text locale="de">"$unit($unit) wurde in $region($region) von $unit.dative($guard) aufgehalten."</text>
<text locale="en">"$unit($unit) was kept in $region($region) by $unit($guard)."</text>
</message>
<message name="peace_confirm" section="events">
<type>
<arg name="enemy" type="faction"/>
</type>
<text locale="de">"Wir haben den Krieg mit $faction($faction) beendet."</text>
<text locale="en">"We declared peace with $faction($faction)."</text>
</message>
<message name="peace_notify" section="events">
<type>
<arg name="enemy" type="faction"/>
</type>
<text locale="de">"$faction($faction) hat den Krieg mit uns beendet."</text>
<text locale="en">"$faction($faction) has declared peace with us."</text>
</message>
<message name="war_confirm" section="events">
<type>
<arg name="enemy" type="faction"/>
</type>
<text locale="de">"Wir haben $faction($faction) den Krieg erklärt."</text>
<text locale="en">"We declared war on $faction($faction)."</text>
</message>
<message name="war_notify" section="events">
<type>
<arg name="enemy" type="faction"/>
</type>
<text locale="de">"$faction($faction) hat uns den Krieg erklärt."</text>
<text locale="en">"$faction($faction) has declared war on us."</text>
</message>
<message name="regionowned" section="movement">
<message name="regionowned" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
@ -3027,7 +2957,7 @@
<text locale="de">"$unit($unit) konnte nicht von $region($region) nach $region($target) reisen, da der Besitzer der Region es verhinderte."</text>
<text locale="en">"$unit($unit) could not travel from $region($region) to $region($target) because the owner denied entrance."</text>
</message>
<message name="leavefail" section="movement">
<message name="leavefail" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
@ -3051,7 +2981,7 @@
<text locale="de">"$unit($follower) konnte $unit($unit) nicht folgen."</text>
<text locale="en">"$unit($follower) could not follow $unit($unit)."</text>
</message>
<message name="moveblocked" section="movement">
<message name="moveblocked" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="direction" type="direction"/>
@ -3059,7 +2989,7 @@
<text locale="de">"$unit($unit) entdeckt, dass es keinen Weg nach $direction($direction) gibt."</text>
<text locale="en">"$unit($unit) discovers that there is no route going $direction($direction)."</text>
</message>
<message name="fogblock" section="movement">
<message name="fogblock" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
@ -3068,13 +2998,6 @@
<text locale="de">"$unit($unit) konnte von $region($region) nicht nach $direction($direction) ausreisen, der Nebel war zu dicht."</text>
<text locale="en">"$unit($unit) could not travel $direction($direction) from $region($region), the fog was too dense."</text>
</message>
<message name="msg_movement" section="movement">
<type>
<arg name="string" type="string"/>
</type>
<text locale="de">"$string"</text>
<text locale="en">"$string"</text>
</message>
<message name="entrise" section="events">
<type>
<arg name="region" type="region"/>
@ -3343,20 +3266,6 @@
<text locale="de">"$unit($unit) marschiert in eine Antimagiezone und löst sich auf."</text>
<text locale="en">"$unit($unit) walks into an antimagical zone and dissolves."</text>
</message>
<message name="illusiondissolve" section="events">
<type>
<arg name="unit" type="unit"/>
</type>
<text locale="de">"$unit($unit) hat sich unbemerkt verflüchtigt."</text>
<text locale="en">"$unit($unit) has dissolved without a trace."</text>
</message>
<message name="warnillusiondissolve" section="events">
<type>
<arg name="unit" type="unit"/>
</type>
<text locale="de">"$unit($unit) wird sich bald verflüchtigen."</text>
<text locale="en">"$unit($unit) will dissolve soon."</text>
</message>
<message name="fleescared" section="events">
<type>
<arg name="amount" type="int"/>
@ -3392,11 +3301,10 @@
</message>
<message name="wrongpasswd" section="events">
<type>
<arg name="faction" type="int"/>
<arg name="password" type="string"/>
</type>
<text locale="de">"ERESSEA $int36($faction) \"${password}\" - Deine Befehle hatten ein falsches Passwort."</text>
<text locale="en">"ERESSEA $int36($faction) \"${password}\" - Your orders had the wrong password."</text>
<text locale="de">"Deine Befehle hatten ein falsches Passwort (${password})."</text>
<text locale="en">"Your orders had the wrong password (${password})."</text>
</message>
<message name="changepasswd" section="events">
<type>
@ -6967,13 +6875,6 @@
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Man benötigt mindestens $int($minskill) $skill($skill), um $resource($product,0) zu produzieren."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - You need at least $int($minskill) $skill($skill), to produce $resource($product,0)."</text>
</message>
<message name="msg_errors" section="errors">
<type>
<arg name="string" type="string"/>
</type>
<text locale="de">"$string"</text>
<text locale="en">"$string"</text>
</message>
<message name="msg_event" section="events">
<type>
<arg name="string" type="string"/>
@ -6981,13 +6882,6 @@
<text locale="de">"$string"</text>
<text locale="en">"$string"</text>
</message>
<message name="msg_economy" section="economy">
<type>
<arg name="string" type="string"/>
</type>
<text locale="de">"$string"</text>
<text locale="en">"$string"</text>
</message>
<message name="give_person" section="economy">
<type>
<arg name="unit" type="unit"/>
@ -7019,7 +6913,6 @@
<text locale="de">"$unit($target) erhält $int($amount) $resource($resource,$amount) von $unit($unit)."</text>
<text locale="en">"$unit($target) receives $int($amount) $resource($resource,$amount) from $unit($unit)."</text>
</message>
<message name="give_person_ocean" section="economy">
<type>
<arg name="unit" type="unit"/>
@ -7222,7 +7115,7 @@
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - No pyramids may be build in this region. The closest region to build a pyramid in is between $int($mindist) and $int($maxdist) regions away."</text>
</message>
<message name="wormhole_requirements" section="events">
<message name="wormhole_requirements" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
@ -7512,7 +7405,7 @@
<arg name="mage" type="unit"/>
<arg name="building" type="building"/>
</type>
<text locale="de">"$unit($mage) weight $building($building)."</text>
<text locale="de">"$unit($mage) weiht $building($building)."</text>
<text locale="en">"$unit($mage) blesses $building($building)."</text>
</message>
@ -7614,16 +7507,6 @@
<text locale="en">"$unit($mage) casts $spell($spell). $int($amount) fighters are temporarily losing some of their memories."</text>
</message>
<message name="sp_shadowcall_effect" section="magic">
<type>
<arg name="mage" type="unit"/>
<arg name="amount" type="int"/>
<arg name="race" type="race"/>
</type>
<text locale="de">"$unit($mage) ruft $int($amount) $race($race, 0) zu Hilfe."</text>
<text locale="en">"$unit($mage) calls upon the help of $int($amount) $race($race, 0)."</text>
</message>
<message name="battle::killed" section="battle">
<type>
<arg name="unit" type="unit"/>
@ -7643,7 +7526,7 @@
<text locale="de">"Heer $int($index)($abbrev): $int($dead) Tote, $int($fled) Geflohene, $int($survived) Überlebende."</text>
<text locale="en">"Army $int($index)($abbrev): $int($dead) dead, $int($fled) fled, $int($survived) survivors."</text>
</message>
<message name="spellfail::nolevel" section="magic">
<message name="spellfail::nolevel" section="errors">
<type>
<arg name="mage" type="unit"/>
<arg name="region" type="region"/>

View File

@ -1,11 +1,6 @@
<?xml version="1.0"?>
<resource name="horse" limited="yes" material="rm_horse">
<resource name="horse" limited="yes">
<item big="yes" weight="5000" score="10" capacity="7000" animal="yes">
<construction skill="training" minskill="1"/>
<function name="give" value="givehorses"/>
<construction skill="training" minskill="1" />
</item>
<resourcelimit>
<function name="produce" value="lua_produceresource"/>
<function name="limit" value="lua_limitresource"/>
</resourcelimit>
</resource>

View File

@ -1,5 +1,4 @@
<?xml version="1.0"?>
<resource name="hp" pooled="false">
<function name="change" value="lua_changeresource"/>
<function name="get" value="lua_getresource"/>
</resource>

View File

@ -1,12 +1,9 @@
<?xml version="1.0"?>
<resource name="iron" limited="yes" material="rm_iron">
<item weight="500" score="10">
<construction skill="mining" minskill="1"/>
</item>
<resourcelimit>
<resource name="iron" limited="yes" material="yes">
<item weight="500" score="10">
<construction skill="mining" minskill="1"/>
</item>
<modifier building="mine" type="skill" value="1"/>
<modifier building="mine" type="material" value="0.5"/>
<modifier race="dwarf" type="material" value="0.60"/>
<guard flag="mining"/>
</resourcelimit>
</resource>

View File

@ -1,10 +1,7 @@
<?xml version="1.0"?>
<resource name="laen" limited="yes" material="rm_laen">
<item weight="200" score="100">
<construction skill="mining" minskill="7"/>
</item>
<resourcelimit>
<resource name="laen" limited="yes" material="yes">
<item weight="200" score="100">
<construction skill="mining" minskill="7"/>
</item>
<modifier type="require" building="mine"/>
<guard flag="mining"/>
</resourcelimit>
</resource>

View File

@ -1,13 +1,8 @@
<?xml version="1.0"?>
<resource name="log" material="rm_tree">
<item weight="500" score="10">
<construction skill="forestry" minskill="1"/>
</item>
<resourcelimit>
<resource name="log" limited="yes">
<item weight="500" score="10">
<construction skill="forestry" minskill="1"/>
</item>
<modifier building="sawmill" type="skill" value="1"/>
<modifier building="sawmill" type="material" value="0.5"/>
<guard flag="logging"/>
<function name="produce" value="lua_produceresource"/>
<function name="limit" value="lua_limitresource"/>
</resourcelimit>
</resource>

View File

@ -1,13 +1,8 @@
<?xml version="1.0"?>
<resource name="mallorn" material="rm_mallorn">
<item weight="500" score="30">
<construction skill="forestry" minskill="2"/>
</item>
<resourcelimit>
<resource name="mallorn" limited="yes">
<item weight="500" score="30">
<construction skill="forestry" minskill="2"/>
</item>
<modifier building="sawmill" type="skill" value="1"/>
<modifier building="sawmill" type="material" value="0.5"/>
<guard flag="logging"/>
<function name="produce" value="lua_produceresource"/>
<function name="limit" value="lua_limitresource"/>
</resourcelimit>
</resource>

View File

@ -1,5 +1,4 @@
<?xml version="1.0"?>
<resource name="peasant" pooled="false">
<function name="change" value="lua_changeresource"/>
<function name="get" value="lua_getresource"/>
</resource>

View File

@ -1,11 +1,9 @@
<?xml version="1.0"?>
<resource name="stone" limited="yes" material="rm_stone">
<item weight="6000" score="10" big="yes">
<construction skill="quarrying" minskill="1"/>
</item>
<resourcelimit>
<resource name="stone" limited="yes" material="yes">
<item weight="6000" score="10" big="yes">
<construction skill="quarrying" minskill="1"/>
</item>
<modifier building="quarry" type="skill" value="1"/>
<modifier building="quarry" type="material" value="0.5"/>
<modifier race="troll" type="material" value="0.75"/>
</resourcelimit>
</resource>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="axe">
<item weight="200">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="weaponsmithing" minskill="3">
<requirement type="log" quantity="1"/>
<requirement type="iron" quantity="1"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="greatbow">
<item weight="100">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="weaponsmithing" minskill="5">
<modifier function="mod_elves_only"/>
<requirement type="mallorn" quantity="2"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="greatsword">
<item weight="200" score="30">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="weaponsmithing" minskill="4">
<requirement type="iron" quantity="2"/>
</construction>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="halberd">
<item weight="200">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="weaponsmithing" minskill="3">
<requirement type="log" quantity="2"/>
<requirement type="iron" quantity="1"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="lance">
<item weight="200">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="weaponsmithing" minskill="2">
<requirement type="log" quantity="2"/>
</construction>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="mallornlance">
<item weight="100">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="weaponsmithing" minskill="5">
<requirement type="mallorn" quantity="2"/>
</construction>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="rustyaxe">
<item weight="200">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="weaponsmithing" minskill="3">
<requirement type="log" quantity="1"/>
<requirement type="iron" quantity="1"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="rustyhalberd">
<item weight="200" score="20">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="weaponsmithing" minskill="3">
<requirement type="iron" quantity="1"/>
<requirement type="log" quantity="1"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="plate">
<item weight="400" score="150">
<function name="canuse" value="lua_canuse_item"/>
<item weight="400" score="150" deny="goblin">
<construction skill="armorer" minskill="4">
<requirement type="iron" quantity="4"/>
</construction>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="scale">
<item weight="300" score="150">
<function name="canuse" value="lua_canuse_item"/>
<item weight="300" score="150" allow="dwarf halfling">
<construction skill="armorer" minskill="5">
<modifier function="mod_dwarves_only"/>
<requirement type="iron" quantity="2"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="towershield">
<item weight="200" score="60">
<function name="canuse" value="lua_canuse_item"/>
<item weight="200" score="60" allow="dwarf">
<construction skill="armorer" minskill="4">
<modifier function="mod_dwarves_only"/>
<requirement type="iron" quantity="1"/>

View File

@ -3,23 +3,22 @@
<xi:include href="config://default/buildings/castle-2.xml" />
<building name="watch" capacity="1" fort="yes">
<building name="watch" maxsize="10" capacity="1" fort="yes">
<function name="name" value="fort_name"/>
<function name="protection" value="building_protection"/>
<function name="taxes" value="lua_building_taxes"/>
<construction skill="building" minskill="1" maxsize="5" defense_bonus="0">
<construction skill="building" minskill="1" maxsize="5">
<requirement type="log" quantity="1"/>
</construction>
<construction skill="building" minskill="2" maxsize="5" defense_bonus="1">
<construction skill="building" minskill="2" maxsize="5">
<requirement type="log" quantity="1"/>
</construction>
<construction skill="building" minskill="2" defense_bonus="2">
<construction skill="building" minskill="2">
<requirement type="log" quantity="1"/>
</construction>
</building>
<building name="market" capacity="1" maxsize="10">
<maintenance type="money" amount="200" vital="yes"/>
<maintenance type="money" amount="200"/>
<construction skill="building" minskill="3">
<requirement type="log" quantity="1"/>
<requirement type="stone" quantity="1"/>

View File

@ -1,78 +1,9 @@
<?xml version="1.0"?>
<equipment>
<!-- equipment given to new units -->
<set name="new_demon_unit">
<!--skill name="stamina" level="6"/-->
</set>
<set name="new_troll_unit">
<!--skill name="stamina" level="2"/-->
</set>
<set name="seaserpent_spoils">
<item name="dragonblood" amount="2"/>
<item name="seaserpenthead" amount="1"/>
</set>
<set name="goblin_1">
<skill name="melee" level="7"/>
<skill name="stamina" level="3"/>
<item name="sword" amount="1"/>
<item name="shield" amount="1"/>
<item name="chainmail" amount="1"/>
</set>
<set name="troll_1">
<skill name="melee" level="7"/>
<skill name="stamina" level="3"/>
<item name="sword" amount="1"/>
<item name="shield" amount="1"/>
<item name="plate" amount="1"/>
</set>
<set name="front_1">
<skill name="melee" level="7"/>
<skill name="stamina" level="3"/>
<item name="sword" amount="1"/>
<item name="shield" amount="1"/>
<item name="plate" amount="1"/>
</set>
<set name="front_2">
<skill name="melee" level="7"/>
<skill name="stamina" level="3"/>
<item name="sword" amount="1"/>
<item name="towershield" amount="1"/>
<item name="plate" amount="1"/>
</set>
<set name="rear_1">
<skill name="crossbow" level="7"/>
<skill name="stamina" level="3"/>
<item name="crossbow" amount="1"/>
<item name="shield" amount="1"/>
</set>
<set name="rear_2">
<skill name="crossbow" level="7"/>
<skill name="stamina" level="3"/>
<item name="crossbow" amount="1"/>
<item name="shield" amount="1"/>
</set>
<set name="dwarf_2">
<skill name="melee" level="7"/>
<skill name="stamina" level="3"/>
<item name="sword" amount="1"/>
<item name="shield" amount="1"/>
<item name="plate" amount="1"/>
</set>
<set name="halfling_2">
<skill name="crossbow" level="7"/>
<skill name="stamina" level="3"/>
<item name="rep_crossbow" amount="1"/>
</set>
</equipment>

View File

@ -7,83 +7,72 @@
<resource name="ointment" appearance="vial">
<!-- Wundsalbe -->
<item weight="0" score="60">
<function name="use" value="usehealingpotion"/>
<item weight="0" score="60" use="yes">
<potion level="2"/>
</item>
</resource>
<resource name="p13" appearance="vial">
<!-- Elixier der Macht -->
<item weight="0" score="120">
<function name="use" value="usepotion"/>
<item weight="0" score="120" use="yes">
<potion level="4"/>
</item>
</resource>
<resource name="p3" appearance="vial">
<!-- Schaffenstrunk -->
<item weight="0" score="60">
<function name="use" value="usepotion"/>
<item weight="0" score="60" use ="yes">
<potion level="2"/>
</item>
</resource>
<resource name="p14" appearance="vial">
<!-- Heiltrank -->
<item weight="0" score="120">
<function name="use" value="usepotion"/>
<item weight="0" score="120" use="yes">
<potion level="4"/>
</item>
</resource>
<resource name="p0" appearance="vial">
<!-- Siebenmeilentee -->
<item weight="0" score="30">
<function name="use" value="usepotion"/>
<item weight="0" score="30" use="yes">
<potion level="1"/>
</item>
</resource>
<resource name="p2" appearance="vial">
<!-- Wasser des Lebens -->
<item weight="0" score="30">
<function name="use" value="usepotion_delayed"/>
<item weight="0" score="30" use="yes">
<potion level="1"/>
</item>
</resource>
<resource name="peasantblood" appearance="vial">
<!-- Bauernblut -->
<item weight="0" score="60">
<function name="use" value="usebloodpotion"/>
<item weight="0" score="60" use="yes">
<potion level="2"/>
</item>
</resource>
<resource name="p9" appearance="vial">
<!-- Pferdeglück -->
<item weight="0" score="90">
<function name="use" value="usepotion"/>
<item weight="0" score="90" use="yes">
<potion level="3"/>
</item>
</resource>
<resource name="charger">
<item big="yes" weight="5000" score="10" capacity="7000" animal="yes">
<item big="yes" weight="5000" score="20" capacity="7000" animal="yes">
<construction skill="training" minskill="4">
<requirement type="money" quantity="200"/>
<requirement type="iron" quantity="1"/>
<requirement type="horse" quantity="1"/>
</construction>
<function name="give" value="givehorses"/>
</item>
</resource>
<resource name="xmastree">
<item weight="0">
<function name="use" value="lua_useitem"/>
</item>
<item weight="0" use="yes" />
</resource>
</resources>

View File

@ -8,9 +8,8 @@
<xi:include href="config://default/races/dragon.xml"/>
<xi:include href="config://default/races/youngdragon.xml"/>
<race name="lynx" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="20" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="5" walk="yes" teach="no" getitem="yes">
<race name="lynx" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="20" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="5" walk="yes" teach="no" getitem="yes">
<ai splitsize="99999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -32,11 +31,9 @@
<attack type="4" damage="2d3"/>
</race>
<race name="human" magres="0.000000" maxaura="1.0" regaura="1.0" recruitcost="100" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="human" maxaura="1.0" regaura="1.0" recruitcost="100" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="other_race" value="elf"/>
<param name="other_cost" value="500"/>
<skill name="riding" modifier="+1"/>
<skill name="shipcraft" modifier="2"/>
<skill name="sailing" modifier="2"/>
@ -47,11 +44,9 @@
<familiar race="giantturtle"/>
</race>
<race name="orc" studyspeed="-5" magres="-0.05" maxaura="1.0" regaura="1.0" recruitcost="100" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="orc" studyspeed="-5" magres="-5" maxaura="1.0" regaura="1.0" recruitcost="100" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="other_race" value="troll"/>
<param name="other_cost" value="500"/>
<skill name="bow" speed="+5"/>
<skill name="building" modifier="1"/>
@ -76,11 +71,13 @@
<familiar race="ghost"/>
</race>
<race name="halfling" defensemodifier="1" magres="0.05" maxaura="1.0" regaura="1.0" recruitcost="100" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="halfling" defensemodifier="1" magres="5" maxaura="1.0"
regaura="1.0" recruitcost="100" maintenance="10" weight="1000"
capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2"
unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes"
giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="other_race" value="dwarf"/>
<param name="other_cost" value="500"/>
<param name="luxury_trade" value="600"/>
<skill name="bow" modifier="-1"/>
<skill name="building" modifier="1"/>
@ -104,9 +101,8 @@
<!-- begin secondary races -->
<race name="demon" magres="0.150000" maxaura="1.0" regaura="1.1" recruitcost="360" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="30" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" shapeshift="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" equipment="yes">
<race name="demon" magres="15" maxaura="1.0" regaura="1.1" recruitcost="360" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="30" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" shapeshift="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="cartmaking" modifier="-2"/>
<skill name="forestry" modifier="1"/>
<skill name="melee" modifier="1"/>
@ -124,10 +120,12 @@
<familiar race="ghost"/>
</race>
<race name="elf" magres="0.100000" maxaura="1.0" regaura="1.1" recruitcost="200" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="elf" magres="10" maxaura="1.0" regaura="1.1"
recruitcost="200" maintenance="10" weight="1000" capacity="540"
speed="1.0" hp="20" damage="1d5" unarmedattack="-2"
unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes"
giveunit="yes" getitem="yes" equipment="yes" >
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="regen.forest" value="2.0"/>
<skill name="armorer" modifier="-1"/>
<skill name="bow" modifier="2"/>
<skill name="building" modifier="-1"/>
@ -144,9 +142,8 @@
<familiar race="unicorn"/>
</race>
<race name="troll" magres="0.100000" maxaura="1.0" regaura="1.0" recruitcost="260" maintenance="10" weight="2000" capacity="1080" speed="1.0" hp="20" ac="1" damage="1d5+3" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="troll" magres="10" maxaura="1.0" regaura="1.0" recruitcost="260" maintenance="10" weight="2000" capacity="1080" speed="1.0" hp="20" ac="1" damage="1d5+3" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="armor.stamina" value="4"/> <!-- +1 natural armor per X levels stamina -->
<skill name="armorer" modifier="2"/>
<skill name="bow" modifier="-2"/>
@ -167,9 +164,12 @@
<familiar race="rat"/>
</race>
<race name="dwarf" magres="0.05" maxaura="1.0" regaura="0.9" recruitcost="240" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="dwarf" magres="5" maxaura="1.0" regaura="0.9"
recruitcost="240" maintenance="10" weight="1000" capacity="540"
speed="1.0" hp="20" damage="1d5" unarmedattack="-2"
unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes"
giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="armorer" modifier="2"/>
<skill name="bow" modifier="-1"/>
<skill name="building" modifier="2"/>
@ -192,9 +192,8 @@
<!-- end player races -->
<race name="kraken" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="300" damage="2d10" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" coastal="yes" swim="yes" teach="no" getitem="yes">
<race name="kraken" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="300" damage="2d10" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" coastal="yes" swim="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -219,9 +218,8 @@
<attack type="4" damage="1d10"/>
<attack type="4" damage="1d10"/>
</race>
<race name="giantturtle" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="1600" capacity="600" speed="1.0" hp="900" ac="7" damage="2d50" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="5" coastal="yes" swim="yes" walk="yes" teach="no" getitem="yes">
<race name="giantturtle" maxaura="0.000000" regaura="0.000000" weight="1600" capacity="600" speed="1.0" hp="900" ac="7" damage="2d50" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="5" coastal="yes" swim="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -241,9 +239,8 @@
<skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="2d50"/>
</race>
<race name="dolphin" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="24" damage="1d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="5" coastal="yes" swim="yes" teach="no" getitem="yes">
<race name="dolphin" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="24" damage="1d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="5" coastal="yes" swim="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -263,9 +260,8 @@
<skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="1d6"/>
</race>
<race name="tiger" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="30" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" walk="yes" teach="no" getitem="yes">
<race name="tiger" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="30" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -287,9 +283,8 @@
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
</race>
<race name="hellcat" magres="0.500000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="40" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes" resistpierce="yes">
<race name="hellcat" magres="50" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="40" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes" resistpierce="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -311,9 +306,8 @@
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
</race>
<race name="owl" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="9" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="2" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes">
<race name="owl" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="9" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="2" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -334,9 +328,8 @@
<skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="1d4"/>
</race>
<race name="fairy" magres="0.800000" maxaura="1.0" regaura="1.500000" weight="200" capacity="540" speed="1.0" hp="6" damage="1d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="14" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
<race name="fairy" magres="80" maxaura="1.0" regaura="1.500000" weight="200" capacity="540" speed="1.0" hp="6" damage="1d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="14" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="magic" modifier="1"/>
<skill name="riding" modifier="-1"/>
<skill name="melee" modifier="-1"/>
@ -361,9 +354,8 @@
<attack type="4" damage="1d3"/>
<attack type="4" damage="1d3"/>
</race>
<race name="dreamcat" magres="0.500000" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="10" damage="1d5" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="6" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
<race name="dreamcat" magres="50" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="10" damage="1d5" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="6" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="magic" modifier="1"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -384,9 +376,8 @@
<attack type="4" damage="1d5"/>
<attack type="4" damage="1d5"/>
</race>
<race name="imp" magres="0.500000" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="10" ac="1" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
<race name="imp" magres="50" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="10" ac="1" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -409,9 +400,8 @@
<attack type="1" damage="1d4"/>
<attack type="6" spell="fiery_dragonbreath" level="3" />
</race>
<race name="ghost" magres="0.800000" maxaura="0.500000" regaura="0.100000" weight="500" capacity="540" speed="1.0" hp="30" ac="5" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="8" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes" invinciblenonmagic="yes">
<race name="ghost" magres="80" maxaura="0.500000" regaura="0.100000" weight="500" capacity="540" speed="1.0" hp="30" ac="5" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="8" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes" invinciblenonmagic="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -435,10 +425,8 @@
<attack type="2" damage="2d30"/>
<attack type="3" damage="1d1"/>
</race>
<race name="wolf" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="25" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<race name="wolf" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="25" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="name" value="namegeneric"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -460,9 +448,8 @@
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
</race>
<race name="unicorn" magres="0.900000" maxaura="1.500000" regaura="1.500000" weight="5000" capacity="2000" speed="2.000000" hp="40" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes">
<race name="unicorn" magres="90" maxaura="1.500000" regaura="1.500000" weight="5000" capacity="2000" speed="2.000000" hp="40" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes">
<ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -484,9 +471,8 @@
<attack type="4" damage="3d12"/>
<attack type="4" damage="2d4"/>
</race>
<race name="nymph" magres="0.900000" maxaura="1.0" regaura="1.500000" weight="1000" capacity="540" speed="1.0" hp="15" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" getitem="yes" equipment="yes">
<race name="nymph" magres="90" maxaura="1.0" regaura="1.500000" weight="1000" capacity="540" speed="1.0" hp="15" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" getitem="yes" equipment="yes">
<ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="2"/>
<skill name="building" modifier="-99"/>
@ -507,9 +493,8 @@
<attack type="1" damage="1d4"/>
<attack type="2" damage="2d20"/>
</race>
<race name="songdragon" magres="0.990000" maxaura="1.0" regaura="1.0" weight="1000" capacity="600" speed="1.500000" hp="40" ac="1" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" fly="yes" walk="yes" teach="no" getitem="yes">
<race name="songdragon" magres="99" maxaura="1.0" regaura="1.0" weight="1000" capacity="600" speed="1.500000" hp="40" ac="1" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" fly="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -535,9 +520,8 @@
<attack type="6" spell="fiery_dragonbreath" level="3" />
</race>
<race name="rat" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.0" hp="10" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" walk="yes" teach="no" getitem="yes">
<race name="rat" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.0" hp="10" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" walk="yes" teach="no" getitem="yes">
<ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -559,9 +543,8 @@
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
</race>
<race name="eagle" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.500000" hp="15" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="2" fly="yes" walk="yes" teach="no" getitem="yes">
<race name="eagle" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.500000" hp="15" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="2" fly="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/>
@ -582,9 +565,8 @@
<skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="2d3"/>
</race>
<race name="tunnelworm" magres="0.800000" maxaura="0.000000" regaura="0.000000" weight="30000" capacity="10000" speed="1.0" hp="300" ac="6" damage="3d20" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="1" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<race name="tunnelworm" magres="80" maxaura="0.000000" regaura="0.000000" weight="30000" capacity="10000" speed="1.0" hp="300" ac="6" damage="3d20" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="1" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="99999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="10"/>
<skill name="bow" modifier="-99"/>
@ -607,24 +589,21 @@
<attack type="4" damage="3d20"/>
<attack type="8" damage="1d10"/>
</race>
<race name="direwolf" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="20" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" giveperson="yes">
<function name="initfamiliar" value="oldfamiliars"/>
<race name="direwolf" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="20" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" giveperson="yes">
<ai splitsize="5000"/>
<attack type="4" damage="2d4"/>
</race>
<race name="peasant" magres="0.000000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d6" unarmedattack="0" unarmeddefense="0" cannotmove="yes" teach="no">
<race name="peasant" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d6" unarmedattack="0" unarmeddefense="0" cannotmove="yes" teach="no">
<ai splitsize="10000"/>
<attack type="1" damage="1d6"/>
</race>
<race name="braineater" magres="0.900000" maxaura="1.0" regaura="1.0" weight="100" capacity="540" speed="1.0" hp="20" damage="0d0" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" invinciblenonmagic="yes">
<race name="braineater" magres="90" maxaura="1.0" regaura="1.0" weight="100" capacity="540" speed="1.0" hp="20" damage="0d0" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" invinciblenonmagic="yes">
<ai splitsize="500" killpeasants="yes" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<function name="describe" value="describe_race"/>
<attack type="2" damage="3d15"/>
<attack type="3" damage="1d1"/>
<attack type="4" damage="1d1"/>
</race>
<race name="toad" magres="0.200000" maxaura="1.0" regaura="1.0" maintenance="10" weight="100" capacity="540" speed="1.0" hp="10" damage="1d2" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" giveperson="yes" giveunit="yes" getitem="yes" walk="yes">
<race name="toad" magres="20" maxaura="1.0" regaura="1.0" maintenance="10" weight="100" capacity="540" speed="1.0" hp="10" damage="1d2" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" giveperson="yes" giveunit="yes" getitem="yes" walk="yes">
<ai splitsize="1" learn="yes"/>
<skill name="crossbow" modifier="-10"/>
<skill name="mining" modifier="-10"/>
@ -672,77 +651,62 @@
<skill name="stamina" modifier="-10"/>
<attack type="4" damage="1d2"/>
</race>
<race name="mountainguard" unarmedguard="yes" magres="0.500000" maxaura="1.0" regaura="0.500000" weight="10000" capacity="2000" speed="0.000000" hp="1000" ac="12" damage="2d40" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="8" cannotmove="yes" canlearn="no" teach="no" noweapons="yes">
<race name="mountainguard" unarmedguard="yes" magres="50" maxaura="1.0" regaura="0.500000" weight="10000" capacity="2000" speed="0.000000" hp="1000" ac="12" damage="2d40" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="8" cannotmove="yes" canlearn="no" teach="no" noweapons="yes">
<ai splitsize="1"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d40"/>
</race>
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="0.750000" maxaura="1.0" regaura="2.000000" weight="500" capacity="540" speed="1.0" hp="150" ac="4" damage="2d5" unarmedattack="0" unarmeddefense="0" attackmodifier="11" defensemodifier="13" scarepeasants="yes" walk="yes" teach="no" desert="yes">
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1.0" regaura="2.000000" weight="500" capacity="540" speed="1.0" hp="150" ac="4" damage="2d5" unarmedattack="0" unarmeddefense="0" attackmodifier="11" defensemodifier="13" scarepeasants="yes" walk="yes" teach="no" desert="yes">
<ai splitsize="50" killpeasants="yes" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d4"/>
<attack type="2" damage="2d30"/>
<attack type="3" damage="1d2"/>
</race>
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="0.750000" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="50" ac="3" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="8" defensemodifier="11" scarepeasants="yes" walk="yes" teach="no" desert="yes" recruitethereal="yes">
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="50" ac="3" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="8" defensemodifier="11" scarepeasants="yes" walk="yes" teach="no" desert="yes" recruitethereal="yes">
<ai splitsize="1000" killpeasants="yes" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d3"/>
<attack type="3" damage="1d1"/>
</race>
<race name="stonegolem" stonegolem="true" magres="0.250000" maxaura="1.0" regaura="0.100000" weight="10000" capacity="2000" speed="1.0" hp="60" ac="4" damage="2d12+6" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
<race name="stonegolem" stonegolem="true" magres="25" maxaura="1.0" regaura="0.100000" weight="10000" capacity="2000" speed="1.0" hp="60" ac="4" damage="2d12+6" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
<ai splitsize="50"/>
<skill name="building" modifier="14"/>
<skill name="roadwork" modifier="14"/>
<attack type="4" damage="2d10+4"/>
</race>
<race name="irongolem" irongolem="true" magres="0.250000" maxaura="1.0" regaura="0.100000" weight="10000" capacity="2000" speed="1.0" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
<race name="irongolem" irongolem="true" magres="25" maxaura="1.0" regaura="0.100000" weight="10000" capacity="2000" speed="1.0" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
<ai splitsize="50"/>
<function name="name" value="namegeneric"/>
<skill name="armorer" modifier="14"/>
<skill name="weaponsmithing" modifier="14"/>
<attack type="4" damage="2d8+4"/>
</race>
<race name="spell" magres="0.000000" maxaura="1.0" regaura="0.100000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2" canlearn="no" noheal="yes" noweapons="yes" illusionary="yes" invisible="yes" fly="yes" swim="yes" walk="yes">
<race name="spell" maxaura="1.0" regaura="0.100000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2" canlearn="no" noheal="yes" noweapons="yes" illusionary="yes" invisible="yes" fly="yes" swim="yes" walk="yes">
<ai splitsize="1"/>
<attack type="1" damage="1d4"/>
</race>
<race name="special" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2">
<race name="special" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2">
<ai splitsize="1"/>
<attack type="1" damage="1d4"/>
</race>
<race name="dracoid" magres="0.000000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" walk="yes" teach="no" giveperson="yes" getitem="yes" equipment="yes">
<race name="dracoid" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" walk="yes" teach="no" giveperson="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="name" value="namedracoid"/>
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
<attack type="1" damage="1d5"/>
</race>
<race name="ent" magres="0.250000" maxaura="1.0" regaura="0.500000" weight="5000" capacity="2500" speed="1.0" hp="50" ac="4" damage="2d4+12" unarmedattack="0" unarmeddefense="0" attackmodifier="9" defensemodifier="7" scarepeasants="yes" walk="yes" teach="no">
<race name="ent" magres="25" maxaura="1.0" regaura="0.500000" weight="5000" capacity="2500" speed="1.0" hp="50" ac="4" damage="2d4+12" unarmedattack="0" unarmeddefense="0" attackmodifier="9" defensemodifier="7" scarepeasants="yes" walk="yes" teach="no">
<ai splitsize="1000" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d12"/>
<attack type="4" damage="2d12"/>
</race>
<race name="illusion" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="1.0" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" walk="yes" canlearn="no" teach="no" noweapons="yes" illusionary="yes">
<ai splitsize="999999"/>
<function name="age" value="ageillusion"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d1"/>
</race>
<race name="undead" magres="0.000000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d7" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes">
<race name="undead" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d7" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes">
<ai splitsize="20000" moverandom="yes"/>
<function name="name" value="nameundead"/>
<function name="age" value="ageundead"/>
<attack type="4" damage="1d7"/>
<attack type="5"/>
</race>
<race name="clone" magres="0.900000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.0" hp="40" damage="0d0" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" canlearn="no" teach="no" noheal="yes">
<race name="clone" magres="90" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.0" hp="40" damage="0d0" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" canlearn="no" teach="no" noheal="yes">
<ai splitsize="10000"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -768,9 +732,8 @@
<attack type="1" damage="0d0"/>
</race>
<race name="ghast" magres="0.600000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="60" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameghoul"/>
<race name="ghast" magres="60" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="60" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -787,10 +750,8 @@
<attack type="2" damage="1d30"/>
</race>
<race name="ghoul" magres="0.300000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="30" ac="1" damage="1d7" unarmedattack="3" unarmeddefense="3" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
<race name="ghoul" magres="30" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="30" ac="1" damage="1d7" unarmedattack="3" unarmeddefense="3" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameghoul"/>
<function name="age" value="ageghoul"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -806,9 +767,8 @@
<attack type="2" damage="1d30"/>
</race>
<race name="juju-zombie" magres="0.500000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="80" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistbash="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
<function name="name" value="namezombie"/>
<race name="juju" magres="50" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="80" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistbash="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -823,10 +783,8 @@
<attack type="3" damage="1d1"/>
</race>
<race name="zombie" magres="0.200000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="40" ac="1" damage="1d7" unarmedattack="2" unarmeddefense="2" attackmodifier="5" defensemodifier="5" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<race name="zombie" magres="20" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="40" ac="1" damage="1d7" unarmedattack="2" unarmeddefense="2" attackmodifier="5" defensemodifier="5" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="namezombie"/>
<function name="age" value="agezombie"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -839,9 +797,8 @@
<attack type="1" damage="1d7"/>
</race>
<race name="skeletonlord" magres="0.300000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="60" ac="4" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameskeleton"/>
<race name="skeletonlord" magres="30" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="60" ac="4" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -855,10 +812,8 @@
<attack type="1" damage="1d7"/>
</race>
<race name="skeleton" magres="0.100000" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="20" ac="1" damage="1d7" unarmedattack="1" unarmeddefense="1" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<race name="skeleton" magres="10" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="20" ac="1" damage="1d7" unarmedattack="1" unarmeddefense="1" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameskeleton"/>
<function name="age" value="ageskeleton"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -871,16 +826,13 @@
<attack type="1" damage="1d7"/>
</race>
<race name="shadowknight" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.0" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
<race name="shadowknight" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.0" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
<ai splitsize="20000" moverandom="yes"/>
<function name="name" value="namegeneric"/>
<attack type="1" damage="1d1"/>
</race>
<race name="seaserpent" magres="0.500000" maxaura="1.0" regaura="1.0" weight="20000" capacity="5000" speed="1.0" hp="600" ac="3" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" swim="yes" teach="no" getitem="yes" resistbash="yes">
<race name="seaserpent" magres="50" maxaura="1.0" regaura="1.0" weight="20000" capacity="5000" speed="1.0" hp="600" ac="3" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" swim="yes" teach="no" getitem="yes" resistbash="yes">
<ai splitsize="6" killpeasants="yes" moverandom="yes" learn="yes" moveattack="yes"/>
<function name="name" value="namegeneric"/>
<function name="move" value="moveswimming"/>
<skill name="tactics" modifier="4"/>
<attack type="4" damage="1d30"/>
<attack type="4" damage="1d30"/>
@ -889,35 +841,4 @@
<attack type="8" damage="1d10"/>
</race>
<!-- for the shadowcall spell -->
<race name="shadowbat" magres="0.800000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="1" ac="4" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000" killpeasants="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="1d6"/>
<attack type="3" damage="1d1"/>
</race>
<!-- for the shadowcall spell -->
<race name="nightmare" magres="0.500000" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.0" hp="80" ac="10" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
<ai splitsize="500" killpeasants="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="2" damage="1d10"/>
</race>
<!-- for the shadowcall spell -->
<race name="vampunicorn" magres="1.0" maxaura="0.000000" regaura="0.000000" weight="5000" capacity="2000" speed="1.0" hp="30" ac="4" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000" killpeasants="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d10"/>
<attack type="3" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="2" damage="2d60"/>
</race>
</races>

View File

@ -1,11 +1,8 @@
<?xml version="1.0"?>
<resource name="iron" limited="yes" material="rm_iron">
<item weight="500" score="10">
<construction skill="mining" minskill="1"/>
</item>
<resourcelimit>
<resource name="iron" limited="yes" material="yes">
<item weight="500" score="10">
<construction skill="mining" minskill="1"/>
</item>
<modifier building="mine" type="skill" value="1"/>
<modifier building="mine" type="material" value="0.5"/>
<guard flag="mining"/>
</resourcelimit>
</resource>

View File

@ -1,4 +1,4 @@
<?xml version="1.0"?>
<resource name="mallornseed" limited="yes">
<resource name="mallornseed">
<item weight="10" score="100"/>
</resource>

View File

@ -1,4 +1,4 @@
<?xml version="1.0"?>
<resource name="seed" limited="yes">
<resource name="seed">
<item weight="10" score="50"/>
</resource>

View File

@ -1,10 +1,8 @@
<?xml version="1.0"?>
<resource name="stone" limited="yes" material="rm_stone">
<item weight="6000" score="10" big="yes">
<construction skill="quarrying" minskill="1"/>
</item>
<resourcelimit>
<resource name="stone" limited="yes" material="yes">
<item weight="6000" score="10" big="yes">
<construction skill="quarrying" minskill="1"/>
</item>
<modifier building="quarry" type="skill" value="1"/>
<modifier building="quarry" type="material" value="0.5"/>
</resourcelimit>
</resource>

View File

@ -107,7 +107,6 @@
<entry spell="rustweapon" level="3" />
<entry spell="sacrifice_strength" level="15" />
<entry spell="seduction" level="6" />
<entry spell="shadowcall" level="12" />
<entry spell="shadowknights" level="1" />
<entry spell="shapeshift" level="3" />
<entry spell="shockwave" level="5" />

View File

@ -665,9 +665,6 @@
<spell name="aura_of_fear" rank="5" index="175" combat="2">
<resource name="aura" amount="12" cost="fixed"/>
</spell>
<spell name="shadowcall" rank="5" index="176" combat="1">
<resource name="aura" amount="24" cost="fixed"/>
</spell>
<spell name="immolation" rank="5" index="180" combat="2">
<resource name="aura" amount="24" cost="fixed"/>
</spell>

View File

@ -1,18 +1,18 @@
<?xml version="1.0"?>
<resources xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="config://core/weapons/axe.xml"/>
<xi:include href="config://core/weapons/bow.xml"/>
<xi:include href="config://core/weapons/catapult.xml"/>
<xi:include href="config://core/weapons/lance.xml"/>
<xi:include href="config://core/weapons/mallornbow.xml"/>
<xi:include href="config://core/weapons/mallornspear.xml"/>
<xi:include href="config://core/weapons/rep_crossbow.xml"/>
<xi:include href="config://core/weapons/runesword.xml"/>
<xi:include href="config://core/weapons/rustyaxe.xml"/>
<xi:include href="config://core/weapons/rustysword.xml"/>
<xi:include href="config://core/weapons/spear.xml"/>
<xi:include href="config://core/weapons/sword.xml"/>
<xi:include href="config://core/weapons/firesword.xml"/>
<xi:include href="config://game/weapons/rep_crossbow.xml"/>
<xi:include href="config://game/weapons/lance.xml"/>
<xi:include href="config://game/weapons/axe.xml"/>
<xi:include href="config://game/weapons/crossbow.xml"/>
<xi:include href="config://game/weapons/greatbow.xml"/>
<xi:include href="config://game/weapons/greatsword.xml"/>

13
res/e3a/weapons/axe.xml Normal file
View File

@ -0,0 +1,13 @@
<?xml version="1.0"?>
<resource name="axe">
<item weight="200" deny="goblin">
<construction skill="weaponsmithing" minskill="3">
<requirement type="log" quantity="1"/>
<requirement type="iron" quantity="1"/>
</construction>
<weapon cut="true" skill="melee" offmod="1" defmod="-2">
<damage type="rider" value="2d6+4"/>
<damage type="footman" value="2d6+4"/>
</weapon>
</item>
</resource>

View File

@ -4,8 +4,7 @@
* has lower damage
-->
<resource name="greatbow">
<item weight="100">
<function name="canuse" value="lua_canuse_item"/>
<item weight="100" allow="elf">
<construction skill="weaponsmithing" minskill="5">
<modifier function="mod_elves_only"/>
<requirement type="mallorn" quantity="2"/>

View File

@ -3,8 +3,7 @@
1. you cannt use this with cavalry
-->
<resource name="halberd">
<item weight="200">
<function name="canuse" value="lua_canuse_item"/>
<item weight="200" deny="goblin">
<construction skill="weaponsmithing" minskill="3">
<requirement type="log" quantity="2"/>
<requirement type="iron" quantity="1"/>

12
res/e3a/weapons/lance.xml Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0"?>
<resource name="lance">
<item weight="200" deny="goblin">
<construction skill="weaponsmithing" minskill="2">
<requirement type="log" quantity="2"/>
</construction>
<weapon pierce="true" skill="polearm" offmod="0" defmod="-2">
<damage type="footman" value="1d5"/>
<damage type="rider" value="2d6+5"/>
</weapon>
</item>
</resource>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="mallornlance">
<item weight="100">
<function name="canuse" value="lua_canuse_item"/>
<item weight="100" deny="goblin">
<construction skill="weaponsmithing" minskill="5">
<requirement type="mallorn" quantity="2"/>
</construction>

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?>
<resource name="rep_crossbow">
<item weight="100">
<function name="canuse" value="lua_canuse_item"/>
<item weight="100" allow="dwarf halfling">
<construction skill="weaponsmithing" minskill="5">
<modifier function="mod_dwarves_only"/>
<requirement type="log" quantity="1"/>

View File

@ -3,8 +3,7 @@
1. you cannot use this with cavalry
-->
<resource name="rustyhalberd">
<item weight="200" score="20">
<function name="canuse" value="lua_canuse_item"/>
<item weight="200" score="20" deny="goblin">
<construction skill="weaponsmithing" minskill="3">
<requirement type="iron" quantity="1"/>
<requirement type="log" quantity="1"/>

View File

@ -1,32 +1,14 @@
<?xml version="1.0"?>
<resources>
<resource name="instantartsculpture">
<function name="change" value="changeitem"/>
<item weight="0">
<function name="use" value="use_instantartsculpture"/>
</item>
</resource>
<resource name="instantartacademy">
<function name="change" value="changeitem"/>
<item weight="0">
<function name="use" value="use_instantartacademy"/>
</item>
</resource>
<resource name="aurapotion50">
<function name="change" value="changeitem"/>
<item weight="0">
<function name="use" value="use_aurapotion50"/>
</item>
<item weight="0" use="yes" />
</resource>
<resource name="bagpipeoffear">
<function name="change" value="changeitem"/>
<item weight="0">
<function name="use" value="use_bagpipeoffear"/>
</item>
<item weight="0" use="yes"/>
</resource>
</resources>

View File

@ -4,4 +4,5 @@
<building name="temple" maxsize="50" maxcapacity="2" nobuild="yes" nodestroy="yes" unique="yes" auraregen="1.00" />
<building name="portal" maxsize="2" capacity="1" maxcapacity="2" nobuild="yes" nodestroy="yes" unique="yes" />
<building name="pavilion" maxsize="2" capacity="1" maxcapacity="2" nobuild="yes" nodestroy="yes" unique="yes" />
<building name="artacademy" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/>
</buildings>

View File

@ -2,18 +2,18 @@
<equipment>
<!-- one equipment-set per player-race for the first unit in a faction -->
<set name="first_dwarf">
<set name="autoseed_dwarf">
<item name="axe" amount="1"/>
<item name="chainmail" amount="1"/>
<skill name="melee" level="1"/>
</set>
<set name="first_elf">
<set name="autoseed_elf">
<item name="fairyboot" amount="1"/>
<callback name="equip_newunits"/>
</set>
<set name="first_orc">
<set name="autoseed_orc">
<skill name="polearm" level="4"/>
<skill name="melee" level="4"/>
<skill name="crossbow" level="4"/>
@ -21,30 +21,30 @@
<skill name="bow" level="4"/>
</set>
<set name="first_goblin">
<set name="autoseed_goblin">
<item name="roi" amount="1"/>
<callback name="equip_newunits"/>
</set>
<set name="first_human">
<set name="autoseed_human">
<callback name="equip_newunits"/>
</set>
<set name="first_troll">
<set name="autoseed_troll">
<skill name="building" level="1"/>
<skill name="perception" level="3"/>
<item name="stone" amount="50"/>
</set>
<set name="first_demon">
<set name="autoseed_demon">
<skill name="stamina" level="15"/>
</set>
<set name="first_insect">
<set name="autoseed_insect">
<item name="nestwarmth" amount="9"/>
</set>
<set name="first_halfling">
<set name="autoseed_halfling">
<skill name="trade" level="1"/>
<skill name="riding" level="2"/>
<item name="horse" amount="2"/>
@ -58,12 +58,12 @@
<item name="incense" amount="5"/>
</set>
<set name="first_cat">
<set name="autoseed_cat">
<item name="roi" amount="1"/>
<callback name="equip_newunits"/>
</set>
<set name="first_aquarian">
<set name="autoseed_aquarian">
<skill name="sailing" level="1"/>
<callback name="equip_newunits"/>
</set>
@ -269,11 +269,6 @@
<skill name="melee" level="1"/>
</set>
<set name="new_centaur_unit">
<skill name="polearm" level="1"/>
<skill name="melee" level="1"/>
</set>
<set name="seaserpent_spoils">
<item name="dragonblood" amount="6"/>
<item name="seaserpenthead" amount="1"/>

View File

@ -17,21 +17,15 @@
</resource>
<resource name="snowman">
<item notlost="yes" weight="1">
<function name="use" value="lua_useitem"/>
</item>
<item notlost="yes" weight="1" use="yes" />
</resource>
<resource name="snowglobe">
<item notlost="yes" weight="1">
<function name="use" value="lua_useitem"/>
</item>
<item notlost="yes" weight="1" use="yes" />
</resource>
<resource name="ring_of_levitation" appearance="ring">
<item notlost="yes" weight="0" cursed="true">
<function name="use" value="lua_useitem"/>
</item>
<item notlost="yes" weight="0" cursed="true" use="yes" />
</resource>
<resource name="birthdaycake">
@ -44,65 +38,38 @@
<!-- ambassador rewards -->
<resource name="seashell">
<item cursed="true" weight="0">
<function name="use" value="lua_useitem"/>
</item>
<item cursed="true" weight="0" use="yes" />
</resource>
<!-- xmas 2005 -->
<resource name="stardust" appearance="vial">
<item weight="0">
<function name="use" value="lua_useitem"/>
</item>
<item weight="0" use="yes" />
</resource>
<!-- xmas 2006 -->
<resource name="xmastree">
<item weight="0">
<function name="use" value="lua_useitem"/>
</item>
</resource>
<!-- art rewards -->
<resource name="trappedairelemental">
<item weight="0">
<function name="use" value="use_trappedairelemental"/>
</item>
</resource>
<resource name="hornofdancing">
<item weight="0">
<function name="use" value="use_hornofdancing"/>
</item>
<item weight="0" use="yes" />
</resource>
<!-- museum items -->
<resource name="questkey1" appearance="key">
<!-- Key for an old quest. placeholder item -->
<item notlost="yes" weight="0" >
<function name="use" value="use_museumkey"/>
</item>
<item notlost="yes" weight="0" use="yes" />
</resource>
<resource name="questkey2" appearance="key">
<!-- Key for an old quest. placeholder item -->
<item notlost="yes" weight="0" >
<function name="use" value="use_museumkey"/>
</item>
<item notlost="yes" weight="0" use="yes" />
</resource>
<resource name="museumexitticket">
<!-- you get your stuff back when leaving the museum -->
<item notlost="yes" weight="0">
<function name="use" value="use_museumexitticket"/>
</item>
<item notlost="yes" weight="0" use="yes" />
</resource>
<resource name="museumticket">
<!-- you get your stuff back when leaving the museum -->
<item weight="0">
<function name="use" value="use_museumticket"/>
</item>
<item weight="0" use="yes" />
</resource>
<!-- gimmicks, etc. -->
@ -111,27 +78,13 @@
<item notlost="yes" cursed="true" weight="0"/>
</resource>
<resource name="ao_daemon">
<!-- summons igjarjuk -->
<item weight="0" score="6000" notlost="true" cursed="true">
<function name="use" value="useigjarjuk"/>
<function name="give" value="giveigjarjuk"/>
</item>
</resource>
<resource name="griphonwing">
<!-- this lets you leave the arena -->
<item weight="0" score="6000" notlost="true" cursed="true">
<function name="use" value="leave_arena"/>
<function name="give" value="giveigjarjuk"/>
</item>
<resource name="aoc" appearance="amulet">
<item weight="100" use="yes" />
</resource>
<resource name="eyeofdragon">
<!-- the arena gate, for one-time entry -->
<item weight="0" score="0">
<function name="use" value="enter_arena"/>
</item>
<item weight="0" score="0"/>
</resource>
<resource name="jadee_ring" appearance="ring">

View File

@ -1,7 +1,7 @@
<?xml version="1.0" ?>
<races xmlns:xi="http://www.w3.org/2001/XInclude">
<race name="snowman" magres="0.800000" maxaura="0.000000"
<race name="snowman" magres="80" maxaura="0.000000"
regaura="0.000000" weight="500" capacity="200" equipment="no"
speed="1.000000" hp="1000" ac="4" damage="2d4" unarmedattack="10"
unarmeddefense="10" attackmodifier="8" defensemodifier="8"
@ -10,9 +10,8 @@
<attack type="3" damage="2d6+2"/>
</race>
<race name="human" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="75" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="human" maxaura="1.000000" regaura="1.000000" recruitcost="75" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="migrants.formula" value="1"/>
<skill name="trade" modifier="1"/>
<skill name="herbalism" modifier="-1"/>
@ -27,9 +26,8 @@
<familiar race="eagle"/>
<familiar race="imp"/>
</race>
<race name="kraken" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="300" damage="2d10" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" coastal="yes" swim="yes" teach="no" getitem="yes">
<race name="kraken" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="300" damage="2d10" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" coastal="yes" swim="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="perception" modifier="1"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -61,9 +59,8 @@
<attack type="4" damage="1d10"/>
<attack type="4" damage="1d10"/>
</race>
<race name="giantturtle" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="1600" capacity="600" speed="1.000000" hp="900" ac="7" damage="2d50" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="5" coastal="yes" swim="yes" walk="yes" teach="no" getitem="yes">
<race name="giantturtle" maxaura="0.000000" regaura="0.000000" weight="1600" capacity="600" speed="1.000000" hp="900" ac="7" damage="2d50" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="5" coastal="yes" swim="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="perception" modifier="1"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -90,9 +87,8 @@
<skill name="taxation" modifier="-99"/>
<attack type="4" damage="2d50"/>
</race>
<race name="dolphin" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="24" damage="1d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="5" coastal="yes" swim="yes" teach="no" getitem="yes">
<race name="dolphin" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="24" damage="1d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="5" coastal="yes" swim="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -118,9 +114,8 @@
<skill name="taxation" modifier="-99"/>
<attack type="4" damage="1d6"/>
</race>
<race name="tiger" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="30" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" walk="yes" teach="no" getitem="yes">
<race name="tiger" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="30" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -148,9 +143,8 @@
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
</race>
<race name="hellcat" magres="0.500000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="40" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes" resistpierce="yes">
<race name="hellcat" magres="50" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="40" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes" resistpierce="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="perception" modifier="1"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -178,9 +172,8 @@
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
</race>
<race name="owl" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="9" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="2" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes">
<race name="owl" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="9" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="2" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="espionage" modifier="1"/>
<skill name="stealth" modifier="1"/>
<skill name="perception" modifier="5"/>
@ -209,9 +202,8 @@
<skill name="taxation" modifier="-99"/>
<attack type="4" damage="1d4"/>
</race>
<race name="fairy" magres="0.800000" maxaura="1.000000" regaura="1.500000" weight="200" capacity="540" speed="1.000000" hp="6" damage="1d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="14" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
<race name="fairy" magres="80" maxaura="1.000000" regaura="1.500000" weight="200" capacity="540" speed="1.000000" hp="6" damage="1d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="14" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="stealth" modifier="5"/>
<skill name="espionage" modifier="2"/>
<skill name="perception" modifier="2"/>
@ -244,9 +236,8 @@
<attack type="4" damage="1d3"/>
<attack type="4" damage="1d3"/>
</race>
<race name="dreamcat" magres="0.500000" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="10" damage="1d5" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="6" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
<race name="dreamcat" magres="50" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="10" damage="1d5" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="6" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="magic" modifier="1"/>
<skill name="espionage" modifier="1"/>
<skill name="stealth" modifier="1"/>
@ -275,9 +266,8 @@
<attack type="4" damage="1d5"/>
<attack type="4" damage="1d5"/>
</race>
<race name="imp" magres="0.500000" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="10" ac="1" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
<race name="imp" magres="50" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="10" ac="1" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -308,9 +298,8 @@
<attack type="1" damage="1d4"/>
<attack type="6" spell="fiery_dragonbreath" level="3" />
</race>
<race name="ghost" magres="0.800000" maxaura="0.500000" regaura="0.100000" weight="500" capacity="540" speed="1.000000" hp="30" ac="5" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="8" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes" invinciblenonmagic="yes">
<race name="ghost" magres="80" maxaura="0.500000" regaura="0.100000" weight="500" capacity="540" speed="1.000000" hp="30" ac="5" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="8" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes" invinciblenonmagic="yes">
<ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -339,10 +328,8 @@
<attack type="2" damage="2d30"/>
<attack type="3" damage="1d1"/>
</race>
<race name="wolf" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="25" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<race name="wolf" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="25" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<function name="name" value="namegeneric"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -370,9 +357,8 @@
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
</race>
<race name="unicorn" magres="0.900000" maxaura="1.500000" regaura="1.500000" weight="5000" capacity="2000" speed="2.000000" hp="40" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes">
<race name="unicorn" magres="90" maxaura="1.500000" regaura="1.500000" weight="5000" capacity="2000" speed="2.000000" hp="40" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes">
<ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -401,9 +387,8 @@
<attack type="4" damage="3d12"/>
<attack type="4" damage="2d4"/>
</race>
<race name="nymph" magres="0.900000" maxaura="1.000000" regaura="1.500000" weight="1000" capacity="540" speed="1.000000" hp="15" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" getitem="yes" equipment="yes">
<race name="nymph" magres="90" maxaura="1.000000" regaura="1.500000" weight="1000" capacity="540" speed="1.000000" hp="15" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" getitem="yes" equipment="yes">
<ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="2"/>
<skill name="building" modifier="-99"/>
@ -431,9 +416,8 @@
<attack type="1" damage="1d4"/>
<attack type="2" damage="2d20"/>
</race>
<race name="songdragon" magres="0.990000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="600" speed="1.500000" hp="40" ac="1" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" fly="yes" walk="yes" teach="no" getitem="yes" unarmedguard="yes">
<race name="songdragon" magres="99" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="600" speed="1.500000" hp="40" ac="1" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" fly="yes" walk="yes" teach="no" getitem="yes" unarmedguard="yes">
<ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -463,9 +447,8 @@
<attack type="4" damage="2d4"/>
<attack type="6" spell="fiery_dragonbreath" level="3" />
</race>
<race name="rat" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.000000" hp="10" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" walk="yes" teach="no" getitem="yes">
<race name="rat" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.000000" hp="10" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" walk="yes" teach="no" getitem="yes">
<ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="espionage" modifier="5"/>
<skill name="stealth" modifier="4"/>
<skill name="perception" modifier="2"/>
@ -495,9 +478,8 @@
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
</race>
<race name="eagle" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.500000" hp="15" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="2" fly="yes" walk="yes" teach="no" getitem="yes">
<race name="eagle" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.500000" hp="15" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="2" fly="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -525,9 +507,8 @@
<skill name="taxation" modifier="-99"/>
<attack type="4" damage="2d3"/>
</race>
<race name="tunnelworm" magres="0.800000" maxaura="0.000000" regaura="0.000000" weight="30000" capacity="10000" speed="1.000000" hp="300" ac="6" damage="3d20" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="1" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<race name="tunnelworm" magres="80" maxaura="0.000000" regaura="0.000000" weight="30000" capacity="10000" speed="1.000000" hp="300" ac="6" damage="3d20" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="1" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="99999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="10"/>
@ -558,9 +539,8 @@
<attack type="4" damage="3d20"/>
<attack type="8" damage="1d10"/>
</race>
<race name="lynx" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="20" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="5" walk="yes" teach="no" getitem="yes">
<race name="lynx" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="20" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="5" walk="yes" teach="no" getitem="yes">
<ai splitsize="99999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -589,25 +569,22 @@
<skill name="taxation" modifier="-99"/>
<attack type="4" damage="2d3"/>
</race>
<race name="direwolf" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="20" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" giveperson="yes">
<function name="initfamiliar" value="oldfamiliars"/>
<race name="direwolf" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="20" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" giveperson="yes">
<ai splitsize="5000"/>
<attack type="4" damage="2d4"/>
</race>
<race name="peasant" magres="0.000000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d6" unarmedattack="0" unarmeddefense="0" cannotmove="yes" teach="no">
<race name="peasant" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d6" unarmedattack="0" unarmeddefense="0" cannotmove="yes" teach="no">
<ai splitsize="10000"/>
<attack type="1" damage="1d6"/>
</race>
<race name="braineater" magres="0.900000" maxaura="1.000000"
<race name="braineater" magres="90" maxaura="1.000000"
regaura="1.000000" weight="100" capacity="540" speed="1.000000" hp="20" damage="0d0" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" invinciblenonmagic="yes">
<ai splitsize="500" killpeasants="yes" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<function name="describe" value="describe_race"/>
<attack type="2" damage="3d15"/>
<attack type="3" damage="1d1"/>
<attack type="4" damage="1d1"/>
</race>
<race name="toad" magres="0.200000" maxaura="1.000000" regaura="1.000000" maintenance="10" weight="100" capacity="540" speed="1.000000" hp="10" damage="1d2" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" giveperson="yes" giveunit="yes" getitem="yes" walk="yes">
<race name="toad" magres="20" maxaura="1.000000" regaura="1.000000" maintenance="10" weight="100" capacity="540" speed="1.000000" hp="10" damage="1d2" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" giveperson="yes" giveunit="yes" getitem="yes" walk="yes">
<ai splitsize="1" learn="yes"/>
<skill name="alchemy" modifier="-10"/>
<skill name="crossbow" modifier="-10"/>
@ -671,69 +648,61 @@
<skill name="stamina" modifier="-10"/>
<attack type="4" damage="1d2"/>
</race>
<race name="mountainguard" unarmedguard="yes" magres="0.500000" maxaura="1.000000" regaura="0.500000" weight="10000" capacity="2000" speed="0.000000" hp="1000" ac="12" damage="2d40" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="8" cannotmove="yes" canlearn="no" teach="no" noweapons="yes">
<race name="mountainguard" unarmedguard="yes" magres="50" maxaura="1.000000" regaura="0.500000" weight="10000" capacity="2000" speed="0.000000" hp="1000" ac="12" damage="2d40" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="8" cannotmove="yes" canlearn="no" teach="no" noweapons="yes">
<ai splitsize="1"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d40"/>
</race>
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="0.750000" maxaura="1.000000" regaura="2.000000" weight="500" capacity="540" speed="1.000000" hp="150" ac="4" damage="2d5" unarmedattack="0" unarmeddefense="0" attackmodifier="11" defensemodifier="13" scarepeasants="yes" walk="yes" teach="no" desert="yes">
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1.000000" regaura="2.000000" weight="500" capacity="540" speed="1.000000" hp="150" ac="4" damage="2d5" unarmedattack="0" unarmeddefense="0" attackmodifier="11" defensemodifier="13" scarepeasants="yes" walk="yes" teach="no" desert="yes">
<ai splitsize="50" killpeasants="yes" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d4"/>
<attack type="2" damage="2d30"/>
<attack type="3" damage="1d2"/>
</race>
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="0.750000" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="50" ac="3" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="8" defensemodifier="11" scarepeasants="yes" walk="yes" teach="no" desert="yes" recruitethereal="yes">
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="50" ac="3" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="8" defensemodifier="11" scarepeasants="yes" walk="yes" teach="no" desert="yes" recruitethereal="yes">
<ai splitsize="1000" killpeasants="yes" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d3"/>
<attack type="3" damage="1d1"/>
</race>
<race name="stonegolem" stonegolem="true" magres="0.250000" maxaura="1.000000" regaura="0.100000" weight="10000" capacity="2000" speed="1.000000" hp="60" ac="4" damage="2d12+6" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
<race name="stonegolem" stonegolem="true" magres="25" maxaura="1.000000" regaura="0.100000" weight="10000" capacity="2000" speed="1.000000" hp="60" ac="4" damage="2d12+6" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
<ai splitsize="50"/>
<skill name="building" modifier="14"/>
<skill name="roadwork" modifier="14"/>
<attack type="4" damage="2d10+4"/>
</race>
<race name="irongolem" irongolem="true" magres="0.250000" maxaura="1.000000" regaura="0.100000" weight="10000" capacity="2000" speed="1.000000" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
<race name="irongolem" irongolem="true" magres="25" maxaura="1.000000" regaura="0.100000" weight="10000" capacity="2000" speed="1.000000" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
<ai splitsize="50"/>
<function name="name" value="namegeneric"/>
<skill name="armorer" modifier="14"/>
<skill name="weaponsmithing" modifier="14"/>
<attack type="4" damage="2d8+4"/>
</race>
<race name="spell" magres="0.000000" maxaura="1.000000" regaura="0.100000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2" canlearn="no" noheal="yes" noweapons="yes" illusionary="yes" invisible="yes" fly="yes" swim="yes" walk="yes">
<race name="spell" maxaura="1.000000" regaura="0.100000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2" canlearn="no" noheal="yes" noweapons="yes" illusionary="yes" invisible="yes" fly="yes" swim="yes" walk="yes">
<ai splitsize="1"/>
<attack type="1" damage="1d4"/>
</race>
<race name="special" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2">
<race name="special" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2">
<ai splitsize="1"/>
<attack type="1" damage="1d4"/>
</race>
<race name="dracoid" magres="0.000000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" walk="yes" teach="no" giveperson="yes" getitem="yes" equipment="yes">
<race name="dracoid" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" walk="yes" teach="no" giveperson="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="name" value="namedracoid"/>
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
<attack type="1" damage="1d5"/>
</race>
<race name="catdragon" magres="0.900000" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="10000" speed="1.000000" hp="20" damage="2d40" unarmedattack="0" unarmeddefense="0" defensemodifier="50" fly="yes" walk="yes" teach="no" shapeshift="yes" giveperson="yes" getitem="yes" dragon="yes">
<race name="catdragon" magres="90" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="10000" speed="1.000000" hp="20" damage="2d40" unarmedattack="0" unarmeddefense="0" defensemodifier="50" fly="yes" walk="yes" teach="no" shapeshift="yes" giveperson="yes" getitem="yes" dragon="yes">
<ai splitsize="1"/>
<attack type="4" damage="2d40"/>
<attack type="4" damage="2d40"/>
<attack type="4" damage="2d40"/>
<attack type="4" damage="2d40"/>
</race>
<race name="ent" magres="0.250000" maxaura="1.000000" regaura="0.500000" weight="5000" capacity="2500" speed="1.000000" hp="50" ac="4" damage="2d4+12" unarmedattack="0" unarmeddefense="0" attackmodifier="9" defensemodifier="7" scarepeasants="yes" walk="yes" teach="no">
<race name="ent" magres="25" maxaura="1.000000" regaura="0.500000" weight="5000" capacity="2500" speed="1.000000" hp="50" ac="4" damage="2d4+12" unarmedattack="0" unarmeddefense="0" attackmodifier="9" defensemodifier="7" scarepeasants="yes" walk="yes" teach="no">
<ai splitsize="1000" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d12"/>
<attack type="4" damage="2d12"/>
</race>
<race name="wyrm" magres="0.900000" maxaura="1.000000" regaura="3.000000" weight="18000" capacity="1000000" speed="1.000000" hp="2700" ac="8" damage="2d60" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
<race name="wyrm" magres="90" maxaura="1.000000" regaura="3.000000" weight="18000" capacity="1000000" speed="1.000000" hp="2700" ac="8" damage="2d60" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
<ai splitsize="1" killpeasants="yes" learn="yes"/>
<function name="name" value="namedragon"/>
<function name="move" value="movedragon"/>
<skill name="magic" modifier="12"/>
<skill name="tactics" modifier="12"/>
<skill name="perception" modifier="10"/>
@ -742,11 +711,8 @@
<attack type="4" damage="5d30"/>
<attack type="6" spell="powerful_dragonbreath" level="12" />
</race>
<race name="dragon" magres="0.700000" maxaura="1.000000" regaura="2.000000" weight="10000" capacity="1000000" speed="1.500000" hp="900" ac="6" damage="2d30" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes" dragon="yes">
<race name="dragon" magres="70" maxaura="1.000000" regaura="2.000000" weight="10000" capacity="1000000" speed="1.500000" hp="900" ac="6" damage="2d30" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes" dragon="yes">
<ai splitsize="2" killpeasants="yes" learn="yes"/>
<function name="name" value="namedragon"/>
<function name="age" value="agedragon"/>
<function name="move" value="movedragon"/>
<skill name="magic" modifier="8"/>
<skill name="tactics" modifier="8"/>
<skill name="perception" modifier="5"/>
@ -755,11 +721,8 @@
<attack type="4" damage="3d30"/>
<attack type="6" spell="icy_dragonbreath" level="6" />
</race>
<race name="youngdragon" magres="0.500000" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="10000" speed="1.000000" hp="300" ac="4" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
<race name="youngdragon" magres="50" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="10000" speed="1.000000" hp="300" ac="4" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
<ai splitsize="6" killpeasants="yes" learn="yes"/>
<function name="name" value="namedragon"/>
<function name="age" value="agefiredragon"/>
<function name="move" value="movedragon"/>
<skill name="magic" modifier="4"/>
<skill name="tactics" modifier="4"/>
<skill name="stealth" modifier="2"/>
@ -769,22 +732,13 @@
<attack type="4" damage="1d30"/>
<attack type="6" spell="fiery_dragonbreath" level="3" />
</race>
<race name="illusion" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="1.000000" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" walk="yes" canlearn="no" teach="no" noweapons="yes" illusionary="yes">
<ai splitsize="999999"/>
<function name="age" value="ageillusion"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d1"/>
</race>
<race name="undead" magres="0.000000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d7" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes">
<race name="undead" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d7" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes">
<ai splitsize="20000" moverandom="yes"/>
<function name="name" value="nameundead"/>
<function name="age" value="ageundead"/>
<attack type="4" damage="1d7"/>
<attack type="5"/>
</race>
<race name="aquarian" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" shipspeed="yes" playerrace="yes" coastal="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="aquarian" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" shipspeed="yes" playerrace="yes" coastal="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="-2"/>
<skill name="building" modifier="-1"/>
<skill name="trade" modifier="2"/>
@ -801,9 +755,8 @@
<familiar race="dolphin"/>
<familiar race="kraken"/>
</race>
<race name="cat" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" defensemodifier="1" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="cat" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" defensemodifier="1" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="-1"/>
<skill name="mining" modifier="-2"/>
<skill name="building" modifier="-1"/>
@ -827,9 +780,8 @@
<familiar race="tiger"/>
<familiar race="hellcat"/>
</race>
<race name="halfling" magres="0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="halfling" magres="5" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="hunger.damage" value="1d14+14"/>
<skill name="crossbow" modifier="1"/>
<skill name="mining" modifier="1"/>
@ -860,9 +812,8 @@
<familiar race="eagle"/>
<familiar race="rat"/>
</race>
<race name="insect" magres="0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="insect" magres="50" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="crossbow" modifier="1"/>
<skill name="mining" modifier="1"/>
<skill name="bow" modifier="-2"/>
@ -889,10 +840,8 @@
<familiar race="tunnelworm"/>
<familiar race="imp"/>
</race>
<race name="demon" magres="0.150000" maxaura="1.000000" regaura="1.250000" recruitcost="150" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="50" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" shapeshift="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" equipment="yes">
<race name="demon" magres="15" maxaura="1.000000" regaura="1.250000" recruitcost="150" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="50" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" shapeshift="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="initfamiliar" value="oldfamiliars"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="2"/>
<skill name="trade" modifier="-3"/>
<skill name="forestry" modifier="1"/>
@ -921,9 +870,8 @@
<familiar race="wolf"/>
<familiar race="imp"/>
</race>
<race name="troll" magres="0.100000" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="2000" capacity="1080" speed="1.000000" hp="30" ac="1" damage="1d5+3" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="troll" magres="10" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="2000" capacity="1080" speed="1.000000" hp="30" ac="1" damage="1d5+3" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="2"/>
<skill name="bow" modifier="-2"/>
<skill name="building" modifier="2"/>
@ -954,8 +902,6 @@
</race>
<race name="goblin" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="40" maintenance="10" weight="600" capacity="440" speed="1.000000" hp="16" damage="1d5" unarmedattack="-2" unarmeddefense="0" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="initfamiliar" value="oldfamiliars"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="1"/>
<skill name="mining" modifier="1"/>
<skill name="building" modifier="1"/>
@ -978,7 +924,7 @@
<familiar race="rat"/>
<familiar race="imp"/>
</race>
<race name="clone" magres="0.900000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="40" damage="0d0" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" canlearn="no" teach="no" noheal="yes">
<race name="clone" magres="90" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="40" damage="0d0" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" canlearn="no" teach="no" noheal="yes">
<ai splitsize="10000"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -1011,11 +957,11 @@
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="0d0"/>
</race>
<race name="template" magres="1.000000" maxaura="0.000000" regaura="0.000000" weight="0" capacity="1000" speed="10.000000" hp="10" damage="1d4" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" fly="yes" swim="yes" walk="yes" shapeshift="yes" shapeshiftany="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" recruitunlimited="yes" equipment="yes">
<race name="template" magres="100" maxaura="0.000000" regaura="0.000000" weight="0" capacity="1000" speed="10.000000" hp="10" damage="1d4" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" fly="yes" swim="yes" walk="yes" shapeshift="yes" shapeshiftany="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" recruitunlimited="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<attack type="1" damage="1d4"/>
</race>
<race name="gnome" magres="1.000000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="50" damage="1d4" unarmedattack="10" unarmeddefense="10" attackmodifier="10" defensemodifier="10" walk="yes" teach="no">
<race name="gnome" magres="100" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="50" damage="1d4" unarmedattack="10" unarmeddefense="10" attackmodifier="10" defensemodifier="10" walk="yes" teach="no">
<ai splitsize="10000"/>
<skill name="tactics" modifier="1"/>
<skill name="perception" modifier="1"/>
@ -1023,7 +969,7 @@
<skill name="unarmed" modifier="1"/>
<attack type="1" damage="1d4"/>
</race>
<race name="museumghost" magres="1.000000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="50" damage="1d4" unarmedattack="10" unarmeddefense="10" attackmodifier="10" defensemodifier="10" walk="yes" teach="no">
<race name="museumghost" magres="100" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="50" damage="1d4" unarmedattack="10" unarmeddefense="10" attackmodifier="10" defensemodifier="10" walk="yes" teach="no">
<ai splitsize="10000"/>
<skill name="tactics" modifier="1"/>
<skill name="perception" modifier="1"/>
@ -1037,9 +983,8 @@
<attack type="2" damage="5d600"/>
<attack type="1" damage="1d4"/>
</race>
<race name="ghast" magres="0.600000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="60" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameghoul"/>
<race name="ghast" magres="60" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="60" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -1055,10 +1000,8 @@
<attack type="2" damage="1d30"/>
<attack type="2" damage="1d30"/>
</race>
<race name="ghoul" magres="0.300000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="30" ac="1" damage="1d7" unarmedattack="3" unarmeddefense="3" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
<race name="ghoul" magres="30" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="30" ac="1" damage="1d7" unarmedattack="3" unarmeddefense="3" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameghoul"/>
<function name="age" value="ageghoul"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -1073,9 +1016,8 @@
<attack type="3" damage="1d2"/>
<attack type="2" damage="1d30"/>
</race>
<race name="juju-zombie" magres="0.500000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="80" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistbash="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
<function name="name" value="namezombie"/>
<race name="juju" magres="50" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="80" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistbash="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -1089,10 +1031,8 @@
<attack type="3" damage="1d1"/>
<attack type="3" damage="1d1"/>
</race>
<race name="zombie" magres="0.200000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="40" ac="1" damage="1d7" unarmedattack="2" unarmeddefense="2" attackmodifier="5" defensemodifier="5" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<race name="zombie" magres="20" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="40" ac="1" damage="1d7" unarmedattack="2" unarmeddefense="2" attackmodifier="5" defensemodifier="5" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="namezombie"/>
<function name="age" value="agezombie"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -1104,9 +1044,8 @@
<skill name="unarmed" modifier="1"/>
<attack type="1" damage="1d7"/>
</race>
<race name="skeletonlord" magres="0.300000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="60" ac="4" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameskeleton"/>
<race name="skeletonlord" magres="30" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="60" ac="4" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -1119,10 +1058,8 @@
<attack type="1" damage="1d7"/>
<attack type="1" damage="1d7"/>
</race>
<race name="skeleton" magres="0.100000" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="20" ac="1" damage="1d7" unarmedattack="1" unarmeddefense="1" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<race name="skeleton" magres="10" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="20" ac="1" damage="1d7" unarmedattack="1" unarmeddefense="1" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameskeleton"/>
<function name="age" value="ageskeleton"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/>
@ -1134,15 +1071,12 @@
<skill name="unarmed" modifier="1"/>
<attack type="1" damage="1d7"/>
</race>
<race name="shadowknight" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
<race name="shadowknight" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
<ai splitsize="20000" moverandom="yes"/>
<function name="name" value="namegeneric"/>
<attack type="1" damage="1d1"/>
</race>
<race name="seaserpent" magres="0.500000" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="5000" speed="1.000000" hp="600" ac="3" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" swim="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
<race name="seaserpent" magres="50" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="5000" speed="1.000000" hp="600" ac="3" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" swim="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
<ai splitsize="6" killpeasants="yes" moverandom="yes" learn="yes" moveattack="yes"/>
<function name="name" value="namegeneric"/>
<function name="move" value="moveswimming"/>
<skill name="tactics" modifier="4"/>
<attack type="4" damage="1d30"/>
<attack type="4" damage="1d30"/>
@ -1150,9 +1084,10 @@
<attack type="6" spell="fiery_dragonbreath" level="3" />
<attack type="8" damage="1d10"/>
</race>
<race name="snotling" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="50" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="snotling" magres="-5" maxaura="1.000000" regaura="1.000000"
maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="no" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="1"/>
<skill name="mining" modifier="1"/>
<skill name="building" modifier="1"/>
@ -1180,10 +1115,8 @@
<familiar race="wolf"/>
<familiar race="demon"/>
</race>
<race name="elf" magres="0.100000" maxaura="1.000000" regaura="1.250000" recruitcost="130" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="elf" magres="10" maxaura="1.000000" regaura="1.250000" recruitcost="130" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="-1"/>
<skill name="mining" modifier="-2"/>
<skill name="bow" modifier="2"/>
@ -1208,9 +1141,8 @@
<familiar race="unicorn"/>
<familiar race="imp"/>
</race>
<race name="dwarf" magres="0.050000" maxaura="1.000000" regaura="0.500000" recruitcost="110" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="dwarf" magres="5" maxaura="1.000000" regaura="0.500000" recruitcost="110" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="2"/>
<skill name="bow" modifier="-1"/>
<skill name="building" modifier="2"/>
@ -1240,7 +1172,7 @@
<familiar race="wolf"/>
<familiar race="rat"/>
</race>
<race name="orc" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="orc" magres="-5" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<param name="recruit_multi" value="0.5"/>
<skill name="alchemy" modifier="1"/>
@ -1270,10 +1202,8 @@
<familiar race="wolf"/>
<familiar race="demon"/>
</race>
<race name="shadowdragon" magres="0.950000" maxaura="1.000000" regaura="3.000000" weight="100" capacity="100000" speed="1.000000" hp="2700" ac="10" damage="2d60" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="12" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes">
<race name="shadowdragon" magres="95" maxaura="1.000000" regaura="3.000000" weight="100" capacity="100000" speed="1.000000" hp="2700" ac="10" damage="2d60" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="12" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes">
<ai splitsize="1" killpeasants="yes" learn="yes"/>
<function name="name" value="namedragon"/>
<function name="move" value="movedragon"/>
<skill name="tactics" modifier="20"/>
<skill name="perception" modifier="20"/>
<attack type="4" damage="5d30"/>
@ -1282,31 +1212,5 @@
<attack type="4" damage="5d30"/>
<attack type="6" spell="drain_skills" level="12"/>
<attack type="6" spell="aura_of_fear" level="12"/>
<precombatspell spell="shadowcall"/>
</race>
<race name="shadowbat" magres="0.800000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="1" ac="4" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000" killpeasants="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="1d6"/>
<attack type="3" damage="1d1"/>
</race>
<race name="nightmare" magres="0.500000" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.000000" hp="80" ac="10" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
<ai splitsize="500" killpeasants="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="2" damage="1d10"/>
</race>
<race name="vampunicorn" magres="1.000000" maxaura="0.000000" regaura="0.000000" weight="5000" capacity="2000" speed="1.000000" hp="30" ac="4" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000" killpeasants="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d10"/>
<attack type="3" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="2" damage="2d60"/>
</race>
</races>

View File

@ -123,7 +123,6 @@
<entry spell="rustweapon" level="3" />
<entry spell="sacrifice_strength" level="15" />
<entry spell="seduction" level="6" />
<entry spell="shadowcall" level="12" />
<entry spell="shadowknights" level="1" />
<entry spell="shapeshift" level="3" />
<entry spell="shockwave" level="5" />

View File

@ -471,9 +471,6 @@
<spell name="aura_of_fear" rank="5" index="175" combat="2">
<resource name="aura" amount="12" cost="fixed"/>
</spell>
<spell name="shadowcall" rank="5" index="176" combat="1">
<resource name="aura" amount="24" cost="fixed"/>
</spell>
<spell name="mallorntreegrow" rank="5" index="177" far="true" variable="true">
<resource name="aura" amount="6" cost="level"/>
<resource name="mallorn" amount="1" cost="level"/>

View File

@ -116,18 +116,6 @@
<text locale="de">Eine Geburtstagstorte mit 10 Kerzen. Herzlichen Glückwunsch, Eressea!</text>
<text locale="en">A birthday cake with 10 candles. Happy Birthday, Eressea!</text>
</string>
<string name="griphonwing">
<text locale="de">Dieses Fluggerät aus der Schmiede der Zwerge von Celeband galt wie die
'Ebene der Herausforderung' seit Urzeiten als verschollen, ja man
zweifelte seine Existenz an. Die Sage überliefert, das derjenige, der
sie auf der Spitze des Turmes seiner Gesinnung benutzt, als einziger
die 'Ebene der Herausforderungen' verlassen kann.</text>
</string>
<string name="ao_daemon">
<text locale="de">Glückwunsch, mein Kind. Du bist im Besitz des mächtigsten
Artefaktes Eresseas. Ein Fluch, sagt man, liege auf ihm, denn
niemand hat es bisher lange sein Eigen genannt...</text>
</string>
<string name="cookie">
<text locale="de">Kleines trockenes Dauergebäck, m od. s; - u. -es, - u. -e</text>
</string>
@ -352,37 +340,9 @@
<!-- ending here: Wildente and Jadee's wedding -->
<!-- art rewards begin -->
<string name="hornofdancing">
<text locale="de">Horn des Tanzes</text>
<text locale="en">horn of dancing</text>
</string>
<string name="hornofdancing_p">
<text locale="de">Hörner des Tanzes</text>
<text locale="en">horns of dancing</text>
</string>
<string name="instantartacademy">
<text locale="de">Miniatur einer Akademie der Künste</text>
<text locale="en">academy of arts in a box</text>
</string>
<string name="instantartacademy_p">
<text locale="de">Miniaturen einer Akademie der Künste</text>
<text locale="en">academies of arts in a box</text>
</string>
<string name="instantartsculpture">
<text locale="de">Miniatur einer Skulptur</text>
<text locale="en">art sculpture in a box</text>
</string>
<string name="instantartsculpture_p">
<text locale="de">Miniaturen einer Skulptur</text>
<text locale="en">art sculptures in a box</text>
</string>
<string name="trappedairelemental">
<text locale="de">Gefangener Windgeist</text>
<text locale="en">trapped air elemental</text>
</string>
<string name="trappedairelemental_p">
<text locale="de">Gefangene Windgeister</text>
<text locale="en">trapped air elementals</text>
<string name="artacademy">
<text locale="de">Akademie der Künste</text>
<text locale="en">academy of arts</text>
</string>
<string name="aurapotion50">
<text locale="de">Auratrank</text>
@ -402,29 +362,6 @@
</string>
<!-- art rewards end -->
<!-- igjarjuk queste begin -->
<string name="ao_daemon">
<text locale="de">Auge des Dämon</text>
<text locale="en">eye of the demon</text>
<text locale="fr">oeil du démon</text>
</string>
<string name="ao_daemon_p">
<text locale="de">Augen des Dämon</text>
<text locale="en">eyes of the demon</text>
<text locale="fr">oeil du démon</text>
</string>
<string name="griphonwing">
<text locale="de">Schwinge des Greifen</text>
<text locale="en">wing of the gryphon</text>
<text locale="fr">aile du griffon</text>
</string>
<string name="griphonwing_p">
<text locale="de">Schwingen des Greifen</text>
<text locale="en">wings of the gryphon</text>
<text locale="fr">ailes du griffon</text>
</string>
<!-- igjarjuk queste end -->
<string name="rm_adamantium">
<text locale="de">Adamantium</text>
<text locale="en">adamantium</text>
@ -455,5 +392,14 @@
<text locale="de">Adamantiumrüstungen</text>
<text locale="en">adamantium plates</text>
</string>
<string name="aoc">
<text locale="de">Katzenamulett</text>
<text locale="en">amulet of the kitten</text>
<text locale="fr">amulette du chaton</text>
</string>
<string name="aoc_p">
<text locale="en">amulets of the kitten</text>
<text locale="de">Katzenamulette</text>
<text locale="fr">amulettes du chaton</text>
</string>
</strings>

View File

@ -1,3 +0,0 @@
<?xml version="1.0" ?>
<items>
</items>

View File

@ -1,14 +0,0 @@
<?xml version="1.0" ?>
<races xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="races/aquarian.xml"/>
<xi:include href="races/cat.xml"/>
<xi:include href="races/demon.xml"/>
<xi:include href="races/dwarf.xml"/>
<xi:include href="races/elf.xml"/>
<xi:include href="races/goblin.xml"/>
<xi:include href="races/halfling.xml"/>
<xi:include href="races/human.xml"/>
<xi:include href="races/insect.xml"/>
<xi:include href="races/orc.xml"/>
<xi:include href="races/troll.xml"/>
</races>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" ?>
<race name="aquarian" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" shipspeed="yes" playerrace="yes" coastal="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="aquarian" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" shipspeed="yes" playerrace="yes" coastal="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="-2"/>
<skill name="building" modifier="-1"/>
<skill name="trade" modifier="2"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<race name="cat" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" defensemodifier="1" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="cat" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" defensemodifier="1" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="-1"/>
<skill name="mining" modifier="-2"/>
<skill name="building" modifier="-1"/>

View File

@ -1,12 +1,11 @@
<?xml version="1.0" ?>
<race name="demon" magres="0.150000" maxaura="1.000000"
<race name="demon" magres="15" maxaura="1.000000"
regaura="1.250000" recruitcost="150" maintenance="10" weight="1000"
capacity="540" speed="1.000000" hp="50" ac="2" damage="1d5"
unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes"
shapeshift="yes" giveperson="yes" giveunit="yes" getitem="yes"
recruitethereal="yes" equipment="yes" healing="1.5">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="2"/>
<skill name="trade" modifier="-3"/>
<skill name="forestry" modifier="1"/>

View File

@ -1,11 +1,10 @@
<race name="dragon" magres="0.700000" maxaura="1.0" regaura="2.000000" weight="10000" capacity="1000000" speed="1.500000" hp="900" ac=
<race name="dragon" magres="70" maxaura="1.0" regaura="2.000000" weight="10000" capacity="1000000" speed="1.500000" hp="900" ac=
"6" damage="2d30" unarmedattack="0" unarmeddefense="0"
attackmodifier="7" defensemodifier="7" scarepeasants="yes" fly="yes"
walk="yes" teach="no" getitem="yes" resistbash="yes" dragon="yes">
income="1000" walk="yes" teach="no" getitem="yes" resistbash="yes"
dragon="yes">
<ai splitsize="2" killpeasants="yes" learn="yes" scare="400"/>
<function name="name" value="namedragon"/>
<function name="age" value="agedragon"/>
<function name="move" value="movedragon"/>
<skill name="magic" modifier="8"/>
<skill name="tactics" modifier="8"/>
<attack type="4" damage="2d20"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" ?>
<race name="dwarf" magres="0.050000" maxaura="1.000000" regaura="0.500000" recruitcost="110" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="dwarf" magres="5" maxaura="1.000000" regaura="0.500000" recruitcost="110" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="2"/>
<skill name="bow" modifier="-1"/>
<skill name="building" modifier="2"/>
@ -30,4 +29,4 @@
<familiar race="lynx"/>
<familiar race="wolf"/>
<familiar race="rat"/>
</race>
</race>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" ?>
<race name="elf" magres="0.100000" maxaura="1.000000" regaura="1.250000" recruitcost="130" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="elf" magres="10" maxaura="1.000000" regaura="1.250000" recruitcost="130" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="-1"/>
<skill name="mining" modifier="-2"/>
<skill name="bow" modifier="2"/>
@ -26,4 +25,4 @@
<familiar race="unicorn"/>
<familiar race="imp"/>
</race>

View File

@ -1,26 +0,0 @@
<?xml version="1.0" ?>
<race name="goblin" magres="-0.05" maxaura="1.0" regaura="1.0"
recruitcost="60" maintenance="6" weight="600" capacity="440"
speed="1.0" hp="16" damage="1d5" unarmedattack="-2" unarmeddefense="0"
playerrace="yes" walk="yes" giveperson="yes" giveunit="yes"
getitem="yes" equipment="yes" healing="2.0">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="hunger.damage" value="1d8+7"/>
<param name="other_race" value="demon"/>
<param name="other_cost" value="500"/>
<param name="recruit_multi" value="0.5"/>
<skill name="building" modifier="1"/>
<skill name="cartmaking" modifier="-1"/>
<skill name="catapult" modifier="1"/>
<skill name="magic" modifier="-99"/>
<skill name="mining" modifier="1"/>
<skill name="roadwork" modifier="-2"/>
<skill name="sailing" modifier="-2"/>
<skill name="shipcraft" modifier="-2"/>
<skill name="tactics" modifier="-2"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="rat" default="yes"/>
<familiar race="imp"/>
</race>

View File

@ -1,14 +1,12 @@
<?xml version="1.0" ?>
<race name="goblin" magres="-0.05" maxaura="1.0" regaura="1.0"
<race name="goblin" magres="-5" maxaura="1.0"
recruitcost="60" maintenance="6" weight="600" capacity="440"
speed="1.0" hp="16" damage="1d5" unarmedattack="-2" unarmeddefense="0"
playerrace="yes" walk="yes" giveperson="yes" giveunit="yes"
getitem="yes" equipment="yes" healing="2.0">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="hunger.damage" value="1d8+7"/>
<param name="other_race" value="demon"/>
<param name="other_cost" value="500"/>
<param name="recruit_multi" value="0.5"/>
<skill name="cartmaking" modifier="-1"/>
<skill name="catapult" modifier="1"/>

View File

@ -1,12 +1,11 @@
<?xml version="1.0" ?>
<race name="goblin" magres="-0.050000" maxaura="1.000000"
regaura="1.000000" recruitcost="40" maintenance="10" weight="600"
<race name="goblin" magres="-5" maxaura="1.000000"
recruitcost="40" maintenance="10" weight="600"
capacity="440" speed="1.000000" hp="16" damage="1d5"
unarmedattack="-2" unarmeddefense="0" playerrace="yes" walk="yes"
giveperson="yes" giveunit="yes" getitem="yes" equipment="yes"
healing="2.0">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="1"/>
<skill name="mining" modifier="1"/>
<skill name="building" modifier="1"/>

View File

@ -1,8 +1,7 @@
<?xml version="1.0" ?>
<race name="halfling" magres="0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="halfling" magres="5" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="hunger.damage" value="1d14+14"/>
<param name="hunger.damage" value="1d14+14"/>
<skill name="crossbow" modifier="1"/>
<skill name="mining" modifier="1"/>
<skill name="bow" modifier="-1"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" ?>
<race name="human" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="75" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="human" maxaura="1.000000" regaura="1.000000" recruitcost="75" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="trade" modifier="1"/>
<skill name="herbalism" modifier="-1"/>
<skill name="shipcraft" modifier="1"/>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" ?>
<race name="insect" magres="0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="insect" magres="5" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="crossbow" modifier="1"/>
<skill name="mining" modifier="1"/>
<skill name="bow" modifier="-2"/>
@ -27,4 +26,4 @@
<familiar race="rat"/>
<familiar race="tunnelworm"/>
<familiar race="imp"/>
</race>
</race>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" ?>
<race name="orc" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="orc" magres="-5" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<param name="recruit_multi" value="0.5"/>
<skill name="alchemy" modifier="1"/>

Some files were not shown because too many files have changed in this diff Show More