Merge branch 'develop' into profile-hashstring

This commit is contained in:
Enno Rehling 2017-03-11 16:14:31 +01:00
commit 496c57cb3d
495 changed files with 31475 additions and 14120 deletions

89
.gitignore vendored
View file

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

15
.gitmodules vendored
View file

@ -4,18 +4,9 @@
[submodule "cmake"] [submodule "cmake"]
path = cmake path = cmake
url = https://github.com/ennorehling/cmake.git 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"] [submodule "dlmalloc"]
path = dlmalloc path = dlmalloc
url = https://github.com/ennorehling/dlmalloc.git url = https://github.com/ennorehling/dlmalloc.git
[submodule "cutest"]
path = cutest
url = https://github.com/ennorehling/cutest.git
[submodule "iniparser"] [submodule "iniparser"]
path = iniparser path = iniparser
url = https://github.com/ennorehling/iniparser.git url = https://github.com/ennorehling/iniparser.git
@ -26,6 +17,6 @@
path = storage path = storage
url = https://github.com/ennorehling/storage.git url = https://github.com/ennorehling/storage.git
branch = master branch = master
[submodule "tolua"] [submodule "clibs"]
path = tolua path = clibs
url = https://github.com/ennorehling/tolua.git url = https://github.com/ennorehling/clibs

View file

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

View file

@ -6,7 +6,6 @@ endif(WIN32)
project (eressea-server C) project (eressea-server C)
enable_testing() enable_testing()
find_package (LibXml2) find_package (LibXml2)
find_package (SQLite3) find_package (SQLite3)
@ -14,63 +13,14 @@ find_package (Curses)
find_package (Lua REQUIRED) find_package (Lua REQUIRED)
find_package (ToLua 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)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_AUTOCONF")
add_subdirectory (cutest)
add_subdirectory (cJSON) add_subdirectory (cJSON)
add_subdirectory (storage) add_subdirectory (storage)
add_subdirectory (iniparser) add_subdirectory (iniparser)
add_subdirectory (quicklist) add_subdirectory (clibs)
add_subdirectory (critbit)
add_subdirectory (process) add_subdirectory (process)
add_subdirectory (src eressea) 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 "*.xml")
install(DIRECTORY res conf DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.json") 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 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}) 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" "e2/terrains.json"
], ],
"disabled": [ "disabled": [
"pay",
"jsreport" "jsreport"
], ],
"settings": { "settings": {
"game.id": 2, "game.name" : "Eressea",
"game.name": "Eressea", "game.id" : 2,
"orders.default": "work", "orders.default": "work",
"NewbieImmunity": 8, "NewbieImmunity": 8,
"modules.wormholes": true, "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"?> <?xml version="1.0"?>
<eressea xmlns:xi="http://www.w3.org/2001/XInclude"> <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/items.xml" />
<xi:include href="config://core/common/armor.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/equipment.xml"/>
<xi:include href="config://game/items.xml"/> <xi:include href="config://game/items.xml"/>
<xi:include href="config://game/spells.xml"/> <xi:include href="config://game/spells.xml"/>
<xi:include href="config://game/strings.xml"/>
<xi:include href="config://default/adamantium.xml"/> <xi:include href="config://default/adamantium.xml"/>
<equipment> <equipment>
<set name="first_unit"> <set name="autoseed_unit">
<item name="log" amount="50"/> <item name="log" amount="50"/>
<item name="stone" amount="50"/> <item name="stone" amount="50"/>
<item name="iron" amount="50"/> <item name="iron" amount="50"/>
@ -42,30 +35,8 @@
<skill name="perception" level="30"/> <skill name="perception" level="30"/>
<skill name="melee" level="1"/> <skill name="melee" level="1"/>
</set> </set>
<set name="new_faction"> <set name="autoseed_faction">
<item name="adamantium" amount="1"/> <item name="adamantium" amount="1"/>
</set> </set>
</equipment> </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> </eressea>

View file

@ -1,9 +1,9 @@
{ {
"include": [ "include": [
"keywords.json", "keywords.json",
"prefixes.json", "prefixes.json",
"e3/terrains.json" "e3/terrains.json"
], ],
"disabled": [ "disabled": [
"herbalism", "herbalism",
"alchemy", "alchemy",
@ -25,8 +25,8 @@
"jsreport" "jsreport"
], ],
"settings": { "settings": {
"game.id": 3, "game.name" : "Eressea",
"game.name": "E3", "game.id" : 3,
"orders.default": "work", "orders.default": "work",
"database.gameid": 7, "database.gameid": 7,
"NewbieImmunity": 4, "NewbieImmunity": 4,
@ -42,6 +42,7 @@
"nmr.timeout": 5, "nmr.timeout": 5,
"nmr.removenewbie": 0, "nmr.removenewbie": 0,
"GiveRestriction": 3, "GiveRestriction": 3,
"healing.forest": 2.0,
"hunger.long": false, "hunger.long": false,
"hunger.damage": "1d9+9", "hunger.damage": "1d9+9",
"hunger.demons.skill": true, "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"?> <?xml version="1.0"?>
<eressea xmlns:xi="http://www.w3.org/2001/XInclude"> <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/items.xml"/>
<xi:include href="config://core/common/herbs.xml" /> <xi:include href="config://core/common/herbs.xml" />
<xi:include href="config://core/spoils.xml"/> <xi:include href="config://core/spoils.xml"/>
@ -15,8 +12,6 @@
<xi:include href="config://game/shipnames.xml"/> <xi:include href="config://game/shipnames.xml"/>
<xi:include href="config://core/calendar.xml"/> <xi:include href="config://core/calendar.xml"/>
<xi:include href="config://game/items.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/races.xml"/>
<xi:include href="config://game/buildings.xml"/> <xi:include href="config://game/buildings.xml"/>
<xi:include href="config://game/equipment.xml"/> <xi:include href="config://game/equipment.xml"/>
@ -28,14 +23,6 @@
<calendar name="thirdage" newyear="month_1" start="1"/> <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-undead.xml"/>
<xi:include href="config://default/names-skeletons.xml"/> <xi:include href="config://default/names-skeletons.xml"/>
<xi:include href="config://default/names-zombies.xml"/> <xi:include href="config://default/names-zombies.xml"/>
@ -44,20 +31,4 @@
<rules> <rules>
<function name="wage" value="minimum_wage"/> <function name="wage" value="minimum_wage"/>
</rules> </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> </eressea>

View file

@ -222,14 +222,6 @@
"div": "100" "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 @@
[game]
[eressea] email = eressea-server@kn-bremen.de
sender = Eressea Server
name = Eressea
base = . base = .
report = reports report = reports
verbose = 0 verbose = 0

View file

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

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

1
cutest

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

File diff suppressed because it is too large Load diff

View file

@ -6,7 +6,7 @@ if [ -z $ERESSEA ]; then
fi fi
GAME=$ERESSEA/game-$1 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 TURN=$2
if [ -z $TURN ] if [ -z $TURN ]
@ -20,5 +20,5 @@ if [ ! -d $GAME/reports ]; then
fi fi
cd $GAME/reports cd $GAME/reports
$HOME/bin/compress.py $TURN "$GAME_NAME" $ERESSEA/server/bin/compress.py $TURN "$GAME_NAME"
cd - cd -

View file

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

View file

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

View file

@ -2,7 +2,10 @@
# -*- coding: iso-8859-1 -*- # -*- coding: iso-8859-1 -*-
from os import unlink, symlink, rename, popen, tmpfile 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 re import compile, IGNORECASE
from string import split, join, upper, strip from string import split, join, upper, strip
from sys import argv, exit from sys import argv, exit
@ -14,9 +17,8 @@ from epasswd import EPasswd
def pwd_get_email(faction, pwd, pwdfile=None): def pwd_get_email(faction, pwd, pwdfile=None):
return None return None
def splitfilename(filename): def split_filename(filename):
from os.path import split return os.path.split(filename)
return split(filename)
def unlock_file(filename): def unlock_file(filename):
try: try:
@ -28,7 +30,7 @@ def unlock_file(filename):
def lock_file(filename): def lock_file(filename):
i = 0 i = 0
wait = 1 wait = 1
if not exists(filename): if not os.path.exists(filename):
file=open(filename, "w") file=open(filename, "w")
file.close() file.close()
while True: while True:
@ -62,17 +64,47 @@ messages = {
"error-en": "Error", "error-en": "Error",
} }
game = int(sys.argv[1])
echeck_cmd = "/home/eressea/echeck/echeck.sh"
maxlines = 25
# base directory for all your games: # base directory for all your games:
rootdir = "/home/eressea/eressea" install_dir = "/home/eressea/eressea"
frommail = "Eressea Server <eressea-server@eressea.de>" if 'ERESSEA' in os.environ:
orderbase = "orders.dir" install_dir = os.environ['ERESSEA']
sendmail = True elif 'HOME' in os.environ:
maxlines = 25 install_dir = os.path.join(os.environ['HOME'], '/eressea')
echeck_cmd = "/home/eressea/echeck/echeck.sh" 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 # 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): def check_pwd(filename, email, pw_data):
results = [] results = []
@ -98,7 +130,7 @@ def check_pwd(filename, email, pw_data):
return results return results
def echeck(filename, locale, rules): 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') stream = popen("%s %s %s %s %s" % (echeck_cmd, locale, filename, dirname, rules), 'r')
lines = stream.readlines() lines = stream.readlines()
if len(lines)==0: if len(lines)==0:
@ -111,14 +143,6 @@ def echeck(filename, locale, rules):
stream.close() stream.close()
return mail 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 - # parse the queue file -
#print "connecting to SMTP..." #print "connecting to SMTP..."
from smtplib import SMTP from smtplib import SMTP
@ -127,16 +151,17 @@ try:
except: except:
print "could not connect to SMTP server" print "could not connect to SMTP server"
exit(0) exit(0)
#print "reading password file..." #print "reading password file..."
pw_data = EPasswd(basedir + "/passwd") pw_data = EPasswd(os.path.join(game_dir,"passwd"))
#print "reading orders.queue..." #print "reading orders.queue..."
# move the queue file to a save space while locking it: # move the queue file to a save space while locking it:
try: try:
lock_file(queuename) lock_file(queue_file)
except: except:
exit(0) exit(0)
queuefile = open(queuename, "r") queuefile = open(queue_file, "r")
lines = queuefile.readlines() lines = queuefile.readlines()
queuefile.close() queuefile.close()
@ -154,9 +179,9 @@ tmpfile.close()
openlog("orders") openlog("orders")
unlink(queuename) unlink(queue_file)
try: try:
unlock_file(queuename) unlock_file(queue_file)
except: except:
pass pass
@ -170,15 +195,15 @@ for line in lines:
email = dict["email"] email = dict["email"]
locale = dict["locale"] locale = dict["locale"]
game = int(dict["game"]) game = int(dict["game"])
file = dict["file"] infile = dict["file"]
gamename='[E%d]' % game gamename='[E%d]' % game
rules='e%d' % game rules='e%d' % game
warning = "" warning = ""
failed = True failed = True
results = check_pwd(file, email, pw_data) results = check_pwd(infile, email, pw_data)
logfile = open(basedir+"/zug.log", "a") logfile = open(os.path.join(game_dir, "zug.log"), "a")
dirname, filename = splitfilename(file) dirname, filename = split_filename(infile)
msg = messages["validate-"+locale] + " " + filename + "\n\n" msg = messages["validate-"+locale] + " " + infile + "\n\n"
for faction, game_email, success, pwd in results: for faction, game_email, success, pwd in results:
msg = msg + messages["faction-"+locale] + " " + faction + "\n" msg = msg + messages["faction-"+locale] + " " + faction + "\n"
if success: failed = False if success: failed = False
@ -189,25 +214,24 @@ for line in lines:
if failed: if failed:
warning = " (" + messages["warning-" + locale] + ")" warning = " (" + messages["warning-" + locale] + ")"
syslog("failed - no valid password in " + file) syslog("failed - no valid password in " + infile)
else: else:
result = echeck(file, locale, rules) result = None
if email=='eressea': if os.path.exists(echeck_cmd):
print result result = echeck(infile, locale, rules)
continue if result is None:
elif result is None:
# echeck did not finish # 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] + ")" warning = " (" + messages["warning-" + locale] + ")"
syslog("process - echeck got killed, " + file) syslog("process - echeck broken, " + infile)
else: else:
msg = msg + result msg = msg + result
syslog("process - checked orders in " + file) syslog("process - checked orders in " + infile)
subject = gamename + " " + messages["subject-" + locale] + warning 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: try:
server.sendmail(frommail, email, msg) server.sendmail(sender, email, msg)
except: except:
syslog("failed - cannot send to " + email) syslog("failed - cannot send to " + email)

View file

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

View file

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

View file

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

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<calendar name="secondage" newyear="month_1" start="0"> <calendar name="secondage" newyear="month_1">
<season name="winter"> <season name="winter">
<month name="month_4" storm="50" /> <month name="month_4" storm="50" />
<month name="month_5" storm="30" /> <month name="month_5" storm="30" />

View file

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

View file

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

View file

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

View file

@ -6,6 +6,10 @@
_x: preposition (15 /Schlumpf/schwerter) _x: preposition (15 /Schlumpf/schwerter)
_a: including article (ein Schlumpf, a smurf) _a: including article (ein Schlumpf, a smurf)
--> -->
<string name="mailcmd">
<text locale="de">BEFEHLE</text>
<text locale="en">ORDERS</text>
</string>
<string name="vortex"> <string name="vortex">
<text locale="de">Wirbel</text> <text locale="de">Wirbel</text>
<text locale="en">vortex</text> <text locale="en">vortex</text>
@ -235,11 +239,6 @@
einzige Vorteil ihrer geringen Größe ist, dass sie sich leichter einzige Vorteil ihrer geringen Größe ist, dass sie sich leichter
verstecken kann.</text> verstecken kann.</text>
</string> </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"> <string name="speedsail">
<text locale="de">Setzt eine Einheit dieses Segel auf einem Schiff, so erhöht <text locale="de">Setzt eine Einheit dieses Segel auf einem Schiff, so erhöht
sich dessen Reichweite permanent um 1 Region.</text> sich dessen Reichweite permanent um 1 Region.</text>
@ -485,13 +484,13 @@
</string> </string>
<string name="mallorntree"> <string name="mallorntree">
<text locale="de">Mallornbaum</text> <text locale="de">Mallorn</text>
<text locale="en">mallorn tree</text> <text locale="en">mallorn</text>
</string> </string>
<string name="mallorntree_p"> <string name="mallorntree_p">
<text locale="de">Mallornbäume</text> <text locale="de">Mallorn</text>
<text locale="en">mallorn trees</text> <text locale="en">mallorn</text>
</string> </string>
<!--Küsten --> <!--Küsten -->
@ -913,17 +912,9 @@
<string name="illusioncastle"> <string name="illusioncastle">
<text locale="de">Traumschlößchen</text> <text locale="de">Traumschlößchen</text>
</string> </string>
<string name="genericbuilding"> <string name="building">
<text locale="de">Struktur</text> <text locale="de">Struktur</text>
</string> </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 --> <!--Testitem -->
<string name="wand"> <string name="wand">
@ -1467,12 +1458,6 @@
<string name="aots_p"> <string name="aots_p">
<text locale="de">Amulette des wahren Sehens</text> <text locale="de">Amulette des wahren Sehens</text>
</string> </string>
<string name="aoc">
<text locale="de">Katzenamulett</text>
</string>
<string name="aoc_p">
<text locale="de">Katzenamulette</text>
</string>
<string name="roi"> <string name="roi">
<text locale="de">Ring der Unsichtbarkeit</text> <text locale="de">Ring der Unsichtbarkeit</text>
</string> </string>
@ -1614,14 +1599,6 @@
<string name="presspass_p"> <string name="presspass_p">
<text locale="de">Akkreditionen des Xontormia-Expreß</text> <text locale="de">Akkreditionen des Xontormia-Expreß</text>
</string> </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"> <string name="snowball">
<text locale="de">Schneeball</text> <text locale="de">Schneeball</text>
<text locale="en">snowball</text> <text locale="en">snowball</text>
@ -2388,19 +2365,19 @@
<text locale="en">ghoul</text> <text locale="en">ghoul</text>
</string> </string>
<string name="juju-zombie"> <string name="juju">
<text locale="de">Juju-Zombie</text> <text locale="de">Juju-Zombie</text>
<text locale="en">juju-zombie</text> <text locale="en">juju-zombie</text>
</string> </string>
<string name="juju-zombie_p"> <string name="juju_p">
<text locale="de">Juju-Zombies</text> <text locale="de">Juju-Zombies</text>
<text locale="en">juju-zombies</text> <text locale="en">juju-zombies</text>
</string> </string>
<string name="juju-zombie_d"> <string name="juju_d">
<text locale="de">Juju-Zombies</text> <text locale="de">Juju-Zombies</text>
<text locale="en">juju-zombies</text> <text locale="en">juju-zombies</text>
</string> </string>
<string name="juju-zombie_x"> <string name="juju_x">
<text locale="de">Juju-Zombie</text> <text locale="de">Juju-Zombie</text>
<text locale="en">juju-zombie</text> <text locale="en">juju-zombie</text>
</string> </string>
@ -2456,23 +2433,6 @@
<text locale="en">skeleton</text> <text locale="en">skeleton</text>
</string> </string>
<string name="centaur">
<text locale="de">Zentaur</text>
<text locale="en">centaur</text>
</string>
<string name="centaur_p">
<text locale="de">Zentauren</text>
<text locale="en">centaurs</text>
</string>
<string name="centaur_d">
<text locale="de">Zentauren</text>
<text locale="en">centaurs</text>
</string>
<string name="centaur_x">
<text locale="de">Zentauren</text>
<text locale="en">centaur</text>
</string>
<string name="shadowknight"> <string name="shadowknight">
<text locale="de">Schattenritter</text> <text locale="de">Schattenritter</text>
<text locale="en">shadow knight</text> <text locale="en">shadow knight</text>
@ -3845,10 +3805,6 @@
<text locale="de">Meteorregen</text> <text locale="de">Meteorregen</text>
<text locale="en">Meteor Shower</text> <text locale="en">Meteor Shower</text>
</string> </string>
<string name="shadowcall">
<text locale="de">Schattenruf</text>
<text locale="en">Shadow Call</text>
</string>
<string name="create_ror"> <string name="create_ror">
<text locale="de">Erschaffe einen Ring der Regeneration</text> <text locale="de">Erschaffe einen Ring der Regeneration</text>
<text locale="en">Create A Ring of Regeneration</text> <text locale="en">Create A Ring of Regeneration</text>
@ -4529,10 +4485,6 @@
<text locale="de">Verletzt alle Gegner.</text> <text locale="de">Verletzt alle Gegner.</text>
<text locale="en">Injures all enemies.</text> <text locale="en">Injures all enemies.</text>
</string> </string>
<string name="shadowcall">
<text locale="de">Ruft Schattenwesen.</text>
<text locale="en">Calls beings from shadow.</text>
</string>
<string name="aura_of_fear"> <string name="aura_of_fear">
<text locale="de">Panik.</text> <text locale="de">Panik.</text>
<text locale="en">Panic.</text> <text locale="en">Panic.</text>
@ -6612,15 +6564,6 @@
</string> </string>
</namespace> </namespace>
<string name="nr_tree">
<text locale="de">Baum</text>
<text locale="en">tree</text>
</string>
<string name="nr_tree_p">
<text locale="de">Bäume</text>
<text locale="en">trees</text>
</string>
<string name="nr_mallorntree"> <string name="nr_mallorntree">
<text locale="de">Mallornbaum</text> <text locale="de">Mallornbaum</text>
<text locale="en">mallorn tree</text> <text locale="en">mallorn tree</text>
@ -6653,53 +6596,27 @@
<text locale="de">EINLADEN</text> <text locale="de">EINLADEN</text>
<text locale="en">INVITE</text> <text locale="en">INVITE</text>
</string> </string>
<string name="rm_stone">
<text locale="de">Steine</text> <string name="sapling">
<text locale="en">stones</text> <text locale="de">Schößling</text>
<text locale="en">sapling</text>
</string> </string>
<string name="rm_horse"> <string name="sapling_p">
<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">
<text locale="de">Schößlinge</text> <text locale="de">Schößlinge</text>
<text locale="en">saplings</text> <text locale="en">saplings</text>
</string> </string>
<string name="rm_mallornsapling"> <string name="mallornsapling">
<text locale="de">Mallornschößling</text>
<text locale="en">mallorn sapling</text>
</string>
<string name="mallornsapling_p">
<text locale="de">Mallornschößlinge</text> <text locale="de">Mallornschößlinge</text>
<text locale="en">mallorn saplings</text> <text locale="en">mallorn saplings</text>
</string> </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"> <string name="Winter">
<text locale="de">Winter</text> <text locale="de">Winter</text>
<text locale="en">winter</text> <text locale="en">winter</text>

View file

@ -310,7 +310,7 @@
<string name="dam"> <string name="dam">
<text locale="en">dam</text> <text locale="en">dam</text>
</string> </string>
<string name="genericbuilding"> <string name="building">
<text locale="en">structure</text> <text locale="en">structure</text>
</string> </string>
<string name="harbour"> <string name="harbour">
@ -444,12 +444,6 @@
<string name="ao_chastity_p"> <string name="ao_chastity_p">
<text locale="en">amulets of chastity</text> <text locale="en">amulets of chastity</text>
</string> </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"> <string name="aod">
<text locale="en">amulet of darkness</text> <text locale="en">amulet of darkness</text>
</string> </string>

View file

@ -324,7 +324,7 @@
<string name="dam"> <string name="dam">
<text locale="fr">barrage</text> <text locale="fr">barrage</text>
</string> </string>
<string name="genericbuilding"> <string name="building">
<text locale="fr">bâtiment</text> <text locale="fr">bâtiment</text>
</string> </string>
<string name="harbour"> <string name="harbour">
@ -458,12 +458,6 @@
<string name="ao_chastity_p"> <string name="ao_chastity_p">
<text locale="fr">amulettes de chasteté</text> <text locale="fr">amulettes de chasteté</text>
</string> </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"> <string name="aod">
<text locale="fr">amulette de ténčbres</text> <text locale="fr">amulette de ténčbres</text>
</string> </string>
@ -1894,12 +1888,6 @@
<string name="eagle"> <string name="eagle">
<text locale="fr">aigle</text> <text locale="fr">aigle</text>
</string> </string>
<string name="centaur_p">
<text locale="fr">centaures</text>
</string>
<string name="centaur">
<text locale="fr">centaure</text>
</string>
<string name="skeleton_p"> <string name="skeleton_p">
<text locale="fr">squelettes</text> <text locale="fr">squelettes</text>
</string> </string>
@ -1918,10 +1906,10 @@
<string name="zombie"> <string name="zombie">
<text locale="fr">zombie</text> <text locale="fr">zombie</text>
</string> </string>
<string name="juju-zombie_p"> <string name="juju_p">
<text locale="fr">zombies juju</text> <text locale="fr">zombies juju</text>
</string> </string>
<string name="juju-zombie"> <string name="juju">
<text locale="fr">zombie juju</text> <text locale="fr">zombie juju</text>
</string> </string>
<string name="ghoul_p"> <string name="ghoul_p">

View file

@ -1,5 +1,23 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<messages> <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"> <message name="reduced_production">
<text locale="de">Die Region ist verwüstet, der Boden karg.</text> <text locale="de">Die Region ist verwüstet, der Boden karg.</text>
<text locale="en">The region is ravaged, the ground infertile.</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> <text locale="en">"$unit($unit) dies from poison damage taken in $region($region)."</text>
</message> </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"> <message name="find_manual" section="events">
<type> <type>
<arg name="unit" type="unit"/> <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="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> <text locale="en">"$unit($mage) managed to recruit $int($amount) $if($eq($amount,1),"peasant","peasants")."</text>
</message> </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"> <message name="error_giveeye" section="events">
<type> <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> <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>
<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"> <message name="iceberg_melt" section="events">
<type> <type>
<arg name="region" type="region"/> <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="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> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - The magician creates an illusionary building."</text>
</message> </message>
<message name="sp_shapeshift_fail" section="magic"> <message name="sp_shapeshift_fail" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <arg name="region" type="region"/>
@ -1922,10 +1910,9 @@
<message name="use_antimagiccrystal" section="magic"> <message name="use_antimagiccrystal" section="magic">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/>
</type> </type>
<text locale="de">"$unit($unit) benutzt in $region($region) einen Antimagiekristall."</text> <text locale="de">"$unit($unit) benutzt einen Antimagiekristall."</text>
<text locale="en">"$unit($unit) uses an antimagic crystal in $region($region)."</text> <text locale="en">"$unit($unit) uses an antimagic crystal."</text>
</message> </message>
<message name="magicboost_effect" section="magic"> <message name="magicboost_effect" section="magic">
<type> <type>
@ -2424,7 +2411,7 @@
<text locale="de">"Eine Botschaft von $unit.dative($unit) in $region($region): 'Ups! Quack, Quack!'"</text> <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> <text locale="en">"A message from $unit($unit) in $region($region): 'Oops! Croak, Croak!'"</text>
</message> </message>
<message name="familiar_farcast" section="magic"> <message name="familiar_farcast" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <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="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> <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>
<message name="familiar_toofar" section="magic"> <message name="familiar_toofar" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <arg name="region" type="region"/>
@ -2574,13 +2561,6 @@
<text locale="de">"$unit($unit) in $region($region) regeneriert $int($amount) Aura."</text> <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> <text locale="en">"$unit($unit) regenerates $int($amount) aura in $region($region)."</text>
</message> </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"> <message name="studycost" section="study">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
@ -2618,13 +2598,6 @@
<text locale="de">"$unit($teacher) lehrt $unit($student) $skill($skill)."</text> <text locale="de">"$unit($teacher) lehrt $unit($student) $skill($skill)."</text>
<text locale="en">"$unit($teacher) teaches $unit($student) $skill($skill)."</text> <text locale="en">"$unit($teacher) teaches $unit($student) $skill($skill)."</text>
</message> </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"> <message name="sellamount" section="economy">
<type> <type>
<arg name="unit" type="unit"/> <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="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> <text locale="en">"$unit($unit) builds $int($size) more on $ship($ship)."</text>
</message> </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"> <message name="firewall_death" section="movement">
<type> <type>
<arg name="unit" type="unit"/> <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="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> <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>
<message name="detectoceandir" section="movement"> <message name="detectocean" section="errors">
<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">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <arg name="region" type="region"/>
@ -2917,7 +2875,7 @@
<text locale="de">"$unit($unit) entdeckt, dass $region($region) $localize($terrain) ist."</text> <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> <text locale="en">"$unit($unit) discovered that $region($region) is $localize($terrain)."</text>
</message> </message>
<message name="leftship" section="movement"> <message name="leftship" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <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="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> <text locale="en">"$unit($unit) has just landed and cannot continue moving to $region($region)."</text>
</message> </message>
<message name="sailnolandingstorm" section="movement"> <message name="sailnolandingstorm" section="errors">
<type> <type>
<arg name="ship" type="ship"/> <arg name="ship" type="ship"/>
<arg name="region" type="region"/> <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="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> <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>
<message name="sailnolanding" section="movement"> <message name="sailnolanding" section="errors">
<type> <type>
<arg name="ship" type="ship"/> <arg name="ship" type="ship"/>
<arg name="region" type="region"/> <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="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> <text locale="en">"The $ship($ship) could not berth in $region($region). The coast is too dangerous for the vessel."</text>
</message> </message>
<message name="sailforbiddendir" section="movement"> <message name="sailforbiddendir" section="errors">
<type> <type>
<arg name="ship" type="ship"/> <arg name="ship" type="ship"/>
<arg name="direction" type="direction"/> <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="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> <text locale="en">"The crew of the $ship($ship) refuses to travel to the $direction($direction)."</text>
</message> </message>
<message name="sailforbidden" section="movement"> <message name="sailforbidden" section="errors">
<type> <type>
<arg name="ship" type="ship"/> <arg name="ship" type="ship"/>
<arg name="region" type="region"/> <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="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> <text locale="en">"The crew of the $ship($ship) refuses to travel to $region($region)."</text>
</message> </message>
<message name="detectforbiddendir" section="movement"> <message name="detectforbiddendir" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="direction" type="direction"/> <arg name="direction" type="direction"/>
@ -2965,7 +2923,7 @@
<text locale="de">"$unit($unit) weigert sich, nach $direction($direction) zu reisen."</text> <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> <text locale="en">"$unit($unit) refuses to travel to the $direction($direction)."</text>
</message> </message>
<message name="detectforbidden" section="movement"> <message name="detectforbidden" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <arg name="region" type="region"/>
@ -2973,7 +2931,7 @@
<text locale="de">"$unit($unit) weigert sich, nach $region($region) zu reisen."</text> <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> <text locale="en">"$unit($unit) refuses to travel to $region($region)."</text>
</message> </message>
<message name="sailfail" section="movement"> <message name="sailfail" section="errors">
<type> <type>
<arg name="ship" type="ship"/> <arg name="ship" type="ship"/>
<arg name="region" type="region"/> <arg name="region" type="region"/>
@ -2981,7 +2939,7 @@
<text locale="de">"Die $ship($ship) konnte $region($region) nicht verlassen."</text> <text locale="de">"Die $ship($ship) konnte $region($region) nicht verlassen."</text>
<text locale="en">"The $ship($ship) could not leave $region($region)."</text> <text locale="en">"The $ship($ship) could not leave $region($region)."</text>
</message> </message>
<message name="moveblockedbyguard" section="movement"> <message name="moveblockedbyguard" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <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="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> <text locale="en">"$unit($unit) was kept in $region($region) by $unit($guard)."</text>
</message> </message>
<message name="peace_confirm" section="events"> <message name="regionowned" section="errors">
<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">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <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="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> <text locale="en">"$unit($unit) could not travel from $region($region) to $region($target) because the owner denied entrance."</text>
</message> </message>
<message name="leavefail" section="movement"> <message name="leavefail" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <arg name="region" type="region"/>
@ -3051,7 +2981,7 @@
<text locale="de">"$unit($follower) konnte $unit($unit) nicht folgen."</text> <text locale="de">"$unit($follower) konnte $unit($unit) nicht folgen."</text>
<text locale="en">"$unit($follower) could not follow $unit($unit)."</text> <text locale="en">"$unit($follower) could not follow $unit($unit)."</text>
</message> </message>
<message name="moveblocked" section="movement"> <message name="moveblocked" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="direction" type="direction"/> <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="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> <text locale="en">"$unit($unit) discovers that there is no route going $direction($direction)."</text>
</message> </message>
<message name="fogblock" section="movement"> <message name="fogblock" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <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="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> <text locale="en">"$unit($unit) could not travel $direction($direction) from $region($region), the fog was too dense."</text>
</message> </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"> <message name="entrise" section="events">
<type> <type>
<arg name="region" type="region"/> <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="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> <text locale="en">"$unit($unit) walks into an antimagical zone and dissolves."</text>
</message> </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"> <message name="fleescared" section="events">
<type> <type>
<arg name="amount" type="int"/> <arg name="amount" type="int"/>
@ -3392,11 +3301,10 @@
</message> </message>
<message name="wrongpasswd" section="events"> <message name="wrongpasswd" section="events">
<type> <type>
<arg name="faction" type="int"/>
<arg name="password" type="string"/> <arg name="password" type="string"/>
</type> </type>
<text locale="de">"ERESSEA $int36($faction) \"${password}\" - Deine Befehle hatten ein falsches Passwort."</text> <text locale="de">"Deine Befehle hatten ein falsches Passwort (${password})."</text>
<text locale="en">"ERESSEA $int36($faction) \"${password}\" - Your orders had the wrong password."</text> <text locale="en">"Your orders had the wrong password (${password})."</text>
</message> </message>
<message name="changepasswd" section="events"> <message name="changepasswd" section="events">
<type> <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="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> <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>
<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"> <message name="msg_event" section="events">
<type> <type>
<arg name="string" type="string"/> <arg name="string" type="string"/>
@ -6981,13 +6882,7 @@
<text locale="de">"$string"</text> <text locale="de">"$string"</text>
<text locale="en">"$string"</text> <text locale="en">"$string"</text>
</message> </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"> <message name="give_person" section="economy">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
@ -6998,6 +6893,16 @@
<text locale="en">"$unit($unit) transfers $int($amount) person$if($eq($amount,1),"","s") to $unit($target)."</text> <text locale="en">"$unit($unit) transfers $int($amount) person$if($eq($amount,1),"","s") to $unit($target)."</text>
</message> </message>
<message name="receive_person" section="economy">
<type>
<arg name="unit" type="unit"/>
<arg name="amount" type="int"/>
<arg name="target" type="unit"/>
</type>
<text locale="de">"$unit($target) erhält $int($amount) Person$if($eq($amount,1),"","en") von $unit($unit)."</text>
<text locale="en">"$unit($target) receives $int($amount) person$if($eq($amount,1),"","s") from $unit($unit)."</text>
</message>
<message name="give" section="economy"> <message name="give" section="economy">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
@ -7222,7 +7127,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> <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>
<message name="wormhole_requirements" section="events"> <message name="wormhole_requirements" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <arg name="region" type="region"/>
@ -7512,7 +7417,7 @@
<arg name="mage" type="unit"/> <arg name="mage" type="unit"/>
<arg name="building" type="building"/> <arg name="building" type="building"/>
</type> </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> <text locale="en">"$unit($mage) blesses $building($building)."</text>
</message> </message>
@ -7614,16 +7519,6 @@
<text locale="en">"$unit($mage) casts $spell($spell). $int($amount) fighters are temporarily losing some of their memories."</text> <text locale="en">"$unit($mage) casts $spell($spell). $int($amount) fighters are temporarily losing some of their memories."</text>
</message> </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"> <message name="battle::killed" section="battle">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
@ -7643,7 +7538,7 @@
<text locale="de">"Heer $int($index)($abbrev): $int($dead) Tote, $int($fled) Geflohene, $int($survived) Überlebende."</text> <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> <text locale="en">"Army $int($index)($abbrev): $int($dead) dead, $int($fled) fled, $int($survived) survivors."</text>
</message> </message>
<message name="spellfail::nolevel" section="magic"> <message name="spellfail::nolevel" section="errors">
<type> <type>
<arg name="mage" type="unit"/> <arg name="mage" type="unit"/>
<arg name="region" type="region"/> <arg name="region" type="region"/>

View file

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

View file

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

View file

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

View file

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

View file

@ -1,13 +1,8 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<resource name="log" material="rm_tree"> <resource name="log" limited="yes">
<item weight="500" score="10"> <item weight="500" score="10">
<construction skill="forestry" minskill="1"/> <construction skill="forestry" minskill="1"/>
</item> </item>
<resourcelimit>
<modifier building="sawmill" type="skill" value="1"/> <modifier building="sawmill" type="skill" value="1"/>
<modifier building="sawmill" type="material" value="0.5"/> <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> </resource>

View file

@ -1,13 +1,8 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<resource name="mallorn" material="rm_mallorn"> <resource name="mallorn" limited="yes">
<item weight="500" score="30"> <item weight="500" score="30">
<construction skill="forestry" minskill="2"/> <construction skill="forestry" minskill="2"/>
</item> </item>
<resourcelimit>
<modifier building="sawmill" type="skill" value="1"/> <modifier building="sawmill" type="skill" value="1"/>
<modifier building="sawmill" type="material" value="0.5"/> <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> </resource>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,78 +1,9 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<equipment> <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"> <set name="seaserpent_spoils">
<item name="dragonblood" amount="2"/> <item name="dragonblood" amount="2"/>
<item name="seaserpenthead" amount="1"/> <item name="seaserpenthead" amount="1"/>
</set> </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> </equipment>

View file

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

View file

@ -8,9 +8,8 @@
<xi:include href="config://default/races/dragon.xml"/> <xi:include href="config://default/races/dragon.xml"/>
<xi:include href="config://default/races/youngdragon.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"/> <ai splitsize="99999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -32,11 +31,9 @@
<attack type="4" damage="2d3"/> <attack type="4" damage="2d3"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="other_race" value="elf"/> <param name="other_race" value="elf"/>
<param name="other_cost" value="500"/>
<skill name="riding" modifier="+1"/> <skill name="riding" modifier="+1"/>
<skill name="shipcraft" modifier="2"/> <skill name="shipcraft" modifier="2"/>
<skill name="sailing" modifier="2"/> <skill name="sailing" modifier="2"/>
@ -47,11 +44,9 @@
<familiar race="giantturtle"/> <familiar race="giantturtle"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="other_race" value="troll"/> <param name="other_race" value="troll"/>
<param name="other_cost" value="500"/>
<skill name="bow" speed="+5"/> <skill name="bow" speed="+5"/>
<skill name="building" modifier="1"/> <skill name="building" modifier="1"/>
@ -76,11 +71,13 @@
<familiar race="ghost"/> <familiar race="ghost"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="other_race" value="dwarf"/> <param name="other_race" value="dwarf"/>
<param name="other_cost" value="500"/>
<param name="luxury_trade" value="600"/> <param name="luxury_trade" value="600"/>
<skill name="bow" modifier="-1"/> <skill name="bow" modifier="-1"/>
<skill name="building" modifier="1"/> <skill name="building" modifier="1"/>
@ -104,9 +101,8 @@
<!-- begin secondary races --> <!-- 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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="cartmaking" modifier="-2"/> <skill name="cartmaking" modifier="-2"/>
<skill name="forestry" modifier="1"/> <skill name="forestry" modifier="1"/>
<skill name="melee" modifier="1"/> <skill name="melee" modifier="1"/>
@ -124,10 +120,12 @@
<familiar race="ghost"/> <familiar race="ghost"/>
</race> </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"/> <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="armorer" modifier="-1"/>
<skill name="bow" modifier="2"/> <skill name="bow" modifier="2"/>
<skill name="building" modifier="-1"/> <skill name="building" modifier="-1"/>
@ -144,9 +142,8 @@
<familiar race="unicorn"/> <familiar race="unicorn"/>
</race> </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"/> <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 --> <param name="armor.stamina" value="4"/> <!-- +1 natural armor per X levels stamina -->
<skill name="armorer" modifier="2"/> <skill name="armorer" modifier="2"/>
<skill name="bow" modifier="-2"/> <skill name="bow" modifier="-2"/>
@ -167,9 +164,12 @@
<familiar race="rat"/> <familiar race="rat"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="armorer" modifier="2"/> <skill name="armorer" modifier="2"/>
<skill name="bow" modifier="-1"/> <skill name="bow" modifier="-1"/>
<skill name="building" modifier="2"/> <skill name="building" modifier="2"/>
@ -192,9 +192,8 @@
<!-- end player races --> <!-- 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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -219,9 +218,8 @@
<attack type="4" damage="1d10"/> <attack type="4" damage="1d10"/>
<attack type="4" damage="1d10"/> <attack type="4" damage="1d10"/>
</race> </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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -241,9 +239,8 @@
<skill name="cartmaking" modifier="-99"/> <skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="2d50"/> <attack type="4" damage="2d50"/>
</race> </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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -263,9 +260,8 @@
<skill name="cartmaking" modifier="-99"/> <skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
</race> </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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -287,9 +283,8 @@
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
</race> </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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -311,9 +306,8 @@
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
</race> </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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -334,9 +328,8 @@
<skill name="cartmaking" modifier="-99"/> <skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="1d4"/> <attack type="4" damage="1d4"/>
</race> </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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="magic" modifier="1"/> <skill name="magic" modifier="1"/>
<skill name="riding" modifier="-1"/> <skill name="riding" modifier="-1"/>
<skill name="melee" modifier="-1"/> <skill name="melee" modifier="-1"/>
@ -361,9 +354,8 @@
<attack type="4" damage="1d3"/> <attack type="4" damage="1d3"/>
<attack type="4" damage="1d3"/> <attack type="4" damage="1d3"/>
</race> </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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="magic" modifier="1"/> <skill name="magic" modifier="1"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
@ -384,9 +376,8 @@
<attack type="4" damage="1d5"/> <attack type="4" damage="1d5"/>
<attack type="4" damage="1d5"/> <attack type="4" damage="1d5"/>
</race> </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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -409,9 +400,8 @@
<attack type="1" damage="1d4"/> <attack type="1" damage="1d4"/>
<attack type="6" spell="fiery_dragonbreath" level="3" /> <attack type="6" spell="fiery_dragonbreath" level="3" />
</race> </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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -435,10 +425,8 @@
<attack type="2" damage="2d30"/> <attack type="2" damage="2d30"/>
<attack type="3" damage="1d1"/> <attack type="3" damage="1d1"/>
</race> </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"/> <ai splitsize="5000"/>
<function name="name" value="namegeneric"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -460,9 +448,8 @@
<attack type="4" damage="1d4"/> <attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/> <attack type="4" damage="1d4"/>
</race> </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"/> <ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -484,9 +471,8 @@
<attack type="4" damage="3d12"/> <attack type="4" damage="3d12"/>
<attack type="4" damage="2d4"/> <attack type="4" damage="2d4"/>
</race> </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"/> <ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="2"/> <skill name="bow" modifier="2"/>
<skill name="building" modifier="-99"/> <skill name="building" modifier="-99"/>
@ -507,9 +493,8 @@
<attack type="1" damage="1d4"/> <attack type="1" damage="1d4"/>
<attack type="2" damage="2d20"/> <attack type="2" damage="2d20"/>
</race> </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"/> <ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -535,9 +520,8 @@
<attack type="6" spell="fiery_dragonbreath" level="3" /> <attack type="6" spell="fiery_dragonbreath" level="3" />
</race> </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"/> <ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -559,9 +543,8 @@
<attack type="4" damage="1d4"/> <attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/> <attack type="4" damage="1d4"/>
</race> </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"/> <ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -582,9 +565,8 @@
<skill name="cartmaking" modifier="-99"/> <skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="2d3"/> <attack type="4" damage="2d3"/>
</race> </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"/> <ai splitsize="99999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="10"/> <skill name="mining" modifier="10"/>
<skill name="bow" modifier="-99"/> <skill name="bow" modifier="-99"/>
@ -607,24 +589,21 @@
<attack type="4" damage="3d20"/> <attack type="4" damage="3d20"/>
<attack type="8" damage="1d10"/> <attack type="8" damage="1d10"/>
</race> </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"> <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">
<function name="initfamiliar" value="oldfamiliars"/>
<ai splitsize="5000"/> <ai splitsize="5000"/>
<attack type="4" damage="2d4"/> <attack type="4" damage="2d4"/>
</race> </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"/> <ai splitsize="10000"/>
<attack type="1" damage="1d6"/> <attack type="1" damage="1d6"/>
</race> </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"/> <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="2" damage="3d15"/>
<attack type="3" damage="1d1"/> <attack type="3" damage="1d1"/>
<attack type="4" damage="1d1"/> <attack type="4" damage="1d1"/>
</race> </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"/> <ai splitsize="1" learn="yes"/>
<skill name="crossbow" modifier="-10"/> <skill name="crossbow" modifier="-10"/>
<skill name="mining" modifier="-10"/> <skill name="mining" modifier="-10"/>
@ -672,77 +651,62 @@
<skill name="stamina" modifier="-10"/> <skill name="stamina" modifier="-10"/>
<attack type="4" damage="1d2"/> <attack type="4" damage="1d2"/>
</race> </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"/> <ai splitsize="1"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d40"/> <attack type="4" damage="2d40"/>
</race> </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"/> <ai splitsize="50" killpeasants="yes" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d4"/> <attack type="4" damage="2d4"/>
<attack type="2" damage="2d30"/> <attack type="2" damage="2d30"/>
<attack type="3" damage="1d2"/> <attack type="3" damage="1d2"/>
</race> </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"/> <ai splitsize="1000" killpeasants="yes" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d3"/> <attack type="4" damage="2d3"/>
<attack type="3" damage="1d1"/> <attack type="3" damage="1d1"/>
</race> </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"/> <ai splitsize="50"/>
<skill name="building" modifier="14"/> <skill name="building" modifier="14"/>
<skill name="roadwork" modifier="14"/> <skill name="roadwork" modifier="14"/>
<attack type="4" damage="2d10+4"/> <attack type="4" damage="2d10+4"/>
</race> </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"/> <ai splitsize="50"/>
<function name="name" value="namegeneric"/>
<skill name="armorer" modifier="14"/> <skill name="armorer" modifier="14"/>
<skill name="weaponsmithing" modifier="14"/> <skill name="weaponsmithing" modifier="14"/>
<attack type="4" damage="2d8+4"/> <attack type="4" damage="2d8+4"/>
</race> </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"/> <ai splitsize="1"/>
<attack type="1" damage="1d4"/> <attack type="1" damage="1d4"/>
</race> </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"/> <ai splitsize="1"/>
<attack type="1" damage="1d4"/> <attack type="1" damage="1d4"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="name" value="namedracoid"/>
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
<attack type="1" damage="1d5"/> <attack type="1" damage="1d5"/>
</race> </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"/> <ai splitsize="1000" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d12"/> <attack type="4" damage="2d12"/>
<attack type="4" damage="2d12"/> <attack type="4" damage="2d12"/>
</race> </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"> <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="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">
<ai splitsize="20000" moverandom="yes"/> <ai splitsize="20000" moverandom="yes"/>
<function name="name" value="nameundead"/>
<function name="age" value="ageundead"/>
<attack type="4" damage="1d7"/> <attack type="4" damage="1d7"/>
<attack type="5"/> <attack type="5"/>
</race> </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"/> <ai splitsize="10000"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
@ -768,9 +732,8 @@
<attack type="1" damage="0d0"/> <attack type="1" damage="0d0"/>
</race> </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"> <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" aggression="0.02" killpeasants="yes" moverandom="yes"/> <ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameghoul"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -787,10 +750,8 @@
<attack type="2" damage="1d30"/> <attack type="2" damage="1d30"/>
</race> </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"/> <ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameghoul"/>
<function name="age" value="ageghoul"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -806,9 +767,8 @@
<attack type="2" damage="1d30"/> <attack type="2" damage="1d30"/>
</race> </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"> <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" aggression="0.02" killpeasants="yes" moverandom="yes"/> <ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="namezombie"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -823,10 +783,8 @@
<attack type="3" damage="1d1"/> <attack type="3" damage="1d1"/>
</race> </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"/> <ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="namezombie"/>
<function name="age" value="agezombie"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -839,9 +797,8 @@
<attack type="1" damage="1d7"/> <attack type="1" damage="1d7"/>
</race> </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"> <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" aggression="0.02" killpeasants="yes" moverandom="yes"/> <ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameskeleton"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -855,10 +812,8 @@
<attack type="1" damage="1d7"/> <attack type="1" damage="1d7"/>
</race> </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"/> <ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameskeleton"/>
<function name="age" value="ageskeleton"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -871,16 +826,13 @@
<attack type="1" damage="1d7"/> <attack type="1" damage="1d7"/>
</race> </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"/> <ai splitsize="20000" moverandom="yes"/>
<function name="name" value="namegeneric"/>
<attack type="1" damage="1d1"/> <attack type="1" damage="1d1"/>
</race> </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"/> <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"/> <skill name="tactics" modifier="4"/>
<attack type="4" damage="1d30"/> <attack type="4" damage="1d30"/>
<attack type="4" damage="1d30"/> <attack type="4" damage="1d30"/>
@ -889,35 +841,4 @@
<attack type="8" damage="1d10"/> <attack type="8" damage="1d10"/>
</race> </race>
<!-- for the shadowcall spell -->
<race name="shadowbat" magres="0.800000" maxaura="0.000000" regaura="0.000000" recruitcost="500" 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" recruitcost="500" 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" recruitcost="500" 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> </races>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -665,9 +665,6 @@
<spell name="aura_of_fear" rank="5" index="175" combat="2"> <spell name="aura_of_fear" rank="5" index="175" combat="2">
<resource name="aura" amount="12" cost="fixed"/> <resource name="aura" amount="12" cost="fixed"/>
</spell> </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"> <spell name="immolation" rank="5" index="180" combat="2">
<resource name="aura" amount="24" cost="fixed"/> <resource name="aura" amount="24" cost="fixed"/>
</spell> </spell>

View file

@ -1,18 +1,18 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<resources xmlns:xi="http://www.w3.org/2001/XInclude"> <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/bow.xml"/>
<xi:include href="config://core/weapons/catapult.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/mallornbow.xml"/>
<xi:include href="config://core/weapons/mallornspear.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/runesword.xml"/>
<xi:include href="config://core/weapons/rustyaxe.xml"/> <xi:include href="config://core/weapons/rustyaxe.xml"/>
<xi:include href="config://core/weapons/rustysword.xml"/> <xi:include href="config://core/weapons/rustysword.xml"/>
<xi:include href="config://core/weapons/spear.xml"/> <xi:include href="config://core/weapons/spear.xml"/>
<xi:include href="config://core/weapons/sword.xml"/> <xi:include href="config://core/weapons/sword.xml"/>
<xi:include href="config://core/weapons/firesword.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/crossbow.xml"/>
<xi:include href="config://game/weapons/greatbow.xml"/> <xi:include href="config://game/weapons/greatbow.xml"/>
<xi:include href="config://game/weapons/greatsword.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 * has lower damage
--> -->
<resource name="greatbow"> <resource name="greatbow">
<item weight="100"> <item weight="100" allow="elf">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="weaponsmithing" minskill="5"> <construction skill="weaponsmithing" minskill="5">
<modifier function="mod_elves_only"/> <modifier function="mod_elves_only"/>
<requirement type="mallorn" quantity="2"/> <requirement type="mallorn" quantity="2"/>

View file

@ -3,8 +3,7 @@
1. you cannt use this with cavalry 1. you cannt use this with cavalry
--> -->
<resource name="halberd"> <resource name="halberd">
<item weight="200"> <item weight="200" deny="goblin">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="weaponsmithing" minskill="3"> <construction skill="weaponsmithing" minskill="3">
<requirement type="log" quantity="2"/> <requirement type="log" quantity="2"/>
<requirement type="iron" quantity="1"/> <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"?> <?xml version="1.0"?>
<resource name="mallornlance"> <resource name="mallornlance">
<item weight="100"> <item weight="100" deny="goblin">
<function name="canuse" value="lua_canuse_item"/>
<construction skill="weaponsmithing" minskill="5"> <construction skill="weaponsmithing" minskill="5">
<requirement type="mallorn" quantity="2"/> <requirement type="mallorn" quantity="2"/>
</construction> </construction>

View file

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

View file

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

View file

@ -1,32 +1,14 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<resources> <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"> <resource name="aurapotion50">
<function name="change" value="changeitem"/> <function name="change" value="changeitem"/>
<item weight="0"> <item weight="0" use="yes" />
<function name="use" value="use_aurapotion50"/>
</item>
</resource> </resource>
<resource name="bagpipeoffear"> <resource name="bagpipeoffear">
<function name="change" value="changeitem"/> <function name="change" value="changeitem"/>
<item weight="0"> <item weight="0" use="yes"/>
<function name="use" value="use_bagpipeoffear"/>
</item>
</resource> </resource>
</resources> </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="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="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="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> </buildings>

View file

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

View file

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

View file

@ -1,7 +1,7 @@
<?xml version="1.0" ?> <?xml version="1.0" ?>
<races xmlns:xi="http://www.w3.org/2001/XInclude"> <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" regaura="0.000000" weight="500" capacity="200" equipment="no"
speed="1.000000" hp="1000" ac="4" damage="2d4" unarmedattack="10" speed="1.000000" hp="1000" ac="4" damage="2d4" unarmedattack="10"
unarmeddefense="10" attackmodifier="8" defensemodifier="8" unarmeddefense="10" attackmodifier="8" defensemodifier="8"
@ -10,9 +10,8 @@
<attack type="3" damage="2d6+2"/> <attack type="3" damage="2d6+2"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="migrants.formula" value="1"/> <param name="migrants.formula" value="1"/>
<skill name="trade" modifier="1"/> <skill name="trade" modifier="1"/>
<skill name="herbalism" modifier="-1"/> <skill name="herbalism" modifier="-1"/>
@ -27,9 +26,8 @@
<familiar race="eagle"/> <familiar race="eagle"/>
<familiar race="imp"/> <familiar race="imp"/>
</race> </race>
<race name="kraken" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="perception" modifier="1"/> <skill name="perception" modifier="1"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
@ -61,9 +59,8 @@
<attack type="4" damage="1d10"/> <attack type="4" damage="1d10"/>
<attack type="4" damage="1d10"/> <attack type="4" damage="1d10"/>
</race> </race>
<race name="giantturtle" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="perception" modifier="1"/> <skill name="perception" modifier="1"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
@ -90,9 +87,8 @@
<skill name="taxation" modifier="-99"/> <skill name="taxation" modifier="-99"/>
<attack type="4" damage="2d50"/> <attack type="4" damage="2d50"/>
</race> </race>
<race name="dolphin" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
@ -118,9 +114,8 @@
<skill name="taxation" modifier="-99"/> <skill name="taxation" modifier="-99"/>
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
</race> </race>
<race name="tiger" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
@ -148,9 +143,8 @@
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
</race> </race>
<race name="hellcat" magres="0.500000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="perception" modifier="1"/> <skill name="perception" modifier="1"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
@ -178,9 +172,8 @@
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
</race> </race>
<race name="owl" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="espionage" modifier="1"/> <skill name="espionage" modifier="1"/>
<skill name="stealth" modifier="1"/> <skill name="stealth" modifier="1"/>
<skill name="perception" modifier="5"/> <skill name="perception" modifier="5"/>
@ -209,9 +202,8 @@
<skill name="taxation" modifier="-99"/> <skill name="taxation" modifier="-99"/>
<attack type="4" damage="1d4"/> <attack type="4" damage="1d4"/>
</race> </race>
<race name="fairy" magres="0.800000" maxaura="1.000000" regaura="1.500000" recruitcost="50" 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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="stealth" modifier="5"/> <skill name="stealth" modifier="5"/>
<skill name="espionage" modifier="2"/> <skill name="espionage" modifier="2"/>
<skill name="perception" modifier="2"/> <skill name="perception" modifier="2"/>
@ -244,9 +236,8 @@
<attack type="4" damage="1d3"/> <attack type="4" damage="1d3"/>
<attack type="4" damage="1d3"/> <attack type="4" damage="1d3"/>
</race> </race>
<race name="dreamcat" magres="0.500000" maxaura="1.000000" regaura="1.000000" recruitcost="50" 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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="magic" modifier="1"/> <skill name="magic" modifier="1"/>
<skill name="espionage" modifier="1"/> <skill name="espionage" modifier="1"/>
<skill name="stealth" modifier="1"/> <skill name="stealth" modifier="1"/>
@ -275,9 +266,8 @@
<attack type="4" damage="1d5"/> <attack type="4" damage="1d5"/>
<attack type="4" damage="1d5"/> <attack type="4" damage="1d5"/>
</race> </race>
<race name="imp" magres="0.500000" maxaura="1.000000" regaura="1.000000" recruitcost="50" 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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
@ -308,9 +298,8 @@
<attack type="1" damage="1d4"/> <attack type="1" damage="1d4"/>
<attack type="6" spell="fiery_dragonbreath" level="3" /> <attack type="6" spell="fiery_dragonbreath" level="3" />
</race> </race>
<race name="ghost" magres="0.800000" maxaura="0.500000" regaura="0.100000" recruitcost="50" 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"/> <ai splitsize="5000"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
@ -339,10 +328,8 @@
<attack type="2" damage="2d30"/> <attack type="2" damage="2d30"/>
<attack type="3" damage="1d1"/> <attack type="3" damage="1d1"/>
</race> </race>
<race name="wolf" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"/> <ai splitsize="5000"/>
<function name="name" value="namegeneric"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
@ -370,9 +357,8 @@
<attack type="4" damage="1d4"/> <attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/> <attack type="4" damage="1d4"/>
</race> </race>
<race name="unicorn" magres="0.900000" maxaura="1.500000" regaura="1.500000" recruitcost="50" 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"/> <ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
@ -401,9 +387,8 @@
<attack type="4" damage="3d12"/> <attack type="4" damage="3d12"/>
<attack type="4" damage="2d4"/> <attack type="4" damage="2d4"/>
</race> </race>
<race name="nymph" magres="0.900000" maxaura="1.000000" regaura="1.500000" recruitcost="50" 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"/> <ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
<skill name="bow" modifier="2"/> <skill name="bow" modifier="2"/>
<skill name="building" modifier="-99"/> <skill name="building" modifier="-99"/>
@ -431,9 +416,8 @@
<attack type="1" damage="1d4"/> <attack type="1" damage="1d4"/>
<attack type="2" damage="2d20"/> <attack type="2" damage="2d20"/>
</race> </race>
<race name="songdragon" magres="0.990000" maxaura="1.000000" regaura="1.000000" recruitcost="50" 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"/> <ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
@ -463,9 +447,8 @@
<attack type="4" damage="2d4"/> <attack type="4" damage="2d4"/>
<attack type="6" spell="fiery_dragonbreath" level="3" /> <attack type="6" spell="fiery_dragonbreath" level="3" />
</race> </race>
<race name="rat" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"/> <ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="espionage" modifier="5"/> <skill name="espionage" modifier="5"/>
<skill name="stealth" modifier="4"/> <skill name="stealth" modifier="4"/>
<skill name="perception" modifier="2"/> <skill name="perception" modifier="2"/>
@ -495,9 +478,8 @@
<attack type="4" damage="1d4"/> <attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/> <attack type="4" damage="1d4"/>
</race> </race>
<race name="eagle" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"/> <ai splitsize="9999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
@ -525,9 +507,8 @@
<skill name="taxation" modifier="-99"/> <skill name="taxation" modifier="-99"/>
<attack type="4" damage="2d3"/> <attack type="4" damage="2d3"/>
</race> </race>
<race name="tunnelworm" magres="0.800000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"/> <ai splitsize="99999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="10"/> <skill name="mining" modifier="10"/>
@ -558,9 +539,8 @@
<attack type="4" damage="3d20"/> <attack type="4" damage="3d20"/>
<attack type="8" damage="1d10"/> <attack type="8" damage="1d10"/>
</race> </race>
<race name="lynx" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"/> <ai splitsize="99999"/>
<function name="initfamiliar" value="oldfamiliars"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/> <skill name="mining" modifier="-99"/>
@ -589,25 +569,22 @@
<skill name="taxation" modifier="-99"/> <skill name="taxation" modifier="-99"/>
<attack type="4" damage="2d3"/> <attack type="4" damage="2d3"/>
</race> </race>
<race name="direwolf" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"> <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">
<function name="initfamiliar" value="oldfamiliars"/>
<ai splitsize="5000"/> <ai splitsize="5000"/>
<attack type="4" damage="2d4"/> <attack type="4" damage="2d4"/>
</race> </race>
<race name="peasant" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="50" 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"/> <ai splitsize="10000"/>
<attack type="1" damage="1d6"/> <attack type="1" damage="1d6"/>
</race> </race>
<race name="braineater" magres="0.900000" maxaura="1.000000" <race name="braineater" magres="90" maxaura="1.000000"
regaura="1.000000" recruitcost="50000" 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"> 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"/> <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="2" damage="3d15"/>
<attack type="3" damage="1d1"/> <attack type="3" damage="1d1"/>
<attack type="4" damage="1d1"/> <attack type="4" damage="1d1"/>
</race> </race>
<race name="toad" magres="0.200000" maxaura="1.000000" regaura="1.000000" recruitcost="50" 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"/> <ai splitsize="1" learn="yes"/>
<skill name="alchemy" modifier="-10"/> <skill name="alchemy" modifier="-10"/>
<skill name="crossbow" modifier="-10"/> <skill name="crossbow" modifier="-10"/>
@ -671,69 +648,61 @@
<skill name="stamina" modifier="-10"/> <skill name="stamina" modifier="-10"/>
<attack type="4" damage="1d2"/> <attack type="4" damage="1d2"/>
</race> </race>
<race name="mountainguard" unarmedguard="yes" magres="0.500000" maxaura="1.000000" regaura="0.500000" recruitcost="50000" 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"/> <ai splitsize="1"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d40"/> <attack type="4" damage="2d40"/>
</race> </race>
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="0.750000" maxaura="1.000000" regaura="2.000000" recruitcost="50000" 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"/> <ai splitsize="50" killpeasants="yes" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d4"/> <attack type="4" damage="2d4"/>
<attack type="2" damage="2d30"/> <attack type="2" damage="2d30"/>
<attack type="3" damage="1d2"/> <attack type="3" damage="1d2"/>
</race> </race>
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="0.750000" maxaura="1.000000" regaura="1.000000" recruitcost="5000" 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"/> <ai splitsize="1000" killpeasants="yes" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d3"/> <attack type="4" damage="2d3"/>
<attack type="3" damage="1d1"/> <attack type="3" damage="1d1"/>
</race> </race>
<race name="stonegolem" stonegolem="true" magres="0.250000" maxaura="1.000000" regaura="0.100000" recruitcost="5000" 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"/> <ai splitsize="50"/>
<skill name="building" modifier="14"/> <skill name="building" modifier="14"/>
<skill name="roadwork" modifier="14"/> <skill name="roadwork" modifier="14"/>
<attack type="4" damage="2d10+4"/> <attack type="4" damage="2d10+4"/>
</race> </race>
<race name="irongolem" irongolem="true" magres="0.250000" maxaura="1.000000" regaura="0.100000" recruitcost="5000" 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"/> <ai splitsize="50"/>
<function name="name" value="namegeneric"/>
<skill name="armorer" modifier="14"/> <skill name="armorer" modifier="14"/>
<skill name="weaponsmithing" modifier="14"/> <skill name="weaponsmithing" modifier="14"/>
<attack type="4" damage="2d8+4"/> <attack type="4" damage="2d8+4"/>
</race> </race>
<race name="spell" magres="0.000000" maxaura="1.000000" regaura="0.100000" recruitcost="0" 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"/> <ai splitsize="1"/>
<attack type="1" damage="1d4"/> <attack type="1" damage="1d4"/>
</race> </race>
<race name="special" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="0" 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"/> <ai splitsize="1"/>
<attack type="1" damage="1d4"/> <attack type="1" damage="1d4"/>
</race> </race>
<race name="dracoid" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="50" 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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="name" value="namedracoid"/>
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/> <attack type="4" damage="1d6"/>
<attack type="1" damage="1d5"/> <attack type="1" damage="1d5"/>
</race> </race>
<race name="catdragon" magres="0.900000" maxaura="1.000000" regaura="1.000000" recruitcost="500000" 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"> <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"/> <ai splitsize="1"/>
<attack type="4" damage="2d40"/> <attack type="4" damage="2d40"/>
<attack type="4" damage="2d40"/> <attack type="4" damage="2d40"/>
<attack type="4" damage="2d40"/> <attack type="4" damage="2d40"/>
<attack type="4" damage="2d40"/> <attack type="4" damage="2d40"/>
</race> </race>
<race name="ent" magres="0.250000" maxaura="1.000000" regaura="0.500000" recruitcost="5000" 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"/> <ai splitsize="1000" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d12"/> <attack type="4" damage="2d12"/>
<attack type="4" damage="2d12"/> <attack type="4" damage="2d12"/>
</race> </race>
<race name="wyrm" magres="0.900000" maxaura="1.000000" regaura="3.000000" recruitcost="250000" 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"/> <ai splitsize="1" killpeasants="yes" learn="yes"/>
<function name="name" value="namedragon"/>
<function name="move" value="movedragon"/>
<skill name="magic" modifier="12"/> <skill name="magic" modifier="12"/>
<skill name="tactics" modifier="12"/> <skill name="tactics" modifier="12"/>
<skill name="perception" modifier="10"/> <skill name="perception" modifier="10"/>
@ -742,11 +711,8 @@
<attack type="4" damage="5d30"/> <attack type="4" damage="5d30"/>
<attack type="6" spell="powerful_dragonbreath" level="12" /> <attack type="6" spell="powerful_dragonbreath" level="12" />
</race> </race>
<race name="dragon" magres="0.700000" maxaura="1.000000" regaura="2.000000" recruitcost="50000" 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"> <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"/> <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="magic" modifier="8"/>
<skill name="tactics" modifier="8"/> <skill name="tactics" modifier="8"/>
<skill name="perception" modifier="5"/> <skill name="perception" modifier="5"/>
@ -755,11 +721,8 @@
<attack type="4" damage="3d30"/> <attack type="4" damage="3d30"/>
<attack type="6" spell="icy_dragonbreath" level="6" /> <attack type="6" spell="icy_dragonbreath" level="6" />
</race> </race>
<race name="youngdragon" magres="0.500000" maxaura="1.000000" regaura="1.000000" recruitcost="10000" 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"/> <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="magic" modifier="4"/>
<skill name="tactics" modifier="4"/> <skill name="tactics" modifier="4"/>
<skill name="stealth" modifier="2"/> <skill name="stealth" modifier="2"/>
@ -769,22 +732,13 @@
<attack type="4" damage="1d30"/> <attack type="4" damage="1d30"/>
<attack type="6" spell="fiery_dragonbreath" level="3" /> <attack type="6" spell="fiery_dragonbreath" level="3" />
</race> </race>
<race name="illusion" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="50" 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"> <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="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" recruitcost="2" 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"/> <ai splitsize="20000" moverandom="yes"/>
<function name="name" value="nameundead"/>
<function name="age" value="ageundead"/>
<attack type="4" damage="1d7"/> <attack type="4" damage="1d7"/>
<attack type="5"/> <attack type="5"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="-2"/> <skill name="mining" modifier="-2"/>
<skill name="building" modifier="-1"/> <skill name="building" modifier="-1"/>
<skill name="trade" modifier="2"/> <skill name="trade" modifier="2"/>
@ -801,9 +755,8 @@
<familiar race="dolphin"/> <familiar race="dolphin"/>
<familiar race="kraken"/> <familiar race="kraken"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="-1"/> <skill name="alchemy" modifier="-1"/>
<skill name="mining" modifier="-2"/> <skill name="mining" modifier="-2"/>
<skill name="building" modifier="-1"/> <skill name="building" modifier="-1"/>
@ -827,9 +780,8 @@
<familiar race="tiger"/> <familiar race="tiger"/>
<familiar race="hellcat"/> <familiar race="hellcat"/>
</race> </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"/> <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="crossbow" modifier="1"/>
<skill name="mining" modifier="1"/> <skill name="mining" modifier="1"/>
@ -860,9 +812,8 @@
<familiar race="eagle"/> <familiar race="eagle"/>
<familiar race="rat"/> <familiar race="rat"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="mining" modifier="1"/> <skill name="mining" modifier="1"/>
<skill name="bow" modifier="-2"/> <skill name="bow" modifier="-2"/>
@ -889,10 +840,8 @@
<familiar race="tunnelworm"/> <familiar race="tunnelworm"/>
<familiar race="imp"/> <familiar race="imp"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="initfamiliar" value="oldfamiliars"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="2"/> <skill name="alchemy" modifier="2"/>
<skill name="trade" modifier="-3"/> <skill name="trade" modifier="-3"/>
<skill name="forestry" modifier="1"/> <skill name="forestry" modifier="1"/>
@ -921,9 +870,8 @@
<familiar race="wolf"/> <familiar race="wolf"/>
<familiar race="imp"/> <familiar race="imp"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="2"/> <skill name="mining" modifier="2"/>
<skill name="bow" modifier="-2"/> <skill name="bow" modifier="-2"/>
<skill name="building" modifier="2"/> <skill name="building" modifier="2"/>
@ -954,8 +902,6 @@
</race> </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"> <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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="initfamiliar" value="oldfamiliars"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="1"/> <skill name="alchemy" modifier="1"/>
<skill name="mining" modifier="1"/> <skill name="mining" modifier="1"/>
<skill name="building" modifier="1"/> <skill name="building" modifier="1"/>
@ -978,7 +924,7 @@
<familiar race="rat"/> <familiar race="rat"/>
<familiar race="imp"/> <familiar race="imp"/>
</race> </race>
<race name="clone" magres="0.900000" maxaura="0.000000" regaura="0.000000" recruitcost="0" 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"/> <ai splitsize="10000"/>
<skill name="alchemy" modifier="-99"/> <skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/> <skill name="crossbow" modifier="-99"/>
@ -1011,11 +957,11 @@
<skill name="unarmed" modifier="-99"/> <skill name="unarmed" modifier="-99"/>
<attack type="1" damage="0d0"/> <attack type="1" damage="0d0"/>
</race> </race>
<race name="template" magres="1.000000" maxaura="0.000000" regaura="0.000000" recruitcost="0" 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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<attack type="1" damage="1d4"/> <attack type="1" damage="1d4"/>
</race> </race>
<race name="gnome" magres="1.000000" maxaura="0.000000" regaura="0.000000" recruitcost="5" 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"/> <ai splitsize="10000"/>
<skill name="tactics" modifier="1"/> <skill name="tactics" modifier="1"/>
<skill name="perception" modifier="1"/> <skill name="perception" modifier="1"/>
@ -1023,7 +969,7 @@
<skill name="unarmed" modifier="1"/> <skill name="unarmed" modifier="1"/>
<attack type="1" damage="1d4"/> <attack type="1" damage="1d4"/>
</race> </race>
<race name="museumghost" magres="1.000000" maxaura="0.000000" regaura="0.000000" recruitcost="5" 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"/> <ai splitsize="10000"/>
<skill name="tactics" modifier="1"/> <skill name="tactics" modifier="1"/>
<skill name="perception" modifier="1"/> <skill name="perception" modifier="1"/>
@ -1037,9 +983,8 @@
<attack type="2" damage="5d600"/> <attack type="2" damage="5d600"/>
<attack type="1" damage="1d4"/> <attack type="1" damage="1d4"/>
</race> </race>
<race name="ghast" magres="0.600000" maxaura="1.000000" regaura="1.000000" recruitcost="5" 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"> <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" aggression="0.02" killpeasants="yes" moverandom="yes"/> <ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameghoul"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -1055,10 +1000,8 @@
<attack type="2" damage="1d30"/> <attack type="2" damage="1d30"/>
<attack type="2" damage="1d30"/> <attack type="2" damage="1d30"/>
</race> </race>
<race name="ghoul" magres="0.300000" maxaura="1.000000" regaura="1.000000" recruitcost="5" 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"/> <ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameghoul"/>
<function name="age" value="ageghoul"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -1073,9 +1016,8 @@
<attack type="3" damage="1d2"/> <attack type="3" damage="1d2"/>
<attack type="2" damage="1d30"/> <attack type="2" damage="1d30"/>
</race> </race>
<race name="juju-zombie" magres="0.500000" maxaura="1.000000" regaura="1.000000" recruitcost="8" 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"> <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" aggression="0.02" killpeasants="yes" moverandom="yes"/> <ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="namezombie"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -1089,10 +1031,8 @@
<attack type="3" damage="1d1"/> <attack type="3" damage="1d1"/>
<attack type="3" damage="1d1"/> <attack type="3" damage="1d1"/>
</race> </race>
<race name="zombie" magres="0.200000" maxaura="1.000000" regaura="1.000000" recruitcost="4" 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"/> <ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="namezombie"/>
<function name="age" value="agezombie"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -1104,9 +1044,8 @@
<skill name="unarmed" modifier="1"/> <skill name="unarmed" modifier="1"/>
<attack type="1" damage="1d7"/> <attack type="1" damage="1d7"/>
</race> </race>
<race name="skeletonlord" magres="0.300000" maxaura="1.000000" regaura="1.000000" recruitcost="2" 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"> <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" aggression="0.02" killpeasants="yes" moverandom="yes"/> <ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameskeleton"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -1119,10 +1058,8 @@
<attack type="1" damage="1d7"/> <attack type="1" damage="1d7"/>
<attack type="1" damage="1d7"/> <attack type="1" damage="1d7"/>
</race> </race>
<race name="skeleton" magres="0.100000" maxaura="1.000000" regaura="1.000000" recruitcost="0" 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"/> <ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<function name="name" value="nameskeleton"/>
<function name="age" value="ageskeleton"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/> <skill name="bow" modifier="1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>
@ -1134,43 +1071,12 @@
<skill name="unarmed" modifier="1"/> <skill name="unarmed" modifier="1"/>
<attack type="1" damage="1d7"/> <attack type="1" damage="1d7"/>
</race> </race>
<race name="centaur" magres="0.000000" maxaura="0.750000" regaura="0.750000" recruitcost="100" maintenance="10" weight="5000" capacity="2040" speed="1.000000" hp="30" damage="2d5" unarmedattack="0" unarmeddefense="0" playerrace="yes" walk="yes" horse="yes" giveperson="yes" giveunit="yes" getitem="yes" recruithorses="yes" equipment="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="10000" moverandom="yes" learn="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="mining" modifier="-3"/>
<skill name="bow" modifier="1"/>
<skill name="building" modifier="-2"/>
<skill name="trade" modifier="1"/>
<skill name="catapult" modifier="-2"/>
<skill name="herbalism" modifier="1"/>
<skill name="training" modifier="4"/>
<skill name="armorer" modifier="-1"/>
<skill name="shipcraft" modifier="-4"/>
<skill name="sailing" modifier="-4"/>
<skill name="polearm" modifier="1"/>
<skill name="espionage" modifier="-1"/>
<skill name="quarrying" modifier="-1"/>
<skill name="stealth" modifier="-1"/>
<skill name="weaponsmithing" modifier="1"/>
<skill name="cartmaking" modifier="1"/>
<skill name="taxation" modifier="1"/>
<attack type="1" damage="2d5"/>
<familiar race="eagle" default="yes"/>
<familiar race="fairy"/>
<familiar race="owl"/>
<familiar race="unicorn"/>
<familiar race="nymph"/>
<familiar race="imp"/>
</race>
<race name="shadowknight" magres="0.000000" maxaura="0.000000" regaura="0.000000" recruitcost="5" 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"/> <ai splitsize="20000" moverandom="yes"/>
<function name="name" value="namegeneric"/>
<attack type="1" damage="1d1"/> <attack type="1" damage="1d1"/>
</race> </race>
<race name="seaserpent" magres="0.500000" maxaura="1.000000" regaura="1.000000" recruitcost="5000" 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"/> <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"/> <skill name="tactics" modifier="4"/>
<attack type="4" damage="1d30"/> <attack type="4" damage="1d30"/>
<attack type="4" damage="1d30"/> <attack type="4" damage="1d30"/>
@ -1178,9 +1084,10 @@
<attack type="6" spell="fiery_dragonbreath" level="3" /> <attack type="6" spell="fiery_dragonbreath" level="3" />
<attack type="8" damage="1d10"/> <attack type="8" damage="1d10"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="1"/> <skill name="alchemy" modifier="1"/>
<skill name="mining" modifier="1"/> <skill name="mining" modifier="1"/>
<skill name="building" modifier="1"/> <skill name="building" modifier="1"/>
@ -1208,40 +1115,8 @@
<familiar race="wolf"/> <familiar race="wolf"/>
<familiar race="demon"/> <familiar race="demon"/>
</race> </race>
<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">
<!-- race name="old_orc" 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" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="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"/>
<skill name="trade" modifier="-3"/>
<skill name="forestry" modifier="1"/>
<skill name="herbalism" modifier="-2"/>
<skill name="magic" modifier="-1"/>
<skill name="training" modifier="-1"/>
<skill name="armorer" modifier="1"/>
<skill name="shipcraft" modifier="-1"/>
<skill name="sailing" modifier="-1"/>
<skill name="espionage" modifier="-1"/>
<skill name="quarrying" modifier="1"/>
<skill name="tactics" modifier="1"/>
<skill name="entertainment" modifier="-2"/>
<skill name="weaponsmithing" modifier="2"/>
<skill name="cartmaking" modifier="-1"/>
<skill name="taxation" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="goblin" default="yes"/>
<familiar race="ghost"/>
<familiar race="imp"/>
<familiar race="rat"/>
<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">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="-1"/> <skill name="alchemy" modifier="-1"/>
<skill name="mining" modifier="-2"/> <skill name="mining" modifier="-2"/>
<skill name="bow" modifier="2"/> <skill name="bow" modifier="2"/>
@ -1266,9 +1141,8 @@
<familiar race="unicorn"/> <familiar race="unicorn"/>
<familiar race="imp"/> <familiar race="imp"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="2"/> <skill name="mining" modifier="2"/>
<skill name="bow" modifier="-1"/> <skill name="bow" modifier="-1"/>
<skill name="building" modifier="2"/> <skill name="building" modifier="2"/>
@ -1298,7 +1172,7 @@
<familiar race="wolf"/> <familiar race="wolf"/>
<familiar race="rat"/> <familiar race="rat"/>
</race> </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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<param name="recruit_multi" value="0.5"/> <param name="recruit_multi" value="0.5"/>
<skill name="alchemy" modifier="1"/> <skill name="alchemy" modifier="1"/>
@ -1328,10 +1202,8 @@
<familiar race="wolf"/> <familiar race="wolf"/>
<familiar race="demon"/> <familiar race="demon"/>
</race> </race>
<race name="shadowdragon" magres="0.950000" maxaura="1.000000" regaura="3.000000" recruitcost="2500000" 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"/> <ai splitsize="1" killpeasants="yes" learn="yes"/>
<function name="name" value="namedragon"/>
<function name="move" value="movedragon"/>
<skill name="tactics" modifier="20"/> <skill name="tactics" modifier="20"/>
<skill name="perception" modifier="20"/> <skill name="perception" modifier="20"/>
<attack type="4" damage="5d30"/> <attack type="4" damage="5d30"/>
@ -1340,31 +1212,5 @@
<attack type="4" damage="5d30"/> <attack type="4" damage="5d30"/>
<attack type="6" spell="drain_skills" level="12"/> <attack type="6" spell="drain_skills" level="12"/>
<attack type="6" spell="aura_of_fear" 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" recruitcost="500" 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" recruitcost="500" 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" recruitcost="500" 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> </race>
</races> </races>

View file

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

View file

@ -471,9 +471,6 @@
<spell name="aura_of_fear" rank="5" index="175" combat="2"> <spell name="aura_of_fear" rank="5" index="175" combat="2">
<resource name="aura" amount="12" cost="fixed"/> <resource name="aura" amount="12" cost="fixed"/>
</spell> </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"> <spell name="mallorntreegrow" rank="5" index="177" far="true" variable="true">
<resource name="aura" amount="6" cost="level"/> <resource name="aura" amount="6" cost="level"/>
<resource name="mallorn" amount="1" 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="de">Eine Geburtstagstorte mit 10 Kerzen. Herzlichen Glückwunsch, Eressea!</text>
<text locale="en">A birthday cake with 10 candles. Happy Birthday, Eressea!</text> <text locale="en">A birthday cake with 10 candles. Happy Birthday, Eressea!</text>
</string> </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"> <string name="cookie">
<text locale="de">Kleines trockenes Dauergebäck, m od. s; - u. -es, - u. -e</text> <text locale="de">Kleines trockenes Dauergebäck, m od. s; - u. -es, - u. -e</text>
</string> </string>
@ -352,37 +340,9 @@
<!-- ending here: Wildente and Jadee's wedding --> <!-- ending here: Wildente and Jadee's wedding -->
<!-- art rewards begin --> <!-- art rewards begin -->
<string name="hornofdancing"> <string name="artacademy">
<text locale="de">Horn des Tanzes</text> <text locale="de">Akademie der Künste</text>
<text locale="en">horn of dancing</text> <text locale="en">academy of arts</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> </string>
<string name="aurapotion50"> <string name="aurapotion50">
<text locale="de">Auratrank</text> <text locale="de">Auratrank</text>
@ -402,29 +362,6 @@
</string> </string>
<!-- art rewards end --> <!-- 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"> <string name="rm_adamantium">
<text locale="de">Adamantium</text> <text locale="de">Adamantium</text>
<text locale="en">adamantium</text> <text locale="en">adamantium</text>
@ -455,5 +392,14 @@
<text locale="de">Adamantiumrüstungen</text> <text locale="de">Adamantiumrüstungen</text>
<text locale="en">adamantium plates</text> <text locale="en">adamantium plates</text>
</string> </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> </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" ?> <?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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="-2"/> <skill name="mining" modifier="-2"/>
<skill name="building" modifier="-1"/> <skill name="building" modifier="-1"/>
<skill name="trade" modifier="2"/> <skill name="trade" modifier="2"/>

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1" ?> <?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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="-1"/> <skill name="alchemy" modifier="-1"/>
<skill name="mining" modifier="-2"/> <skill name="mining" modifier="-2"/>
<skill name="building" modifier="-1"/> <skill name="building" modifier="-1"/>

View file

@ -1,7 +1,11 @@
<?xml version="1.0" ?> <?xml version="1.0" ?>
<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" healing="1.5">
<ai splitsize="10000" moverandom="yes" learn="yes"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="2"/> <skill name="alchemy" modifier="2"/>
<skill name="trade" modifier="-3"/> <skill name="trade" modifier="-3"/>
<skill name="forestry" modifier="1"/> <skill name="forestry" modifier="1"/>

View file

@ -1,9 +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"> "6" damage="2d30" unarmedattack="0" unarmeddefense="0"
<ai splitsize="2" killpeasants="yes" learn="yes"/> attackmodifier="7" defensemodifier="7" scarepeasants="yes" fly="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="name" value="namedragon"/>
<function name="age" value="agedragon"/>
<function name="move" value="movedragon"/>
<skill name="magic" modifier="8"/> <skill name="magic" modifier="8"/>
<skill name="tactics" modifier="8"/> <skill name="tactics" modifier="8"/>
<attack type="4" damage="2d20"/> <attack type="4" damage="2d20"/>

View file

@ -1,7 +1,6 @@
<?xml version="1.0" ?> <?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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="2"/> <skill name="mining" modifier="2"/>
<skill name="bow" modifier="-1"/> <skill name="bow" modifier="-1"/>
<skill name="building" modifier="2"/> <skill name="building" modifier="2"/>
@ -30,4 +29,4 @@
<familiar race="lynx"/> <familiar race="lynx"/>
<familiar race="wolf"/> <familiar race="wolf"/>
<familiar race="rat"/> <familiar race="rat"/>
</race> </race>

View file

@ -1,7 +1,6 @@
<?xml version="1.0" ?> <?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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="-1"/> <skill name="alchemy" modifier="-1"/>
<skill name="mining" modifier="-2"/> <skill name="mining" modifier="-2"/>
<skill name="bow" modifier="2"/> <skill name="bow" modifier="2"/>
@ -26,4 +25,4 @@
<familiar race="unicorn"/> <familiar race="unicorn"/>
<familiar race="imp"/> <familiar race="imp"/>
</race> </race>

View file

@ -1,22 +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">
<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,10 +1,12 @@
<?xml version="1.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"> <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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<param name="hunger.damage" value="1d8+7"/> <param name="hunger.damage" value="1d8+7"/>
<param name="other_race" value="demon"/> <param name="other_race" value="demon"/>
<param name="other_cost" value="500"/>
<param name="recruit_multi" value="0.5"/> <param name="recruit_multi" value="0.5"/>
<skill name="cartmaking" modifier="-1"/> <skill name="cartmaking" modifier="-1"/>
<skill name="catapult" modifier="1"/> <skill name="catapult" modifier="1"/>

View file

@ -1,7 +1,11 @@
<?xml version="1.0" ?> <?xml version="1.0" ?>
<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"> <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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="alchemy" modifier="1"/> <skill name="alchemy" modifier="1"/>
<skill name="mining" modifier="1"/> <skill name="mining" modifier="1"/>
<skill name="building" modifier="1"/> <skill name="building" modifier="1"/>

View file

@ -1,8 +1,7 @@
<?xml version="1.0" ?> <?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"/> <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="crossbow" modifier="1"/>
<skill name="mining" modifier="1"/> <skill name="mining" modifier="1"/>
<skill name="bow" modifier="-1"/> <skill name="bow" modifier="-1"/>

View file

@ -1,7 +1,6 @@
<?xml version="1.0" ?> <?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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="trade" modifier="1"/> <skill name="trade" modifier="1"/>
<skill name="herbalism" modifier="-1"/> <skill name="herbalism" modifier="-1"/>
<skill name="shipcraft" modifier="1"/> <skill name="shipcraft" modifier="1"/>

View file

@ -1,7 +1,6 @@
<?xml version="1.0" ?> <?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"/> <ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="crossbow" modifier="1"/> <skill name="crossbow" modifier="1"/>
<skill name="mining" modifier="1"/> <skill name="mining" modifier="1"/>
<skill name="bow" modifier="-2"/> <skill name="bow" modifier="-2"/>
@ -27,4 +26,4 @@
<familiar race="rat"/> <familiar race="rat"/>
<familiar race="tunnelworm"/> <familiar race="tunnelworm"/>
<familiar race="imp"/> <familiar race="imp"/>
</race> </race>

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