forked from github/server
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
8246874907
|
@ -1,40 +1,44 @@
|
|||
.vscode/
|
||||
*.orig
|
||||
eressea.ini
|
||||
Debug
|
||||
Release
|
||||
|
||||
# SlickEdit
|
||||
*.vtg
|
||||
*.vpwhistu
|
||||
|
||||
# Microsoft Visual Studio build artefacts
|
||||
src/Debug/
|
||||
src/Release/
|
||||
src/*.vcproj.*.user
|
||||
Debug/
|
||||
Release/
|
||||
ipch/
|
||||
*.ipch
|
||||
*.ncb
|
||||
*.opensdf
|
||||
*.pdb
|
||||
*.sdf
|
||||
*.suo
|
||||
*.user
|
||||
|
||||
*~
|
||||
*.bak
|
||||
bin/
|
||||
build*/
|
||||
*.log
|
||||
*.log.*
|
||||
tags
|
||||
Thumbs.db
|
||||
.gdb_history
|
||||
*.cfg
|
||||
*.cmd
|
||||
tmp/
|
||||
tests/config.lua
|
||||
tests/reports/
|
||||
tests/data/185.dat
|
||||
tolua/
|
||||
.vscode/
|
||||
*.orig
|
||||
eressea.ini
|
||||
Debug
|
||||
Release
|
||||
|
||||
# SlickEdit
|
||||
*.vtg
|
||||
*.vpwhistu
|
||||
|
||||
# Microsoft Visual Studio build artefacts
|
||||
src/Debug/
|
||||
src/Release/
|
||||
src/*.vcproj.*.user
|
||||
Debug/
|
||||
Release/
|
||||
ipch/
|
||||
*.ipch
|
||||
*.ncb
|
||||
*.opensdf
|
||||
*.pdb
|
||||
*.sdf
|
||||
*.suo
|
||||
*.user
|
||||
|
||||
*~
|
||||
*.bak
|
||||
bin/
|
||||
build*/
|
||||
*.log
|
||||
*.log.*
|
||||
tags
|
||||
Thumbs.db
|
||||
.gdb_history
|
||||
*.cfg
|
||||
*.cmd
|
||||
tmp/
|
||||
tests/config.lua
|
||||
tests/reports/
|
||||
tests/data/185.dat
|
||||
/quicklist/
|
||||
/cutest/
|
||||
/critbit/
|
||||
|
|
|
@ -4,18 +4,9 @@
|
|||
[submodule "cmake"]
|
||||
path = cmake
|
||||
url = https://github.com/ennorehling/cmake.git
|
||||
[submodule "quicklist"]
|
||||
path = quicklist
|
||||
url = https://github.com/ennorehling/quicklist.git
|
||||
[submodule "critbit"]
|
||||
path = critbit
|
||||
url = https://github.com/ennorehling/critbit.git
|
||||
[submodule "dlmalloc"]
|
||||
path = dlmalloc
|
||||
url = https://github.com/ennorehling/dlmalloc.git
|
||||
[submodule "cutest"]
|
||||
path = cutest
|
||||
url = https://github.com/ennorehling/cutest.git
|
||||
[submodule "iniparser"]
|
||||
path = iniparser
|
||||
url = https://github.com/ennorehling/iniparser.git
|
||||
|
@ -26,3 +17,6 @@
|
|||
path = storage
|
||||
url = https://github.com/ennorehling/storage.git
|
||||
branch = master
|
||||
[submodule "clibs"]
|
||||
path = clibs
|
||||
url = https://github.com/ennorehling/clibs
|
||||
|
|
|
@ -6,7 +6,6 @@ endif(WIN32)
|
|||
|
||||
project (eressea-server C)
|
||||
|
||||
|
||||
enable_testing()
|
||||
find_package (LibXml2)
|
||||
find_package (SQLite3)
|
||||
|
@ -14,65 +13,14 @@ find_package (Curses)
|
|||
find_package (Lua REQUIRED)
|
||||
find_package (ToLua REQUIRED)
|
||||
|
||||
INCLUDE (CheckIncludeFiles)
|
||||
INCLUDE (CheckSymbolExists)
|
||||
CHECK_INCLUDE_FILES (stdbool.h HAVE_STDBOOL_H)
|
||||
CHECK_INCLUDE_FILES (windows.h HAVE_WINDOWS_H)
|
||||
CHECK_INCLUDE_FILES (io.h HAVE_IO_H)
|
||||
CHECK_INCLUDE_FILES (strings.h HAVE_STRINGS_H)
|
||||
CHECK_INCLUDE_FILES (unistd.h HAVE_UNISTD_H)
|
||||
IF (HAVE_IO_H)
|
||||
CHECK_SYMBOL_EXISTS (_access "io.h" HAVE__ACCESS)
|
||||
ENDIF (HAVE_IO_H)
|
||||
IF (HAVE_WINDOWS_H)
|
||||
CHECK_SYMBOL_EXISTS (_sleep "windows.h" HAVE__SLEEP)
|
||||
ENDIF(HAVE_WINDOWS_H)
|
||||
IF(HAVE_STDBOOL_H)
|
||||
CHECK_SYMBOL_EXISTS (_Bool "stdbool.h" HAVE__BOOL)
|
||||
ENDIF(HAVE_STDBOOL_H)
|
||||
IF(HAVE_UNISTD_H)
|
||||
CHECK_SYMBOL_EXISTS (sleep "unistd.h" HAVE_SLEEP)
|
||||
CHECK_SYMBOL_EXISTS (usleep "unistd.h" HAVE_USLEEP)
|
||||
CHECK_SYMBOL_EXISTS (access "unistd.h" HAVE_ACCESS)
|
||||
ENDIF(HAVE_UNISTD_H)
|
||||
CHECK_SYMBOL_EXISTS (strlcpy "string.h" HAVE_STRLCPY)
|
||||
CHECK_SYMBOL_EXISTS (strlcat "string.h" HAVE_STRLCAT)
|
||||
CHECK_SYMBOL_EXISTS (slprintf "string.h" HAVE_SLPRINTF)
|
||||
CHECK_SYMBOL_EXISTS (strcasecmp "string.h" HAVE_STRCASECMP)
|
||||
CHECK_SYMBOL_EXISTS (strncasecmp "string.h" HAVE_STRNCASECMP)
|
||||
CHECK_SYMBOL_EXISTS (_strlwr "string.h" HAVE__STRLWR)
|
||||
CHECK_SYMBOL_EXISTS (_strcmpl "string.h" HAVE__STRCMPL)
|
||||
CHECK_SYMBOL_EXISTS (_strdup "string.h" HAVE__STRDUP)
|
||||
CHECK_SYMBOL_EXISTS (_stricmp "string.h" HAVE__STRICMP)
|
||||
CHECK_SYMBOL_EXISTS (_memicmp "string.h" HAVE__MEMICMP)
|
||||
CHECK_SYMBOL_EXISTS (strcmpl "string.h" HAVE_STRCMPL)
|
||||
CHECK_SYMBOL_EXISTS (strdup "string.h" HAVE_STRDUP)
|
||||
CHECK_SYMBOL_EXISTS (stricmp "string.h" HAVE_STRICMP)
|
||||
CHECK_SYMBOL_EXISTS (memicmp "string.h" HAVE_MEMICMP)
|
||||
CHECK_SYMBOL_EXISTS (strlwr "string.h" HAVE_STRLWR)
|
||||
CHECK_SYMBOL_EXISTS (snprintf "stdio.h" HAVE_SNPRINTF)
|
||||
CHECK_SYMBOL_EXISTS (_snprintf "stdio.h" HAVE__SNPRINTF)
|
||||
CHECK_SYMBOL_EXISTS (mkdir "sys/stat.h" HAVE_SYS_STAT_MKDIR)
|
||||
CHECK_SYMBOL_EXISTS (mkdir "direct.h" HAVE_DIRECT_MKDIR)
|
||||
CHECK_SYMBOL_EXISTS (_mkdir "direct.h" HAVE_DIRECT__MKDIR)
|
||||
|
||||
CONFIGURE_FILE (
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/autoconf.h.in
|
||||
${CMAKE_BINARY_DIR}/include/autoconf.h)
|
||||
INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR}/include)
|
||||
|
||||
## skip compiler/libc detection and force cmake autoconf:
|
||||
#add_definitions(-DUSE_AUTOCONF)
|
||||
|
||||
add_subdirectory (cutest)
|
||||
add_subdirectory (cJSON)
|
||||
add_subdirectory (storage)
|
||||
add_subdirectory (iniparser)
|
||||
add_subdirectory (quicklist)
|
||||
add_subdirectory (critbit)
|
||||
add_subdirectory (clibs)
|
||||
add_subdirectory (process)
|
||||
add_subdirectory (src eressea)
|
||||
install(DIRECTORY res conf DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.xml")
|
||||
install(DIRECTORY res conf DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.json")
|
||||
install(DIRECTORY scripts DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.lua")
|
||||
install(DIRECTORY lunit DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.lua")
|
||||
install(DIRECTORY share DESTINATION ${CMAKE_INSTALL_PREFIX})
|
||||
|
|
|
@ -1,36 +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
|
||||
|
||||
#endif
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 27c8b3202b52766465743c3324fc0b52c5ba4b11
|
|
@ -5,12 +5,11 @@
|
|||
"e2/terrains.json"
|
||||
],
|
||||
"disabled": [
|
||||
"pay",
|
||||
"jsreport"
|
||||
],
|
||||
"settings": {
|
||||
"game.id": 2,
|
||||
"game.name": "Eressea",
|
||||
"game.name" : "Eressea",
|
||||
"game.id" : 2,
|
||||
"orders.default": "work",
|
||||
"NewbieImmunity": 8,
|
||||
"modules.wormholes": true,
|
||||
|
|
|
@ -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>
|
|
@ -1,11 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<eressea xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="config://core/messages.xml"/>
|
||||
|
||||
<!-- Localization -->
|
||||
<xi:include href="config://core/de/strings.xml"/>
|
||||
<xi:include href="config://core/en/strings.xml"/>
|
||||
<xi:include href="config://game/spellinfo.xml" />
|
||||
|
||||
<xi:include href="config://core/common/items.xml" />
|
||||
<xi:include href="config://core/common/armor.xml" />
|
||||
|
@ -26,10 +20,9 @@
|
|||
<xi:include href="config://game/equipment.xml"/>
|
||||
<xi:include href="config://game/items.xml"/>
|
||||
<xi:include href="config://game/spells.xml"/>
|
||||
<xi:include href="config://game/strings.xml"/>
|
||||
<xi:include href="config://default/adamantium.xml"/>
|
||||
<equipment>
|
||||
<set name="first_unit">
|
||||
<set name="autoseed_unit">
|
||||
<item name="log" amount="50"/>
|
||||
<item name="stone" amount="50"/>
|
||||
<item name="iron" amount="50"/>
|
||||
|
@ -42,30 +35,8 @@
|
|||
<skill name="perception" level="30"/>
|
||||
<skill name="melee" level="1"/>
|
||||
</set>
|
||||
<set name="new_faction">
|
||||
<set name="autoseed_faction">
|
||||
<item name="adamantium" amount="1"/>
|
||||
</set>
|
||||
</equipment>
|
||||
|
||||
<xi:include href="config://default/names-undead.xml"/>
|
||||
<xi:include href="config://default/names-skeletons.xml"/>
|
||||
<xi:include href="config://default/names-zombies.xml"/>
|
||||
<xi:include href="config://default/names-ghouls.xml"/>
|
||||
<xi:include href="config://default/names-dragons.xml"/>
|
||||
<strings>
|
||||
<string name="mailto">
|
||||
<text locale="de">eressea-server@eressea.kn-bremen.de</text>
|
||||
<text locale="en">eressea-server@eressea.kn-bremen.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.kn-bremen.de zu senden.</text>
|
||||
<text locale="en">Remember to send your orders to
|
||||
eressea-server@eressea.kn-bremen.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>
|
|
@ -25,8 +25,8 @@
|
|||
"jsreport"
|
||||
],
|
||||
"settings": {
|
||||
"game.id": 3,
|
||||
"game.name": "E3",
|
||||
"game.name" : "Eressea",
|
||||
"game.id" : 3,
|
||||
"orders.default": "work",
|
||||
"database.gameid": 7,
|
||||
"NewbieImmunity": 4,
|
||||
|
@ -42,6 +42,7 @@
|
|||
"nmr.timeout": 5,
|
||||
"nmr.removenewbie": 0,
|
||||
"GiveRestriction": 3,
|
||||
"healing.forest": 2.0,
|
||||
"hunger.long": false,
|
||||
"hunger.damage": "1d9+9",
|
||||
"hunger.demons.skill": true,
|
||||
|
|
|
@ -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>
|
|
@ -1,8 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<eressea xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="config://core/messages.xml"/>
|
||||
<xi:include href="config://core/de/strings.xml"/>
|
||||
<xi:include href="config://core/en/strings.xml"/>
|
||||
<xi:include href="config://core/common/items.xml"/>
|
||||
<xi:include href="config://core/common/herbs.xml" />
|
||||
<xi:include href="config://core/spoils.xml"/>
|
||||
|
@ -15,8 +12,6 @@
|
|||
<xi:include href="config://game/shipnames.xml"/>
|
||||
<xi:include href="config://core/calendar.xml"/>
|
||||
<xi:include href="config://game/items.xml" />
|
||||
<xi:include href="config://game/strings.xml"/>
|
||||
<xi:include href="config://game/messages.xml"/>
|
||||
<xi:include href="config://game/races.xml"/>
|
||||
<xi:include href="config://game/buildings.xml"/>
|
||||
<xi:include href="config://game/equipment.xml"/>
|
||||
|
@ -28,14 +23,6 @@
|
|||
|
||||
<calendar name="thirdage" newyear="month_1" start="1"/>
|
||||
|
||||
<equipment>
|
||||
<set name="first_unit">
|
||||
<item name="log" amount="10"/>
|
||||
<item name="stone" amount="10"/>
|
||||
<item name="money" amount="5000"/>
|
||||
</set>
|
||||
</equipment>
|
||||
|
||||
<xi:include href="config://default/names-undead.xml"/>
|
||||
<xi:include href="config://default/names-skeletons.xml"/>
|
||||
<xi:include href="config://default/names-zombies.xml"/>
|
||||
|
@ -44,20 +31,4 @@
|
|||
<rules>
|
||||
<function name="wage" value="minimum_wage"/>
|
||||
</rules>
|
||||
<strings>
|
||||
<string name="mailto">
|
||||
<text locale="de">eressea-server@eressea.kn-bremen.de</text>
|
||||
<text locale="en">eressea-server@eressea.kn-bremen.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.kn-bremen.de zu senden.</text>
|
||||
<text locale="en">Remember to send your orders to
|
||||
eressea-server@eressea.kn-bremen.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>
|
|
@ -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>
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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.kn-bremen.de</text>
|
||||
<text locale="en">eressea-server@eressea.kn-bremen.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.kn-bremen.de zu senden.</text>
|
||||
<text locale="en">Remember to send your orders to
|
||||
eressea-server@eressea.kn-bremen.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>
|
|
@ -1,5 +1,7 @@
|
|||
|
||||
[eressea]
|
||||
[game]
|
||||
email = eressea-server@kn-bremen.de
|
||||
sender = Eressea Server
|
||||
name = Eressea
|
||||
base = .
|
||||
report = reports
|
||||
verbose = 0
|
||||
|
|
1
critbit
1
critbit
|
@ -1 +0,0 @@
|
|||
Subproject commit 971836241277e37274aa3110344836499816ff21
|
1
cutest
1
cutest
|
@ -1 +0,0 @@
|
|||
Subproject commit 6e268687dbf6ae55afb63210c3753530d216a622
|
|
@ -20,5 +20,5 @@ if [ ! -d $GAME/reports ]; then
|
|||
fi
|
||||
|
||||
cd $GAME/reports
|
||||
$HOME/bin/compress.py $TURN "$GAME_NAME"
|
||||
$ERESSEA/server/bin/compress.py $TURN "$GAME_NAME"
|
||||
cd -
|
||||
|
|
|
@ -3,22 +3,53 @@
|
|||
|
||||
from email.Utils import parseaddr
|
||||
from email.Parser import Parser
|
||||
from os import mkdir, rename, stat, utime, unlink, symlink
|
||||
from os.path import exists
|
||||
import os
|
||||
import os.path
|
||||
import ConfigParser
|
||||
from re import compile, IGNORECASE
|
||||
from stat import ST_MTIME
|
||||
from string import upper, split, replace
|
||||
import logging
|
||||
from sys import argv, stdin, exit
|
||||
import sys
|
||||
from sys import stdin
|
||||
from time import ctime, sleep, time
|
||||
from socket import gethostname
|
||||
from rfc822 import parsedate_tz, mktime_tz
|
||||
|
||||
LOG_FILENAME='/home/eressea/log/orders.log'
|
||||
if 'ERESSEA' in os.environ:
|
||||
dir = os.environ['ERESSEA']
|
||||
elif 'HOME' in os.environ:
|
||||
dir = os.path.join(os.environ['HOME'], '/eressea')
|
||||
else: # WTF? No HOME?
|
||||
dir = "/home/eressea/eressea"
|
||||
if not os.path.isdir(dir):
|
||||
print "please set the ERESSEA environment variable to the install path"
|
||||
sys.exit(1)
|
||||
rootdir = dir
|
||||
|
||||
game = int(sys.argv[1])
|
||||
gamedir = os.path.join(rootdir, "game-%d" % (game, ))
|
||||
frommail = 'eressea-server@kn-bremen.de'
|
||||
gamename = 'Eressea'
|
||||
sender = '%s Server <%s>' % (gamename, frommail)
|
||||
|
||||
inifile = os.path.join(gamedir, 'eressea.ini')
|
||||
if not os.path.exists(inifile):
|
||||
print "no such file: " . inifile
|
||||
else:
|
||||
config = ConfigParser.ConfigParser()
|
||||
config.read(inifile)
|
||||
if config.has_option('game', 'email'):
|
||||
frommail = config.get('game', 'email')
|
||||
if config.has_option('game', 'name'):
|
||||
gamename = config.get('game', 'name')
|
||||
if config.has_option('game', 'sender'):
|
||||
sender = config.get('game', 'sender')
|
||||
else:
|
||||
sender = "%s Server <%s>" % (gamename, frommail)
|
||||
config = None
|
||||
prefix = 'turn-'
|
||||
hostname = gethostname()
|
||||
# base directory for all your games:
|
||||
rootdir = "/home/eressea"
|
||||
orderbase = "orders.dir"
|
||||
sendmail = True
|
||||
# maximum number of reports per sender:
|
||||
|
@ -28,36 +59,21 @@ writeheaders = True
|
|||
# reject all html email?
|
||||
rejecthtml = True
|
||||
|
||||
games = [
|
||||
{
|
||||
"from" : "Eressea Server <eressea-server@eressea.kn-bremen.de>",
|
||||
"prefix" : "Eressea"
|
||||
},
|
||||
{
|
||||
"from" : "Eressea Server <eressea-server@eressea.kn-bremen.de>",
|
||||
"prefix": "E3"
|
||||
},
|
||||
{
|
||||
"from" : "Eressea Server <eressea-server@eressea.kn-bremen.de>",
|
||||
"prefix": "E4"
|
||||
},
|
||||
]
|
||||
|
||||
def unlock_file(filename):
|
||||
try:
|
||||
unlink(filename+".lock")
|
||||
os.unlink(filename+".lock")
|
||||
except:
|
||||
print "could not unlock %s.lock, file not found" % filename
|
||||
|
||||
def lock_file(filename):
|
||||
i = 0
|
||||
wait = 1
|
||||
if not exists(filename):
|
||||
if not os.path.exists(filename):
|
||||
file=open(filename, "w")
|
||||
file.close()
|
||||
while True:
|
||||
try:
|
||||
symlink(filename, filename+".lock")
|
||||
os.symlink(filename, filename+".lock")
|
||||
return
|
||||
except:
|
||||
i = i+1
|
||||
|
@ -74,17 +90,17 @@ messages = {
|
|||
"software and re-send the orders.",
|
||||
|
||||
"multipart-de" :
|
||||
"FEHLER: Die von dir eingeschickte Mail enthält keinen " \
|
||||
"FEHLER: Die von dir eingeschickte Mail enth<EFBFBD>lt keinen " \
|
||||
"Text. Evtl. hast Du den Zug als HTML oder als anderweitig " \
|
||||
"ungültig formatierte Mail ingeschickt. Wir können ihn " \
|
||||
"deshalb nicht berücksichtigen. Schicke den Zug nochmals " \
|
||||
"ung<EFBFBD>ltig formatierte Mail ingeschickt. Wir k<>nnen ihn " \
|
||||
"deshalb nicht ber<EFBFBD>cksichtigen. Schicke den Zug nochmals " \
|
||||
"als reinen Text ohne Formatierungen ein.",
|
||||
|
||||
"maildate-de":
|
||||
"Es erreichte uns bereits ein Zug mit einem späteren " \
|
||||
"Es erreichte uns bereits ein Zug mit einem sp<EFBFBD>teren " \
|
||||
"Absendedatum (%s > %s). Entweder ist deine " \
|
||||
"Systemzeit verstellt, oder ein Zug hat einen anderen Zug von " \
|
||||
"dir auf dem Transportweg überholt. Entscheidend für die " \
|
||||
"dir auf dem Transportweg <EFBFBD>berholt. Entscheidend f<>r die " \
|
||||
"Auswertungsreihenfolge ist das Absendedatum, d.h. der Date:-Header " \
|
||||
"deiner Mail.",
|
||||
|
||||
|
@ -173,8 +189,8 @@ def available_file(dirname, basename):
|
|||
ver = 0
|
||||
maxdate = 0
|
||||
filename = "%s/%s,%s,%d" % (dirname, basename, hostname, ver)
|
||||
while exists(filename):
|
||||
maxdate = max(stat(filename)[ST_MTIME], maxdate)
|
||||
while os.path.exists(filename):
|
||||
maxdate = max(os.stat(filename)[ST_MTIME], maxdate)
|
||||
ver = ver + 1
|
||||
filename = "%s/%s,%s,%d" % (dirname, basename, hostname, ver)
|
||||
if ver >= maxfiles:
|
||||
|
@ -234,7 +250,7 @@ def copy_orders(message, filename, sender):
|
|||
from os.path import split
|
||||
dirname, basename = split(filename)
|
||||
dirname = dirname + '/headers'
|
||||
if not exists(dirname): mkdir(dirname)
|
||||
if not os.path.exists(dirname): os.mkdir(dirname)
|
||||
outfile = open(dirname + '/' + basename, "w")
|
||||
for name, value in message.items():
|
||||
outfile.write(name + ": " + value + "\n")
|
||||
|
@ -265,104 +281,94 @@ def copy_orders(message, filename, sender):
|
|||
# create a file, containing:
|
||||
# game=0 locale=de file=/path/to/filename email=rcpt@domain.to
|
||||
def accept(game, locale, stream, extend=None):
|
||||
global rootdir, orderbase
|
||||
global rootdir, orderbase, gamedir, gamename, sender
|
||||
if extend is not None:
|
||||
orderbase = orderbase + ".pre-" + extend
|
||||
gamename = games[game-2]["prefix"]
|
||||
gamedir = rootdir+"/eressea/game-%d" % (game, )
|
||||
savedir = gamedir+"/"+orderbase
|
||||
savedir = os.path.join(gamedir, orderbase)
|
||||
# check if it's one of the pre-sent orders.
|
||||
# create the save-directories if they don't exist
|
||||
if not exists(gamedir): mkdir(gamedir)
|
||||
if not exists(savedir): mkdir(savedir)
|
||||
if not os.path.exists(gamedir): os.mkdir(gamedir)
|
||||
if not os.path.exists(savedir): os.mkdir(savedir)
|
||||
# parse message
|
||||
message = Parser().parse(stream)
|
||||
sender = get_sender(message)
|
||||
logger = logging.getLogger(sender)
|
||||
email = get_sender(message)
|
||||
logger = logging.getLogger(email)
|
||||
# write syslog
|
||||
if sender is None or valid_email(sender)==0:
|
||||
logger.warning("invalid email address: " + str(sender))
|
||||
if email is None or valid_email(email)==0:
|
||||
logger.warning("invalid email address: " + str(email))
|
||||
return -1
|
||||
logger.info("received orders from " + sender)
|
||||
logger.info("received orders from " + email)
|
||||
# get an available filename
|
||||
lock_file(gamedir + "/orders.queue")
|
||||
maxdate, filename = available_file(savedir, prefix + sender)
|
||||
maxdate, filename = available_file(savedir, prefix + email)
|
||||
if filename is None:
|
||||
logger.warning("more than " + str(maxfiles) + " orders from " + sender)
|
||||
logger.warning("more than " + str(maxfiles) + " orders from " + email)
|
||||
return -1
|
||||
# copy the orders to the file
|
||||
text_ok = copy_orders(message, filename, sender)
|
||||
text_ok = copy_orders(message, filename, email)
|
||||
unlock_file(gamedir + "/orders.queue")
|
||||
|
||||
warning, msg, fail = None, "", False
|
||||
maildate = message.get("Date")
|
||||
if maildate != None:
|
||||
turndate = mktime_tz(parsedate_tz(maildate))
|
||||
utime(filename, (turndate, turndate))
|
||||
os.utime(filename, (turndate, turndate))
|
||||
logger.debug("mail date is '%s' (%d)" % (maildate, turndate))
|
||||
if turndate < maxdate:
|
||||
logger.warning("inconsistent message date " + sender)
|
||||
logger.warning("inconsistent message date " + email)
|
||||
warning = " (" + messages["warning-" + locale] + ")"
|
||||
msg = msg + formatpar(messages["maildate-" + locale] % (ctime(maxdate),ctime(turndate)), 76, 2) + "\n"
|
||||
else:
|
||||
logger.warning("missing message date " + sender)
|
||||
logger.warning("missing message date " + email)
|
||||
warning = " (" + messages["warning-" + locale] + ")"
|
||||
msg = msg + formatpar(messages["nodate-" + locale], 76, 2) + "\n"
|
||||
|
||||
if not text_ok:
|
||||
warning = " (" + messages["error-" + locale] + ")"
|
||||
msg = msg + formatpar(messages["multipart-" + locale], 76, 2) + "\n"
|
||||
logger.warning("rejected - no text/plain in orders from " + sender)
|
||||
unlink(filename)
|
||||
logger.warning("rejected - no text/plain in orders from " + email)
|
||||
os.unlink(filename)
|
||||
savedir = savedir + "/rejected"
|
||||
if not exists(savedir): mkdir(savedir)
|
||||
if not os.path.exists(savedir): os.mkdir(savedir)
|
||||
lock_file(gamedir + "/orders.queue")
|
||||
maxdate, filename = available_file(savedir, prefix + sender)
|
||||
maxdate, filename = available_file(savedir, prefix + email)
|
||||
store_message(message, filename)
|
||||
unlock_file(gamedir + "/orders.queue")
|
||||
fail = True
|
||||
|
||||
if sendmail and warning is not None:
|
||||
frommail = games[key]["from"]
|
||||
subject = gamename + " " + messages["subject-"+locale] + warning
|
||||
mail = "Subject: %s\nFrom: %s\nTo: %s\n\n" % (subject, frommail, sender) + msg
|
||||
mail = "Subject: %s\nFrom: %s\nTo: %s\n\n" % (subject, sender, email) + msg
|
||||
from smtplib import SMTP
|
||||
server = SMTP("localhost")
|
||||
server.sendmail(frommail, sender, mail)
|
||||
server.sendmail(sender, email, mail)
|
||||
server.close()
|
||||
|
||||
if not sendmail:
|
||||
print text_ok, fail, sender
|
||||
print text_ok, fail, email
|
||||
print filename
|
||||
|
||||
if not fail:
|
||||
lock_file(gamedir + "/orders.queue")
|
||||
queue = open(gamedir + "/orders.queue", "a")
|
||||
queue.write("email=%s file=%s locale=%s game=%s\n" % (sender, filename, locale, game))
|
||||
queue.write("email=%s file=%s locale=%s game=%s\n" % (email, filename, locale, game))
|
||||
queue.close()
|
||||
unlock_file(gamedir + "/orders.queue")
|
||||
|
||||
logger.info("done - accepted orders from " + sender)
|
||||
logger.info("done - accepted orders from " + email)
|
||||
|
||||
return 0
|
||||
|
||||
# the main body of the script:
|
||||
LOG_FILENAME=os.path.join(rootdir, 'log/orders.log')
|
||||
logging.basicConfig(level=logging.DEBUG, filename=LOG_FILENAME)
|
||||
logger = logging
|
||||
delay=None # TODO: parse the turn delay
|
||||
try:
|
||||
game = int(argv[1])
|
||||
except:
|
||||
game = argv[1]
|
||||
if game[:3]=='e3a':
|
||||
game = 3
|
||||
elif game[:7]=='eressea':
|
||||
game = 2
|
||||
locale = argv[2]
|
||||
locale = sys.argv[2]
|
||||
infile = stdin
|
||||
if len(argv)>3:
|
||||
infile = open(argv[3], "r")
|
||||
if len(sys.argv)>3:
|
||||
infile = open(sys.argv[3], "r")
|
||||
retval = accept(game, locale, infile, delay)
|
||||
if infile!=stdin:
|
||||
infile.close()
|
||||
exit(retval)
|
||||
sys.exit(retval)
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
|
||||
from os import unlink, symlink, rename, popen, tmpfile
|
||||
from os.path import exists
|
||||
import os
|
||||
import os.path
|
||||
import ConfigParser
|
||||
from re import compile, IGNORECASE
|
||||
from string import split, join, upper, strip
|
||||
from sys import argv, exit
|
||||
|
@ -14,9 +16,8 @@ from epasswd import EPasswd
|
|||
def pwd_get_email(faction, pwd, pwdfile=None):
|
||||
return None
|
||||
|
||||
def splitfilename(filename):
|
||||
from os.path import split
|
||||
return split(filename)
|
||||
def split_filename(filename):
|
||||
return os.path.split(filename)
|
||||
|
||||
def unlock_file(filename):
|
||||
try:
|
||||
|
@ -28,7 +29,7 @@ def unlock_file(filename):
|
|||
def lock_file(filename):
|
||||
i = 0
|
||||
wait = 1
|
||||
if not exists(filename):
|
||||
if not os.path.exists(filename):
|
||||
file=open(filename, "w")
|
||||
file.close()
|
||||
while True:
|
||||
|
@ -62,17 +63,47 @@ messages = {
|
|||
"error-en": "Error",
|
||||
}
|
||||
|
||||
game = int(sys.argv[1])
|
||||
echeck_cmd = "/home/eressea/echeck/echeck.sh"
|
||||
maxlines = 25
|
||||
|
||||
# base directory for all your games:
|
||||
rootdir = "/home/eressea/eressea"
|
||||
frommail = "Eressea Server <eressea-server@eressea.kn-bremen.de>"
|
||||
orderbase = "orders.dir"
|
||||
sendmail = True
|
||||
maxlines = 25
|
||||
echeck_cmd = "/home/eressea/echeck/echeck.sh"
|
||||
install_dir = "/home/eressea/eressea"
|
||||
if 'ERESSEA' in os.environ:
|
||||
install_dir = os.environ['ERESSEA']
|
||||
elif 'HOME' in os.environ:
|
||||
install_dir = os.path.join(os.environ['HOME'], '/eressea')
|
||||
if not os.path.isdir(install_dir):
|
||||
print "please set the ERESSEA environment variable to the install path"
|
||||
sys.exit(1)
|
||||
|
||||
game_dir = os.path.join(install_dir, "game-%d" % (game, ))
|
||||
frommail = 'eressea-server@kn-bremen.de'
|
||||
gamename = 'Eressea'
|
||||
sender = '%s Server <%s>' % (gamename, frommail)
|
||||
|
||||
inifile = os.path.join(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
|
||||
|
||||
queue_file = os.path.join(game_dir, "orders.queue")
|
||||
if not os.path.exists(queue_file):
|
||||
exit(0)
|
||||
|
||||
# regular expression that finds the start of a faction
|
||||
fact_re = compile("^\s*(eressea|vinyambar|partei|faction)\s+([a-zA-Z0-9]+)\s+\"?([^\"]*)\"?", IGNORECASE)
|
||||
fact_re = compile("^\s*(eressea|partei|faction)\s+([a-zA-Z0-9]+)\s+\"?([^\"]*)\"?", IGNORECASE)
|
||||
|
||||
def check_pwd(filename, email, pw_data):
|
||||
results = []
|
||||
|
@ -98,7 +129,7 @@ def check_pwd(filename, email, pw_data):
|
|||
return results
|
||||
|
||||
def echeck(filename, locale, rules):
|
||||
dirname, filename = splitfilename(filename)
|
||||
dirname, filename = split_filename(filename)
|
||||
stream = popen("%s %s %s %s %s" % (echeck_cmd, locale, filename, dirname, rules), 'r')
|
||||
lines = stream.readlines()
|
||||
if len(lines)==0:
|
||||
|
@ -111,14 +142,6 @@ def echeck(filename, locale, rules):
|
|||
stream.close()
|
||||
return mail
|
||||
|
||||
## the main body of the script
|
||||
game = int(argv[1])
|
||||
|
||||
basedir = rootdir + "/game-%d" % (game, )
|
||||
queuename = basedir + "/orders.queue"
|
||||
if not exists(queuename):
|
||||
exit(0)
|
||||
|
||||
# parse the queue file -
|
||||
#print "connecting to SMTP..."
|
||||
from smtplib import SMTP
|
||||
|
@ -127,16 +150,17 @@ try:
|
|||
except:
|
||||
print "could not connect to SMTP server"
|
||||
exit(0)
|
||||
|
||||
#print "reading password file..."
|
||||
pw_data = EPasswd(basedir + "/passwd")
|
||||
pw_data = EPasswd(os.path.join(game_dir,"passwd"))
|
||||
|
||||
#print "reading orders.queue..."
|
||||
# move the queue file to a save space while locking it:
|
||||
try:
|
||||
lock_file(queuename)
|
||||
lock_file(queue_file)
|
||||
except:
|
||||
exit(0)
|
||||
queuefile = open(queuename, "r")
|
||||
queuefile = open(queue_file, "r")
|
||||
lines = queuefile.readlines()
|
||||
queuefile.close()
|
||||
|
||||
|
@ -154,9 +178,9 @@ tmpfile.close()
|
|||
|
||||
openlog("orders")
|
||||
|
||||
unlink(queuename)
|
||||
unlink(queue_file)
|
||||
try:
|
||||
unlock_file(queuename)
|
||||
unlock_file(queue_file)
|
||||
except:
|
||||
pass
|
||||
|
||||
|
@ -170,15 +194,15 @@ for line in lines:
|
|||
email = dict["email"]
|
||||
locale = dict["locale"]
|
||||
game = int(dict["game"])
|
||||
file = dict["file"]
|
||||
infile = dict["file"]
|
||||
gamename='[E%d]' % game
|
||||
rules='e%d' % game
|
||||
warning = ""
|
||||
failed = True
|
||||
results = check_pwd(file, email, pw_data)
|
||||
logfile = open(basedir+"/zug.log", "a")
|
||||
dirname, filename = splitfilename(file)
|
||||
msg = messages["validate-"+locale] + " " + filename + "\n\n"
|
||||
results = check_pwd(infile, email, pw_data)
|
||||
logfile = open(os.path.join(game_dir, "zug.log"), "a")
|
||||
dirname, filename = split_filename(infile)
|
||||
msg = messages["validate-"+locale] + " " + infilename + "\n\n"
|
||||
for faction, game_email, success, pwd in results:
|
||||
msg = msg + messages["faction-"+locale] + " " + faction + "\n"
|
||||
if success: failed = False
|
||||
|
@ -189,25 +213,24 @@ for line in lines:
|
|||
|
||||
if failed:
|
||||
warning = " (" + messages["warning-" + locale] + ")"
|
||||
syslog("failed - no valid password in " + file)
|
||||
syslog("failed - no valid password in " + infile)
|
||||
else:
|
||||
result = echeck(file, locale, rules)
|
||||
if email=='eressea':
|
||||
print result
|
||||
continue
|
||||
elif result is None:
|
||||
result = None
|
||||
if os.path.exists(echeck_cmd):
|
||||
result = echeck(infile, locale, rules)
|
||||
if result is None:
|
||||
# echeck did not finish
|
||||
msg = msg + "Echeck was killed. Your turn was accepted, but could not be verified.\n"
|
||||
msg = msg + "Echeck is broken. Your turn was accepted, but could not be verified.\n"
|
||||
warning = " (" + messages["warning-" + locale] + ")"
|
||||
syslog("process - echeck got killed, " + file)
|
||||
syslog("process - echeck broken, " + infile)
|
||||
else:
|
||||
msg = msg + result
|
||||
syslog("process - checked orders in " + file)
|
||||
syslog("process - checked orders in " + infile)
|
||||
|
||||
subject = gamename + " " + messages["subject-" + locale] + warning
|
||||
msg = "Subject: %s\nFrom: %s\nTo: %s\nContent-Type: text/plain; charset=utf-8\n\n" % (subject, frommail, email) + msg
|
||||
msg = "Subject: %s\nFrom: %s\nTo: %s\nContent-Type: text/plain; charset=utf-8\n\n" % (subject, sender, email) + msg
|
||||
try:
|
||||
server.sendmail(frommail, email, msg)
|
||||
server.sendmail(sender, email, msg)
|
||||
except:
|
||||
syslog("failed - cannot send to " + email)
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ if [ ! -f reports.txt ]; then
|
|||
exit -2
|
||||
fi
|
||||
source $HOME/bin/functions.sh
|
||||
source $ERESSEA/etc/eressea.conf
|
||||
|
||||
TEMPLATE=report-mail.txt
|
||||
if [ "$1" == "-Lde" ]
|
||||
|
|
|
@ -8,7 +8,6 @@ if [ -z $ERESSEA ]; then
|
|||
exit -2
|
||||
fi
|
||||
source $HOME/bin/functions.sh
|
||||
source $HOME/etc/eressea.conf
|
||||
|
||||
GAME=$1
|
||||
EMAIL=$2
|
||||
|
|
|
@ -8,7 +8,6 @@ if [ -z $ERESSEA ]; then
|
|||
exit -2
|
||||
fi
|
||||
source $HOME/bin/functions.sh
|
||||
source $ERESSEA/etc/eressea.conf
|
||||
|
||||
if [ ! -z $1 ]; then
|
||||
GAME=$ERESSEA/game-$1
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Subproject commit f837dd31e5fcf13c706db1ac2c86b7de3e706578
|
|
@ -1,13 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<resources>
|
||||
|
||||
<resource name="adamantium" limited="yes" material="rm_adamantium">
|
||||
<resource name="adamantium" limited="yes" material="yes">
|
||||
<item weight="200" score="200">
|
||||
<construction skill="mining" minskill="8"/>
|
||||
</item>
|
||||
<resourcelimit>
|
||||
<modifier type="require" building="mine"/>
|
||||
<guard flag="mining"/>
|
||||
</resourcelimit>
|
||||
</resource>
|
||||
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
<?xml version="1.0"?>
|
||||
<building name="castle" capacity="1" fort="yes">
|
||||
<function name="name" value="castle_name_2"/>
|
||||
<function name="protection" value="building_protection"/>
|
||||
<function name="taxes" value="lua_building_taxes"/>
|
||||
<construction skill="building" minskill="1" maxsize="10" defense_bonus="0">
|
||||
<construction skill="building" minskill="1" maxsize="10">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="2" maxsize="40" defense_bonus="1">
|
||||
<construction skill="building" minskill="2" maxsize="40">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="3" maxsize="200" defense_bonus="3">
|
||||
<construction skill="building" minskill="3" maxsize="200">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="4" maxsize="1000" defense_bonus="5">
|
||||
<construction skill="building" minskill="4" maxsize="1000">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="5" maxsize="5000" defense_bonus="8">
|
||||
<construction skill="building" minskill="5" maxsize="5000">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="6" defense_bonus="12">
|
||||
<construction skill="building" minskill="6">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
</building>
|
||||
|
|
|
@ -1,26 +1,25 @@
|
|||
<?xml version="1.0"?>
|
||||
<building name="castle" capacity="1" fort="yes">
|
||||
<function name="name" value="castle_name"/>
|
||||
<function name="protection" value="building_protection"/>
|
||||
<construction skill="building" minskill="1" maxsize="2" defense_bonus="0">
|
||||
<construction skill="building" minskill="1" maxsize="2">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="1" maxsize="8" defense_bonus="0">
|
||||
<construction skill="building" minskill="1" maxsize="8">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="2" maxsize="40" defense_bonus="1">
|
||||
<construction skill="building" minskill="2" maxsize="40">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="3" maxsize="200" defense_bonus="3">
|
||||
<construction skill="building" minskill="3" maxsize="200">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="4" maxsize="1000" defense_bonus="5">
|
||||
<construction skill="building" minskill="4" maxsize="1000">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="5" maxsize="5000" defense_bonus="8">
|
||||
<construction skill="building" minskill="5" maxsize="5000">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="6" defense_bonus="12">
|
||||
<construction skill="building" minskill="6">
|
||||
<requirement type="stone" quantity="1"/>
|
||||
</construction>
|
||||
</building>
|
||||
|
|
|
@ -4,9 +4,7 @@
|
|||
<building name="illusioncastle" capacity="0" maxcapacity="0" maxsize="0" nobuild="yes"/>
|
||||
<building name="xmas_exit" maxsize="10" maxcapacity="2" nobuild="yes" nodestroy="yes" unique="yes"/>
|
||||
<building name="caldera" capacity="1" nodestroy="yes" nobuild="yes"/>
|
||||
<building name="genericbuilding" namechange="no" maxsize="1" nobuild="yes"/>
|
||||
<building name="artacademy" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/>
|
||||
<building name="artsculpture" namechange="no" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/>
|
||||
<building name="building" namechange="no" maxsize="1" nobuild="yes"/>
|
||||
|
||||
<building name="blessedstonecircle" maxcapacity="3" maxsize="100" nobuild="yes" magic="yes" magres="60" magresbonus="30" auraregen="1.50">
|
||||
<construction skill="building" minskill="2" reqsize="100" maxsize="100">
|
||||
|
|
|
@ -6,6 +6,10 @@
|
|||
_x: preposition (15 /Schlumpf/schwerter)
|
||||
_a: including article (ein Schlumpf, a smurf)
|
||||
-->
|
||||
<string name="mailcmd">
|
||||
<text locale="de">BEFEHLE</text>
|
||||
<text locale="en">ORDERS</text>
|
||||
</string>
|
||||
<string name="vortex">
|
||||
<text locale="de">Wirbel</text>
|
||||
<text locale="en">vortex</text>
|
||||
|
@ -908,17 +912,9 @@
|
|||
<string name="illusioncastle">
|
||||
<text locale="de">Traumschlößchen</text>
|
||||
</string>
|
||||
<string name="genericbuilding">
|
||||
<string name="building">
|
||||
<text locale="de">Struktur</text>
|
||||
</string>
|
||||
<string name="artacademy">
|
||||
<text locale="de">Akademie der Künste</text>
|
||||
<text locale="en">academy of arts</text>
|
||||
</string>
|
||||
<string name="artsculpture">
|
||||
<text locale="de">Skulptur</text>
|
||||
<text locale="en">sculpture</text>
|
||||
</string>
|
||||
|
||||
<!--Testitem -->
|
||||
<string name="wand">
|
||||
|
@ -2375,19 +2371,19 @@
|
|||
<text locale="en">ghoul</text>
|
||||
</string>
|
||||
|
||||
<string name="juju-zombie">
|
||||
<string name="juju">
|
||||
<text locale="de">Juju-Zombie</text>
|
||||
<text locale="en">juju-zombie</text>
|
||||
</string>
|
||||
<string name="juju-zombie_p">
|
||||
<string name="juju_p">
|
||||
<text locale="de">Juju-Zombies</text>
|
||||
<text locale="en">juju-zombies</text>
|
||||
</string>
|
||||
<string name="juju-zombie_d">
|
||||
<string name="juju_d">
|
||||
<text locale="de">Juju-Zombies</text>
|
||||
<text locale="en">juju-zombies</text>
|
||||
</string>
|
||||
<string name="juju-zombie_x">
|
||||
<string name="juju_x">
|
||||
<text locale="de">Juju-Zombie</text>
|
||||
<text locale="en">juju-zombie</text>
|
||||
</string>
|
||||
|
@ -3815,10 +3811,6 @@
|
|||
<text locale="de">Meteorregen</text>
|
||||
<text locale="en">Meteor Shower</text>
|
||||
</string>
|
||||
<string name="shadowcall">
|
||||
<text locale="de">Schattenruf</text>
|
||||
<text locale="en">Shadow Call</text>
|
||||
</string>
|
||||
<string name="create_ror">
|
||||
<text locale="de">Erschaffe einen Ring der Regeneration</text>
|
||||
<text locale="en">Create A Ring of Regeneration</text>
|
||||
|
@ -4499,10 +4491,6 @@
|
|||
<text locale="de">Verletzt alle Gegner.</text>
|
||||
<text locale="en">Injures all enemies.</text>
|
||||
</string>
|
||||
<string name="shadowcall">
|
||||
<text locale="de">Ruft Schattenwesen.</text>
|
||||
<text locale="en">Calls beings from shadow.</text>
|
||||
</string>
|
||||
<string name="aura_of_fear">
|
||||
<text locale="de">Panik.</text>
|
||||
<text locale="en">Panic.</text>
|
||||
|
@ -6623,53 +6611,17 @@
|
|||
<text locale="de">EINLADEN</text>
|
||||
<text locale="en">INVITE</text>
|
||||
</string>
|
||||
<string name="rm_stone">
|
||||
<text locale="de">Steine</text>
|
||||
<text locale="en">stones</text>
|
||||
</string>
|
||||
|
||||
<string name="rm_horse">
|
||||
<text locale="de">Pferde</text>
|
||||
<text locale="en">horses</text>
|
||||
</string>
|
||||
<string name="rm_peasant">
|
||||
<text locale="de">Bauern</text>
|
||||
<text locale="en">peasants</text>
|
||||
</string>
|
||||
<string name="rm_money">
|
||||
<text locale="de">Silber</text>
|
||||
<text locale="en">silver</text>
|
||||
</string>
|
||||
<string name="rm_laen">
|
||||
<text locale="de">Laen</text>
|
||||
<text locale="en">laen</text>
|
||||
</string>
|
||||
|
||||
<string name="rm_sapling">
|
||||
<string name="sapling">
|
||||
<text locale="de">Schößlinge</text>
|
||||
<text locale="en">saplings</text>
|
||||
</string>
|
||||
|
||||
<string name="rm_mallornsapling">
|
||||
<string name="mallornsapling">
|
||||
<text locale="de">Mallornschößlinge</text>
|
||||
<text locale="en">mallorn saplings</text>
|
||||
</string>
|
||||
|
||||
<string name="rm_tree">
|
||||
<text locale="de">Bäume</text>
|
||||
<text locale="en">trees</text>
|
||||
</string>
|
||||
|
||||
<string name="rm_mallorn">
|
||||
<text locale="de">Mallorn</text>
|
||||
<text locale="en">mallorn</text>
|
||||
</string>
|
||||
|
||||
<string name="rm_iron">
|
||||
<text locale="de">Eisen</text>
|
||||
<text locale="en">iron</text>
|
||||
</string>
|
||||
|
||||
<string name="Winter">
|
||||
<text locale="de">Winter</text>
|
||||
<text locale="en">winter</text>
|
||||
|
|
|
@ -310,7 +310,7 @@
|
|||
<string name="dam">
|
||||
<text locale="en">dam</text>
|
||||
</string>
|
||||
<string name="genericbuilding">
|
||||
<string name="building">
|
||||
<text locale="en">structure</text>
|
||||
</string>
|
||||
<string name="harbour">
|
||||
|
|
|
@ -324,7 +324,7 @@
|
|||
<string name="dam">
|
||||
<text locale="fr">barrage</text>
|
||||
</string>
|
||||
<string name="genericbuilding">
|
||||
<string name="building">
|
||||
<text locale="fr">bâtiment</text>
|
||||
</string>
|
||||
<string name="harbour">
|
||||
|
@ -1912,10 +1912,10 @@
|
|||
<string name="zombie">
|
||||
<text locale="fr">zombie</text>
|
||||
</string>
|
||||
<string name="juju-zombie_p">
|
||||
<string name="juju_p">
|
||||
<text locale="fr">zombies juju</text>
|
||||
</string>
|
||||
<string name="juju-zombie">
|
||||
<string name="juju">
|
||||
<text locale="fr">zombie juju</text>
|
||||
</string>
|
||||
<string name="ghoul_p">
|
||||
|
|
|
@ -1,5 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<messages>
|
||||
<message name="newbie_info_game" section="events">
|
||||
<type>
|
||||
<arg name="subject" type="string"/>
|
||||
<arg name="email" type="string"/>
|
||||
</type>
|
||||
<text locale="de">Bitte denke daran, deine Befehle mit dem Betreff
|
||||
$subject an $email zu senden.</text>
|
||||
<text locale="en">Remember to send your orders to
|
||||
$email with the subject ${subject}.</text>
|
||||
</message>
|
||||
<message name="parse_error" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
@ -1804,7 +1814,7 @@
|
|||
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Der Magier erschafft ein Traumgebäude."</text>
|
||||
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - The magician creates an illusionary building."</text>
|
||||
</message>
|
||||
<message name="sp_shapeshift_fail" section="magic">
|
||||
<message name="sp_shapeshift_fail" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -1900,10 +1910,9 @@
|
|||
<message name="use_antimagiccrystal" section="magic">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
</type>
|
||||
<text locale="de">"$unit($unit) benutzt in $region($region) einen Antimagiekristall."</text>
|
||||
<text locale="en">"$unit($unit) uses an antimagic crystal in $region($region)."</text>
|
||||
<text locale="de">"$unit($unit) benutzt einen Antimagiekristall."</text>
|
||||
<text locale="en">"$unit($unit) uses an antimagic crystal."</text>
|
||||
</message>
|
||||
<message name="magicboost_effect" section="magic">
|
||||
<type>
|
||||
|
@ -2402,7 +2411,7 @@
|
|||
<text locale="de">"Eine Botschaft von $unit.dative($unit) in $region($region): 'Ups! Quack, Quack!'"</text>
|
||||
<text locale="en">"A message from $unit($unit) in $region($region): 'Oops! Croak, Croak!'"</text>
|
||||
</message>
|
||||
<message name="familiar_farcast" section="magic">
|
||||
<message name="familiar_farcast" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -2412,7 +2421,7 @@
|
|||
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - $unit($mage) kann Zauber, die durch $unit($unit) gewirkt werden, nicht zusätzlich in die Ferne richten."</text>
|
||||
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - $unit($mage) cannot direct spells that are channeled through $unit($unit) into distant regions."</text>
|
||||
</message>
|
||||
<message name="familiar_toofar" section="magic">
|
||||
<message name="familiar_toofar" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -2552,13 +2561,6 @@
|
|||
<text locale="de">"$unit($unit) in $region($region) regeneriert $int($amount) Aura."</text>
|
||||
<text locale="en">"$unit($unit) regenerates $int($amount) aura in $region($region)."</text>
|
||||
</message>
|
||||
<message name="msg_magic" section="magic">
|
||||
<type>
|
||||
<arg name="string" type="string"/>
|
||||
</type>
|
||||
<text locale="de">"$string"</text>
|
||||
<text locale="en">"$string"</text>
|
||||
</message>
|
||||
<message name="studycost" section="study">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
@ -2596,13 +2598,6 @@
|
|||
<text locale="de">"$unit($teacher) lehrt $unit($student) $skill($skill)."</text>
|
||||
<text locale="en">"$unit($teacher) teaches $unit($student) $skill($skill)."</text>
|
||||
</message>
|
||||
<message name="msg_study" section="study">
|
||||
<type>
|
||||
<arg name="string" type="string"/>
|
||||
</type>
|
||||
<text locale="de">"$string"</text>
|
||||
<text locale="en">"$string"</text>
|
||||
</message>
|
||||
<message name="sellamount" section="economy">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
@ -2834,13 +2829,6 @@
|
|||
<text locale="de">"$unit($unit) baut für $int($size) an $ship($ship) weiter."</text>
|
||||
<text locale="en">"$unit($unit) builds $int($size) more on $ship($ship)."</text>
|
||||
</message>
|
||||
<message name="msg_production" section="production">
|
||||
<type>
|
||||
<arg name="string" type="string"/>
|
||||
</type>
|
||||
<text locale="de">"$string"</text>
|
||||
<text locale="en">"$string"</text>
|
||||
</message>
|
||||
<message name="firewall_death" section="movement">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
@ -2878,15 +2866,7 @@
|
|||
<text locale="de">"$unit($unit) $if($eq($mode,1),"reitet", "wandert") von $region($start) nach $region($end).$if($isnull($regions),""," Dabei wurde $trail($regions) durchquert.")"</text>
|
||||
<text locale="en">"$unit($unit) $if($eq($mode,1),"rides", "walks") from $region($start) to $region($end)$if($isnull($regions),""," by way of $trail($regions)")."</text>
|
||||
</message>
|
||||
<message name="detectoceandir" section="movement">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="direction" type="direction"/>
|
||||
</type>
|
||||
<text locale="de">"$unit($unit) entdeckt dass im $direction($direction) $terrain($region) ist."</text>
|
||||
<text locale="en">"$unit($unit) discovered that $terrain($region) lies in the $direction($direction)."</text>
|
||||
</message>
|
||||
<message name="detectocean" section="movement">
|
||||
<message name="detectocean" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -2895,7 +2875,7 @@
|
|||
<text locale="de">"$unit($unit) entdeckt, dass $region($region) $localize($terrain) ist."</text>
|
||||
<text locale="en">"$unit($unit) discovered that $region($region) is $localize($terrain)."</text>
|
||||
</message>
|
||||
<message name="leftship" section="movement">
|
||||
<message name="leftship" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -2903,7 +2883,7 @@
|
|||
<text locale="de">"$unit($unit) ist in dieser Runde gelandet und kann nicht weiter ins Landesinnere nach $region($region) vorstossen."</text>
|
||||
<text locale="en">"$unit($unit) has just landed and cannot continue moving to $region($region)."</text>
|
||||
</message>
|
||||
<message name="sailnolandingstorm" section="movement">
|
||||
<message name="sailnolandingstorm" section="errors">
|
||||
<type>
|
||||
<arg name="ship" type="ship"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -2911,7 +2891,7 @@
|
|||
<text locale="de">"Die Mannschaft der $ship($ship) kann in letzter Sekunde verhindern, dass das Schiff in $region($region) auf Land aufläuft."</text>
|
||||
<text locale="en">"At the very last moment, the crew of the $ship($ship) saved the ship from running aground in $region($region)."</text>
|
||||
</message>
|
||||
<message name="sailnolanding" section="movement">
|
||||
<message name="sailnolanding" section="errors">
|
||||
<type>
|
||||
<arg name="ship" type="ship"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -2919,7 +2899,7 @@
|
|||
<text locale="de">"Die $ship($ship) konnte in $region($region) nicht einreisen, die Küste ist zu gefährlich für das Schiff."</text>
|
||||
<text locale="en">"The $ship($ship) could not berth in $region($region). The coast is too dangerous for the vessel."</text>
|
||||
</message>
|
||||
<message name="sailforbiddendir" section="movement">
|
||||
<message name="sailforbiddendir" section="errors">
|
||||
<type>
|
||||
<arg name="ship" type="ship"/>
|
||||
<arg name="direction" type="direction"/>
|
||||
|
@ -2927,7 +2907,7 @@
|
|||
<text locale="de">"Die Mannschaft der $ship($ship) weigert sich, nach $direction($direction) zu reisen."</text>
|
||||
<text locale="en">"The crew of the $ship($ship) refuses to travel to the $direction($direction)."</text>
|
||||
</message>
|
||||
<message name="sailforbidden" section="movement">
|
||||
<message name="sailforbidden" section="errors">
|
||||
<type>
|
||||
<arg name="ship" type="ship"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -2935,7 +2915,7 @@
|
|||
<text locale="de">"Die Mannschaft der $ship($ship) weigert sich, nach $region($region) zu reisen."</text>
|
||||
<text locale="en">"The crew of the $ship($ship) refuses to travel to $region($region)."</text>
|
||||
</message>
|
||||
<message name="detectforbiddendir" section="movement">
|
||||
<message name="detectforbiddendir" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="direction" type="direction"/>
|
||||
|
@ -2943,7 +2923,7 @@
|
|||
<text locale="de">"$unit($unit) weigert sich, nach $direction($direction) zu reisen."</text>
|
||||
<text locale="en">"$unit($unit) refuses to travel to the $direction($direction)."</text>
|
||||
</message>
|
||||
<message name="detectforbidden" section="movement">
|
||||
<message name="detectforbidden" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -2951,7 +2931,7 @@
|
|||
<text locale="de">"$unit($unit) weigert sich, nach $region($region) zu reisen."</text>
|
||||
<text locale="en">"$unit($unit) refuses to travel to $region($region)."</text>
|
||||
</message>
|
||||
<message name="sailfail" section="movement">
|
||||
<message name="sailfail" section="errors">
|
||||
<type>
|
||||
<arg name="ship" type="ship"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -2959,7 +2939,7 @@
|
|||
<text locale="de">"Die $ship($ship) konnte $region($region) nicht verlassen."</text>
|
||||
<text locale="en">"The $ship($ship) could not leave $region($region)."</text>
|
||||
</message>
|
||||
<message name="moveblockedbyguard" section="movement">
|
||||
<message name="moveblockedbyguard" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -2968,35 +2948,7 @@
|
|||
<text locale="de">"$unit($unit) wurde in $region($region) von $unit.dative($guard) aufgehalten."</text>
|
||||
<text locale="en">"$unit($unit) was kept in $region($region) by $unit($guard)."</text>
|
||||
</message>
|
||||
<message name="peace_confirm" section="events">
|
||||
<type>
|
||||
<arg name="enemy" type="faction"/>
|
||||
</type>
|
||||
<text locale="de">"Wir haben den Krieg mit $faction($faction) beendet."</text>
|
||||
<text locale="en">"We declared peace with $faction($faction)."</text>
|
||||
</message>
|
||||
<message name="peace_notify" section="events">
|
||||
<type>
|
||||
<arg name="enemy" type="faction"/>
|
||||
</type>
|
||||
<text locale="de">"$faction($faction) hat den Krieg mit uns beendet."</text>
|
||||
<text locale="en">"$faction($faction) has declared peace with us."</text>
|
||||
</message>
|
||||
<message name="war_confirm" section="events">
|
||||
<type>
|
||||
<arg name="enemy" type="faction"/>
|
||||
</type>
|
||||
<text locale="de">"Wir haben $faction($faction) den Krieg erklärt."</text>
|
||||
<text locale="en">"We declared war on $faction($faction)."</text>
|
||||
</message>
|
||||
<message name="war_notify" section="events">
|
||||
<type>
|
||||
<arg name="enemy" type="faction"/>
|
||||
</type>
|
||||
<text locale="de">"$faction($faction) hat uns den Krieg erklärt."</text>
|
||||
<text locale="en">"$faction($faction) has declared war on us."</text>
|
||||
</message>
|
||||
<message name="regionowned" section="movement">
|
||||
<message name="regionowned" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -3005,7 +2957,7 @@
|
|||
<text locale="de">"$unit($unit) konnte nicht von $region($region) nach $region($target) reisen, da der Besitzer der Region es verhinderte."</text>
|
||||
<text locale="en">"$unit($unit) could not travel from $region($region) to $region($target) because the owner denied entrance."</text>
|
||||
</message>
|
||||
<message name="leavefail" section="movement">
|
||||
<message name="leavefail" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -3029,7 +2981,7 @@
|
|||
<text locale="de">"$unit($follower) konnte $unit($unit) nicht folgen."</text>
|
||||
<text locale="en">"$unit($follower) could not follow $unit($unit)."</text>
|
||||
</message>
|
||||
<message name="moveblocked" section="movement">
|
||||
<message name="moveblocked" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="direction" type="direction"/>
|
||||
|
@ -3037,7 +2989,7 @@
|
|||
<text locale="de">"$unit($unit) entdeckt, dass es keinen Weg nach $direction($direction) gibt."</text>
|
||||
<text locale="en">"$unit($unit) discovers that there is no route going $direction($direction)."</text>
|
||||
</message>
|
||||
<message name="fogblock" section="movement">
|
||||
<message name="fogblock" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -3046,13 +2998,6 @@
|
|||
<text locale="de">"$unit($unit) konnte von $region($region) nicht nach $direction($direction) ausreisen, der Nebel war zu dicht."</text>
|
||||
<text locale="en">"$unit($unit) could not travel $direction($direction) from $region($region), the fog was too dense."</text>
|
||||
</message>
|
||||
<message name="msg_movement" section="movement">
|
||||
<type>
|
||||
<arg name="string" type="string"/>
|
||||
</type>
|
||||
<text locale="de">"$string"</text>
|
||||
<text locale="en">"$string"</text>
|
||||
</message>
|
||||
<message name="entrise" section="events">
|
||||
<type>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -3321,20 +3266,6 @@
|
|||
<text locale="de">"$unit($unit) marschiert in eine Antimagiezone und löst sich auf."</text>
|
||||
<text locale="en">"$unit($unit) walks into an antimagical zone and dissolves."</text>
|
||||
</message>
|
||||
<message name="illusiondissolve" section="events">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
</type>
|
||||
<text locale="de">"$unit($unit) hat sich unbemerkt verflüchtigt."</text>
|
||||
<text locale="en">"$unit($unit) has dissolved without a trace."</text>
|
||||
</message>
|
||||
<message name="warnillusiondissolve" section="events">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
</type>
|
||||
<text locale="de">"$unit($unit) wird sich bald verflüchtigen."</text>
|
||||
<text locale="en">"$unit($unit) will dissolve soon."</text>
|
||||
</message>
|
||||
<message name="fleescared" section="events">
|
||||
<type>
|
||||
<arg name="amount" type="int"/>
|
||||
|
@ -3370,11 +3301,10 @@
|
|||
</message>
|
||||
<message name="wrongpasswd" section="events">
|
||||
<type>
|
||||
<arg name="faction" type="int"/>
|
||||
<arg name="password" type="string"/>
|
||||
</type>
|
||||
<text locale="de">"ERESSEA $int36($faction) \"${password}\" - Deine Befehle hatten ein falsches Passwort."</text>
|
||||
<text locale="en">"ERESSEA $int36($faction) \"${password}\" - Your orders had the wrong password."</text>
|
||||
<text locale="de">"Deine Befehle hatten ein falsches Passwort (${password})."</text>
|
||||
<text locale="en">"Your orders had the wrong password (${password})."</text>
|
||||
</message>
|
||||
<message name="changepasswd" section="events">
|
||||
<type>
|
||||
|
@ -6945,13 +6875,6 @@
|
|||
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Man benötigt mindestens $int($minskill) $skill($skill), um $resource($product,0) zu produzieren."</text>
|
||||
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - You need at least $int($minskill) $skill($skill), to produce $resource($product,0)."</text>
|
||||
</message>
|
||||
<message name="msg_errors" section="errors">
|
||||
<type>
|
||||
<arg name="string" type="string"/>
|
||||
</type>
|
||||
<text locale="de">"$string"</text>
|
||||
<text locale="en">"$string"</text>
|
||||
</message>
|
||||
<message name="msg_event" section="events">
|
||||
<type>
|
||||
<arg name="string" type="string"/>
|
||||
|
@ -6959,13 +6882,6 @@
|
|||
<text locale="de">"$string"</text>
|
||||
<text locale="en">"$string"</text>
|
||||
</message>
|
||||
<message name="msg_economy" section="economy">
|
||||
<type>
|
||||
<arg name="string" type="string"/>
|
||||
</type>
|
||||
<text locale="de">"$string"</text>
|
||||
<text locale="en">"$string"</text>
|
||||
</message>
|
||||
<message name="give_person" section="economy">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
@ -6997,7 +6913,6 @@
|
|||
<text locale="de">"$unit($target) erhält $int($amount) $resource($resource,$amount) von $unit($unit)."</text>
|
||||
<text locale="en">"$unit($target) receives $int($amount) $resource($resource,$amount) from $unit($unit)."</text>
|
||||
</message>
|
||||
|
||||
<message name="give_person_ocean" section="economy">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
@ -7200,7 +7115,7 @@
|
|||
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - No pyramids may be build in this region. The closest region to build a pyramid in is between $int($mindist) and $int($maxdist) regions away."</text>
|
||||
</message>
|
||||
|
||||
<message name="wormhole_requirements" section="events">
|
||||
<message name="wormhole_requirements" section="errors">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
@ -7592,16 +7507,6 @@
|
|||
<text locale="en">"$unit($mage) casts $spell($spell). $int($amount) fighters are temporarily losing some of their memories."</text>
|
||||
</message>
|
||||
|
||||
<message name="sp_shadowcall_effect" section="magic">
|
||||
<type>
|
||||
<arg name="mage" type="unit"/>
|
||||
<arg name="amount" type="int"/>
|
||||
<arg name="race" type="race"/>
|
||||
</type>
|
||||
<text locale="de">"$unit($mage) ruft $int($amount) $race($race, 0) zu Hilfe."</text>
|
||||
<text locale="en">"$unit($mage) calls upon the help of $int($amount) $race($race, 0)."</text>
|
||||
</message>
|
||||
|
||||
<message name="battle::killed" section="battle">
|
||||
<type>
|
||||
<arg name="unit" type="unit"/>
|
||||
|
@ -7621,7 +7526,7 @@
|
|||
<text locale="de">"Heer $int($index)($abbrev): $int($dead) Tote, $int($fled) Geflohene, $int($survived) Überlebende."</text>
|
||||
<text locale="en">"Army $int($index)($abbrev): $int($dead) dead, $int($fled) fled, $int($survived) survivors."</text>
|
||||
</message>
|
||||
<message name="spellfail::nolevel" section="magic">
|
||||
<message name="spellfail::nolevel" section="errors">
|
||||
<type>
|
||||
<arg name="mage" type="unit"/>
|
||||
<arg name="region" type="region"/>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<resource name="horse" limited="yes" material="rm_horse">
|
||||
<resource name="horse" limited="yes">
|
||||
<item big="yes" weight="5000" score="10" capacity="7000" animal="yes">
|
||||
<construction skill="training" minskill="1"/>
|
||||
<function name="give" value="givehorses"/>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<resource name="iron" limited="yes" material="rm_iron">
|
||||
<resource name="iron" limited="yes" material="yes">
|
||||
<item weight="500" score="10">
|
||||
<construction skill="mining" minskill="1"/>
|
||||
</item>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<resource name="laen" limited="yes" material="rm_laen">
|
||||
<resource name="laen" limited="yes" material="yes">
|
||||
<item weight="200" score="100">
|
||||
<construction skill="mining" minskill="7"/>
|
||||
</item>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<resource name="log" material="rm_tree">
|
||||
<resource name="log">
|
||||
<item weight="500" score="10">
|
||||
<construction skill="forestry" minskill="1"/>
|
||||
</item>
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
<?xml version="1.0"?>
|
||||
<resource name="mallorn" material="rm_mallorn">
|
||||
<resource name="mallorn">
|
||||
<item weight="500" score="30">
|
||||
<construction skill="forestry" minskill="2"/>
|
||||
</item>
|
||||
<resourcelimit>
|
||||
<modifier building="sawmill" type="skill" value="1"/>
|
||||
<modifier building="sawmill" type="material" value="0.5"/>
|
||||
<guard flag="logging"/>
|
||||
<function name="produce" value="lua_produceresource"/>
|
||||
<function name="limit" value="lua_limitresource"/>
|
||||
</resourcelimit>
|
||||
|
|
|
@ -3,4 +3,8 @@
|
|||
<item weight="10" score="100">
|
||||
<construction skill="herbalism" minskill="4"/>
|
||||
</item>
|
||||
<resourcelimit>
|
||||
<function name="produce" value="lua_produceresource"/>
|
||||
<function name="limit" value="lua_limitresource"/>
|
||||
</resourcelimit>
|
||||
</resource>
|
||||
|
|
|
@ -3,4 +3,8 @@
|
|||
<item weight="10" score="50">
|
||||
<construction skill="herbalism" minskill="3"/>
|
||||
</item>
|
||||
<resourcelimit>
|
||||
<function name="produce" value="lua_produceresource"/>
|
||||
<function name="limit" value="lua_limitresource"/>
|
||||
</resourcelimit>
|
||||
</resource>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?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">
|
||||
<construction skill="quarrying" minskill="1"/>
|
||||
</item>
|
||||
|
|
|
@ -3,17 +3,16 @@
|
|||
|
||||
<xi:include href="config://default/buildings/castle-2.xml" />
|
||||
|
||||
<building name="watch" capacity="1" fort="yes">
|
||||
<building name="watch" maxsize="10" capacity="1" fort="yes">
|
||||
<function name="name" value="fort_name"/>
|
||||
<function name="protection" value="building_protection"/>
|
||||
<function name="taxes" value="lua_building_taxes"/>
|
||||
<construction skill="building" minskill="1" maxsize="5" defense_bonus="0">
|
||||
<construction skill="building" minskill="1" maxsize="5">
|
||||
<requirement type="log" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="2" maxsize="5" defense_bonus="1">
|
||||
<construction skill="building" minskill="2" maxsize="5">
|
||||
<requirement type="log" quantity="1"/>
|
||||
</construction>
|
||||
<construction skill="building" minskill="2" defense_bonus="2">
|
||||
<construction skill="building" minskill="2">
|
||||
<requirement type="log" quantity="1"/>
|
||||
</construction>
|
||||
</building>
|
||||
|
|
|
@ -1,78 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<equipment>
|
||||
|
||||
<!-- equipment given to new units -->
|
||||
<set name="new_demon_unit">
|
||||
<!--skill name="stamina" level="6"/-->
|
||||
</set>
|
||||
|
||||
<set name="new_troll_unit">
|
||||
<!--skill name="stamina" level="2"/-->
|
||||
</set>
|
||||
|
||||
<set name="seaserpent_spoils">
|
||||
<item name="dragonblood" amount="2"/>
|
||||
<item name="seaserpenthead" amount="1"/>
|
||||
</set>
|
||||
|
||||
<set name="goblin_1">
|
||||
<skill name="melee" level="7"/>
|
||||
<skill name="stamina" level="3"/>
|
||||
<item name="sword" amount="1"/>
|
||||
<item name="shield" amount="1"/>
|
||||
<item name="chainmail" amount="1"/>
|
||||
</set>
|
||||
|
||||
<set name="troll_1">
|
||||
<skill name="melee" level="7"/>
|
||||
<skill name="stamina" level="3"/>
|
||||
<item name="sword" amount="1"/>
|
||||
<item name="shield" amount="1"/>
|
||||
<item name="plate" amount="1"/>
|
||||
</set>
|
||||
|
||||
<set name="front_1">
|
||||
<skill name="melee" level="7"/>
|
||||
<skill name="stamina" level="3"/>
|
||||
<item name="sword" amount="1"/>
|
||||
<item name="shield" amount="1"/>
|
||||
<item name="plate" amount="1"/>
|
||||
</set>
|
||||
|
||||
<set name="front_2">
|
||||
<skill name="melee" level="7"/>
|
||||
<skill name="stamina" level="3"/>
|
||||
<item name="sword" amount="1"/>
|
||||
<item name="towershield" amount="1"/>
|
||||
<item name="plate" amount="1"/>
|
||||
</set>
|
||||
|
||||
<set name="rear_1">
|
||||
<skill name="crossbow" level="7"/>
|
||||
<skill name="stamina" level="3"/>
|
||||
<item name="crossbow" amount="1"/>
|
||||
<item name="shield" amount="1"/>
|
||||
</set>
|
||||
|
||||
<set name="rear_2">
|
||||
<skill name="crossbow" level="7"/>
|
||||
<skill name="stamina" level="3"/>
|
||||
<item name="crossbow" amount="1"/>
|
||||
<item name="shield" amount="1"/>
|
||||
</set>
|
||||
|
||||
<set name="dwarf_2">
|
||||
<skill name="melee" level="7"/>
|
||||
<skill name="stamina" level="3"/>
|
||||
<item name="sword" amount="1"/>
|
||||
<item name="shield" amount="1"/>
|
||||
<item name="plate" amount="1"/>
|
||||
</set>
|
||||
|
||||
<set name="halfling_2">
|
||||
<skill name="crossbow" level="7"/>
|
||||
<skill name="stamina" level="3"/>
|
||||
<item name="rep_crossbow" amount="1"/>
|
||||
</set>
|
||||
|
||||
</equipment>
|
||||
|
|
|
@ -8,9 +8,8 @@
|
|||
<xi:include href="config://default/races/dragon.xml"/>
|
||||
<xi:include href="config://default/races/youngdragon.xml"/>
|
||||
|
||||
<race name="lynx" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="20" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="5" walk="yes" teach="no" getitem="yes">
|
||||
<race name="lynx" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="20" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="5" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="99999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -32,11 +31,9 @@
|
|||
<attack type="4" damage="2d3"/>
|
||||
</race>
|
||||
|
||||
<race name="human" magres="0.000000" maxaura="1.0" regaura="1.0" recruitcost="100" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="human" maxaura="1.0" regaura="1.0" recruitcost="100" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<param name="other_race" value="elf"/>
|
||||
<param name="other_cost" value="500"/>
|
||||
<skill name="riding" modifier="+1"/>
|
||||
<skill name="shipcraft" modifier="2"/>
|
||||
<skill name="sailing" modifier="2"/>
|
||||
|
@ -47,11 +44,9 @@
|
|||
<familiar race="giantturtle"/>
|
||||
</race>
|
||||
|
||||
<race name="orc" studyspeed="-5" magres="-0.05" maxaura="1.0" regaura="1.0" recruitcost="100" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="orc" studyspeed="-5" magres="-5" maxaura="1.0" regaura="1.0" recruitcost="100" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<param name="other_race" value="troll"/>
|
||||
<param name="other_cost" value="500"/>
|
||||
|
||||
<skill name="bow" speed="+5"/>
|
||||
<skill name="building" modifier="1"/>
|
||||
|
@ -76,11 +71,9 @@
|
|||
<familiar race="ghost"/>
|
||||
</race>
|
||||
|
||||
<race name="halfling" defensemodifier="1" magres="0.05" maxaura="1.0" regaura="1.0" recruitcost="100" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="halfling" defensemodifier="1" magres="5" maxaura="1.0" regaura="1.0" recruitcost="100" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<param name="other_race" value="dwarf"/>
|
||||
<param name="other_cost" value="500"/>
|
||||
<param name="luxury_trade" value="600"/>
|
||||
<skill name="bow" modifier="-1"/>
|
||||
<skill name="building" modifier="1"/>
|
||||
|
@ -104,9 +97,8 @@
|
|||
|
||||
<!-- begin secondary races -->
|
||||
|
||||
<race name="demon" magres="0.150000" maxaura="1.0" regaura="1.1" recruitcost="360" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="30" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" shapeshift="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" equipment="yes">
|
||||
<race name="demon" magres="15" maxaura="1.0" regaura="1.1" recruitcost="360" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="30" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" shapeshift="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="cartmaking" modifier="-2"/>
|
||||
<skill name="forestry" modifier="1"/>
|
||||
<skill name="melee" modifier="1"/>
|
||||
|
@ -124,10 +116,8 @@
|
|||
<familiar race="ghost"/>
|
||||
</race>
|
||||
|
||||
<race name="elf" magres="0.100000" maxaura="1.0" regaura="1.1" recruitcost="200" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="elf" magres="10" maxaura="1.0" regaura="1.1" recruitcost="200" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<param name="regen.forest" value="2.0"/>
|
||||
<skill name="armorer" modifier="-1"/>
|
||||
<skill name="bow" modifier="2"/>
|
||||
<skill name="building" modifier="-1"/>
|
||||
|
@ -144,9 +134,8 @@
|
|||
<familiar race="unicorn"/>
|
||||
</race>
|
||||
|
||||
<race name="troll" magres="0.100000" maxaura="1.0" regaura="1.0" recruitcost="260" maintenance="10" weight="2000" capacity="1080" speed="1.0" hp="20" ac="1" damage="1d5+3" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="troll" magres="10" maxaura="1.0" regaura="1.0" recruitcost="260" maintenance="10" weight="2000" capacity="1080" speed="1.0" hp="20" ac="1" damage="1d5+3" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<param name="armor.stamina" value="4"/> <!-- +1 natural armor per X levels stamina -->
|
||||
<skill name="armorer" modifier="2"/>
|
||||
<skill name="bow" modifier="-2"/>
|
||||
|
@ -167,9 +156,8 @@
|
|||
<familiar race="rat"/>
|
||||
</race>
|
||||
|
||||
<race name="dwarf" magres="0.05" maxaura="1.0" regaura="0.9" recruitcost="240" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="dwarf" magres="5" maxaura="1.0" regaura="0.9" recruitcost="240" maintenance="10" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="armorer" modifier="2"/>
|
||||
<skill name="bow" modifier="-1"/>
|
||||
<skill name="building" modifier="2"/>
|
||||
|
@ -192,9 +180,8 @@
|
|||
|
||||
<!-- end player races -->
|
||||
|
||||
<race name="kraken" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="300" damage="2d10" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" coastal="yes" swim="yes" teach="no" getitem="yes">
|
||||
<race name="kraken" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="300" damage="2d10" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" coastal="yes" swim="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -219,9 +206,8 @@
|
|||
<attack type="4" damage="1d10"/>
|
||||
<attack type="4" damage="1d10"/>
|
||||
</race>
|
||||
<race name="giantturtle" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="1600" capacity="600" speed="1.0" hp="900" ac="7" damage="2d50" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="5" coastal="yes" swim="yes" walk="yes" teach="no" getitem="yes">
|
||||
<race name="giantturtle" maxaura="0.000000" regaura="0.000000" weight="1600" capacity="600" speed="1.0" hp="900" ac="7" damage="2d50" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="5" coastal="yes" swim="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -241,9 +227,8 @@
|
|||
<skill name="cartmaking" modifier="-99"/>
|
||||
<attack type="4" damage="2d50"/>
|
||||
</race>
|
||||
<race name="dolphin" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="24" damage="1d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="5" coastal="yes" swim="yes" teach="no" getitem="yes">
|
||||
<race name="dolphin" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="24" damage="1d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="5" coastal="yes" swim="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -263,9 +248,8 @@
|
|||
<skill name="cartmaking" modifier="-99"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
</race>
|
||||
<race name="tiger" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="30" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" walk="yes" teach="no" getitem="yes">
|
||||
<race name="tiger" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="30" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -287,9 +271,8 @@
|
|||
<attack type="4" damage="1d6"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
</race>
|
||||
<race name="hellcat" magres="0.500000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="40" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes" resistpierce="yes">
|
||||
<race name="hellcat" magres="50" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="40" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes" resistpierce="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -311,9 +294,8 @@
|
|||
<attack type="4" damage="1d6"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
</race>
|
||||
<race name="owl" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="9" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="2" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<race name="owl" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="9" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="2" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -334,9 +316,8 @@
|
|||
<skill name="cartmaking" modifier="-99"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
</race>
|
||||
<race name="fairy" magres="0.800000" maxaura="1.0" regaura="1.500000" weight="200" capacity="540" speed="1.0" hp="6" damage="1d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="14" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<race name="fairy" magres="80" maxaura="1.0" regaura="1.500000" weight="200" capacity="540" speed="1.0" hp="6" damage="1d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="14" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="magic" modifier="1"/>
|
||||
<skill name="riding" modifier="-1"/>
|
||||
<skill name="melee" modifier="-1"/>
|
||||
|
@ -361,9 +342,8 @@
|
|||
<attack type="4" damage="1d3"/>
|
||||
<attack type="4" damage="1d3"/>
|
||||
</race>
|
||||
<race name="dreamcat" magres="0.500000" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="10" damage="1d5" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="6" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
|
||||
<race name="dreamcat" magres="50" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="10" damage="1d5" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="6" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="magic" modifier="1"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
|
@ -384,9 +364,8 @@
|
|||
<attack type="4" damage="1d5"/>
|
||||
<attack type="4" damage="1d5"/>
|
||||
</race>
|
||||
<race name="imp" magres="0.500000" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="10" ac="1" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<race name="imp" magres="50" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="10" ac="1" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -409,9 +388,8 @@
|
|||
<attack type="1" damage="1d4"/>
|
||||
<attack type="6" spell="fiery_dragonbreath" level="3" />
|
||||
</race>
|
||||
<race name="ghost" magres="0.800000" maxaura="0.500000" regaura="0.100000" weight="500" capacity="540" speed="1.0" hp="30" ac="5" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="8" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes" invinciblenonmagic="yes">
|
||||
<race name="ghost" magres="80" maxaura="0.500000" regaura="0.100000" weight="500" capacity="540" speed="1.0" hp="30" ac="5" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="8" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes" invinciblenonmagic="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -435,10 +413,8 @@
|
|||
<attack type="2" damage="2d30"/>
|
||||
<attack type="3" damage="1d1"/>
|
||||
</race>
|
||||
<race name="wolf" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="25" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||
<race name="wolf" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="25" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -460,9 +436,8 @@
|
|||
<attack type="4" damage="1d4"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
</race>
|
||||
<race name="unicorn" magres="0.900000" maxaura="1.500000" regaura="1.500000" weight="5000" capacity="2000" speed="2.000000" hp="40" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes">
|
||||
<race name="unicorn" magres="90" maxaura="1.500000" regaura="1.500000" weight="5000" capacity="2000" speed="2.000000" hp="40" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="9999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -484,9 +459,8 @@
|
|||
<attack type="4" damage="3d12"/>
|
||||
<attack type="4" damage="2d4"/>
|
||||
</race>
|
||||
<race name="nymph" magres="0.900000" maxaura="1.0" regaura="1.500000" weight="1000" capacity="540" speed="1.0" hp="15" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<race name="nymph" magres="90" maxaura="1.0" regaura="1.500000" weight="1000" capacity="540" speed="1.0" hp="15" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<ai splitsize="9999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="2"/>
|
||||
<skill name="building" modifier="-99"/>
|
||||
|
@ -507,9 +481,8 @@
|
|||
<attack type="1" damage="1d4"/>
|
||||
<attack type="2" damage="2d20"/>
|
||||
</race>
|
||||
<race name="songdragon" magres="0.990000" maxaura="1.0" regaura="1.0" weight="1000" capacity="600" speed="1.500000" hp="40" ac="1" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<race name="songdragon" magres="99" maxaura="1.0" regaura="1.0" weight="1000" capacity="600" speed="1.500000" hp="40" ac="1" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="9999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -535,9 +508,8 @@
|
|||
<attack type="6" spell="fiery_dragonbreath" level="3" />
|
||||
</race>
|
||||
|
||||
<race name="rat" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.0" hp="10" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" walk="yes" teach="no" getitem="yes">
|
||||
<race name="rat" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.0" hp="10" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="9999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -559,9 +531,8 @@
|
|||
<attack type="4" damage="1d4"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
</race>
|
||||
<race name="eagle" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.500000" hp="15" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="2" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<race name="eagle" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.500000" hp="15" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="2" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="9999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -582,9 +553,8 @@
|
|||
<skill name="cartmaking" modifier="-99"/>
|
||||
<attack type="4" damage="2d3"/>
|
||||
</race>
|
||||
<race name="tunnelworm" magres="0.800000" maxaura="0.000000" regaura="0.000000" weight="30000" capacity="10000" speed="1.0" hp="300" ac="6" damage="3d20" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="1" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||
<race name="tunnelworm" magres="80" maxaura="0.000000" regaura="0.000000" weight="30000" capacity="10000" speed="1.0" hp="300" ac="6" damage="3d20" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="1" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="99999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="10"/>
|
||||
<skill name="bow" modifier="-99"/>
|
||||
|
@ -607,24 +577,21 @@
|
|||
<attack type="4" damage="3d20"/>
|
||||
<attack type="8" damage="1d10"/>
|
||||
</race>
|
||||
<race name="direwolf" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="20" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" giveperson="yes">
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<race name="direwolf" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="20" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" giveperson="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<attack type="4" damage="2d4"/>
|
||||
</race>
|
||||
<race name="peasant" magres="0.000000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d6" unarmedattack="0" unarmeddefense="0" cannotmove="yes" teach="no">
|
||||
<race name="peasant" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d6" unarmedattack="0" unarmeddefense="0" cannotmove="yes" teach="no">
|
||||
<ai splitsize="10000"/>
|
||||
<attack type="1" damage="1d6"/>
|
||||
</race>
|
||||
<race name="braineater" magres="0.900000" maxaura="1.0" regaura="1.0" weight="100" capacity="540" speed="1.0" hp="20" damage="0d0" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" invinciblenonmagic="yes">
|
||||
<race name="braineater" magres="90" maxaura="1.0" regaura="1.0" weight="100" capacity="540" speed="1.0" hp="20" damage="0d0" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" invinciblenonmagic="yes">
|
||||
<ai splitsize="500" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<function name="describe" value="describe_race"/>
|
||||
<attack type="2" damage="3d15"/>
|
||||
<attack type="3" damage="1d1"/>
|
||||
<attack type="4" damage="1d1"/>
|
||||
</race>
|
||||
<race name="toad" magres="0.200000" maxaura="1.0" regaura="1.0" maintenance="10" weight="100" capacity="540" speed="1.0" hp="10" damage="1d2" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" giveperson="yes" giveunit="yes" getitem="yes" walk="yes">
|
||||
<race name="toad" magres="20" maxaura="1.0" regaura="1.0" maintenance="10" weight="100" capacity="540" speed="1.0" hp="10" damage="1d2" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" giveperson="yes" giveunit="yes" getitem="yes" walk="yes">
|
||||
<ai splitsize="1" learn="yes"/>
|
||||
<skill name="crossbow" modifier="-10"/>
|
||||
<skill name="mining" modifier="-10"/>
|
||||
|
@ -672,77 +639,62 @@
|
|||
<skill name="stamina" modifier="-10"/>
|
||||
<attack type="4" damage="1d2"/>
|
||||
</race>
|
||||
<race name="mountainguard" unarmedguard="yes" magres="0.500000" maxaura="1.0" regaura="0.500000" weight="10000" capacity="2000" speed="0.000000" hp="1000" ac="12" damage="2d40" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="8" cannotmove="yes" canlearn="no" teach="no" noweapons="yes">
|
||||
<race name="mountainguard" unarmedguard="yes" magres="50" maxaura="1.0" regaura="0.500000" weight="10000" capacity="2000" speed="0.000000" hp="1000" ac="12" damage="2d40" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="8" cannotmove="yes" canlearn="no" teach="no" noweapons="yes">
|
||||
<ai splitsize="1"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="2d40"/>
|
||||
</race>
|
||||
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="0.750000" maxaura="1.0" regaura="2.000000" weight="500" capacity="540" speed="1.0" hp="150" ac="4" damage="2d5" unarmedattack="0" unarmeddefense="0" attackmodifier="11" defensemodifier="13" scarepeasants="yes" walk="yes" teach="no" desert="yes">
|
||||
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1.0" regaura="2.000000" weight="500" capacity="540" speed="1.0" hp="150" ac="4" damage="2d5" unarmedattack="0" unarmeddefense="0" attackmodifier="11" defensemodifier="13" scarepeasants="yes" walk="yes" teach="no" desert="yes">
|
||||
<ai splitsize="50" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="2d4"/>
|
||||
<attack type="2" damage="2d30"/>
|
||||
<attack type="3" damage="1d2"/>
|
||||
</race>
|
||||
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="0.750000" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="50" ac="3" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="8" defensemodifier="11" scarepeasants="yes" walk="yes" teach="no" desert="yes" recruitethereal="yes">
|
||||
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="50" ac="3" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="8" defensemodifier="11" scarepeasants="yes" walk="yes" teach="no" desert="yes" recruitethereal="yes">
|
||||
<ai splitsize="1000" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="2d3"/>
|
||||
<attack type="3" damage="1d1"/>
|
||||
</race>
|
||||
<race name="stonegolem" stonegolem="true" magres="0.250000" maxaura="1.0" regaura="0.100000" weight="10000" capacity="2000" speed="1.0" hp="60" ac="4" damage="2d12+6" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
|
||||
<race name="stonegolem" stonegolem="true" magres="25" maxaura="1.0" regaura="0.100000" weight="10000" capacity="2000" speed="1.0" hp="60" ac="4" damage="2d12+6" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
|
||||
<ai splitsize="50"/>
|
||||
<skill name="building" modifier="14"/>
|
||||
<skill name="roadwork" modifier="14"/>
|
||||
<attack type="4" damage="2d10+4"/>
|
||||
</race>
|
||||
<race name="irongolem" irongolem="true" magres="0.250000" maxaura="1.0" regaura="0.100000" weight="10000" capacity="2000" speed="1.0" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
|
||||
<race name="irongolem" irongolem="true" magres="25" maxaura="1.0" regaura="0.100000" weight="10000" capacity="2000" speed="1.0" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
|
||||
<ai splitsize="50"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<skill name="armorer" modifier="14"/>
|
||||
<skill name="weaponsmithing" modifier="14"/>
|
||||
<attack type="4" damage="2d8+4"/>
|
||||
</race>
|
||||
<race name="spell" magres="0.000000" maxaura="1.0" regaura="0.100000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2" canlearn="no" noheal="yes" noweapons="yes" illusionary="yes" invisible="yes" fly="yes" swim="yes" walk="yes">
|
||||
<race name="spell" maxaura="1.0" regaura="0.100000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2" canlearn="no" noheal="yes" noweapons="yes" illusionary="yes" invisible="yes" fly="yes" swim="yes" walk="yes">
|
||||
<ai splitsize="1"/>
|
||||
<attack type="1" damage="1d4"/>
|
||||
</race>
|
||||
<race name="special" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2">
|
||||
<race name="special" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2">
|
||||
<ai splitsize="1"/>
|
||||
<attack type="1" damage="1d4"/>
|
||||
</race>
|
||||
|
||||
<race name="dracoid" magres="0.000000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" walk="yes" teach="no" giveperson="yes" getitem="yes" equipment="yes">
|
||||
<race name="dracoid" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" walk="yes" teach="no" giveperson="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="name" value="namedracoid"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
<attack type="1" damage="1d5"/>
|
||||
</race>
|
||||
|
||||
<race name="ent" magres="0.250000" maxaura="1.0" regaura="0.500000" weight="5000" capacity="2500" speed="1.0" hp="50" ac="4" damage="2d4+12" unarmedattack="0" unarmeddefense="0" attackmodifier="9" defensemodifier="7" scarepeasants="yes" walk="yes" teach="no">
|
||||
<race name="ent" magres="25" maxaura="1.0" regaura="0.500000" weight="5000" capacity="2500" speed="1.0" hp="50" ac="4" damage="2d4+12" unarmedattack="0" unarmeddefense="0" attackmodifier="9" defensemodifier="7" scarepeasants="yes" walk="yes" teach="no">
|
||||
<ai splitsize="1000" moverandom="yes" learn="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="2d12"/>
|
||||
<attack type="4" damage="2d12"/>
|
||||
</race>
|
||||
|
||||
<race name="illusion" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="1.0" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" walk="yes" canlearn="no" teach="no" noweapons="yes" illusionary="yes">
|
||||
<ai splitsize="999999"/>
|
||||
<function name="age" value="ageillusion"/>
|
||||
<skill name="unarmed" modifier="-99"/>
|
||||
<attack type="1" damage="1d1"/>
|
||||
</race>
|
||||
|
||||
<race name="undead" magres="0.000000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d7" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes">
|
||||
<race name="undead" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d7" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes">
|
||||
<ai splitsize="20000" moverandom="yes"/>
|
||||
<function name="name" value="nameundead"/>
|
||||
<function name="age" value="ageundead"/>
|
||||
<attack type="4" damage="1d7"/>
|
||||
<attack type="5"/>
|
||||
</race>
|
||||
|
||||
<race name="clone" magres="0.900000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.0" hp="40" damage="0d0" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" canlearn="no" teach="no" noheal="yes">
|
||||
<race name="clone" magres="90" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.0" hp="40" damage="0d0" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" canlearn="no" teach="no" noheal="yes">
|
||||
<ai splitsize="10000"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
|
@ -768,9 +720,8 @@
|
|||
<attack type="1" damage="0d0"/>
|
||||
</race>
|
||||
|
||||
<race name="ghast" magres="0.600000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="60" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="nameghoul"/>
|
||||
<race name="ghast" magres="60" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="60" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -787,10 +738,8 @@
|
|||
<attack type="2" damage="1d30"/>
|
||||
</race>
|
||||
|
||||
<race name="ghoul" magres="0.300000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="30" ac="1" damage="1d7" unarmedattack="3" unarmeddefense="3" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||
<race name="ghoul" magres="30" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="30" ac="1" damage="1d7" unarmedattack="3" unarmeddefense="3" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="nameghoul"/>
|
||||
<function name="age" value="ageghoul"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -806,9 +755,8 @@
|
|||
<attack type="2" damage="1d30"/>
|
||||
</race>
|
||||
|
||||
<race name="juju-zombie" magres="0.500000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="80" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistbash="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="namezombie"/>
|
||||
<race name="juju" magres="50" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="80" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistbash="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -823,10 +771,8 @@
|
|||
<attack type="3" damage="1d1"/>
|
||||
</race>
|
||||
|
||||
<race name="zombie" magres="0.200000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="40" ac="1" damage="1d7" unarmedattack="2" unarmeddefense="2" attackmodifier="5" defensemodifier="5" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<race name="zombie" magres="20" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="40" ac="1" damage="1d7" unarmedattack="2" unarmeddefense="2" attackmodifier="5" defensemodifier="5" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="namezombie"/>
|
||||
<function name="age" value="agezombie"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -839,9 +785,8 @@
|
|||
<attack type="1" damage="1d7"/>
|
||||
</race>
|
||||
|
||||
<race name="skeletonlord" magres="0.300000" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="60" ac="4" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="nameskeleton"/>
|
||||
<race name="skeletonlord" magres="30" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="60" ac="4" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -855,10 +800,8 @@
|
|||
<attack type="1" damage="1d7"/>
|
||||
</race>
|
||||
|
||||
<race name="skeleton" magres="0.100000" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="20" ac="1" damage="1d7" unarmedattack="1" unarmeddefense="1" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<race name="skeleton" magres="10" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="20" ac="1" damage="1d7" unarmedattack="1" unarmeddefense="1" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="nameskeleton"/>
|
||||
<function name="age" value="ageskeleton"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -871,16 +814,13 @@
|
|||
<attack type="1" damage="1d7"/>
|
||||
</race>
|
||||
|
||||
<race name="shadowknight" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.0" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
|
||||
<race name="shadowknight" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.0" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
|
||||
<ai splitsize="20000" moverandom="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="1" damage="1d1"/>
|
||||
</race>
|
||||
|
||||
<race name="seaserpent" magres="0.500000" maxaura="1.0" regaura="1.0" weight="20000" capacity="5000" speed="1.0" hp="600" ac="3" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" swim="yes" teach="no" getitem="yes" resistbash="yes">
|
||||
<race name="seaserpent" magres="50" maxaura="1.0" regaura="1.0" weight="20000" capacity="5000" speed="1.0" hp="600" ac="3" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" swim="yes" teach="no" getitem="yes" resistbash="yes">
|
||||
<ai splitsize="6" killpeasants="yes" moverandom="yes" learn="yes" moveattack="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<function name="move" value="moveswimming"/>
|
||||
<skill name="tactics" modifier="4"/>
|
||||
<attack type="4" damage="1d30"/>
|
||||
<attack type="4" damage="1d30"/>
|
||||
|
@ -889,35 +829,4 @@
|
|||
<attack type="8" damage="1d10"/>
|
||||
</race>
|
||||
|
||||
<!-- for the shadowcall spell -->
|
||||
<race name="shadowbat" magres="0.800000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="1" ac="4" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000" killpeasants="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
<attack type="3" damage="1d1"/>
|
||||
</race>
|
||||
|
||||
<!-- for the shadowcall spell -->
|
||||
<race name="nightmare" magres="0.500000" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.0" hp="80" ac="10" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
|
||||
<ai splitsize="500" killpeasants="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
<attack type="3" damage="1d4"/>
|
||||
<attack type="2" damage="1d10"/>
|
||||
</race>
|
||||
|
||||
<!-- for the shadowcall spell -->
|
||||
<race name="vampunicorn" magres="1.0" maxaura="0.000000" regaura="0.000000" weight="5000" capacity="2000" speed="1.0" hp="30" ac="4" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000" killpeasants="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="2d10"/>
|
||||
<attack type="3" damage="1d4"/>
|
||||
<attack type="3" damage="1d4"/>
|
||||
<attack type="3" damage="1d4"/>
|
||||
<attack type="3" damage="1d4"/>
|
||||
<attack type="2" damage="2d60"/>
|
||||
</race>
|
||||
|
||||
</races>
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
<?xml version="1.0"?>
|
||||
<resource name="iron" limited="yes" material="rm_iron">
|
||||
<resource name="iron" limited="yes" material="yes">
|
||||
<item weight="500" score="10">
|
||||
<construction skill="mining" minskill="1"/>
|
||||
</item>
|
||||
<resourcelimit>
|
||||
<modifier building="mine" type="skill" value="1"/>
|
||||
<modifier building="mine" type="material" value="0.5"/>
|
||||
<guard flag="mining"/>
|
||||
</resourcelimit>
|
||||
</resource>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0"?>
|
||||
<resource name="mallornseed" limited="yes">
|
||||
<resource name="mallornseed">
|
||||
<item weight="10" score="100"/>
|
||||
</resource>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0"?>
|
||||
<resource name="seed" limited="yes">
|
||||
<resource name="seed">
|
||||
<item weight="10" score="50"/>
|
||||
</resource>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?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">
|
||||
<construction skill="quarrying" minskill="1"/>
|
||||
</item>
|
||||
|
|
|
@ -107,7 +107,6 @@
|
|||
<entry spell="rustweapon" level="3" />
|
||||
<entry spell="sacrifice_strength" level="15" />
|
||||
<entry spell="seduction" level="6" />
|
||||
<entry spell="shadowcall" level="12" />
|
||||
<entry spell="shadowknights" level="1" />
|
||||
<entry spell="shapeshift" level="3" />
|
||||
<entry spell="shockwave" level="5" />
|
||||
|
|
|
@ -665,9 +665,6 @@
|
|||
<spell name="aura_of_fear" rank="5" index="175" combat="2">
|
||||
<resource name="aura" amount="12" cost="fixed"/>
|
||||
</spell>
|
||||
<spell name="shadowcall" rank="5" index="176" combat="1">
|
||||
<resource name="aura" amount="24" cost="fixed"/>
|
||||
</spell>
|
||||
<spell name="immolation" rank="5" index="180" combat="2">
|
||||
<resource name="aura" amount="24" cost="fixed"/>
|
||||
</spell>
|
||||
|
|
|
@ -1,20 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
<resources>
|
||||
|
||||
<resource name="instantartsculpture">
|
||||
<function name="change" value="changeitem"/>
|
||||
<item weight="0">
|
||||
<function name="use" value="use_instantartsculpture"/>
|
||||
</item>
|
||||
</resource>
|
||||
|
||||
<resource name="instantartacademy">
|
||||
<function name="change" value="changeitem"/>
|
||||
<item weight="0">
|
||||
<function name="use" value="use_instantartacademy"/>
|
||||
</item>
|
||||
</resource>
|
||||
|
||||
<resource name="aurapotion50">
|
||||
<function name="change" value="changeitem"/>
|
||||
<item weight="0">
|
||||
|
|
|
@ -4,4 +4,5 @@
|
|||
<building name="temple" maxsize="50" maxcapacity="2" nobuild="yes" nodestroy="yes" unique="yes" auraregen="1.00" />
|
||||
<building name="portal" maxsize="2" capacity="1" maxcapacity="2" nobuild="yes" nodestroy="yes" unique="yes" />
|
||||
<building name="pavilion" maxsize="2" capacity="1" maxcapacity="2" nobuild="yes" nodestroy="yes" unique="yes" />
|
||||
<building name="artacademy" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/>
|
||||
</buildings>
|
||||
|
|
|
@ -2,18 +2,18 @@
|
|||
<equipment>
|
||||
|
||||
<!-- one equipment-set per player-race for the first unit in a faction -->
|
||||
<set name="first_dwarf">
|
||||
<set name="autoseed_dwarf">
|
||||
<item name="axe" amount="1"/>
|
||||
<item name="chainmail" amount="1"/>
|
||||
<skill name="melee" level="1"/>
|
||||
</set>
|
||||
|
||||
<set name="first_elf">
|
||||
<set name="autoseed_elf">
|
||||
<item name="fairyboot" amount="1"/>
|
||||
<callback name="equip_newunits"/>
|
||||
</set>
|
||||
|
||||
<set name="first_orc">
|
||||
<set name="autoseed_orc">
|
||||
<skill name="polearm" level="4"/>
|
||||
<skill name="melee" level="4"/>
|
||||
<skill name="crossbow" level="4"/>
|
||||
|
@ -21,30 +21,30 @@
|
|||
<skill name="bow" level="4"/>
|
||||
</set>
|
||||
|
||||
<set name="first_goblin">
|
||||
<set name="autoseed_goblin">
|
||||
<item name="roi" amount="1"/>
|
||||
<callback name="equip_newunits"/>
|
||||
</set>
|
||||
|
||||
<set name="first_human">
|
||||
<set name="autoseed_human">
|
||||
<callback name="equip_newunits"/>
|
||||
</set>
|
||||
|
||||
<set name="first_troll">
|
||||
<set name="autoseed_troll">
|
||||
<skill name="building" level="1"/>
|
||||
<skill name="perception" level="3"/>
|
||||
<item name="stone" amount="50"/>
|
||||
</set>
|
||||
|
||||
<set name="first_demon">
|
||||
<set name="autoseed_demon">
|
||||
<skill name="stamina" level="15"/>
|
||||
</set>
|
||||
|
||||
<set name="first_insect">
|
||||
<set name="autoseed_insect">
|
||||
<item name="nestwarmth" amount="9"/>
|
||||
</set>
|
||||
|
||||
<set name="first_halfling">
|
||||
<set name="autoseed_halfling">
|
||||
<skill name="trade" level="1"/>
|
||||
<skill name="riding" level="2"/>
|
||||
<item name="horse" amount="2"/>
|
||||
|
@ -58,12 +58,12 @@
|
|||
<item name="incense" amount="5"/>
|
||||
</set>
|
||||
|
||||
<set name="first_cat">
|
||||
<set name="autoseed_cat">
|
||||
<item name="roi" amount="1"/>
|
||||
<callback name="equip_newunits"/>
|
||||
</set>
|
||||
|
||||
<set name="first_aquarian">
|
||||
<set name="autoseed_aquarian">
|
||||
<skill name="sailing" level="1"/>
|
||||
<callback name="equip_newunits"/>
|
||||
</set>
|
||||
|
|
|
@ -63,19 +63,6 @@
|
|||
</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>
|
||||
|
||||
<!-- museum items -->
|
||||
<resource name="questkey1" appearance="key">
|
||||
<!-- Key for an old quest. placeholder item -->
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" ?>
|
||||
<races xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<race name="snowman" magres="0.800000" maxaura="0.000000"
|
||||
<race name="snowman" magres="80" maxaura="0.000000"
|
||||
regaura="0.000000" weight="500" capacity="200" equipment="no"
|
||||
speed="1.000000" hp="1000" ac="4" damage="2d4" unarmedattack="10"
|
||||
unarmeddefense="10" attackmodifier="8" defensemodifier="8"
|
||||
|
@ -10,9 +10,8 @@
|
|||
<attack type="3" damage="2d6+2"/>
|
||||
</race>
|
||||
|
||||
<race name="human" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="75" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="human" maxaura="1.000000" regaura="1.000000" recruitcost="75" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<param name="migrants.formula" value="1"/>
|
||||
<skill name="trade" modifier="1"/>
|
||||
<skill name="herbalism" modifier="-1"/>
|
||||
|
@ -27,9 +26,8 @@
|
|||
<familiar race="eagle"/>
|
||||
<familiar race="imp"/>
|
||||
</race>
|
||||
<race name="kraken" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="300" damage="2d10" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" coastal="yes" swim="yes" teach="no" getitem="yes">
|
||||
<race name="kraken" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="300" damage="2d10" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" coastal="yes" swim="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="perception" modifier="1"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
|
@ -61,9 +59,8 @@
|
|||
<attack type="4" damage="1d10"/>
|
||||
<attack type="4" damage="1d10"/>
|
||||
</race>
|
||||
<race name="giantturtle" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="1600" capacity="600" speed="1.000000" hp="900" ac="7" damage="2d50" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="5" coastal="yes" swim="yes" walk="yes" teach="no" getitem="yes">
|
||||
<race name="giantturtle" maxaura="0.000000" regaura="0.000000" weight="1600" capacity="600" speed="1.000000" hp="900" ac="7" damage="2d50" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="5" coastal="yes" swim="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="perception" modifier="1"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
|
@ -90,9 +87,8 @@
|
|||
<skill name="taxation" modifier="-99"/>
|
||||
<attack type="4" damage="2d50"/>
|
||||
</race>
|
||||
<race name="dolphin" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="24" damage="1d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="5" coastal="yes" swim="yes" teach="no" getitem="yes">
|
||||
<race name="dolphin" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="2.000000" hp="24" damage="1d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="5" coastal="yes" swim="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
|
@ -118,9 +114,8 @@
|
|||
<skill name="taxation" modifier="-99"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
</race>
|
||||
<race name="tiger" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="30" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" walk="yes" teach="no" getitem="yes">
|
||||
<race name="tiger" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="30" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
|
@ -148,9 +143,8 @@
|
|||
<attack type="4" damage="1d6"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
</race>
|
||||
<race name="hellcat" magres="0.500000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="40" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes" resistpierce="yes">
|
||||
<race name="hellcat" magres="50" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="40" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes" resistpierce="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="perception" modifier="1"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
|
@ -178,9 +172,8 @@
|
|||
<attack type="4" damage="1d6"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
</race>
|
||||
<race name="owl" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="9" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="2" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<race name="owl" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="9" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="2" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="espionage" modifier="1"/>
|
||||
<skill name="stealth" modifier="1"/>
|
||||
<skill name="perception" modifier="5"/>
|
||||
|
@ -209,9 +202,8 @@
|
|||
<skill name="taxation" modifier="-99"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
</race>
|
||||
<race name="fairy" magres="0.800000" maxaura="1.000000" regaura="1.500000" weight="200" capacity="540" speed="1.000000" hp="6" damage="1d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="14" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<race name="fairy" magres="80" maxaura="1.000000" regaura="1.500000" weight="200" capacity="540" speed="1.000000" hp="6" damage="1d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="14" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="stealth" modifier="5"/>
|
||||
<skill name="espionage" modifier="2"/>
|
||||
<skill name="perception" modifier="2"/>
|
||||
|
@ -244,9 +236,8 @@
|
|||
<attack type="4" damage="1d3"/>
|
||||
<attack type="4" damage="1d3"/>
|
||||
</race>
|
||||
<race name="dreamcat" magres="0.500000" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="10" damage="1d5" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="6" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
|
||||
<race name="dreamcat" magres="50" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="10" damage="1d5" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="6" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="magic" modifier="1"/>
|
||||
<skill name="espionage" modifier="1"/>
|
||||
<skill name="stealth" modifier="1"/>
|
||||
|
@ -275,9 +266,8 @@
|
|||
<attack type="4" damage="1d5"/>
|
||||
<attack type="4" damage="1d5"/>
|
||||
</race>
|
||||
<race name="imp" magres="0.500000" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="10" ac="1" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<race name="imp" magres="50" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="10" ac="1" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
|
@ -308,9 +298,8 @@
|
|||
<attack type="1" damage="1d4"/>
|
||||
<attack type="6" spell="fiery_dragonbreath" level="3" />
|
||||
</race>
|
||||
<race name="ghost" magres="0.800000" maxaura="0.500000" regaura="0.100000" weight="500" capacity="540" speed="1.000000" hp="30" ac="5" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="8" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes" invinciblenonmagic="yes">
|
||||
<race name="ghost" magres="80" maxaura="0.500000" regaura="0.100000" weight="500" capacity="540" speed="1.000000" hp="30" ac="5" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="8" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" equipment="yes" invinciblenonmagic="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
|
@ -339,10 +328,8 @@
|
|||
<attack type="2" damage="2d30"/>
|
||||
<attack type="3" damage="1d1"/>
|
||||
</race>
|
||||
<race name="wolf" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="25" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||
<race name="wolf" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="25" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
|
@ -370,9 +357,8 @@
|
|||
<attack type="4" damage="1d4"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
</race>
|
||||
<race name="unicorn" magres="0.900000" maxaura="1.500000" regaura="1.500000" weight="5000" capacity="2000" speed="2.000000" hp="40" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes">
|
||||
<race name="unicorn" magres="90" maxaura="1.500000" regaura="1.500000" weight="5000" capacity="2000" speed="2.000000" hp="40" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="9999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
|
@ -401,9 +387,8 @@
|
|||
<attack type="4" damage="3d12"/>
|
||||
<attack type="4" damage="2d4"/>
|
||||
</race>
|
||||
<race name="nymph" magres="0.900000" maxaura="1.000000" regaura="1.500000" weight="1000" capacity="540" speed="1.000000" hp="15" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<race name="nymph" magres="90" maxaura="1.000000" regaura="1.500000" weight="1000" capacity="540" speed="1.000000" hp="15" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" getitem="yes" equipment="yes">
|
||||
<ai splitsize="9999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
<skill name="bow" modifier="2"/>
|
||||
<skill name="building" modifier="-99"/>
|
||||
|
@ -431,9 +416,8 @@
|
|||
<attack type="1" damage="1d4"/>
|
||||
<attack type="2" damage="2d20"/>
|
||||
</race>
|
||||
<race name="songdragon" magres="0.990000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="600" speed="1.500000" hp="40" ac="1" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" fly="yes" walk="yes" teach="no" getitem="yes" unarmedguard="yes">
|
||||
<race name="songdragon" magres="99" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="600" speed="1.500000" hp="40" ac="1" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" fly="yes" walk="yes" teach="no" getitem="yes" unarmedguard="yes">
|
||||
<ai splitsize="9999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
|
@ -463,9 +447,8 @@
|
|||
<attack type="4" damage="2d4"/>
|
||||
<attack type="6" spell="fiery_dragonbreath" level="3" />
|
||||
</race>
|
||||
<race name="rat" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.000000" hp="10" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" walk="yes" teach="no" getitem="yes">
|
||||
<race name="rat" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.000000" hp="10" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="9999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="espionage" modifier="5"/>
|
||||
<skill name="stealth" modifier="4"/>
|
||||
<skill name="perception" modifier="2"/>
|
||||
|
@ -495,9 +478,8 @@
|
|||
<attack type="4" damage="1d4"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
</race>
|
||||
<race name="eagle" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.500000" hp="15" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="2" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<race name="eagle" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.500000" hp="15" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="2" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="9999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
|
@ -525,9 +507,8 @@
|
|||
<skill name="taxation" modifier="-99"/>
|
||||
<attack type="4" damage="2d3"/>
|
||||
</race>
|
||||
<race name="tunnelworm" magres="0.800000" maxaura="0.000000" regaura="0.000000" weight="30000" capacity="10000" speed="1.000000" hp="300" ac="6" damage="3d20" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="1" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||
<race name="tunnelworm" magres="80" maxaura="0.000000" regaura="0.000000" weight="30000" capacity="10000" speed="1.000000" hp="300" ac="6" damage="3d20" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="1" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="99999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="10"/>
|
||||
|
@ -558,9 +539,8 @@
|
|||
<attack type="4" damage="3d20"/>
|
||||
<attack type="8" damage="1d10"/>
|
||||
</race>
|
||||
<race name="lynx" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="20" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="5" walk="yes" teach="no" getitem="yes">
|
||||
<race name="lynx" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="20" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="5" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="99999"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
<skill name="mining" modifier="-99"/>
|
||||
|
@ -589,25 +569,22 @@
|
|||
<skill name="taxation" modifier="-99"/>
|
||||
<attack type="4" damage="2d3"/>
|
||||
</race>
|
||||
<race name="direwolf" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="20" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" giveperson="yes">
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<race name="direwolf" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="20" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" giveperson="yes">
|
||||
<ai splitsize="5000"/>
|
||||
<attack type="4" damage="2d4"/>
|
||||
</race>
|
||||
<race name="peasant" magres="0.000000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d6" unarmedattack="0" unarmeddefense="0" cannotmove="yes" teach="no">
|
||||
<race name="peasant" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d6" unarmedattack="0" unarmeddefense="0" cannotmove="yes" teach="no">
|
||||
<ai splitsize="10000"/>
|
||||
<attack type="1" damage="1d6"/>
|
||||
</race>
|
||||
<race name="braineater" magres="0.900000" maxaura="1.000000"
|
||||
<race name="braineater" magres="90" maxaura="1.000000"
|
||||
regaura="1.000000" weight="100" capacity="540" speed="1.000000" hp="20" damage="0d0" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" invinciblenonmagic="yes">
|
||||
<ai splitsize="500" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<function name="describe" value="describe_race"/>
|
||||
<attack type="2" damage="3d15"/>
|
||||
<attack type="3" damage="1d1"/>
|
||||
<attack type="4" damage="1d1"/>
|
||||
</race>
|
||||
<race name="toad" magres="0.200000" maxaura="1.000000" regaura="1.000000" maintenance="10" weight="100" capacity="540" speed="1.000000" hp="10" damage="1d2" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" giveperson="yes" giveunit="yes" getitem="yes" walk="yes">
|
||||
<race name="toad" magres="20" maxaura="1.000000" regaura="1.000000" maintenance="10" weight="100" capacity="540" speed="1.000000" hp="10" damage="1d2" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" giveperson="yes" giveunit="yes" getitem="yes" walk="yes">
|
||||
<ai splitsize="1" learn="yes"/>
|
||||
<skill name="alchemy" modifier="-10"/>
|
||||
<skill name="crossbow" modifier="-10"/>
|
||||
|
@ -671,69 +648,61 @@
|
|||
<skill name="stamina" modifier="-10"/>
|
||||
<attack type="4" damage="1d2"/>
|
||||
</race>
|
||||
<race name="mountainguard" unarmedguard="yes" magres="0.500000" maxaura="1.000000" regaura="0.500000" weight="10000" capacity="2000" speed="0.000000" hp="1000" ac="12" damage="2d40" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="8" cannotmove="yes" canlearn="no" teach="no" noweapons="yes">
|
||||
<race name="mountainguard" unarmedguard="yes" magres="50" maxaura="1.000000" regaura="0.500000" weight="10000" capacity="2000" speed="0.000000" hp="1000" ac="12" damage="2d40" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="8" cannotmove="yes" canlearn="no" teach="no" noweapons="yes">
|
||||
<ai splitsize="1"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="2d40"/>
|
||||
</race>
|
||||
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="0.750000" maxaura="1.000000" regaura="2.000000" weight="500" capacity="540" speed="1.000000" hp="150" ac="4" damage="2d5" unarmedattack="0" unarmeddefense="0" attackmodifier="11" defensemodifier="13" scarepeasants="yes" walk="yes" teach="no" desert="yes">
|
||||
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1.000000" regaura="2.000000" weight="500" capacity="540" speed="1.000000" hp="150" ac="4" damage="2d5" unarmedattack="0" unarmeddefense="0" attackmodifier="11" defensemodifier="13" scarepeasants="yes" walk="yes" teach="no" desert="yes">
|
||||
<ai splitsize="50" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="2d4"/>
|
||||
<attack type="2" damage="2d30"/>
|
||||
<attack type="3" damage="1d2"/>
|
||||
</race>
|
||||
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="0.750000" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="50" ac="3" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="8" defensemodifier="11" scarepeasants="yes" walk="yes" teach="no" desert="yes" recruitethereal="yes">
|
||||
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="50" ac="3" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="8" defensemodifier="11" scarepeasants="yes" walk="yes" teach="no" desert="yes" recruitethereal="yes">
|
||||
<ai splitsize="1000" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="2d3"/>
|
||||
<attack type="3" damage="1d1"/>
|
||||
</race>
|
||||
<race name="stonegolem" stonegolem="true" magres="0.250000" maxaura="1.000000" regaura="0.100000" weight="10000" capacity="2000" speed="1.000000" hp="60" ac="4" damage="2d12+6" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
|
||||
<race name="stonegolem" stonegolem="true" magres="25" maxaura="1.000000" regaura="0.100000" weight="10000" capacity="2000" speed="1.000000" hp="60" ac="4" damage="2d12+6" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
|
||||
<ai splitsize="50"/>
|
||||
<skill name="building" modifier="14"/>
|
||||
<skill name="roadwork" modifier="14"/>
|
||||
<attack type="4" damage="2d10+4"/>
|
||||
</race>
|
||||
<race name="irongolem" irongolem="true" magres="0.250000" maxaura="1.000000" regaura="0.100000" weight="10000" capacity="2000" speed="1.000000" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
|
||||
<race name="irongolem" irongolem="true" magres="25" maxaura="1.000000" regaura="0.100000" weight="10000" capacity="2000" speed="1.000000" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
|
||||
<ai splitsize="50"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<skill name="armorer" modifier="14"/>
|
||||
<skill name="weaponsmithing" modifier="14"/>
|
||||
<attack type="4" damage="2d8+4"/>
|
||||
</race>
|
||||
<race name="spell" magres="0.000000" maxaura="1.000000" regaura="0.100000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2" canlearn="no" noheal="yes" noweapons="yes" illusionary="yes" invisible="yes" fly="yes" swim="yes" walk="yes">
|
||||
<race name="spell" maxaura="1.000000" regaura="0.100000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2" canlearn="no" noheal="yes" noweapons="yes" illusionary="yes" invisible="yes" fly="yes" swim="yes" walk="yes">
|
||||
<ai splitsize="1"/>
|
||||
<attack type="1" damage="1d4"/>
|
||||
</race>
|
||||
<race name="special" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2">
|
||||
<race name="special" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2">
|
||||
<ai splitsize="1"/>
|
||||
<attack type="1" damage="1d4"/>
|
||||
</race>
|
||||
<race name="dracoid" magres="0.000000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" walk="yes" teach="no" giveperson="yes" getitem="yes" equipment="yes">
|
||||
<race name="dracoid" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" walk="yes" teach="no" giveperson="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="name" value="namedracoid"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
<attack type="1" damage="1d5"/>
|
||||
</race>
|
||||
<race name="catdragon" magres="0.900000" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="10000" speed="1.000000" hp="20" damage="2d40" unarmedattack="0" unarmeddefense="0" defensemodifier="50" fly="yes" walk="yes" teach="no" shapeshift="yes" giveperson="yes" getitem="yes" dragon="yes">
|
||||
<race name="catdragon" magres="90" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="10000" speed="1.000000" hp="20" damage="2d40" unarmedattack="0" unarmeddefense="0" defensemodifier="50" fly="yes" walk="yes" teach="no" shapeshift="yes" giveperson="yes" getitem="yes" dragon="yes">
|
||||
<ai splitsize="1"/>
|
||||
<attack type="4" damage="2d40"/>
|
||||
<attack type="4" damage="2d40"/>
|
||||
<attack type="4" damage="2d40"/>
|
||||
<attack type="4" damage="2d40"/>
|
||||
</race>
|
||||
<race name="ent" magres="0.250000" maxaura="1.000000" regaura="0.500000" weight="5000" capacity="2500" speed="1.000000" hp="50" ac="4" damage="2d4+12" unarmedattack="0" unarmeddefense="0" attackmodifier="9" defensemodifier="7" scarepeasants="yes" walk="yes" teach="no">
|
||||
<race name="ent" magres="25" maxaura="1.000000" regaura="0.500000" weight="5000" capacity="2500" speed="1.000000" hp="50" ac="4" damage="2d4+12" unarmedattack="0" unarmeddefense="0" attackmodifier="9" defensemodifier="7" scarepeasants="yes" walk="yes" teach="no">
|
||||
<ai splitsize="1000" moverandom="yes" learn="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="2d12"/>
|
||||
<attack type="4" damage="2d12"/>
|
||||
</race>
|
||||
<race name="wyrm" magres="0.900000" maxaura="1.000000" regaura="3.000000" weight="18000" capacity="1000000" speed="1.000000" hp="2700" ac="8" damage="2d60" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
|
||||
<race name="wyrm" magres="90" maxaura="1.000000" regaura="3.000000" weight="18000" capacity="1000000" speed="1.000000" hp="2700" ac="8" damage="2d60" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
|
||||
<ai splitsize="1" killpeasants="yes" learn="yes"/>
|
||||
<function name="name" value="namedragon"/>
|
||||
<function name="move" value="movedragon"/>
|
||||
<skill name="magic" modifier="12"/>
|
||||
<skill name="tactics" modifier="12"/>
|
||||
<skill name="perception" modifier="10"/>
|
||||
|
@ -742,11 +711,8 @@
|
|||
<attack type="4" damage="5d30"/>
|
||||
<attack type="6" spell="powerful_dragonbreath" level="12" />
|
||||
</race>
|
||||
<race name="dragon" magres="0.700000" maxaura="1.000000" regaura="2.000000" weight="10000" capacity="1000000" speed="1.500000" hp="900" ac="6" damage="2d30" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes" dragon="yes">
|
||||
<race name="dragon" magres="70" maxaura="1.000000" regaura="2.000000" weight="10000" capacity="1000000" speed="1.500000" hp="900" ac="6" damage="2d30" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes" dragon="yes">
|
||||
<ai splitsize="2" killpeasants="yes" learn="yes"/>
|
||||
<function name="name" value="namedragon"/>
|
||||
<function name="age" value="agedragon"/>
|
||||
<function name="move" value="movedragon"/>
|
||||
<skill name="magic" modifier="8"/>
|
||||
<skill name="tactics" modifier="8"/>
|
||||
<skill name="perception" modifier="5"/>
|
||||
|
@ -755,11 +721,8 @@
|
|||
<attack type="4" damage="3d30"/>
|
||||
<attack type="6" spell="icy_dragonbreath" level="6" />
|
||||
</race>
|
||||
<race name="youngdragon" magres="0.500000" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="10000" speed="1.000000" hp="300" ac="4" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
|
||||
<race name="youngdragon" magres="50" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="10000" speed="1.000000" hp="300" ac="4" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
|
||||
<ai splitsize="6" killpeasants="yes" learn="yes"/>
|
||||
<function name="name" value="namedragon"/>
|
||||
<function name="age" value="agefiredragon"/>
|
||||
<function name="move" value="movedragon"/>
|
||||
<skill name="magic" modifier="4"/>
|
||||
<skill name="tactics" modifier="4"/>
|
||||
<skill name="stealth" modifier="2"/>
|
||||
|
@ -769,22 +732,13 @@
|
|||
<attack type="4" damage="1d30"/>
|
||||
<attack type="6" spell="fiery_dragonbreath" level="3" />
|
||||
</race>
|
||||
<race name="illusion" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="0" capacity="0" speed="1.000000" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" walk="yes" canlearn="no" teach="no" noweapons="yes" illusionary="yes">
|
||||
<ai splitsize="999999"/>
|
||||
<function name="age" value="ageillusion"/>
|
||||
<skill name="unarmed" modifier="-99"/>
|
||||
<attack type="1" damage="1d1"/>
|
||||
</race>
|
||||
<race name="undead" magres="0.000000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d7" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes">
|
||||
<race name="undead" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d7" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes">
|
||||
<ai splitsize="20000" moverandom="yes"/>
|
||||
<function name="name" value="nameundead"/>
|
||||
<function name="age" value="ageundead"/>
|
||||
<attack type="4" damage="1d7"/>
|
||||
<attack type="5"/>
|
||||
</race>
|
||||
<race name="aquarian" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" shipspeed="yes" playerrace="yes" coastal="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="aquarian" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" shipspeed="yes" playerrace="yes" coastal="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="mining" modifier="-2"/>
|
||||
<skill name="building" modifier="-1"/>
|
||||
<skill name="trade" modifier="2"/>
|
||||
|
@ -801,9 +755,8 @@
|
|||
<familiar race="dolphin"/>
|
||||
<familiar race="kraken"/>
|
||||
</race>
|
||||
<race name="cat" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" defensemodifier="1" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="cat" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" defensemodifier="1" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="alchemy" modifier="-1"/>
|
||||
<skill name="mining" modifier="-2"/>
|
||||
<skill name="building" modifier="-1"/>
|
||||
|
@ -827,9 +780,8 @@
|
|||
<familiar race="tiger"/>
|
||||
<familiar race="hellcat"/>
|
||||
</race>
|
||||
<race name="halfling" magres="0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="halfling" magres="5" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<param name="hunger.damage" value="1d14+14"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="mining" modifier="1"/>
|
||||
|
@ -860,9 +812,8 @@
|
|||
<familiar race="eagle"/>
|
||||
<familiar race="rat"/>
|
||||
</race>
|
||||
<race name="insect" magres="0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="insect" magres="50" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="mining" modifier="1"/>
|
||||
<skill name="bow" modifier="-2"/>
|
||||
|
@ -889,10 +840,8 @@
|
|||
<familiar race="tunnelworm"/>
|
||||
<familiar race="imp"/>
|
||||
</race>
|
||||
<race name="demon" magres="0.150000" maxaura="1.000000" regaura="1.250000" recruitcost="150" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="50" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" shapeshift="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" equipment="yes">
|
||||
<race name="demon" magres="15" maxaura="1.000000" regaura="1.250000" recruitcost="150" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="50" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" shapeshift="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="alchemy" modifier="2"/>
|
||||
<skill name="trade" modifier="-3"/>
|
||||
<skill name="forestry" modifier="1"/>
|
||||
|
@ -921,9 +870,8 @@
|
|||
<familiar race="wolf"/>
|
||||
<familiar race="imp"/>
|
||||
</race>
|
||||
<race name="troll" magres="0.100000" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="2000" capacity="1080" speed="1.000000" hp="30" ac="1" damage="1d5+3" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="troll" magres="10" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="2000" capacity="1080" speed="1.000000" hp="30" ac="1" damage="1d5+3" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="mining" modifier="2"/>
|
||||
<skill name="bow" modifier="-2"/>
|
||||
<skill name="building" modifier="2"/>
|
||||
|
@ -954,8 +902,6 @@
|
|||
</race>
|
||||
<race name="goblin" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="40" maintenance="10" weight="600" capacity="440" speed="1.000000" hp="16" damage="1d5" unarmedattack="-2" unarmeddefense="0" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="initfamiliar" value="oldfamiliars"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="alchemy" modifier="1"/>
|
||||
<skill name="mining" modifier="1"/>
|
||||
<skill name="building" modifier="1"/>
|
||||
|
@ -978,7 +924,7 @@
|
|||
<familiar race="rat"/>
|
||||
<familiar race="imp"/>
|
||||
</race>
|
||||
<race name="clone" magres="0.900000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="40" damage="0d0" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" canlearn="no" teach="no" noheal="yes">
|
||||
<race name="clone" magres="90" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="40" damage="0d0" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" canlearn="no" teach="no" noheal="yes">
|
||||
<ai splitsize="10000"/>
|
||||
<skill name="alchemy" modifier="-99"/>
|
||||
<skill name="crossbow" modifier="-99"/>
|
||||
|
@ -1011,11 +957,11 @@
|
|||
<skill name="unarmed" modifier="-99"/>
|
||||
<attack type="1" damage="0d0"/>
|
||||
</race>
|
||||
<race name="template" magres="1.000000" maxaura="0.000000" regaura="0.000000" weight="0" capacity="1000" speed="10.000000" hp="10" damage="1d4" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" fly="yes" swim="yes" walk="yes" shapeshift="yes" shapeshiftany="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" recruitunlimited="yes" equipment="yes">
|
||||
<race name="template" magres="100" maxaura="0.000000" regaura="0.000000" weight="0" capacity="1000" speed="10.000000" hp="10" damage="1d4" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" fly="yes" swim="yes" walk="yes" shapeshift="yes" shapeshiftany="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" recruitunlimited="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<attack type="1" damage="1d4"/>
|
||||
</race>
|
||||
<race name="gnome" magres="1.000000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="50" damage="1d4" unarmedattack="10" unarmeddefense="10" attackmodifier="10" defensemodifier="10" walk="yes" teach="no">
|
||||
<race name="gnome" magres="100" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="50" damage="1d4" unarmedattack="10" unarmeddefense="10" attackmodifier="10" defensemodifier="10" walk="yes" teach="no">
|
||||
<ai splitsize="10000"/>
|
||||
<skill name="tactics" modifier="1"/>
|
||||
<skill name="perception" modifier="1"/>
|
||||
|
@ -1023,7 +969,7 @@
|
|||
<skill name="unarmed" modifier="1"/>
|
||||
<attack type="1" damage="1d4"/>
|
||||
</race>
|
||||
<race name="museumghost" magres="1.000000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="50" damage="1d4" unarmedattack="10" unarmeddefense="10" attackmodifier="10" defensemodifier="10" walk="yes" teach="no">
|
||||
<race name="museumghost" magres="100" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="50" damage="1d4" unarmedattack="10" unarmeddefense="10" attackmodifier="10" defensemodifier="10" walk="yes" teach="no">
|
||||
<ai splitsize="10000"/>
|
||||
<skill name="tactics" modifier="1"/>
|
||||
<skill name="perception" modifier="1"/>
|
||||
|
@ -1037,9 +983,8 @@
|
|||
<attack type="2" damage="5d600"/>
|
||||
<attack type="1" damage="1d4"/>
|
||||
</race>
|
||||
<race name="ghast" magres="0.600000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="60" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="nameghoul"/>
|
||||
<race name="ghast" magres="60" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="60" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -1055,10 +1000,8 @@
|
|||
<attack type="2" damage="1d30"/>
|
||||
<attack type="2" damage="1d30"/>
|
||||
</race>
|
||||
<race name="ghoul" magres="0.300000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="30" ac="1" damage="1d7" unarmedattack="3" unarmeddefense="3" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||
<race name="ghoul" magres="30" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="30" ac="1" damage="1d7" unarmedattack="3" unarmeddefense="3" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="nameghoul"/>
|
||||
<function name="age" value="ageghoul"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -1073,9 +1016,8 @@
|
|||
<attack type="3" damage="1d2"/>
|
||||
<attack type="2" damage="1d30"/>
|
||||
</race>
|
||||
<race name="juju-zombie" magres="0.500000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="80" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistbash="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="namezombie"/>
|
||||
<race name="juju" magres="50" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="80" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistbash="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -1089,10 +1031,8 @@
|
|||
<attack type="3" damage="1d1"/>
|
||||
<attack type="3" damage="1d1"/>
|
||||
</race>
|
||||
<race name="zombie" magres="0.200000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="40" ac="1" damage="1d7" unarmedattack="2" unarmeddefense="2" attackmodifier="5" defensemodifier="5" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<race name="zombie" magres="20" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="40" ac="1" damage="1d7" unarmedattack="2" unarmeddefense="2" attackmodifier="5" defensemodifier="5" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="namezombie"/>
|
||||
<function name="age" value="agezombie"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -1104,9 +1044,8 @@
|
|||
<skill name="unarmed" modifier="1"/>
|
||||
<attack type="1" damage="1d7"/>
|
||||
</race>
|
||||
<race name="skeletonlord" magres="0.300000" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="60" ac="4" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="2000" aggression="0.02" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="nameskeleton"/>
|
||||
<race name="skeletonlord" magres="30" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="60" ac="4" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -1119,10 +1058,8 @@
|
|||
<attack type="1" damage="1d7"/>
|
||||
<attack type="1" damage="1d7"/>
|
||||
</race>
|
||||
<race name="skeleton" magres="0.100000" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="20" ac="1" damage="1d7" unarmedattack="1" unarmeddefense="1" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<race name="skeleton" magres="10" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="20" ac="1" damage="1d7" unarmedattack="1" unarmeddefense="1" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||
<function name="name" value="nameskeleton"/>
|
||||
<function name="age" value="ageskeleton"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="bow" modifier="1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
@ -1134,15 +1071,12 @@
|
|||
<skill name="unarmed" modifier="1"/>
|
||||
<attack type="1" damage="1d7"/>
|
||||
</race>
|
||||
<race name="shadowknight" magres="0.000000" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
|
||||
<race name="shadowknight" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
|
||||
<ai splitsize="20000" moverandom="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="1" damage="1d1"/>
|
||||
</race>
|
||||
<race name="seaserpent" magres="0.500000" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="5000" speed="1.000000" hp="600" ac="3" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" swim="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
|
||||
<race name="seaserpent" magres="50" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="5000" speed="1.000000" hp="600" ac="3" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" swim="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
|
||||
<ai splitsize="6" killpeasants="yes" moverandom="yes" learn="yes" moveattack="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<function name="move" value="moveswimming"/>
|
||||
<skill name="tactics" modifier="4"/>
|
||||
<attack type="4" damage="1d30"/>
|
||||
<attack type="4" damage="1d30"/>
|
||||
|
@ -1150,9 +1084,10 @@
|
|||
<attack type="6" spell="fiery_dragonbreath" level="3" />
|
||||
<attack type="8" damage="1d10"/>
|
||||
</race>
|
||||
<race name="snotling" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="50" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
|
||||
<race name="snotling" magres="-5" maxaura="1.000000" regaura="1.000000"
|
||||
maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="no" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="alchemy" modifier="1"/>
|
||||
<skill name="mining" modifier="1"/>
|
||||
<skill name="building" modifier="1"/>
|
||||
|
@ -1180,10 +1115,8 @@
|
|||
<familiar race="wolf"/>
|
||||
<familiar race="demon"/>
|
||||
</race>
|
||||
|
||||
<race name="elf" magres="0.100000" maxaura="1.000000" regaura="1.250000" recruitcost="130" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="elf" magres="10" maxaura="1.000000" regaura="1.250000" recruitcost="130" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="alchemy" modifier="-1"/>
|
||||
<skill name="mining" modifier="-2"/>
|
||||
<skill name="bow" modifier="2"/>
|
||||
|
@ -1208,9 +1141,8 @@
|
|||
<familiar race="unicorn"/>
|
||||
<familiar race="imp"/>
|
||||
</race>
|
||||
<race name="dwarf" magres="0.050000" maxaura="1.000000" regaura="0.500000" recruitcost="110" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="dwarf" magres="5" maxaura="1.000000" regaura="0.500000" recruitcost="110" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="mining" modifier="2"/>
|
||||
<skill name="bow" modifier="-1"/>
|
||||
<skill name="building" modifier="2"/>
|
||||
|
@ -1240,7 +1172,7 @@
|
|||
<familiar race="wolf"/>
|
||||
<familiar race="rat"/>
|
||||
</race>
|
||||
<race name="orc" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="orc" magres="-5" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<param name="recruit_multi" value="0.5"/>
|
||||
<skill name="alchemy" modifier="1"/>
|
||||
|
@ -1270,10 +1202,8 @@
|
|||
<familiar race="wolf"/>
|
||||
<familiar race="demon"/>
|
||||
</race>
|
||||
<race name="shadowdragon" magres="0.950000" maxaura="1.000000" regaura="3.000000" weight="100" capacity="100000" speed="1.000000" hp="2700" ac="10" damage="2d60" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="12" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes">
|
||||
<race name="shadowdragon" magres="95" maxaura="1.000000" regaura="3.000000" weight="100" capacity="100000" speed="1.000000" hp="2700" ac="10" damage="2d60" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="12" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes">
|
||||
<ai splitsize="1" killpeasants="yes" learn="yes"/>
|
||||
<function name="name" value="namedragon"/>
|
||||
<function name="move" value="movedragon"/>
|
||||
<skill name="tactics" modifier="20"/>
|
||||
<skill name="perception" modifier="20"/>
|
||||
<attack type="4" damage="5d30"/>
|
||||
|
@ -1282,31 +1212,5 @@
|
|||
<attack type="4" damage="5d30"/>
|
||||
<attack type="6" spell="drain_skills" level="12"/>
|
||||
<attack type="6" spell="aura_of_fear" level="12"/>
|
||||
<precombatspell spell="shadowcall"/>
|
||||
</race>
|
||||
<race name="shadowbat" magres="0.800000" maxaura="0.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="1" ac="4" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000" killpeasants="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="1d6"/>
|
||||
<attack type="3" damage="1d1"/>
|
||||
</race>
|
||||
<race name="nightmare" magres="0.500000" maxaura="0.000000" regaura="0.000000" weight="100" capacity="540" speed="1.000000" hp="80" ac="10" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
|
||||
<ai splitsize="500" killpeasants="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
<attack type="4" damage="1d4"/>
|
||||
<attack type="3" damage="1d4"/>
|
||||
<attack type="2" damage="1d10"/>
|
||||
</race>
|
||||
<race name="vampunicorn" magres="1.000000" maxaura="0.000000" regaura="0.000000" weight="5000" capacity="2000" speed="1.000000" hp="30" ac="4" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||
<ai splitsize="5000" killpeasants="yes"/>
|
||||
<function name="name" value="namegeneric"/>
|
||||
<attack type="4" damage="2d10"/>
|
||||
<attack type="3" damage="1d4"/>
|
||||
<attack type="3" damage="1d4"/>
|
||||
<attack type="3" damage="1d4"/>
|
||||
<attack type="3" damage="1d4"/>
|
||||
<attack type="2" damage="2d60"/>
|
||||
</race>
|
||||
</races>
|
||||
|
|
|
@ -123,7 +123,6 @@
|
|||
<entry spell="rustweapon" level="3" />
|
||||
<entry spell="sacrifice_strength" level="15" />
|
||||
<entry spell="seduction" level="6" />
|
||||
<entry spell="shadowcall" level="12" />
|
||||
<entry spell="shadowknights" level="1" />
|
||||
<entry spell="shapeshift" level="3" />
|
||||
<entry spell="shockwave" level="5" />
|
||||
|
|
|
@ -471,9 +471,6 @@
|
|||
<spell name="aura_of_fear" rank="5" index="175" combat="2">
|
||||
<resource name="aura" amount="12" cost="fixed"/>
|
||||
</spell>
|
||||
<spell name="shadowcall" rank="5" index="176" combat="1">
|
||||
<resource name="aura" amount="24" cost="fixed"/>
|
||||
</spell>
|
||||
<spell name="mallorntreegrow" rank="5" index="177" far="true" variable="true">
|
||||
<resource name="aura" amount="6" cost="level"/>
|
||||
<resource name="mallorn" amount="1" cost="level"/>
|
||||
|
|
|
@ -352,37 +352,9 @@
|
|||
<!-- ending here: Wildente and Jadee's wedding -->
|
||||
|
||||
<!-- art rewards begin -->
|
||||
<string name="hornofdancing">
|
||||
<text locale="de">Horn des Tanzes</text>
|
||||
<text locale="en">horn of dancing</text>
|
||||
</string>
|
||||
<string name="hornofdancing_p">
|
||||
<text locale="de">Hörner des Tanzes</text>
|
||||
<text locale="en">horns of dancing</text>
|
||||
</string>
|
||||
<string name="instantartacademy">
|
||||
<text locale="de">Miniatur einer Akademie der Künste</text>
|
||||
<text locale="en">academy of arts in a box</text>
|
||||
</string>
|
||||
<string name="instantartacademy_p">
|
||||
<text locale="de">Miniaturen einer Akademie der Künste</text>
|
||||
<text locale="en">academies of arts in a box</text>
|
||||
</string>
|
||||
<string name="instantartsculpture">
|
||||
<text locale="de">Miniatur einer Skulptur</text>
|
||||
<text locale="en">art sculpture in a box</text>
|
||||
</string>
|
||||
<string name="instantartsculpture_p">
|
||||
<text locale="de">Miniaturen einer Skulptur</text>
|
||||
<text locale="en">art sculptures in a box</text>
|
||||
</string>
|
||||
<string name="trappedairelemental">
|
||||
<text locale="de">Gefangener Windgeist</text>
|
||||
<text locale="en">trapped air elemental</text>
|
||||
</string>
|
||||
<string name="trappedairelemental_p">
|
||||
<text locale="de">Gefangene Windgeister</text>
|
||||
<text locale="en">trapped air elementals</text>
|
||||
<string name="artacademy">
|
||||
<text locale="de">Akademie der Künste</text>
|
||||
<text locale="en">academy of arts</text>
|
||||
</string>
|
||||
<string name="aurapotion50">
|
||||
<text locale="de">Auratrank</text>
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
<?xml version="1.0" ?>
|
||||
<items>
|
||||
</items>
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="aquarian" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" shipspeed="yes" playerrace="yes" coastal="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="aquarian" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" shipspeed="yes" playerrace="yes" coastal="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="mining" modifier="-2"/>
|
||||
<skill name="building" modifier="-1"/>
|
||||
<skill name="trade" modifier="2"/>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1" ?>
|
||||
<race name="cat" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" defensemodifier="1" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="cat" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" defensemodifier="1" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="alchemy" modifier="-1"/>
|
||||
<skill name="mining" modifier="-2"/>
|
||||
<skill name="building" modifier="-1"/>
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="demon" magres="0.150000" maxaura="1.000000"
|
||||
<race name="demon" magres="15" maxaura="1.000000"
|
||||
regaura="1.250000" recruitcost="150" maintenance="10" weight="1000"
|
||||
capacity="540" speed="1.000000" hp="50" ac="2" damage="1d5"
|
||||
unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes"
|
||||
shapeshift="yes" giveperson="yes" giveunit="yes" getitem="yes"
|
||||
recruitethereal="yes" equipment="yes" healing="1.5">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="alchemy" modifier="2"/>
|
||||
<skill name="trade" modifier="-3"/>
|
||||
<skill name="forestry" modifier="1"/>
|
||||
|
|
|
@ -1,12 +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"
|
||||
income="1000" walk="yes" teach="no" getitem="yes" resistbash="yes"
|
||||
dragon="yes">
|
||||
<ai splitsize="2" killpeasants="yes" learn="yes" scare="400"/>
|
||||
<function name="name" value="namedragon"/>
|
||||
<function name="age" value="agedragon"/>
|
||||
<function name="move" value="movedragon"/>
|
||||
<skill name="magic" modifier="8"/>
|
||||
<skill name="tactics" modifier="8"/>
|
||||
<attack type="4" damage="2d20"/>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="dwarf" magres="0.050000" maxaura="1.000000" regaura="0.500000" recruitcost="110" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="dwarf" magres="5" maxaura="1.000000" regaura="0.500000" recruitcost="110" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="mining" modifier="2"/>
|
||||
<skill name="bow" modifier="-1"/>
|
||||
<skill name="building" modifier="2"/>
|
||||
|
@ -30,4 +29,4 @@
|
|||
<familiar race="lynx"/>
|
||||
<familiar race="wolf"/>
|
||||
<familiar race="rat"/>
|
||||
</race>
|
||||
</race>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="elf" magres="0.100000" maxaura="1.000000" regaura="1.250000" recruitcost="130" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="elf" magres="10" maxaura="1.000000" regaura="1.250000" recruitcost="130" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="alchemy" modifier="-1"/>
|
||||
<skill name="mining" modifier="-2"/>
|
||||
<skill name="bow" modifier="2"/>
|
||||
|
@ -26,4 +25,4 @@
|
|||
<familiar race="unicorn"/>
|
||||
<familiar race="imp"/>
|
||||
</race>
|
||||
|
||||
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="goblin" magres="-0.05" maxaura="1.0" regaura="1.0"
|
||||
<race name="goblin" magres="-5" maxaura="1.0" regaura="1.0"
|
||||
recruitcost="60" maintenance="6" weight="600" capacity="440"
|
||||
speed="1.0" hp="16" damage="1d5" unarmedattack="-2" unarmeddefense="0"
|
||||
playerrace="yes" walk="yes" giveperson="yes" giveunit="yes"
|
||||
getitem="yes" equipment="yes" healing="2.0">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<param name="hunger.damage" value="1d8+7"/>
|
||||
<param name="other_race" value="demon"/>
|
||||
<param name="other_cost" value="500"/>
|
||||
<param name="recruit_multi" value="0.5"/>
|
||||
<skill name="building" modifier="1"/>
|
||||
<skill name="cartmaking" modifier="-1"/>
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="goblin" magres="-0.05" maxaura="1.0" regaura="1.0"
|
||||
<race name="goblin" magres="-5" maxaura="1.0" regaura="1.0"
|
||||
recruitcost="60" maintenance="6" weight="600" capacity="440"
|
||||
speed="1.0" hp="16" damage="1d5" unarmedattack="-2" unarmeddefense="0"
|
||||
playerrace="yes" walk="yes" giveperson="yes" giveunit="yes"
|
||||
getitem="yes" equipment="yes" healing="2.0">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<param name="hunger.damage" value="1d8+7"/>
|
||||
<param name="other_race" value="demon"/>
|
||||
<param name="other_cost" value="500"/>
|
||||
<param name="recruit_multi" value="0.5"/>
|
||||
<skill name="cartmaking" modifier="-1"/>
|
||||
<skill name="catapult" modifier="1"/>
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="goblin" magres="-0.050000" maxaura="1.000000"
|
||||
<race name="goblin" magres="-5" 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"
|
||||
healing="2.0">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="alchemy" modifier="1"/>
|
||||
<skill name="mining" modifier="1"/>
|
||||
<skill name="building" modifier="1"/>
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="halfling" magres="0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="halfling" magres="5" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<param name="hunger.damage" value="1d14+14"/>
|
||||
<param name="hunger.damage" value="1d14+14"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="mining" modifier="1"/>
|
||||
<skill name="bow" modifier="-1"/>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="human" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="75" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="human" maxaura="1.000000" regaura="1.000000" recruitcost="75" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="trade" modifier="1"/>
|
||||
<skill name="herbalism" modifier="-1"/>
|
||||
<skill name="shipcraft" modifier="1"/>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="insect" magres="0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="insect" magres="5" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="crossbow" modifier="1"/>
|
||||
<skill name="mining" modifier="1"/>
|
||||
<skill name="bow" modifier="-2"/>
|
||||
|
@ -27,4 +26,4 @@
|
|||
<familiar race="rat"/>
|
||||
<familiar race="tunnelworm"/>
|
||||
<familiar race="imp"/>
|
||||
</race>
|
||||
</race>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="orc" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<race name="orc" magres="-5" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<param name="recruit_multi" value="0.5"/>
|
||||
<skill name="alchemy" modifier="1"/>
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="troll" magres="0.100000" maxaura="1.000000"
|
||||
<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"
|
||||
healing="1.5">
|
||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||
<function name="itemdrop" value="defaultdrops"/>
|
||||
<skill name="mining" modifier="2"/>
|
||||
<skill name="bow" modifier="-2"/>
|
||||
<skill name="building" modifier="2"/>
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
<race name="wyrm" magres="0.900000" maxaura="1.0" regaura="3.000000"
|
||||
<race name="wyrm" magres="90" maxaura="1.0" regaura="3.000000"
|
||||
weight="18000" capacity="1000000" speed="1.0" 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" dragon="yes" income="5000">
|
||||
<ai splitsize="1" killpeasants="yes" learn="yes" scare="1000"/>
|
||||
<function name="name" value="namedragon"/>
|
||||
<function name="move" value="movedragon"/>
|
||||
<skill name="magic" modifier="12"/>
|
||||
<skill name="tactics" modifier="12"/>
|
||||
<attack type="4" damage="3d20"/>
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
<race name="youngdragon" magres="0.500000" maxaura="1.0" regaura="1.0"
|
||||
<race name="youngdragon" magres="50" maxaura="1.0" regaura="1.0"
|
||||
weight="8000" capacity="10000" speed="1.0" 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" dragon="yes" income="150">
|
||||
<ai splitsize="6" killpeasants="yes" learn="yes" scare="160"/>
|
||||
<function name="name" value="namedragon"/>
|
||||
<function name="age" value="agefiredragon"/>
|
||||
<function name="move" value="movedragon"/>
|
||||
<skill name="magic" modifier="4"/>
|
||||
<skill name="tactics" modifier="4"/>
|
||||
<attack type="4" damage="1d30"/>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" ?>
|
||||
<race name="zombie" magres="0.20000" maxaura="1.0" regaura="1.0"
|
||||
<race name="zombie" magres="20" maxaura="1.0" regaura="1.0"
|
||||
recruitcost="-1" maintenance="0" weight="1000" capacity="440" speed="1.000000"
|
||||
hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="no"
|
||||
walk="yes" shapeshift="no" giveperson="no" giveunit="no"
|
||||
|
|
4
s/build
4
s/build
|
@ -30,8 +30,6 @@ if [ ! -d $ROOT/$BUILD ]; then
|
|||
exit
|
||||
fi
|
||||
|
||||
git submodule update
|
||||
|
||||
echo "build eressea"
|
||||
cd $ROOT/$BUILD
|
||||
BRANCH=$(git status -s -b | head -1 | cut -d\ -f 2 | sed 's/\..*//')
|
||||
|
@ -40,7 +38,7 @@ VERSION=$(git describe --match 'v*.*.*' --tags | sed 's/^v//')
|
|||
cmake -DERESSEA_VERSION="$VERSION" ..
|
||||
else
|
||||
REV=$(git rev-parse --short HEAD)
|
||||
cmake -DERESSEA_BUILDNO="$REV-$BUILD" ..
|
||||
cmake -DERESSEA_BUILDNO="$REV" ..
|
||||
fi
|
||||
make $MAKEOPTS && make test
|
||||
cd $OLDPWD
|
||||
|
|
|
@ -28,12 +28,13 @@ if [ -d $HOME/usr ]; then
|
|||
PREFIX_PATH=$HOME/usr:$HOME/usr/local:$PREFIX_PATH
|
||||
fi
|
||||
|
||||
DEST=$(dirname $ROOT)/server
|
||||
ARGS=" -DCMAKE_MODULE_PATH=$ROOT/cmake/Modules \
|
||||
-DCMAKE_BUILD_TYPE=$BUILD \
|
||||
-DCMAKE_LIBRARY_PATH=$LIBRARY_PATH \
|
||||
-DCMAKE_INCLUDE_PATH=$INCLUDE_PATH \
|
||||
-DCMAKE_PREFIX_PATH=$PREFIX_PATH \
|
||||
-DCMAKE_INSTALL_PREFIX=$HOME/eressea/server"
|
||||
-DCMAKE_INSTALL_PREFIX=$DEST"
|
||||
|
||||
git submodule update --init
|
||||
|
||||
|
|
|
@ -8,8 +8,6 @@ while [ ! -d $ROOT/.git ]; do
|
|||
fi
|
||||
done
|
||||
|
||||
DEST=$(dirname $ROOT)/server
|
||||
|
||||
[ -z "$CC" ] && [ ! -z `which clang` ] && CC="clang"
|
||||
[ -z "$CC" ] && [ ! -z `which gcc` ] && CC="gcc"
|
||||
[ -z "$CC" ] && [ ! -z `which tcc` ] && CC="tcc"
|
||||
|
|
10
s/preview
10
s/preview
|
@ -25,9 +25,9 @@ cd $SOURCE
|
|||
rm -rf crypto tolua
|
||||
git fetch || abort "failed to update source. do you have local changes?"
|
||||
[ -z $1 ] || git checkout $1
|
||||
git pull
|
||||
git pull -q
|
||||
git submodule update
|
||||
s/build || abort "build failed."
|
||||
s/build > /dev/null || abort "build failed."
|
||||
}
|
||||
|
||||
function assert_file() {
|
||||
|
@ -79,9 +79,9 @@ SUPP="$SOURCE/share/debian-7_8.supp"
|
|||
SERVER="$SOURCE/Debug/eressea/eressea"
|
||||
VALGRIND=$(which valgrind)
|
||||
if [ ! -z $VALGRIND ]; then
|
||||
SERVER="$VALGRIND --suppressions=$SUPP --error-exitcode=1 --leak-check=no $SERVER"
|
||||
SERVER="$VALGRIND --quiet --suppressions=$SUPP --error-exitcode=1 --leak-check=no $SERVER"
|
||||
fi
|
||||
$SERVER -v$verbose -t$turn -re$game $SOURCE/scripts/run-turn.lua
|
||||
$SERVER -v$verbose -t$turn $SOURCE/scripts/run-turn.lua
|
||||
let turn=$turn+1
|
||||
[ -e data/$turn.dat ] || abort "no data file created"
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ case "$1" in
|
|||
done
|
||||
if [ $sent -eq 0 ]; then
|
||||
if [ -e ../$factions ]; then
|
||||
for faction in $(cat ../$factions) ; do
|
||||
for faction in $(grep -v -E '^#' ../$factions) ; do
|
||||
send $faction
|
||||
done
|
||||
fi
|
||||
|
|
|
@ -15,7 +15,6 @@ cd $ROOT
|
|||
$ROOT/$BUILD/eressea/eressea -v1 scripts/run-tests.lua
|
||||
$ROOT/$BUILD/eressea/eressea -v1 scripts/run-tests-e2.lua
|
||||
$ROOT/$BUILD/eressea/eressea -v1 scripts/run-tests-e3.lua
|
||||
$ROOT/$BUILD/eressea/eressea -v1 scripts/run-tests-e4.lua
|
||||
rm -rf data reports orders.txt score score.alliances datum turn
|
||||
|
||||
cd $OLDWPD
|
||||
|
|
20
s/setup
20
s/setup
|
@ -1,5 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
ROOT=$(pwd)
|
||||
while [ ! -d $ROOT/.git ]; do
|
||||
ROOT=$(dirname $ROOT)
|
||||
if [ "/" = "$ROOT" ]; then
|
||||
echo "could not find root, are you in the git repository?"
|
||||
exit
|
||||
fi
|
||||
done
|
||||
ERESSEA=$(dirname $ROOT)
|
||||
|
||||
function abort() {
|
||||
echo $1
|
||||
[ -z $2 ] && exit -1
|
||||
|
@ -37,7 +47,6 @@ while getopts :d:g:r:s:hfn o; do
|
|||
done
|
||||
|
||||
[ $game -gt 0 ] || abort "must use a positive integer for game id"
|
||||
[ -d $ERESSEA ] || abort "invalid or missing env variable ERESSEA ($ERESSEA)"
|
||||
[ -z $SOURCE ] && SOURCE=$ERESSEA/$src
|
||||
[ -d $SOURCE ] || abort "invalid source directory $SOURCE"
|
||||
[ -z $rules ] && rules=e$game
|
||||
|
@ -46,7 +55,8 @@ done
|
|||
[ -e $TOOLS ] || TOOLS=$SOURCE/bin
|
||||
[ -z $INIFILE ] && INIFILE=$TOOLS/inifile
|
||||
[ -e $INIFILE ] || INIFILE=$TOOLS/iniparser/inifile
|
||||
#[ -e $INIFILE ] || abort "tool is not installed: $INIFILE"
|
||||
|
||||
[ -e $SOURCE/conf/$rules/config.xml ] || abort "cannot find conf/$rules/config.xml"
|
||||
|
||||
cd $ERESSEA
|
||||
if [ -d $dir ] ; then
|
||||
|
@ -84,8 +94,10 @@ touch eressea.ini
|
|||
}
|
||||
|
||||
ini_start
|
||||
ini_sec eressea
|
||||
ini_add eressea locales de,en
|
||||
ini_sec game
|
||||
ini_add game locales de,en
|
||||
ini_add game id $game
|
||||
ini_add game start 1
|
||||
ini_sec lua
|
||||
ini_add lua install $SOURCE
|
||||
ini_add lua paths $SOURCE/scripts:$SOURCE/lunit
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
ROOT=`pwd`
|
||||
while [ ! -d $ROOT/.git ]; do
|
||||
ROOT=`dirname $ROOT`
|
||||
done
|
||||
|
||||
cd $ROOT
|
||||
git pull
|
||||
git submodule update
|
||||
s/build
|
||||
s/runtests
|
||||
s/install
|
|
@ -1,3 +1,4 @@
|
|||
if not config.autoseed then return nil end
|
||||
local autoseed = {}
|
||||
|
||||
-- minimum required resources in the 7-hex neighborhood:
|
||||
|
@ -64,9 +65,9 @@ local function seed(r, email, race, lang)
|
|||
assert(f)
|
||||
local u = unit.create(f, r)
|
||||
assert(u)
|
||||
equip_unit(u, "new_faction")
|
||||
equip_unit(u, "first_unit")
|
||||
equip_unit(u, "first_" .. race, 7) -- disable old callbacks
|
||||
equip_unit(u, "autoseed_faction")
|
||||
equip_unit(u, "autoseed_unit")
|
||||
equip_unit(u, "autoseed_" .. race, 7)
|
||||
unit.create(f, r, 5):set_skill("mining", 30)
|
||||
unit.create(f, r, 5):set_skill("quarrying", 30)
|
||||
f:set_origin(r)
|
||||
|
|
|
@ -11,7 +11,7 @@ return {
|
|||
require('eressea.tunnels'),
|
||||
require('eressea.ponnuki'),
|
||||
require('eressea.astral'),
|
||||
require('eressea.locales'),
|
||||
-- require('eressea.locales'),
|
||||
require('eressea.jsreport'),
|
||||
require('eressea.ents'),
|
||||
require('eressea.cursed')
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
require 'eressea.e3.rules'
|
||||
require 'eressea.spells'
|
||||
|
||||
eressea.log.debug("rules for game E4")
|
||||
|
||||
return {
|
||||
require('eressea'),
|
||||
-- require('eressea.markets'),
|
||||
require('eressea.frost'),
|
||||
require('eressea.ents')
|
||||
}
|
|
@ -1,12 +1,14 @@
|
|||
-- Muschelplateau
|
||||
|
||||
if not config.embassy then return nil end
|
||||
|
||||
local embassy = {}
|
||||
local home = nil
|
||||
|
||||
-- global exports (use item)
|
||||
function use_seashell(u, amount)
|
||||
-- Muschelplateau...
|
||||
local visit = u.faction.objects:get("embassy_muschel")
|
||||
local visit = u.faction:get_key('mupL')
|
||||
if visit and u.region~= home then
|
||||
local turns = get_turn() - visit
|
||||
local msg = message.create('msg_event')
|
||||
|
@ -32,10 +34,10 @@ function embassy.update()
|
|||
eressea.log.debug("updating embassies in " .. tostring(home))
|
||||
local u
|
||||
for u in home.units do
|
||||
if u.faction.objects:get('embassy_muschel')==nil then
|
||||
if u.faction:get_key('mupL')==0 then
|
||||
if (u.faction:add_item('seashell', 1)>0) then
|
||||
eressea.log.debug("new seashell for " .. tostring(u.faction))
|
||||
u.faction.objects:set('embassy_muschel', get_turn())
|
||||
u.faction:set_key('mupL', get_turn())
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
-- DEPRECATED
|
||||
|
||||
if not config.eternath then return nil end
|
||||
-- implements parts of a quest in E2
|
||||
-- this module is deprecated, because it puts functions in the global environment for at_building_action
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
if not config.ponnuki then return nil end
|
||||
local ponnuki = {}
|
||||
|
||||
local directions = { "NW", "NO", "O", "SO", "SW", "W" }
|
||||
|
|
|
@ -38,8 +38,47 @@ function hp_changeresource(u, delta)
|
|||
return hp
|
||||
end
|
||||
|
||||
local function mallorn_region(r)
|
||||
return r:get_flag(1) -- RF_MALLORN
|
||||
end
|
||||
|
||||
function seed_limit(r)
|
||||
if mallorn_region(r) then
|
||||
return 0
|
||||
end
|
||||
return r:get_resource("seed")
|
||||
end
|
||||
|
||||
function seed_produce(r, n)
|
||||
if not mallorn_region(r) then
|
||||
local seeds = r:get_resource("seed")
|
||||
if seeds>=n then
|
||||
r:set_resource("seed", seeds-n)
|
||||
else
|
||||
r:set_resource("seed", 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mallornseed_limit(r)
|
||||
if mallorn_region(r) then
|
||||
return r:get_resource("seed")
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
function mallornseed_produce(r, n)
|
||||
if mallorn_region(r) then
|
||||
local seeds = r:get_resource("seed")
|
||||
if seeds>=n then
|
||||
r:set_resource("seed", seeds-n)
|
||||
else
|
||||
r:set_resource("seed", 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
function horse_limit(r)
|
||||
return r:get_resource("horse")
|
||||
return r:get_resource("horse")
|
||||
end
|
||||
|
||||
function horse_produce(r, n)
|
||||
|
@ -52,9 +91,6 @@ function horse_produce(r, n)
|
|||
end
|
||||
|
||||
function log_limit(r)
|
||||
-- if r:get_flag(1) then -- RF_MALLORN
|
||||
-- return 0
|
||||
-- end
|
||||
return r:get_resource("tree") + r:get_resource("sapling")
|
||||
end
|
||||
|
||||
|
@ -75,7 +111,7 @@ function log_produce(r, n)
|
|||
end
|
||||
|
||||
function mallorn_limit(r)
|
||||
if not r:get_flag(1) then -- RF_MALLORN
|
||||
if not mallorn_region(r) then
|
||||
return 0
|
||||
end
|
||||
return r:get_resource("tree") + r:get_resource("sapling")
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
-- DEPRECATED
|
||||
if not config.wedding then return nil end
|
||||
|
||||
-- this script contains the action functions for the two portals
|
||||
-- used on the jadee/wildente wedding island. the two _action functions
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
if not config.xmas then return nil end
|
||||
|
||||
local gifts = {
|
||||
e2 = {
|
||||
{ year = 2015, turn = 959, item = 'snowglobe', msg='santa_f' },
|
||||
|
|
|
@ -4,6 +4,8 @@ if config.install then
|
|||
end
|
||||
if config.rules then
|
||||
local rules = config.rules .. '/'
|
||||
assert(0 == read_xml(confdir .. rules .. 'config.xml', confdir .. rules .. 'catalog.xml'), "could not load XML data, did you compile with LIBXML2 ?")
|
||||
assert(0 == eressea.config.read(rules .. 'config.json', confdir), "could not read JSON data")
|
||||
assert(0 == read_xml(confdir .. rules .. 'rules.xml', confdir .. rules .. 'catalog.xml'), "could not load XML data, did you compile with LIBXML2 ?")
|
||||
assert(0 == read_xml(confdir .. rules .. 'locales.xml', confdir .. rules .. 'catalog.xml'), "could not load XML data, did you compile with LIBXML2 ?")
|
||||
end
|
||||
eressea.game.reset()
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
-- Tests that work in E3. With game config of E3.
|
||||
-- Tests are under scripts/test/e3 and all files must be in scripts/test/e3/init.lua
|
||||
|
||||
path = 'scripts'
|
||||
if config.install then
|
||||
path = config.install .. '/' .. path
|
||||
package.path = package.path .. ';' .. config.install .. '/lunit/?.lua'
|
||||
--needed to find lunit if not run form eressea root. Needs right [lua] install setting in eressea.ini (point to eressea root from the start folder)
|
||||
end
|
||||
package.path = package.path .. ';' .. path .. '/?.lua;' .. path .. '/?/init.lua'
|
||||
|
||||
config.rules = 'e4'
|
||||
|
||||
require 'eressea'
|
||||
require 'eressea.path'
|
||||
require 'eressea.xmlconf'
|
||||
require 'tests.e3'
|
||||
require 'lunit'
|
||||
|
||||
eressea.settings.set("rules.alliances", "0")
|
||||
rules = require('eressea.' .. config.rules)
|
||||
result = lunit.main()
|
||||
return result.errors + result.failed
|
|
@ -26,15 +26,17 @@ function callbacks(rules, name, ...)
|
|||
end
|
||||
|
||||
local function dbupdate()
|
||||
update_scores()
|
||||
dbname = config.dbname or 'eressea.db'
|
||||
edb = db.open(config.basepath..'/'..dbname)
|
||||
if edb~=nil then
|
||||
edb:update_factions()
|
||||
edb:update_scores()
|
||||
else
|
||||
eressea.log.error("could not open "..config.basepath..'/'..dbname)
|
||||
end
|
||||
update_scores()
|
||||
if config.dbname then
|
||||
dbname = config.basepath..'/'..config.dbname
|
||||
edb = db.open(dbame)
|
||||
if edb~=nil then
|
||||
edb:update_factions()
|
||||
edb:update_scores()
|
||||
else
|
||||
eressea.log.error("could not open "..dbname)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function write_emails(locales)
|
||||
|
@ -144,7 +146,7 @@ function process(rules, orders)
|
|||
init_summary()
|
||||
|
||||
-- run the turn:
|
||||
if read_orders(orders) ~= 0 then
|
||||
if eressea.read_orders(orders) ~= 0 then
|
||||
print("could not read " .. orders)
|
||||
return -1
|
||||
end
|
||||
|
|
|
@ -330,17 +330,6 @@ function test_message()
|
|||
return msg
|
||||
end
|
||||
|
||||
function test_hashtable()
|
||||
local f = faction.create("noreply1@eressea.de", "human", "de")
|
||||
f.objects:set("enno", "smart guy")
|
||||
f.objects:set("age", 10)
|
||||
assert(f.objects:get("jesus") == nil)
|
||||
assert(f.objects:get("enno") == "smart guy")
|
||||
assert(f.objects:get("age") == 10)
|
||||
f.objects:set("age", nil)
|
||||
assert(f.objects:get("age") == nil)
|
||||
end
|
||||
|
||||
function test_events()
|
||||
local fail = 1
|
||||
local function msg_handler(u, evt)
|
||||
|
@ -449,10 +438,9 @@ function test_recruit()
|
|||
u:add_item("money", 110*n+20)
|
||||
u:add_order("REKRUTIERE " .. n)
|
||||
process_orders()
|
||||
assert(u.number == n+1)
|
||||
assert_equal(n+1, u.number)
|
||||
local p = r:get_resource("peasant")
|
||||
assert(p<200 and p>=200-n)
|
||||
-- assert(u:get_item("money")==10)
|
||||
assert_true(p<200 and p>=200-n)
|
||||
end
|
||||
|
||||
function test_produce()
|
||||
|
@ -479,7 +467,7 @@ function test_work()
|
|||
u:clear_orders()
|
||||
u:add_order("ARBEITEN")
|
||||
process_orders()
|
||||
assert(u:get_item("money")>=10)
|
||||
assert_equal(20, u:get_item("money"))
|
||||
end
|
||||
|
||||
function test_upkeep()
|
||||
|
@ -491,7 +479,7 @@ function test_upkeep()
|
|||
u:clear_orders()
|
||||
u:add_order("LERNE Waffenbau")
|
||||
process_orders()
|
||||
assert(u:get_item("money")==u.number)
|
||||
assert_equal(u:get_item("money"), u.number)
|
||||
end
|
||||
|
||||
function test_id()
|
||||
|
@ -499,50 +487,39 @@ function test_id()
|
|||
|
||||
local f = faction.create("noreply11@eressea.de", "human", "de")
|
||||
f.id = atoi36("42")
|
||||
assert(get_faction(42)~=f)
|
||||
assert(get_faction("42")==f)
|
||||
assert(get_faction(atoi36("42"))==f)
|
||||
assert_not_equal(f, get_faction(42))
|
||||
assert_equal(f, get_faction("42"))
|
||||
assert_equal(f, get_faction(atoi36("42")))
|
||||
|
||||
local u = unit.create(f, r, 1)
|
||||
u.id = atoi36("42")
|
||||
assert(get_unit(42)~=u)
|
||||
assert(get_unit("42")==u)
|
||||
assert(get_unit(atoi36("42"))==u)
|
||||
assert_not_equal(get_unit(42), u)
|
||||
assert_equal(get_unit("42"), u)
|
||||
assert_equal(get_unit(atoi36("42")), u)
|
||||
|
||||
local b = building.create(r, "castle")
|
||||
-- <not working> b.id = atoi36("42")
|
||||
local fortytwo = itoa36(b.id)
|
||||
assert(get_building(fortytwo)==b)
|
||||
assert(get_building(atoi36(fortytwo))==b)
|
||||
assert_equal(get_building(fortytwo), b)
|
||||
assert_equal(get_building(atoi36(fortytwo)), b)
|
||||
|
||||
local s = _test_create_ship(r)
|
||||
assert_not_nil(s)
|
||||
-- <not working> s.id = atoi36("42")
|
||||
local fortytwo = itoa36(s.id)
|
||||
assert(get_ship(fortytwo)==s)
|
||||
assert(get_ship(atoi36(fortytwo))==s)
|
||||
end
|
||||
|
||||
function test_herbalism()
|
||||
local r = region.create(0, 0, "plain")
|
||||
local f = faction.create("noreply12@eressea.de", "human", "de")
|
||||
local u = unit.create(f, r, 1)
|
||||
u:add_item("money", u.number * 100)
|
||||
u:set_skill("herbalism", 5)
|
||||
u:clear_orders()
|
||||
u:add_order("MACHE Samen")
|
||||
process_orders()
|
||||
assert_equal(get_ship(fortytwo), s)
|
||||
assert_equal(get_ship(atoi36(fortytwo)), s)
|
||||
end
|
||||
|
||||
function test_mallorn()
|
||||
local r = region.create(0, 0, "plain")
|
||||
r:set_flag(1, false) -- not mallorn
|
||||
r:set_resource("tree", 100)
|
||||
assert(r:get_resource("tree")==100)
|
||||
assert_equal(100, r:get_resource("tree"))
|
||||
local m = region.create(0, 0, "plain")
|
||||
m:set_flag(1, true) -- mallorn
|
||||
m:set_resource("tree", 100)
|
||||
assert(m:get_resource("tree")==100)
|
||||
assert_equal(100, m:get_resource("tree"))
|
||||
|
||||
local f = faction.create("noreply13@eressea.de", "human", "de")
|
||||
|
||||
|
|
|
@ -2,6 +2,38 @@ require "lunit"
|
|||
|
||||
module("tests.e2.e2features", package.seeall, lunit.testcase )
|
||||
|
||||
function setup()
|
||||
eressea.free_game()
|
||||
eressea.settings.set("nmr.timeout", "0")
|
||||
eressea.settings.set("rules.food.flags", "4")
|
||||
eressea.settings.set("rules.ship.storms", "0")
|
||||
eressea.settings.set("rules.encounters", "0")
|
||||
end
|
||||
|
||||
function test_herbalism()
|
||||
-- OBS: herbalism is currently an E2-only skill
|
||||
local r = region.create(0, 0, "plain")
|
||||
local f = faction.create("herbalism@eressea.de", "human", "de")
|
||||
local u = unit.create(f, r, 1)
|
||||
|
||||
eressea.settings.set("rules.grow.formula", 0) -- plants do not grow
|
||||
u:add_item("money", u.number * 100)
|
||||
u:set_skill("herbalism", 5)
|
||||
r:set_resource("seed", 100)
|
||||
r:set_flag(1, false) -- regular trees
|
||||
u:clear_orders()
|
||||
u:add_order("MACHE Samen")
|
||||
process_orders()
|
||||
assert_equal(1, u:get_item("seed"))
|
||||
assert_equal(99, r:get_resource("seed"))
|
||||
r:set_flag(1, true) -- mallorn
|
||||
u:clear_orders()
|
||||
u:add_order("MACHE Mallornsamen")
|
||||
process_orders()
|
||||
assert_equal(1, u:get_item("mallornseed"))
|
||||
assert_equal(98, r:get_resource("seed"))
|
||||
end
|
||||
|
||||
function test_build_harbour()
|
||||
-- try to reproduce mantis bug 2221
|
||||
local r = region.create(0, 0, "plain")
|
||||
|
@ -42,13 +74,6 @@ local function two_units(r, f1, f2)
|
|||
return one_unit(r, f1), one_unit(r, f2)
|
||||
end
|
||||
|
||||
function setup()
|
||||
eressea.free_game()
|
||||
eressea.settings.set("nmr.timeout", "0")
|
||||
eressea.settings.set("rules.food.flags", "4")
|
||||
eressea.settings.set("rules.ship.storms", "0")
|
||||
end
|
||||
|
||||
function test_learn()
|
||||
eressea.settings.set("study.random_progress", "0")
|
||||
local r = region.create(0, 0, "plain")
|
||||
|
|
|
@ -11,30 +11,62 @@ function teardown()
|
|||
eressea.settings.set("rules.food.flags", "0")
|
||||
end
|
||||
|
||||
function test_build_watch()
|
||||
local r = region.create(0, 0, "plain")
|
||||
local f = faction.create("e3build@eressea.de", "human", "de")
|
||||
local u = unit.create(f, r, 1)
|
||||
|
||||
u.number = 20
|
||||
u:add_item("log", 20)
|
||||
u.id = 42
|
||||
|
||||
u:set_skill("building", 1)
|
||||
u:add_order("MACHE Wache")
|
||||
process_orders()
|
||||
assert_not_nil(u.building)
|
||||
assert_equal(5, u.building.size)
|
||||
|
||||
u:set_skill("building", 2)
|
||||
u:add_order("MACHE Wache " .. itoa36(u.building.id))
|
||||
process_orders()
|
||||
assert_not_nil(u.building)
|
||||
assert_equal(10, u.building.size)
|
||||
end
|
||||
|
||||
function test_watch()
|
||||
local r = region.create(0, 0, "plain")
|
||||
local b = building.create(r, "watch")
|
||||
|
||||
assert_equal("scaffolding", b:get_typename(1))
|
||||
assert_equal("scaffolding", b:get_typename(4))
|
||||
assert_equal("guardhouse", b:get_typename(5))
|
||||
assert_equal("guardhouse", b:get_typename(9))
|
||||
assert_equal("guardtower", b:get_typename(10))
|
||||
end
|
||||
|
||||
function test_small_castles()
|
||||
local r = region.create(0, 0, "plain")
|
||||
local f1 = faction.create("noreply@eressea.de", "human", "de")
|
||||
local u1 = unit.create(f1, r, 1)
|
||||
local f2 = faction.create("noreply@eressea.de", "halfling", "de")
|
||||
local u2 = unit.create(f2, r, 1)
|
||||
u1:add_item("money", 10000)
|
||||
local r = region.create(0, 0, "plain")
|
||||
local f1 = faction.create("noreply@eressea.de", "human", "de")
|
||||
local u1 = unit.create(f1, r, 1)
|
||||
local f2 = faction.create("noreply@eressea.de", "halfling", "de")
|
||||
local u2 = unit.create(f2, r, 1)
|
||||
|
||||
local b = building.create(r, "castle")
|
||||
u2.building = b
|
||||
u1.building = b
|
||||
local b = building.create(r, "castle")
|
||||
u2.building = b
|
||||
u1.building = b
|
||||
|
||||
b.owner = u2
|
||||
assert_equal("site", b:get_typename(7))
|
||||
assert_equal("fortification", b:get_typename(8))
|
||||
b.owner = u1
|
||||
assert_equal("site", b:get_typename(9))
|
||||
assert_equal("fortification", b:get_typename(10))
|
||||
b.owner = u2
|
||||
assert_equal("site", b:get_typename(7))
|
||||
assert_equal("fortification", b:get_typename(8))
|
||||
b.owner = u1
|
||||
assert_equal("site", b:get_typename(9))
|
||||
assert_equal("fortification", b:get_typename(10))
|
||||
end
|
||||
|
||||
function test_build_normal()
|
||||
local r = region.create(0, 0, "plain")
|
||||
local f = faction.create("noreply@eressea.de", "human", "de")
|
||||
local u = unit.create(f, r, 1)
|
||||
local r = region.create(0, 0, "plain")
|
||||
local f = faction.create("noreply@eressea.de", "human", "de")
|
||||
local u = unit.create(f, r, 1)
|
||||
u:clear_orders()
|
||||
u:add_item("stone", 10)
|
||||
u:set_skill("building", 10)
|
||||
|
@ -45,9 +77,9 @@ function test_build_normal()
|
|||
end
|
||||
|
||||
function test_build_packice()
|
||||
local r = region.create(0, 0, "packice")
|
||||
local f = faction.create("noreply@eressea.de", "human", "de")
|
||||
local u = unit.create(f, r, 1)
|
||||
local r = region.create(0, 0, "packice")
|
||||
local f = faction.create("packice@eressea.de", "human", "de")
|
||||
local u = unit.create(f, r, 1)
|
||||
u:clear_orders()
|
||||
u:add_item("stone", 10)
|
||||
u:set_skill("building", 10)
|
||||
|
|
|
@ -17,7 +17,7 @@ function setup()
|
|||
end
|
||||
|
||||
function test_faction_flags()
|
||||
assert_equal(2, f.flags) -- FFL_ISNEW
|
||||
assert_equal(6, f.flags) -- FFL_ISNEW|FFL_PWMSG
|
||||
f.flags = 42
|
||||
assert_equal(42, f.flags)
|
||||
end
|
||||
|
|
|
@ -95,6 +95,7 @@ function test_force_leave_postcombat()
|
|||
u1.building = b1
|
||||
u2.building = b1
|
||||
eressea.settings.set("rules.owners.force_leave", "1")
|
||||
eressea.settings.set("NewbieImmunity", "0")
|
||||
u1:clear_orders()
|
||||
u1:add_order("ATTACKIERE " .. itoa36(u2.id))
|
||||
u2:clear_orders()
|
||||
|
@ -109,6 +110,7 @@ function test_force_leave_postcombat()
|
|||
end
|
||||
end
|
||||
assert_not_equal(nil, u3)
|
||||
assert_equal(nil, u2.building)
|
||||
assert_equal(nil, u3.building)
|
||||
assert_equal(1, u3.number)
|
||||
end
|
||||
|
|
|
@ -8,6 +8,8 @@ function setup()
|
|||
eressea.settings.set("rules.grow.formula", "0")
|
||||
eressea.settings.set("rules.peasants.growth.factor", "0")
|
||||
eressea.settings.set("volcano.active.percent", "0")
|
||||
eressea.settings.set("volcano.outbreak.percent", "0")
|
||||
eressea.settings.set("volcano.stop.percent", "0")
|
||||
end
|
||||
|
||||
function test_snowglobe_fail()
|
||||
|
@ -44,23 +46,17 @@ function test_snowglobe()
|
|||
local r2 = region.create(1, 0, "ocean")
|
||||
local f = faction.create("snowglobe2@eressea.de", "human", "de")
|
||||
local u = unit.create(f, r1, 1)
|
||||
local have = 6
|
||||
local fail = 0
|
||||
u:add_item("snowglobe", have)
|
||||
local xform = { ocean = "glacier", glacier = "glacier", firewall = "volcano", volcano = "mountain", desert = "plain", plain = "plain" }
|
||||
u:clear_orders()
|
||||
u:add_order("BENUTZEN 1 Schneekugel Ost")
|
||||
local xform = { ocean = "glacier", glacier = "glacier", firewall = "volcano", desert = "plain", volcano = "mountain", plain = "plain" }
|
||||
for k, v in pairs(xform) do
|
||||
r2.terrain = k
|
||||
process_orders()
|
||||
use_snowglobe(u, 1, "Ost", nil)
|
||||
assert_equal(v, r2.terrain)
|
||||
if k~=v then
|
||||
have=have - 1
|
||||
else
|
||||
if k==v then
|
||||
fail = fail + 1
|
||||
assert_equal(fail, f:count_msg_type('target_region_invalid'))
|
||||
end
|
||||
assert_equal(have, u:get_item("snowglobe"))
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue