Merge pull request from ennorehling/develop

beginning of the end of XML equipment
This commit is contained in:
Enno Rehling 2018-05-12 21:52:35 +02:00 committed by GitHub
commit cdef4ae21d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
56 changed files with 1020 additions and 826 deletions

View file

@ -6,7 +6,6 @@
"config://conf/e2/locales.json",
"config://conf/e2/terrains.json",
"config://conf/e2/items.json",
"config://conf/e2/rules.xml",
"config://res/core/ships.xml",
"config://res/core/common/buildings.xml",
"config://res/eressea/buildings.xml",
@ -28,6 +27,7 @@
],
"settings": {
"game.name" : "Eressea",
"game.mailcmd" : "ERESSEA",
"game.id" : 2,
"orders.default": "work",
"NewbieImmunity": 8,

View file

@ -43,6 +43,7 @@
],
"settings": {
"game.name" : "Eressea",
"game.mailcmd" : "ERESSEA",
"game.id" : 3,
"orders.default": "work",
"database.gameid": 7,

View file

@ -2,115 +2,115 @@
<spells>
<!-- shared spells -->
<spell name="create_roi" ship="true" rank="5" index="130">
<spell name="create_roi" ship="true" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="create_aots" ship="true" rank="5" index="125">
<spell name="create_aots" ship="true" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<!-- draig spells -->
<spell name="earn_silver#draig" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#draig" ship="true" variable="true" rank="5">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="create_firesword" ship="true" rank="5" index="148">
<spell name="create_firesword" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="p10" amount="1" cost="fixed"/>
<resource name="sword" amount="1" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="create_trollbelt" ship="true" rank="5" index="48">
<spell name="create_trollbelt" ship="true" rank="5">
<resource name="aura" amount="20" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<!-- gwyrrd spells -->
<spell name="earn_silver#gwyrrd" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#gwyrrd" ship="true" variable="true" rank="5">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="create_magicherbbag" ship="true" rank="5" index="165">
<spell name="create_magicherbbag" ship="true" rank="5">
<resource name="aura" amount="30" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="lifepotion" amount="1" cost="fixed"/>
</spell>
<!-- illaun spells -->
<spell name="earn_silver#illaun" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#illaun" ship="true" variable="true" rank="5">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="create_dreameye" ship="true" rank="5" index="149">
<spell name="create_dreameye" ship="true" rank="5">
<resource name="dragonhead" amount="1" cost="fixed"/>
<resource name="permaura" amount="5" cost="fixed"/>
</spell>
<spell name="create_invisibility_sphere" ship="true" rank="5" index="178">
<spell name="create_invisibility_sphere" ship="true" rank="5">
<resource name="aura" amount="150" cost="fixed"/>
<resource name="money" amount="30000" cost="fixed"/>
<resource name="permaura" amount="3" cost="fixed"/>
</spell>
<!-- cerddor spells -->
<spell name="earn_silver#cerddor" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#cerddor" ship="true" variable="true" rank="5">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="create_roqf" ship="true" rank="5" index="63">
<spell name="create_roqf" ship="true" rank="5">
<resource name="aura" amount="20" cost="fixed"/>
<resource name="money" amount="1000" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<!-- tybied spells -->
<spell name="earn_silver#tybied" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#tybied" ship="true" variable="true" rank="5">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="create_antimagic" ship="true" rank="5" index="38">
<spell name="create_antimagic" ship="true" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
</spell>
<spell name="create_rop" ship="true" rank="5" index="1">
<spell name="create_rop" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="money" amount="4000" cost="fixed"/>
</spell>
<spell name="create_bagofholding" ship="true" rank="5" index="155">
<spell name="create_bagofholding" ship="true" rank="5">
<resource name="aura" amount="30" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="money" amount="5000" cost="fixed"/>
</spell>
<!-- gray magic -->
<spell name="create_runesword" ship="true" rank="5" index="135">
<spell name="create_runesword" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="money" amount="1000" cost="fixed"/>
<resource name="laensword" amount="1" cost="fixed"/>
</spell>
<spell name="create_chastitybelt" ship="true" rank="5" index="134">
<spell name="create_chastitybelt" ship="true" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
</spell>
<spell name="create_focus" ship="true" rank="5" index="2">
<spell name="create_focus" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="create_ror" ship="true" rank="5" index="3">
<spell name="create_ror" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>

View file

@ -4,11 +4,11 @@
<!-- begin main races -->
<race name="template" maintenance="0" 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">
<race name="template" maintenance="0" magres="100" maxaura="0" regaura="0" weight="0" capacity="1000" speed="10.000000" hp="10" damage="1d4" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" fly="yes" swim="yes" walk="yes" shapeshift="yes" shapeshiftany="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" recruitunlimited="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<attack type="1" damage="1d4"/>
</race>
<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">
<race name="lynx" maxaura="0" regaura="0" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -31,7 +31,7 @@
<attack type="4" damage="2d3"/>
</race>
<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">
<race name="human" maxaura="1" regaura="1" 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"/>
<param name="other_race" value="elf"/>
<skill name="riding" modifier="+1"/>
@ -40,11 +40,11 @@
<skill name="magic" modifier="-99"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="dolphin" default="yes"/>
<familiar race="dolphin"/>
<familiar race="giantturtle"/>
</race>
<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">
<race name="orc" studyspeed="-5" magres="-5" maxaura="1" regaura="1" 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"/>
<param name="other_race" value="troll"/>
@ -67,12 +67,12 @@
<skill name="unarmed" modifier="-99"/>
<skill name="weaponsmithing" modifier="2"/>
<attack type="1" damage="1d5"/>
<familiar race="wolf" default="yes"/>
<familiar race="wolf"/>
<familiar race="ghost"/>
</race>
<race name="halfling" defensemodifier="1" magres="5" maxaura="1.0"
regaura="1.0" recruitcost="100" maintenance="10" weight="1000"
<race name="halfling" defensemodifier="1" magres="5" maxaura="1"
regaura="1" 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">
@ -95,13 +95,13 @@
<skill name="magic" modifier="-99"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="eagle" default="yes"/>
<familiar race="eagle"/>
<familiar race="imp"/>
</race>
<!-- begin secondary races -->
<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">
<race name="demon" magres="15" maxaura="1" 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"/>
<skill name="cartmaking" modifier="-2"/>
<skill name="forestry" modifier="1"/>
@ -116,11 +116,11 @@
<skill name="weaponsmithing" modifier="1"/>
<attack type="1" damage="1d5"/>
<attack type="5"/>
<familiar race="imp" default="yes"/>
<familiar race="imp"/>
<familiar race="ghost"/>
</race>
<race name="elf" magres="10" maxaura="1.0" regaura="1.1"
<race name="elf" magres="10" maxaura="1" 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"
@ -138,11 +138,11 @@
<skill name="training" modifier="2"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="nymph" default="yes"/>
<familiar race="nymph"/>
<familiar race="unicorn"/>
</race>
<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">
<race name="troll" magres="10" maxaura="1" regaura="1" 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"/>
<param name="armor.stamina" value="4"/> <!-- +1 natural armor per X levels stamina -->
<skill name="armorer" modifier="2"/>
@ -160,11 +160,11 @@
<skill name="training" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5+3"/>
<familiar race="tunnelworm" default="yes"/>
<familiar race="tunnelworm"/>
<familiar race="rat"/>
</race>
<race name="dwarf" magres="5" maxaura="1.0" regaura="0.9"
<race name="dwarf" magres="5" maxaura="1" 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"
@ -186,13 +186,13 @@
<skill name="weaponsmithing" modifier="2"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="lynx" default="yes"/>
<familiar race="lynx"/>
<familiar race="songdragon"/>
</race>
<!-- end player races -->
<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">
<race name="kraken" maxaura="0" regaura="0" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -218,7 +218,7 @@
<attack type="4" damage="1d10"/>
<attack type="4" damage="1d10"/>
</race>
<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">
<race name="giantturtle" maxaura="0" regaura="0" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -239,7 +239,7 @@
<skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="2d50"/>
</race>
<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">
<race name="dolphin" maxaura="0" regaura="0" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -260,7 +260,7 @@
<skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="1d6"/>
</race>
<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">
<race name="tiger" maxaura="0" regaura="0" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -283,7 +283,7 @@
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
</race>
<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">
<race name="hellcat" magres="50" maxaura="0" regaura="0" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -306,7 +306,7 @@
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
</race>
<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">
<race name="owl" maxaura="0" regaura="0" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -328,7 +328,7 @@
<skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="1d4"/>
</race>
<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">
<race name="fairy" magres="80" maxaura="1" regaura="1.5" 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"/>
<skill name="magic" modifier="1"/>
<skill name="riding" modifier="-1"/>
@ -354,7 +354,7 @@
<attack type="4" damage="1d3"/>
<attack type="4" damage="1d3"/>
</race>
<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">
<race name="dreamcat" magres="50" maxaura="1" regaura="1" 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"/>
<skill name="magic" modifier="1"/>
<skill name="crossbow" modifier="-99"/>
@ -376,7 +376,7 @@
<attack type="4" damage="1d5"/>
<attack type="4" damage="1d5"/>
</race>
<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">
<race name="imp" magres="50" maxaura="1" regaura="1" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -400,7 +400,7 @@
<attack type="1" damage="1d4"/>
<attack type="6" spell="fiery_dragonbreath" level="3" />
</race>
<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">
<race name="ghost" magres="80" maxaura="0.5" regaura="0.1" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -425,7 +425,7 @@
<attack type="2" damage="2d30"/>
<attack type="3" damage="1d1"/>
</race>
<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">
<race name="wolf" maxaura="0" regaura="0" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -471,7 +471,7 @@
<attack type="4" damage="3d12"/>
<attack type="4" damage="2d4"/>
</race>
<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">
<race name="nymph" magres="90" maxaura="1" 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"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="2"/>
@ -493,7 +493,7 @@
<attack type="1" damage="1d4"/>
<attack type="2" damage="2d20"/>
</race>
<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">
<race name="songdragon" magres="99" maxaura="1" regaura="1" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -520,7 +520,7 @@
<attack type="6" spell="fiery_dragonbreath" level="3" />
</race>
<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">
<race name="rat" maxaura="0" regaura="0" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -543,7 +543,7 @@
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
</race>
<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">
<race name="eagle" maxaura="0" regaura="0" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="-99"/>
@ -565,7 +565,7 @@
<skill name="cartmaking" modifier="-99"/>
<attack type="4" damage="2d3"/>
</race>
<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">
<race name="tunnelworm" magres="80" maxaura="0" regaura="0" 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"/>
<skill name="crossbow" modifier="-99"/>
<skill name="mining" modifier="10"/>
@ -589,21 +589,21 @@
<attack type="4" damage="3d20"/>
<attack type="8" damage="1d10"/>
</race>
<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">
<race name="direwolf" maxaura="0" regaura="0" 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" 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" regaura="1" 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="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">
<race name="braineater" magres="90" maxaura="1" regaura="1" 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"/>
<attack type="2" damage="3d15"/>
<attack type="3" damage="1d1"/>
<attack type="4" damage="1d1"/>
</race>
<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">
<race name="toad" magres="20" maxaura="1" regaura="1" 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"/>
@ -651,56 +651,56 @@
<skill name="stamina" modifier="-10"/>
<attack type="4" damage="1d2"/>
</race>
<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">
<race name="mountainguard" unarmedguard="yes" magres="50" maxaura="1" 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"/>
<attack type="4" damage="2d40"/>
</race>
<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">
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1" 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"/>
<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="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">
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1" regaura="1" 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"/>
<attack type="4" damage="2d3"/>
<attack type="3" damage="1d1"/>
</race>
<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">
<race name="stonegolem" stonegolem="true" magres="25" maxaura="1" 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="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">
<race name="irongolem" irongolem="true" magres="25" maxaura="1" 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"/>
<skill name="armorer" modifier="14"/>
<skill name="weaponsmithing" modifier="14"/>
<attack type="4" damage="2d8+4"/>
</race>
<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">
<race name="spell" maxaura="1" 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" 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" regaura="0" 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" 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" regaura="1" 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"/>
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
<attack type="1" damage="1d5"/>
</race>
<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">
<race name="ent" magres="25" maxaura="1" 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"/>
<attack type="4" damage="2d12"/>
<attack type="4" damage="2d12"/>
</race>
<race name="undead" maxaura="1.0" regaura="1.0" weight="1000"
<race name="undead" maxaura="1" regaura="1" 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"
@ -710,7 +710,7 @@
<attack type="5"/>
</race>
<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">
<race name="clone" magres="90" maxaura="0" regaura="0" 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"/>
@ -736,7 +736,7 @@
<attack type="1" damage="0d0"/>
</race>
<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" giveperson="yes">
<race name="ghast" magres="60" maxaura="1" regaura="1" 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" giveperson="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -754,7 +754,7 @@
<attack type="2" damage="1d30"/>
</race>
<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" giveperson="yes">
<race name="ghoul" magres="30" maxaura="1" regaura="1" 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" giveperson="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -771,7 +771,7 @@
<attack type="2" damage="1d30"/>
</race>
<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" giveperson="yes">
<race name="juju" magres="50" maxaura="1" regaura="1" 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" giveperson="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -787,7 +787,7 @@
<attack type="3" damage="1d1"/>
</race>
<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" giveperson="yes">
<race name="zombie" magres="20" maxaura="1" regaura="1" 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" giveperson="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -801,7 +801,7 @@
<attack type="1" damage="1d7"/>
</race>
<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" giveperson="yes">
<race name="skeletonlord" magres="30" maxaura="1" regaura="1" 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" giveperson="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -816,7 +816,7 @@
<attack type="1" damage="1d7"/>
</race>
<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" giveperson="yes">
<race name="skeleton" magres="10" maxaura="1" regaura="1" 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" giveperson="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -830,12 +830,12 @@
<attack type="1" damage="1d7"/>
</race>
<race name="shadowknight" maxaura="0.000000" regaura="0.000000" weight="0" 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" regaura="0" weight="0" 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"/>
<attack type="1" damage="1d1"/>
</race>
<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">
<race name="seaserpent" magres="50" maxaura="1" regaura="1" 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"/>
<skill name="tactics" modifier="4"/>
<attack type="4" damage="1d30"/>

View file

@ -3,99 +3,98 @@
<spells>
<!-- shared spells -->
<spell name="create_roi" ship="true" rank="5" index="130">
<spell name="create_roi" ship="true" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="create_aots" ship="true" rank="5" index="125">
<spell name="create_aots" ship="true" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="disturbingdreams" rank="5" index="50" far="true">
<spell name="disturbingdreams" rank="5" far="true">
<!-- Schlechter Schlaf -->
<resource name="aura" amount="18" cost="fixed"/>
</spell>
<!-- new illaun -->
<spell name="shadowknights" rank="4" index="147" variable="true" combat="1">
<spell name="shadowknights" rank="4" variable="true" combat="1">
<!-- Schattenritter -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="sparkledream" rank="5" index="154" parameters="u" los="true" ship="true" variable="true">
<spell name="sparkledream" rank="5" parameters="u" los="true" ship="true" variable="true">
<!-- Traumsenden -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="earn_silver#illaun" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#illaun" ship="true" variable="true" rank="5">
<!-- Wahrsagen -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="flee" rank="5" index="20" variable="true" combat="1">
<spell name="flee" rank="5" variable="true" combat="1">
<!-- Grauen der Schlacht -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="puttorest" rank="5" index="168" variable="true">
<spell name="puttorest" rank="5" variable="true">
<!-- Seelenfrieden -->
<resource name="aura" amount="3" cost="level"/>
<resource name="balm" amount="10" cost="fixed"/>
</spell>
<spell name="shapeshift" rank="5" index="93" syntax="race" parameters="uc" variable="true">
<spell name="shapeshift" rank="5" syntax="race" parameters="uc" variable="true">
<!-- Gestaltwandlung -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="icastle" rank="5" index="137" syntax="buildingtype" parameters="c">
<spell name="icastle" rank="5" syntax="buildingtype" parameters="c">
<!-- Traumschlößchen -->
<resource name="aura" amount="3" cost="fixed"/>
</spell>
<spell name="dreamreading" rank="5" index="13" parameters="u" far="true">
<spell name="dreamreading" rank="5" parameters="u" far="true">
<!-- Traumlesen -->
<resource name="aura" amount="8" cost="fixed"/>
</spell>
<spell name="tiredsoldiers" rank="5" index="15" variable="true" combat="1">
<spell name="tiredsoldiers" rank="5" variable="true" combat="1">
<!-- Schwere Glieder -->
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="reanimate" rank="4" index="85" variable="true" combat="3">
<spell name="reanimate" rank="4" variable="true" combat="3">
<!-- Wiederbelebung -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="sleep" rank="5" index="52" variable="true" combat="2">
<spell name="sleep" rank="5" variable="true" combat="2">
<!-- Schlaf -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="readmind" parameters="u" rank="5" index="114">
<spell name="readmind" parameters="u" rank="5">
<!-- Traumdeuten -->
<function name="cast" value="cast_readmind"/>
<resource name="aura" amount="20" cost="fixed"/>
<!-- missing syntactical info: ONETARGET | UNITSPELL -->
</spell>
<spell name="gooddreams" rank="5" index="12" far="true">
<spell name="gooddreams" rank="5" far="true">
<!-- Schöne Träume -->
<resource name="aura" amount="80" cost="fixed"/>
</spell>
<spell name="illaundestroymagic" rank="2" index="140" parameters="kc+" los="true" ship="true" far="true" variable="true">
<spell name="illaundestroymagic" rank="2" parameters="kc+" los="true" ship="true" far="true" variable="true">
<!-- Traumbilder entwirren -->
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="clone" rank="5" index="173">
<spell name="clone" rank="5">
<!-- Seelenkopie -->
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="20" cost="fixed"/>
<resource name="dragonblood" amount="5" cost="fixed"/>
<resource name="silk" amount="20" cost="fixed"/>
</spell>
<spell name="bad_dreams" rank="5" index="11" far="true">
<spell name="bad_dreams" rank="5" far="true">
<!-- Schlechte Träume -->
<resource name="aura" amount="90" cost="fixed"/>
</spell>
<spell name="mindblast" rank="5" index="78" variable="true" combat="1">
<spell name="mindblast" rank="5" variable="true" combat="1">
<!-- Tod des Geistes -->
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="create_dreameye" ship="true" rank="5" index="149">
<spell name="create_dreameye" ship="true" rank="5">
<!-- Erschaffe ein Traumauge -->
<resource name="dragonhead" amount="1" cost="fixed"/>
<resource name="permaura" amount="5" cost="fixed"/>
@ -103,87 +102,86 @@
<!-- end illaun -->
<!-- new draig -->
<spell name="sparklechaos" rank="5" index="153" parameters="u" los="true" variable="true">
<spell name="sparklechaos" rank="5" parameters="u" los="true" variable="true">
<!-- Verwünschung -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="earn_silver#draig" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#draig" ship="true" variable="true" rank="5">
<!-- Kleine Flüche -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="fireball" rank="5" index="4" variable="true" combat="2">
<spell name="fireball" rank="5" variable="true" combat="2">
<!-- Feuerball -->
<function name="cast" value="combat_spell"/>
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="magicboost" rank="3" index="17" ship="true">
<spell name="magicboost" rank="3" ship="true">
<!-- Gabe des Chaos -->
<resource name="aura" amount="6" cost="fixed"/>
</spell>
<spell name="bloodsacrifice" rank="1" index="171" ship="true">
<spell name="bloodsacrifice" rank="1" ship="true">
<!-- Kleines Blutopfer -->
<resource name="hp" amount="16" cost="fixed"/>
</spell>
<spell name="berserk" rank="4" index="22" variable="true" combat="1">
<spell name="berserk" rank="4" variable="true" combat="1">
<!-- Blutrausch -->
<resource name="aura" amount="5" cost="level"/>
<resource name="peasant" amount="1" cost="fixed"/>
</spell>
<spell name="fumblecurse" rank="4" index="136" parameters="u" los="true" variable="true">
<spell name="fumblecurse" rank="4" parameters="u" los="true" variable="true">
<!-- Chaosfluch -->
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="combatrust" rank="5" index="7" variable="true" combat="2">
<spell name="combatrust" rank="5" variable="true" combat="2">
<!-- Rosthauch -->
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="summonundead" rank="5" index="41" ship="true" far="true" variable="true">
<spell name="summonundead" rank="5" ship="true" far="true" variable="true">
<!-- Mächte des Todes -->
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="firewall" rank="4" index="151" syntax="direction" parameters="c" variable="true">
<spell name="firewall" rank="4" syntax="direction" parameters="c" variable="true">
<!-- Feuerwand -->
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="chaosrow" rank="5" index="18" variable="true" combat="1">
<spell name="chaosrow" rank="5" variable="true" combat="1">
<!-- Wahnsinn des Krieges -->
<resource name="aura" amount="3" cost="level"/>
<resource name="peasant" amount="10" cost="fixed"/>
</spell>
<spell name="summonshadow" rank="5" index="34" variable="true">
<spell name="summonshadow" rank="5" variable="true">
<!-- Beschwöre Schattendämonen -->
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="undeadhero" rank="5" index="164" variable="true" combat="3">
<spell name="undeadhero" rank="5" variable="true" combat="3">
<!-- Untote Helden -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="draigdestroymagic" rank="2" index="139" parameters="kc+" los="true" ship="true" far="true" variable="true">
<spell name="draigdestroymagic" rank="2" parameters="kc+" los="true" ship="true" far="true" variable="true">
<!-- Pentagramm -->
<resource name="aura" amount="10" cost="level"/>
</spell>
<spell name="deathcloud" rank="5" index="111" far="true">
<spell name="deathcloud" rank="5" far="true">
<!-- Todeswolke -->
<resource name="aura" amount="40" cost="fixed"/>
<resource name="hp" amount="15" cost="fixed"/>
</spell>
<spell name="summondragon" rank="5" index="113" far="true">
<spell name="summondragon" rank="5" far="true">
<!-- Drachenruf -->
<resource name="aura" amount="80" cost="fixed"/>
<resource name="dragonhead" amount="1" cost="fixed"/>
</spell>
<spell name="summonshadowlords" rank="5" index="35" variable="true">
<spell name="summonshadowlords" rank="5" variable="true">
<!-- Beschwöre Schattenmeister -->
<resource name="aura" amount="7" cost="level"/>
</spell>
<spell name="create_firesword" ship="true" rank="5" index="148">
<spell name="create_firesword" ship="true" rank="5">
<!-- Erschaffe ein Flammenschwert -->
<resource name="aura" amount="100" cost="fixed"/>
<resource name="oil" amount="10" cost="fixed"/>
<resource name="sword" amount="1" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="unholypower" rank="5" index="169" parameters="u+" los="true" variable="true">
<spell name="unholypower" rank="5" parameters="u+" los="true" variable="true">
<!-- Unheilige Kraft -->
<resource name="aura" amount="10" cost="level"/>
<resource name="peasant" amount="5" cost="level"/>
@ -191,185 +189,182 @@
<!-- end draig -->
<!-- new cerddor -->
<spell name="earn_silver#cerddor" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#cerddor" ship="true" variable="true" rank="5">
<!-- Gaukeleien -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="song_of_healing" rank="5" index="10" variable="true" combat="3">
<spell name="song_of_healing" rank="5" variable="true" combat="3">
<!-- Lied der Heilung -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="generous" rank="5" index="87" ship="true" far="true" variable="true">
<spell name="generous" rank="5" ship="true" far="true" variable="true">
<!-- Hohes Lied der Gaukelei -->
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="song_of_fear" rank="5" index="21" variable="true" combat="2">
<spell name="song_of_fear" rank="5" variable="true" combat="2">
<!-- Gesang der Furcht -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="song_of_confusion" rank="5" index="19" variable="true" combat="1">
<spell name="song_of_confusion" rank="5" variable="true" combat="1">
<!-- Gesang der Verwirrung -->
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="blabbermouth" parameters="u" los="true" rank="5" index="115">
<spell name="blabbermouth" parameters="u" los="true" rank="5">
<!-- Plappermaul -->
<function name="cast" value="cast_babbler"/>
<resource name="aura" amount="10" cost="fixed"/>
<!-- missing syntactical info: ONETARGET | UNITSPELL -->
</spell>
<spell name="heroic_song" rank="4" index="76" variable="true" combat="1">
<spell name="heroic_song" rank="4" variable="true" combat="1">
<!-- Heldengesang -->
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="seduction" rank="5" index="73" parameters="u" los="true">
<spell name="seduction" rank="5" parameters="u" los="true">
<!-- Lied der Verführung -->
<resource name="aura" amount="12" cost="fixed"/>
</spell>
<spell name="calm_monster" rank="5" index="75" parameters="u" los="true" ship="true">
<spell name="calm_monster" rank="5" parameters="u" los="true" ship="true">
<!-- Monster friedlich stimmen -->
<resource name="aura" amount="15" cost="fixed"/>
</spell>
<spell name="bloodthirst" rank="4" index="23" variable="true" combat="1">
<spell name="bloodthirst" rank="4" variable="true" combat="1">
<!-- Kriegsgesang -->
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="frighten" rank="5" index="77" variable="true" combat="1">
<spell name="frighten" rank="5" variable="true" combat="1">
<!-- Gesang der Angst -->
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="cerddor_destroymagic" rank="2" index="141" parameters="kc+" los="true" ship="true" far="true" variable="true">
<spell name="cerddor_destroymagic" rank="2" parameters="kc+" los="true" ship="true" far="true" variable="true">
<!-- Lebenslied festigen -->
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="migration" rank="5" index="90" parameters="u" los="true" variable="true">
<spell name="migration" rank="5" parameters="u" los="true" variable="true">
<!-- Ritual der Aufnahme -->
<resource name="aura" amount="3" cost="level"/>
<resource name="permaura" amount="1" cost="level"/>
</spell>
<spell name="raise_mob" rank="5" index="60" variable="true">
<spell name="raise_mob" rank="5" variable="true">
<!-- Mob aufwiegeln -->
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="song_resist_magic" rank="2" index="100" far="true" variable="true">
<spell name="song_resist_magic" rank="2" far="true" variable="true">
<!-- Gesang des wachen Geistes -->
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="create_roqf" ship="true" rank="5" index="63">
<spell name="create_roqf" ship="true" rank="5">
<!-- Miriams flinke Finger -->
<resource name="aura" amount="20" cost="fixed"/>
<resource name="money" amount="1000" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="song_of_peace" rank="5" index="89" variable="true">
<spell name="song_of_peace" rank="5" variable="true">
<!-- Gesang der Friedfertigkeit -->
<resource name="aura" amount="20" cost="level"/>
</spell>
<spell name="song_suscept_magic" rank="2" index="101" far="true" variable="true">
<spell name="song_suscept_magic" rank="2" far="true" variable="true">
<!-- Gesang des schwachen Geistes -->
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="song_of_slavery" rank="5" index="123" parameters="u" los="true">
<spell name="song_of_slavery" rank="5" parameters="u" los="true">
<!-- Gesang der Versklavung -->
<resource name="aura" amount="40" cost="fixed"/>
</spell>
<!-- TODO: exploitable (transfers items) -->
<spell name="big_recruit" rank="5" index="179" variable="true">
<spell name="big_recruit" rank="5" variable="true">
<!-- Hohe Kunst der Überzeugung -->
<resource name="aura" amount="20" cost="level"/>
</spell>
<spell name="calm_riot" rank="5" index="91" far="true">
<spell name="calm_riot" rank="5" far="true">
<!-- Aufruhr beschwichtigen -->
<resource name="aura" amount="30" cost="fixed"/>
</spell>
<spell name="incite_riot" rank="5" index="92" far="true">
<spell name="incite_riot" rank="5" far="true">
<!-- Aufruhr verursachen -->
<resource name="aura" amount="40" cost="fixed"/>
</spell>
<!-- end cerddor -->
<!-- new gwyrrd -->
<spell name="blessedharvest" rank="5" index="25" ship="true" far="true" variable="true">
<spell name="blessedharvest" rank="5" ship="true" far="true" variable="true">
<!-- Segen der Erde -->
<function name="cast" value="cast_blessedharvest"/>
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="earn_silver#gwyrrd" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#gwyrrd" ship="true" variable="true" rank="5">
<!-- Viehheilung -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="stonegolem" rank="4" index="32" variable="true">
<spell name="stonegolem" rank="4" variable="true">
<!-- Erschaffe Steingolems -->
<resource name="aura" amount="2" cost="level"/>
<resource name="stone" amount="1" cost="level"/>
<resource name="jewel" amount="10" cost="fixed"/>
</spell>
<spell name="treegrow" rank="5" index="8" far="true" variable="true">
<spell name="treegrow" rank="5" far="true" variable="true">
<!-- Hainzauber -->
<resource name="aura" amount="4" cost="level"/>
<resource name="log" amount="1" cost="level"/>
<resource name="myrrh" amount="10" cost="fixed"/>
</spell>
<spell name="hail" rank="5" index="5" variable="true" combat="2">
<spell name="hail" rank="5" variable="true" combat="2">
<!-- Hagel -->
<function name="cast" value="combat_spell"/>
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="goodwinds" rank="5" index="56" parameters="s" ship="true" variable="true">
<spell name="goodwinds" rank="5" parameters="s" ship="true" variable="true">
<!-- Beschwörung eines Wasserelementares -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="windshield" rank="5" index="59" variable="true" combat="1">
<spell name="windshield" rank="5" variable="true" combat="1">
<!-- Windschild -->
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="healing" rank="5" index="9" variable="true" combat="3">
<spell name="healing" rank="5" variable="true" combat="3">
<!-- Heilung -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="earthquake" rank="5" index="53" far="true">
<spell name="earthquake" rank="5" far="true">
<!-- Beschwöre einen Erdelementar -->
<resource name="aura" amount="25" cost="fixed"/>
<resource name="laen" amount="2" cost="fixed"/>
</spell>
<spell name="stormwinds" rank="5" index="55" parameters="s+" ship="true" ocean="true" variable="true">
<spell name="stormwinds" rank="5" parameters="s+" ship="true" ocean="true" variable="true">
<!-- Beschwöre einen Sturmelementar -->
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="wolfhowl" rank="5" index="94" variable="true" combat="1">
<spell name="wolfhowl" rank="5" variable="true" combat="1">
<!-- Wolfsgeheul -->
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="versteinern" rank="5" index="67" variable="true" combat="2">
<spell name="versteinern" rank="5" variable="true" combat="2">
<!-- Blick des Basilisken -->
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="gwyrrddestroymagic" rank="2" index="138" parameters="kc+" los="true" ship="true" far="true" variable="true">
<spell name="gwyrrddestroymagic" rank="2" parameters="kc+" los="true" ship="true" far="true" variable="true">
<!-- Geister bannen -->
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="holyground" rank="5" index="170">
<spell name="holyground" rank="5">
<!-- Heiliger Boden -->
<resource name="aura" amount="80" cost="fixed"/>
<resource name="permaura" amount="3" cost="fixed"/>
</spell>
<spell name="summonent" rank="5" index="49" variable="true">
<spell name="summonent" rank="5" variable="true">
<!-- Erwecke Ents -->
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="blessstonecircle" rank="5" index="117" parameters="b">
<spell name="blessstonecircle" rank="5" parameters="b">
<!-- Segne Steinkreis -->
<resource name="aura" amount="350" cost="fixed"/>
<resource name="permaura" amount="5" cost="fixed"/>
</spell>
<spell name="barkskin" rank="2" index="142" variable="true" combat="1">
<spell name="barkskin" rank="2" variable="true" combat="1">
<!-- Rindenhaut -->
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="summonfireelemental" rank="5" index="46" far="true">
<spell name="summonfireelemental" rank="5" far="true">
<!-- Beschwörung eines Hitzeelementar -->
<resource name="aura" amount="600" cost="fixed"/>
</spell>
<spell name="maelstrom" rank="5" index="24" ship="true" ocean="true">
<spell name="maelstrom" rank="5" ship="true" ocean="true">
<!-- Mahlstrom -->
<resource name="aura" amount="200" cost="fixed"/>
<resource name="seaserpenthead" amount="1" cost="fixed"/>
@ -441,211 +436,208 @@
<resource name="dragonblood" amount="1" cost="fixed"/><!-- Drachenblut -->
</spell>
<spell name="auratransfer" rank="1" index="31" syntax="aura" parameters="ui" ship="true">
<spell name="auratransfer" rank="1" syntax="aura" parameters="ui" ship="true">
<!-- Auratransfer -->
<resource name="aura" amount="1" cost="fixed"/>
</spell>
<!-- end tybied -->
<!-- common spells: randomly given, one per level -->
<spell name="create_trollbelt" ship="true" rank="5" index="48">
<spell name="create_trollbelt" ship="true" rank="5">
<resource name="aura" amount="20" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="create_antimagic" ship="true" rank="5" index="38">
<spell name="create_antimagic" ship="true" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
</spell>
<spell name="create_rop" ship="true" rank="5" index="1">
<spell name="create_rop" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="money" amount="4000" cost="fixed"/>
</spell>
<spell name="create_bagofholding" ship="true" rank="5" index="155">
<spell name="create_bagofholding" ship="true" rank="5">
<resource name="aura" amount="30" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="money" amount="5000" cost="fixed"/>
</spell>
<spell name="create_focus" ship="true" rank="5" index="2">
<spell name="create_focus" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="create_ror" ship="true" rank="5" index="3">
<spell name="create_ror" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="rustweapon" rank="5" index="6" parameters="u+" los="true" far="true" variable="true">
<spell name="rustweapon" rank="5" parameters="u+" los="true" far="true" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="plague" rank="5" index="16" far="true">
<spell name="plague" rank="5" far="true">
<resource name="aura" amount="30" cost="fixed"/>
<resource name="peasant" amount="50" cost="fixed"/>
</spell>
<spell name="raindance" rank="5" index="26" ship="true" far="true" variable="true">
<spell name="raindance" rank="5" ship="true" far="true" variable="true">
<!-- Regentanz -->
<function name="cast" value="cast_blessedharvest"/>
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="irongolem" rank="4" index="33" variable="true">
<spell name="irongolem" rank="4" variable="true">
<!-- Eisengolem -->
<resource name="aura" amount="2" cost="level"/>
<resource name="iron" amount="1" cost="level"/>
<resource name="incense" amount="1" cost="fixed"/>
</spell>
<spell name="reelingarrows" rank="5" index="36" variable="true" combat="1">
<spell name="reelingarrows" rank="5" variable="true" combat="1">
<!-- Wirbelwind -->
<resource name="aura" amount="15" cost="fixed"/>
</spell>
<spell name="antimagiczone" rank="2" index="37" far="true" variable="true">
<spell name="antimagiczone" rank="2" far="true" variable="true">
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="steal_aura" rank="3" index="40" parameters="u" los="true" far="true" variable="true">
<spell name="steal_aura" rank="3" parameters="u" los="true" far="true" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="auraleak" rank="3" index="42">
<spell name="auraleak" rank="3">
<resource name="aura" amount="35" cost="fixed"/>
<resource name="dragonblood" amount="1" cost="fixed"/>
</spell>
<spell name="strongwall" rank="5" index="44" variable="true" combat="1">
<spell name="strongwall" rank="5" variable="true" combat="1">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="homestone" rank="5" index="45">
<spell name="homestone" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="forestfire" rank="5" index="47" far="true">
<spell name="forestfire" rank="5" far="true">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="oil" amount="5" cost="fixed"/>
</spell>
<spell name="appeasement" rank="5" index="51" variable="true" combat="1">
<spell name="appeasement" rank="5" variable="true" combat="1">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="ironkeeper" rank="5" index="54" far="true" variable="true">
<spell name="ironkeeper" rank="5" far="true" variable="true">
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="airship" rank="5" index="57" parameters="s" ship="true">
<spell name="airship" rank="5" parameters="s" ship="true">
<resource name="aura" amount="10" cost="fixed"/>
<resource name="h12" amount="1" cost="fixed"/>
<resource name="h20" amount="1" cost="fixed"/>
</spell>
<spell name="sound_out" rank="5" index="74" parameters="ur" los="true">
<spell name="sound_out" rank="5" parameters="ur" los="true">
<resource name="aura" amount="4" cost="fixed"/>
<resource name="money" amount="100" cost="fixed"/>
</spell>
<spell name="combat_speed" rank="5" index="79" variable="true" combat="1">
<spell name="combat_speed" rank="5" variable="true" combat="1">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="double_time" rank="5" index="80" parameters="u+" los="true" ship="true" variable="true">
<spell name="double_time" rank="5" parameters="u+" los="true" ship="true" variable="true">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="magicstreet" rank="5" index="84" ship="true" far="true" variable="true">
<spell name="magicstreet" rank="5" ship="true" far="true" variable="true">
<resource name="aura" amount="1" cost="level"/>
<resource name="stone" amount="1" cost="fixed"/>
<resource name="log" amount="1" cost="fixed"/>
</spell>
<spell name="sacrifice_strength" rank="1" index="88" syntax="aura" parameters="ui">
<spell name="sacrifice_strength" rank="1" syntax="aura" parameters="ui">
<resource name="aura" amount="100" cost="fixed"/>
</spell>
<spell name="resist_magic" rank="2" index="97" parameters="u+" los="true" ship="true" variable="true">
<spell name="resist_magic" rank="2" parameters="u+" los="true" ship="true" variable="true">
<!-- Schutzzauber -->
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="protective_runes" rank="2" index="99" parameters="kc" regiontarget="false" unittarget="false" buildingtarget="true" shiptarget="true" ship="true">
<spell name="protective_runes" rank="2" parameters="kc" regiontarget="false" unittarget="false" buildingtarget="true" shiptarget="true" ship="true">
<resource name="aura" amount="20" cost="fixed"/>
</spell>
<spell name="analyze_magic" rank="5" index="102" parameters="kc+" los="true" ship="true" variable="true">
<spell name="analyze_magic" rank="5" parameters="kc+" los="true" ship="true" variable="true">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="destroy_magic" rank="2" index="106" parameters="kc+" los="true" ship="true" far="true" variable="true">
<spell name="destroy_magic" rank="2" parameters="kc+" los="true" ship="true" far="true" variable="true">
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="break_curse" rank="3" index="107" syntax="spellid" parameters="kcc" los="true" ship="true" far="true" variable="true">
<spell name="break_curse" rank="3" syntax="spellid" parameters="kcc" los="true" ship="true" far="true" variable="true">
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="fish_shield" rank="2" index="109" variable="true" combat="1">
<spell name="fish_shield" rank="2" variable="true" combat="1">
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="armor_shield" rank="2" index="110" variable="true" combat="1">
<spell name="armor_shield" rank="2" variable="true" combat="1">
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="living_rock" rank="5" index="116" syntax="direction" parameters="bc" variable="true">
<spell name="living_rock" rank="5" syntax="direction" parameters="bc" variable="true">
<resource name="aura" amount="10" cost="level"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="laen" amount="5" cost="fixed"/>
</spell>
<spell name="summon_familiar" rank="5" index="118">
<function name="cast" value="cast_familiar"/>
<spell name="summon_familiar" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="5" cost="fixed"/>
</spell>
<spell name="draigfumbleshield" rank="2" index="143" variable="true" combat="1">
<spell name="draigfumbleshield" rank="2" variable="true" combat="1">
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="gwyrrdfumbleshield" rank="2" index="144" variable="true" combat="1">
<spell name="gwyrrdfumbleshield" rank="2" variable="true" combat="1">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="cerddorfumbleshield" rank="2" index="145" variable="true" combat="1">
<spell name="cerddorfumbleshield" rank="2" variable="true" combat="1">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="tybiedfumbleshield" rank="2" index="146" variable="true" combat="1">
<spell name="tybiedfumbleshield" rank="2" variable="true" combat="1">
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="concealing_aura" rank="5" index="150" parameters="u" ship="true" variable="true">
<spell name="concealing_aura" rank="5" parameters="u" ship="true" variable="true">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="shockwave" rank="5" index="163" variable="true" combat="2">
<spell name="shockwave" rank="5" variable="true" combat="2">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="eternal_walls" rank="5" index="167" parameters="b" ship="true" variable="true">
<spell name="eternal_walls" rank="5" parameters="b" ship="true" variable="true">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<!-- end common spells -->
<!-- gray spells: given to individuals or monsters -->
<spell name="fiery_dragonbreath" rank="5" index="81" combat="2">
<spell name="fiery_dragonbreath" rank="5" combat="2">
<resource name="aura" amount="1" cost="fixed"/>
</spell>
<spell name="icy_dragonbreath" rank="5" index="82" combat="2">
<spell name="icy_dragonbreath" rank="5" combat="2">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="powerful_dragonbreath" rank="5" index="83" combat="2">
<spell name="powerful_dragonbreath" rank="5" combat="2">
<resource name="aura" amount="3" cost="fixed"/>
</spell>
<spell name="meteor_rain" rank="5" index="108" variable="true" combat="2">
<function name="cast" value="combat_spell"/>
<spell name="meteor_rain" rank="5" variable="true" combat="2">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="wyrm_transformation" rank="5" index="166">
<spell name="wyrm_transformation" rank="5">
<resource name="aura" amount="1" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="transferauratraum" rank="1" index="30" syntax="aura" parameters="ui" ship="true">
<spell name="transferauratraum" rank="1" syntax="aura" parameters="ui" ship="true">
<!-- Traum der Magie -->
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="drain_skills" rank="5" index="174" combat="2">
<spell name="drain_skills" rank="5" combat="2">
<resource name="aura" amount="4" cost="fixed"/>
</spell>
<spell name="aura_of_fear" rank="5" index="175" combat="2">
<spell name="aura_of_fear" rank="5" combat="2">
<resource name="aura" amount="12" cost="fixed"/>
</spell>
<spell name="immolation" rank="5" index="180" combat="2">
<spell name="immolation" rank="5" combat="2">
<resource name="aura" amount="24" cost="fixed"/>
</spell>
<spell name="firestorm" rank="5" index="181" combat="2">
<spell name="firestorm" rank="5" combat="2">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="coldfront" rank="5" index="182" combat="2">
<spell name="coldfront" rank="5" combat="2">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="acidrain" rank="5" index="183" combat="2">
<spell name="acidrain" rank="5" combat="2">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<!-- end gray spells -->

View file

@ -1,73 +1,6 @@
<?xml version="1.0"?>
<eressea><equipment>
<!-- one equipment-set per player-race for the first unit in a faction -->
<set name="seed_dwarf">
<item name="axe" amount="1"/>
<item name="chainmail" amount="1"/>
<skill name="melee" level="1"/>
</set>
<set name="seed_elf">
<item name="fairyboot" amount="1"/>
<callback name="equip_newunits"/>
</set>
<set name="seed_orc">
<skill name="polearm" level="4"/>
<skill name="melee" level="4"/>
<skill name="crossbow" level="4"/>
<skill name="catapult" level="4"/>
<skill name="bow" level="4"/>
</set>
<set name="seed_goblin">
<item name="roi" amount="1"/>
<callback name="equip_newunits"/>
</set>
<set name="seed_human">
<callback name="equip_newunits"/>
</set>
<set name="seed_troll">
<skill name="building" level="1"/>
<skill name="perception" level="3"/>
<item name="stone" amount="50"/>
</set>
<set name="seed_demon">
<skill name="stamina" level="15"/>
</set>
<set name="seed_insect">
<item name="nestwarmth" amount="9"/>
</set>
<set name="seed_halfling">
<skill name="trade" level="1"/>
<skill name="riding" level="2"/>
<item name="horse" amount="2"/>
<item name="cart" amount="1"/>
<item name="balm" amount="5"/>
<item name="spice" amount="5"/>
<item name="myrrh" amount="5"/>
<item name="jewel" amount="5"/>
<item name="oil" amount="5"/>
<item name="silk" amount="5"/>
<item name="incense" amount="5"/>
</set>
<set name="seed_cat">
<item name="roi" amount="1"/>
<callback name="equip_newunits"/>
</set>
<set name="seed_aquarian">
<skill name="sailing" level="1"/>
<callback name="equip_newunits"/>
</set>
<!-- equipment-sets for random encounters -->
<set name="rand_desert">
<skill name="melee" level="d2"/>

View file

@ -2,16 +2,16 @@
<eressea>
<races>
<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"
<race name="snowman" magres="80" maxaura="0"
regaura="0" weight="500" capacity="200" equipment="no"
speed="1" hp="1000" ac="4" damage="2d4" unarmedattack="10"
unarmeddefense="10" attackmodifier="8" defensemodifier="8"
fly="no" walk="no" canteach="no" getitem="yes">
fly="no" walk="no" teach="no" getitem="yes">
<attack type="4" damage="2d6+2"/>
<attack type="3" damage="2d6+2"/>
</race>
<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">
<race name="human" maxaura="1" regaura="1" recruitcost="75" maintenance="10" weight="1000" capacity="540" speed="1" 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"/>
<param name="migrants.formula" value="1"/>
<skill name="trade" modifier="1"/>
@ -20,14 +20,14 @@
<skill name="sailing" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="wolf" default="yes"/>
<familiar race="wolf"/>
<familiar race="dreamcat"/>
<familiar race="owl"/>
<familiar race="owl"/>
<familiar race="eagle"/>
<familiar race="imp"/>
</race>
<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">
<race name="kraken" maxaura="0" regaura="0" weight="500" capacity="540" speed="2" hp="300" damage="2d10" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" coastal="yes" swim="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<skill name="perception" modifier="1"/>
<skill name="alchemy" modifier="-99"/>
@ -60,7 +60,7 @@
<attack type="4" damage="1d10"/>
<attack type="4" damage="1d10"/>
</race>
<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">
<race name="giantturtle" maxaura="0" regaura="0" weight="1600" capacity="600" speed="1" 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"/>
<skill name="perception" modifier="1"/>
<skill name="alchemy" modifier="-99"/>
@ -88,7 +88,7 @@
<skill name="taxation" modifier="-99"/>
<attack type="4" damage="2d50"/>
</race>
<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">
<race name="dolphin" maxaura="0" regaura="0" weight="500" capacity="540" speed="2" hp="24" damage="1d6" unarmedattack="0" unarmeddefense="0" attackmodifier="5" defensemodifier="5" coastal="yes" swim="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -115,7 +115,7 @@
<skill name="taxation" modifier="-99"/>
<attack type="4" damage="1d6"/>
</race>
<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">
<race name="tiger" maxaura="0" regaura="0" weight="500" capacity="540" speed="1" hp="30" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -144,7 +144,7 @@
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
</race>
<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">
<race name="hellcat" magres="50" maxaura="0" regaura="0" weight="500" capacity="540" speed="1" hp="40" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes" resistpierce="yes">
<ai splitsize="5000"/>
<skill name="perception" modifier="1"/>
<skill name="alchemy" modifier="-99"/>
@ -173,7 +173,7 @@
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
</race>
<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">
<race name="owl" maxaura="0" regaura="0" weight="500" capacity="540" speed="1" hp="9" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="2" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<skill name="espionage" modifier="1"/>
<skill name="stealth" modifier="1"/>
@ -203,7 +203,7 @@
<skill name="taxation" modifier="-99"/>
<attack type="4" damage="1d4"/>
</race>
<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">
<race name="fairy" magres="80" maxaura="1" regaura="1.5" weight="200" capacity="540" speed="1" 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"/>
<skill name="stealth" modifier="5"/>
<skill name="espionage" modifier="2"/>
@ -237,7 +237,7 @@
<attack type="4" damage="1d3"/>
<attack type="4" damage="1d3"/>
</race>
<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">
<race name="dreamcat" magres="50" maxaura="1" regaura="1" weight="500" capacity="540" speed="1" 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"/>
<skill name="magic" modifier="1"/>
<skill name="espionage" modifier="1"/>
@ -267,7 +267,7 @@
<attack type="4" damage="1d5"/>
<attack type="4" damage="1d5"/>
</race>
<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">
<race name="imp" magres="50" maxaura="1" regaura="1" weight="500" capacity="540" speed="1" 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"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -299,7 +299,7 @@
<attack type="1" damage="1d4"/>
<attack type="6" spell="fiery_dragonbreath" level="3" />
</race>
<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">
<race name="ghost" magres="80" maxaura="0.5" regaura="0.1" weight="500" capacity="540" speed="1" 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"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -329,7 +329,7 @@
<attack type="2" damage="2d30"/>
<attack type="3" damage="1d1"/>
</race>
<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">
<race name="wolf" maxaura="0" regaura="0" weight="500" capacity="540" speed="1" hp="25" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -358,7 +358,7 @@
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
</race>
<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">
<race name="unicorn" magres="90" maxaura="1.5" regaura="1.5" weight="5000" capacity="2000" speed="2" hp="40" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="4" walk="yes" teach="no" getitem="yes">
<ai splitsize="9999"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -388,7 +388,7 @@
<attack type="4" damage="3d12"/>
<attack type="4" damage="2d4"/>
</race>
<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">
<race name="nymph" magres="90" maxaura="1" regaura="1.5" weight="1000" capacity="540" speed="1" hp="15" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="1" walk="yes" teach="no" getitem="yes" equipment="yes">
<ai splitsize="9999"/>
<skill name="mining" modifier="-99"/>
<skill name="bow" modifier="2"/>
@ -417,7 +417,7 @@
<attack type="1" damage="1d4"/>
<attack type="2" damage="2d20"/>
</race>
<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">
<race name="songdragon" magres="99" maxaura="1" regaura="1" weight="1000" capacity="600" speed="1.5" 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"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -448,7 +448,7 @@
<attack type="4" damage="2d4"/>
<attack type="6" spell="fiery_dragonbreath" level="3" />
</race>
<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">
<race name="rat" maxaura="0" regaura="0" weight="100" capacity="540" speed="1" hp="10" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" walk="yes" teach="no" getitem="yes">
<ai splitsize="9999"/>
<skill name="espionage" modifier="5"/>
<skill name="stealth" modifier="4"/>
@ -479,7 +479,7 @@
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
</race>
<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">
<race name="eagle" maxaura="0" regaura="0" weight="500" capacity="540" speed="1.5" hp="15" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="2" fly="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="9999"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -508,7 +508,7 @@
<skill name="taxation" modifier="-99"/>
<attack type="4" damage="2d3"/>
</race>
<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">
<race name="tunnelworm" magres="80" maxaura="0" regaura="0" weight="30000" capacity="10000" speed="1" 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"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -540,7 +540,7 @@
<attack type="4" damage="3d20"/>
<attack type="8" damage="1d10"/>
</race>
<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">
<race name="lynx" maxaura="0" regaura="0" weight="500" capacity="540" speed="1" hp="20" damage="2d3" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="5" walk="yes" teach="no" getitem="yes">
<ai splitsize="99999"/>
<skill name="alchemy" modifier="-99"/>
<skill name="crossbow" modifier="-99"/>
@ -570,22 +570,22 @@
<skill name="taxation" modifier="-99"/>
<attack type="4" damage="2d3"/>
</race>
<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">
<race name="direwolf" maxaura="0" regaura="0" weight="500" capacity="540" speed="1" 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" 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" regaura="1" weight="1000" capacity="540" speed="1" 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="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">
<race name="braineater" magres="90" maxaura="1"
regaura="1" weight="100" capacity="540" speed="1" 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"/>
<attack type="2" damage="3d15"/>
<attack type="3" damage="1d1"/>
<attack type="4" damage="1d1"/>
</race>
<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">
<race name="toad" magres="20" maxaura="1" regaura="1" maintenance="10" weight="100" capacity="540" speed="1" 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"/>
@ -617,7 +617,7 @@
<skill name="stamina" modifier="-10"/>
<attack type="4" damage="1d2"/>
</race>
<race name="smurf" weight="1000" 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="smurf" weight="1000" capacity="540" speed="1" 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"/>
@ -649,60 +649,60 @@
<skill name="stamina" modifier="-10"/>
<attack type="4" damage="1d2"/>
</race>
<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">
<race name="mountainguard" unarmedguard="yes" magres="50" maxaura="1" regaura="0.5" weight="10000" capacity="2000" speed="0" 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"/>
<attack type="4" damage="2d40"/>
</race>
<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">
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1" regaura="2" weight="500" capacity="540" speed="1" 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"/>
<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="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">
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="75" maxaura="1" regaura="1" weight="500" capacity="540" speed="1" 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"/>
<attack type="4" damage="2d3"/>
<attack type="3" damage="1d1"/>
</race>
<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">
<race name="stonegolem" stonegolem="true" magres="25" maxaura="1" regaura="0.100000" weight="10000" capacity="2000" speed="1" 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="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">
<race name="irongolem" irongolem="true" magres="25" maxaura="1" regaura="0.100000" weight="10000" capacity="2000" speed="1" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
<ai splitsize="50"/>
<skill name="armorer" modifier="14"/>
<skill name="weaponsmithing" modifier="14"/>
<attack type="4" damage="2d8+4"/>
</race>
<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">
<race name="spell" maxaura="1" regaura="0.100000" weight="0" capacity="0" speed="0" 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" 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" regaura="0" weight="0" capacity="0" speed="0" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2">
<ai splitsize="1"/>
<attack type="1" damage="1d4"/>
</race>
<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">
<race name="dracoid" maxaura="1" regaura="1" weight="1000" capacity="540" speed="1" 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"/>
<attack type="4" damage="1d6"/>
<attack type="4" damage="1d6"/>
<attack type="1" damage="1d5"/>
</race>
<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">
<race name="catdragon" magres="90" maxaura="1" regaura="1" weight="20000" capacity="10000" speed="1" 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="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">
<race name="ent" magres="25" maxaura="1" regaura="0.5" weight="5000" capacity="2500" speed="1" 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"/>
<attack type="4" damage="2d12"/>
<attack type="4" damage="2d12"/>
</race>
<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" dragon="yes" unarmedguard="yes">
<race name="wyrm" magres="90" maxaura="1" regaura="3" weight="18000" capacity="1000000" speed="1" 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" unarmedguard="yes">
<ai splitsize="1" killpeasants="yes" learn="yes"/>
<skill name="magic" modifier="12"/>
<skill name="tactics" modifier="12"/>
@ -712,7 +712,7 @@
<attack type="4" damage="5d30"/>
<attack type="6" spell="powerful_dragonbreath" level="12" />
</race>
<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">
<race name="dragon" magres="70" maxaura="1" regaura="2" weight="10000" capacity="1000000" speed="1.5" 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"/>
<skill name="magic" modifier="8"/>
<skill name="tactics" modifier="8"/>
@ -722,7 +722,7 @@
<attack type="4" damage="3d30"/>
<attack type="6" spell="icy_dragonbreath" level="6" />
</race>
<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">
<race name="youngdragon" magres="50" maxaura="1" regaura="1" weight="20000" capacity="10000" speed="1" 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"/>
<skill name="magic" modifier="4"/>
<skill name="tactics" modifier="4"/>
@ -733,12 +733,12 @@
<attack type="4" damage="1d30"/>
<attack type="6" spell="fiery_dragonbreath" level="3" />
</race>
<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" giveperson="yes">
<race name="undead" maxaura="1" regaura="1" weight="1000" capacity="540" speed="1" 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" giveperson="yes">
<ai splitsize="20000" moverandom="yes"/>
<attack type="4" damage="1d7"/>
<attack type="5"/>
</race>
<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">
<race name="aquarian" maxaura="1" regaura="1" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1" 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"/>
<skill name="mining" modifier="-2"/>
<skill name="building" modifier="-1"/>
@ -749,14 +749,14 @@
<skill name="roadwork" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="giantturtle" default="yes"/>
<familiar race="giantturtle"/>
<familiar race="dolphin"/>
<familiar race="giantturtle"/>
<familiar race="dolphin"/>
<familiar race="dolphin"/>
<familiar race="kraken"/>
</race>
<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">
<race name="cat" maxaura="1" regaura="1" recruitcost="90" maintenance="10" weight="1000" capacity="540" speed="1" 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"/>
<skill name="alchemy" modifier="-1"/>
<skill name="mining" modifier="-2"/>
@ -774,14 +774,14 @@
<skill name="taxation" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="lynx" default="yes"/>
<familiar race="lynx"/>
<familiar race="dreamcat"/>
<familiar race="lynx"/>
<familiar race="songdragon"/>
<familiar race="tiger"/>
<familiar race="hellcat"/>
</race>
<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">
<race name="halfling" magres="5" maxaura="1" regaura="1" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1" 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"/>
<param name="hunger.damage" value="1d14+14"/>
<skill name="crossbow" modifier="1"/>
@ -806,14 +806,14 @@
<skill name="taxation" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="owl" default="yes"/>
<familiar race="owl"/>
<familiar race="rat"/>
<familiar race="eagle"/>
<familiar race="songdragon"/>
<familiar race="eagle"/>
<familiar race="rat"/>
</race>
<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">
<race name="insect" magres="50" maxaura="1" regaura="1" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1" 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"/>
<skill name="crossbow" modifier="1"/>
<skill name="mining" modifier="1"/>
@ -834,14 +834,14 @@
<skill name="perception" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="ghost" default="yes"/>
<familiar race="ghost"/>
<familiar race="rat"/>
<familiar race="owl"/>
<familiar race="rat"/>
<familiar race="tunnelworm"/>
<familiar race="imp"/>
</race>
<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">
<race name="demon" magres="15" maxaura="1" regaura="1.25" recruitcost="150" maintenance="10" weight="1000" capacity="540" speed="1" 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"/>
<skill name="alchemy" modifier="2"/>
<skill name="trade" modifier="-3"/>
@ -864,14 +864,14 @@
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<attack type="5"/>
<familiar race="imp" default="yes"/>
<familiar race="imp"/>
<familiar race="imp"/>
<familiar race="ghost"/>
<familiar race="rat"/>
<familiar race="wolf"/>
<familiar race="imp"/>
</race>
<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">
<race name="troll" magres="10" maxaura="1" regaura="1" recruitcost="90" maintenance="10" weight="2000" capacity="1080" speed="1" 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"/>
<skill name="mining" modifier="2"/>
<skill name="bow" modifier="-2"/>
@ -894,14 +894,14 @@
<skill name="taxation" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5+3"/>
<familiar race="tunnelworm" default="yes"/>
<familiar race="tunnelworm"/>
<familiar race="rat"/>
<familiar race="rat"/>
<familiar race="eagle"/>
<familiar race="tunnelworm"/>
<familiar race="wolf"/>
</race>
<race name="goblin" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="40" maintenance="10" weight="600" capacity="440" speed="1.000000" hp="16" damage="1d5" unarmedattack="-2" unarmeddefense="0" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="goblin" magres="-0.050000" maxaura="1" regaura="1" recruitcost="40" maintenance="10" weight="600" capacity="440" speed="1" 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"/>
<skill name="alchemy" modifier="1"/>
<skill name="mining" modifier="1"/>
@ -918,14 +918,14 @@
<skill name="cartmaking" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="rat" default="yes"/>
<familiar race="rat"/>
<familiar race="songdragon"/>
<familiar race="imp"/>
<familiar race="rat"/>
<familiar race="rat"/>
<familiar race="imp"/>
</race>
<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">
<race name="clone" magres="90" maxaura="0" regaura="0" weight="1000" capacity="540" speed="1" 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"/>
@ -958,11 +958,11 @@
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="0d0"/>
</race>
<race name="template" maintenance="0" 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">
<race name="template" maintenance="0" magres="100" maxaura="0" regaura="0" weight="0" capacity="1000" speed="10" 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="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">
<race name="gnome" magres="100" maxaura="0" regaura="0" weight="1000" capacity="540" speed="1" 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"/>
@ -970,7 +970,7 @@
<skill name="unarmed" modifier="1"/>
<attack type="1" damage="1d4"/>
</race>
<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">
<race name="museumghost" magres="100" maxaura="0" regaura="0" weight="1000" capacity="540" speed="1" 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"/>
@ -984,7 +984,7 @@
<attack type="2" damage="5d600"/>
<attack type="1" damage="1d4"/>
</race>
<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" giveperson="yes">
<race name="ghast" magres="60" maxaura="1" regaura="1" weight="1000" capacity="540" speed="1" 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" giveperson="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -1001,7 +1001,7 @@
<attack type="2" damage="1d30"/>
<attack type="2" damage="1d30"/>
</race>
<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" giveperson="yes">
<race name="ghoul" magres="30" maxaura="1" regaura="1" weight="1000" capacity="540" speed="1" 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" giveperson="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -1017,7 +1017,7 @@
<attack type="3" damage="1d2"/>
<attack type="2" damage="1d30"/>
</race>
<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" giveperson="yes">
<race name="juju" magres="50" maxaura="1" regaura="1" weight="1000" capacity="540" speed="1" 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" giveperson="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -1032,7 +1032,7 @@
<attack type="3" damage="1d1"/>
<attack type="3" damage="1d1"/>
</race>
<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" giveperson="yes">
<race name="zombie" magres="20" maxaura="1" regaura="1" weight="1000" capacity="540" speed="1" 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" giveperson="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -1045,7 +1045,7 @@
<skill name="unarmed" modifier="1"/>
<attack type="1" damage="1d7"/>
</race>
<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" giveperson="yes">
<race name="skeletonlord" magres="30" maxaura="1" regaura="1" weight="1000" capacity="540" speed="1" 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" giveperson="yes">
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -1059,7 +1059,7 @@
<attack type="1" damage="1d7"/>
<attack type="1" damage="1d7"/>
</race>
<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" giveperson="yes">
<race name="skeleton" magres="10" maxaura="1" regaura="1" weight="500" capacity="540" speed="1" 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" giveperson="yes">
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
<skill name="crossbow" modifier="1"/>
<skill name="bow" modifier="1"/>
@ -1072,11 +1072,11 @@
<skill name="unarmed" modifier="1"/>
<attack type="1" damage="1d7"/>
</race>
<race name="shadowknight" maxaura="0.000000" regaura="0.000000" weight="0" 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" regaura="0" weight="0" capacity="540" speed="1" 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"/>
<attack type="1" damage="1d1"/>
</race>
<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">
<race name="seaserpent" magres="50" maxaura="1" regaura="1" weight="20000" capacity="5000" speed="1" 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"/>
<skill name="tactics" modifier="4"/>
<attack type="4" damage="1d30"/>
@ -1086,8 +1086,8 @@
<attack type="8" damage="1d10"/>
</race>
<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">
<race name="snotling" magres="-5" maxaura="1" regaura="1"
maintenance="10" weight="1000" capacity="540" speed="1" 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"/>
<skill name="alchemy" modifier="1"/>
<skill name="mining" modifier="1"/>
@ -1109,14 +1109,14 @@
<skill name="taxation" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="goblin" default="yes"/>
<familiar race="goblin"/>
<familiar race="ghost"/>
<familiar race="imp"/>
<familiar race="rat"/>
<familiar race="wolf"/>
<familiar race="demon"/>
</race>
<race name="elf" magres="10" maxaura="1.000000" regaura="1.250000" recruitcost="130" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<race name="elf" magres="10" maxaura="1" regaura="1.25" recruitcost="130" maintenance="10" weight="1000" capacity="540" speed="1" 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"/>
<skill name="alchemy" modifier="-1"/>
<skill name="mining" modifier="-2"/>
@ -1135,14 +1135,14 @@
<skill name="perception" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="lynx" default="yes"/>
<familiar race="lynx"/>
<familiar race="fairy"/>
<familiar race="owl"/>
<familiar race="nymph"/>
<familiar race="unicorn"/>
<familiar race="imp"/>
</race>
<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">
<race name="dwarf" magres="5" maxaura="1" regaura="0.5" recruitcost="110" maintenance="10" weight="1000" capacity="540" speed="1" 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"/>
<skill name="mining" modifier="2"/>
<skill name="bow" modifier="-1"/>
@ -1166,14 +1166,14 @@
<skill name="taxation" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="tunnelworm" default="yes"/>
<familiar race="tunnelworm"/>
<familiar race="eagle"/>
<familiar race="owl"/>
<familiar race="lynx"/>
<familiar race="wolf"/>
<familiar race="rat"/>
</race>
<race name="orc" studyspeed="-5" 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">
<race name="orc" studyspeed="-5" magres="-5" maxaura="1" regaura="1" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1" 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"/>
@ -1196,14 +1196,14 @@
<skill name="taxation" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="goblin" default="yes"/>
<familiar race="goblin"/>
<familiar race="ghost"/>
<familiar race="imp"/>
<familiar race="rat"/>
<familiar race="wolf"/>
<familiar race="demon"/>
</race>
<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">
<race name="shadowdragon" magres="95" maxaura="1" regaura="3" weight="100" capacity="100000" speed="1" 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"/>
<skill name="tactics" modifier="20"/>
<skill name="perception" modifier="20"/>

View file

@ -3,608 +3,599 @@
<spells>
<!-- shared spells -->
<spell name="create_roi" ship="true" rank="5" index="130">
<spell name="create_roi" ship="true" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="create_aots" ship="true" rank="5" index="125">
<spell name="create_aots" ship="true" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="fireball" rank="5" index="4" variable="true" combat="2">
<function name="cast" value="combat_spell"/>
<spell name="fireball" rank="5" variable="true" combat="2">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="hail" rank="5" index="5" variable="true" combat="2">
<function name="cast" value="combat_spell"/>
<spell name="hail" rank="5" variable="true" combat="2">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="rustweapon" rank="5" index="6" parameters="u+" los="true" far="true" variable="true">
<spell name="rustweapon" rank="5" parameters="u+" los="true" far="true" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="combatrust" rank="5" index="7" variable="true" combat="2">
<spell name="combatrust" rank="5" variable="true" combat="2">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="treegrow" rank="5" index="8" far="true" variable="true">
<spell name="treegrow" rank="5" far="true" variable="true">
<resource name="aura" amount="4" cost="level"/>
<resource name="log" amount="1" cost="level"/>
<resource name="lifepotion" amount="1" cost="fixed"/>
</spell>
<spell name="healing" rank="5" index="9" variable="true" combat="3">
<spell name="healing" rank="5" variable="true" combat="3">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="song_of_healing" rank="5" index="10" variable="true" combat="3">
<spell name="song_of_healing" rank="5" variable="true" combat="3">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="bad_dreams" rank="5" index="11" far="true">
<spell name="bad_dreams" rank="5" far="true">
<resource name="aura" amount="90" cost="fixed"/>
</spell>
<spell name="gooddreams" rank="5" index="12" far="true">
<spell name="gooddreams" rank="5" far="true">
<resource name="aura" amount="80" cost="fixed"/>
</spell>
<spell name="dreamreading" rank="5" index="13" parameters="u" far="true">
<spell name="dreamreading" rank="5" parameters="u" far="true">
<resource name="aura" amount="8" cost="fixed"/>
</spell>
<spell name="tiredsoldiers" rank="5" index="15" variable="true" combat="1">
<spell name="tiredsoldiers" rank="5" variable="true" combat="1">
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="plague" rank="5" index="16" far="true">
<spell name="plague" rank="5" far="true">
<resource name="aura" amount="30" cost="fixed"/>
<resource name="peasant" amount="50" cost="fixed"/>
</spell>
<spell name="magicboost" rank="3" index="17" ship="true">
<spell name="magicboost" rank="3" ship="true">
<resource name="aura" amount="6" cost="fixed"/>
</spell>
<spell name="chaosrow" rank="5" index="18" variable="true" combat="1">
<spell name="chaosrow" rank="5" variable="true" combat="1">
<resource name="aura" amount="3" cost="level"/>
<resource name="peasant" amount="10" cost="fixed"/>
</spell>
<spell name="song_of_confusion" rank="5" index="19" variable="true" combat="1">
<spell name="song_of_confusion" rank="5" variable="true" combat="1">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="flee" rank="5" index="20" variable="true" combat="1">
<spell name="flee" rank="5" variable="true" combat="1">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="song_of_fear" rank="5" index="21" variable="true" combat="2">
<spell name="song_of_fear" rank="5" variable="true" combat="2">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="berserk" rank="4" index="22" variable="true" combat="1">
<spell name="berserk" rank="4" variable="true" combat="1">
<resource name="aura" amount="5" cost="level"/>
<resource name="peasant" amount="1" cost="fixed"/>
</spell>
<spell name="bloodthirst" rank="4" index="23" variable="true" combat="1">
<spell name="bloodthirst" rank="4" variable="true" combat="1">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="maelstrom" rank="5" index="24" ship="true" ocean="true">
<spell name="maelstrom" rank="5" ship="true" ocean="true">
<resource name="aura" amount="200" cost="fixed"/>
<resource name="seaserpenthead" amount="1" cost="fixed"/>
</spell>
<spell name="transferauradruide" rank="1" index="27" syntax="aura" parameters="ui" ship="true">
<spell name="transferauradruide" rank="1" syntax="aura" parameters="ui" ship="true">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="transfer_aura_song" rank="1" index="28" syntax="aura" parameters="ui" ship="true">
<spell name="transfer_aura_song" rank="1" syntax="aura" parameters="ui" ship="true">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="transferaurachaos" rank="1" index="29" syntax="aura" parameters="ui" ship="true">
<spell name="transferaurachaos" rank="1" syntax="aura" parameters="ui" ship="true">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="transferauratraum" rank="1" index="30" syntax="aura" parameters="ui" ship="true">
<spell name="transferauratraum" rank="1" syntax="aura" parameters="ui" ship="true">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="auratransfer" rank="1" index="31" syntax="aura" parameters="ui" ship="true">
<spell name="auratransfer" rank="1" syntax="aura" parameters="ui" ship="true">
<resource name="aura" amount="1" cost="fixed"/>
</spell>
<spell name="stonegolem" rank="4" index="32" variable="true">
<spell name="stonegolem" rank="4" variable="true">
<resource name="aura" amount="2" cost="level"/>
<resource name="stone" amount="1" cost="level"/>
<resource name="lifepotion" amount="1" cost="fixed"/>
</spell>
<spell name="irongolem" rank="4" index="33" variable="true">
<spell name="irongolem" rank="4" variable="true">
<resource name="aura" amount="2" cost="level"/>
<resource name="iron" amount="1" cost="level"/>
<resource name="lifepotion" amount="1" cost="fixed"/>
</spell>
<spell name="summonshadow" rank="5" index="34" variable="true">
<spell name="summonshadow" rank="5" variable="true">
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="summonshadowlords" rank="5" index="35" variable="true">
<spell name="summonshadowlords" rank="5" variable="true">
<resource name="aura" amount="7" cost="level"/>
</spell>
<spell name="reelingarrows" rank="5" index="36" variable="true" combat="1">
<spell name="reelingarrows" rank="5" variable="true" combat="1">
<resource name="aura" amount="15" cost="fixed"/>
</spell>
<spell name="antimagiczone" rank="2" index="37" far="true" variable="true">
<spell name="antimagiczone" rank="2" far="true" variable="true">
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="cold_protection" rank="5" index="39" parameters="u+" los="true" ship="true" variable="true">
<spell name="cold_protection" rank="5" parameters="u+" los="true" ship="true" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="steal_aura" rank="3" index="40" parameters="u" los="true" far="true" variable="true">
<spell name="steal_aura" rank="3" parameters="u" los="true" far="true" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="summonundead" rank="5" index="41" ship="true" far="true" variable="true">
<spell name="summonundead" rank="5" ship="true" far="true" variable="true">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="auraleak" rank="3" index="42">
<spell name="auraleak" rank="3">
<resource name="aura" amount="35" cost="fixed"/>
<resource name="dragonblood" amount="1" cost="fixed"/>
</spell>
<spell name="great_drought" rank="5" index="43" far="true">
<spell name="great_drought" rank="5" far="true">
<resource name="aura" amount="800" cost="fixed"/>
</spell>
<spell name="strongwall" rank="5" index="44" variable="true" combat="1">
<spell name="strongwall" rank="5" variable="true" combat="1">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="homestone" rank="5" index="45">
<spell name="homestone" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="summonfireelemental" rank="5" index="46" far="true">
<spell name="summonfireelemental" rank="5" far="true">
<resource name="aura" amount="600" cost="fixed"/>
</spell>
<spell name="forestfire" rank="5" index="47" far="true">
<spell name="forestfire" rank="5" far="true">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="oil" amount="1" cost="fixed"/>
</spell>
<spell name="summonent" rank="5" index="49" variable="true">
<spell name="summonent" rank="5" variable="true">
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="disturbingdreams" rank="5" index="50" far="true">
<spell name="disturbingdreams" rank="5" far="true">
<resource name="aura" amount="18" cost="fixed"/>
</spell>
<spell name="appeasement" rank="5" index="51" variable="true" combat="1">
<spell name="appeasement" rank="5" variable="true" combat="1">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="sleep" rank="5" index="52" variable="true" combat="2">
<spell name="sleep" rank="5" variable="true" combat="2">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="earthquake" rank="5" index="53" far="true">
<spell name="earthquake" rank="5" far="true">
<resource name="aura" amount="25" cost="fixed"/>
<resource name="laen" amount="2" cost="fixed"/>
</spell>
<spell name="ironkeeper" rank="5" index="54" far="true" variable="true">
<spell name="ironkeeper" rank="5" far="true" variable="true">
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="stormwinds" rank="5" index="55" parameters="s+" ship="true" ocean="true" variable="true">
<spell name="stormwinds" rank="5" parameters="s+" ship="true" ocean="true" variable="true">
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="goodwinds" rank="5" index="56" parameters="s" ship="true" variable="true">
<spell name="goodwinds" rank="5" parameters="s" ship="true" variable="true">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="airship" rank="5" index="57" parameters="s" ship="true">
<spell name="airship" rank="5" parameters="s" ship="true">
<resource name="aura" amount="10" cost="fixed"/>
<resource name="h12" amount="1" cost="fixed"/>
<resource name="h20" amount="1" cost="fixed"/>
</spell>
<spell name="windshield" rank="5" index="59" variable="true" combat="1">
<spell name="windshield" rank="5" variable="true" combat="1">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="raise_mob" rank="5" index="60" variable="true">
<spell name="raise_mob" rank="5" variable="true">
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="melancholy" rank="5" index="61" far="true">
<spell name="melancholy" rank="5" far="true">
<resource name="aura" amount="40" cost="fixed"/>
</spell>
<spell name="headache" rank="5" index="62" parameters="u" los="true">
<spell name="headache" rank="5" parameters="u" los="true">
<resource name="aura" amount="28" cost="fixed"/>
<resource name="h7" amount="3" cost="fixed"/>
<resource name="money" amount="50" cost="fixed"/>
</spell>
<spell name="enterastral" rank="7" index="64" parameters="u+" variable="true">
<spell name="enterastral" rank="7" parameters="u+" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="leaveastral" rank="7" index="65" parameters="ru+" variable="true">
<spell name="leaveastral" rank="7" parameters="ru+" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="versteinern" rank="5" index="67" variable="true" combat="2">
<spell name="versteinern" rank="5" variable="true" combat="2">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="treewalkenter" rank="7" index="68" parameters="u+" los="true" variable="true">
<spell name="treewalkenter" rank="7" parameters="u+" los="true" variable="true">
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="treewalkexit" rank="7" index="69" parameters="ru+" los="true" variable="true">
<spell name="treewalkexit" rank="7" parameters="ru+" los="true" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="chaossuction" rank="5" index="70">
<spell name="chaossuction" rank="5">
<resource name="aura" amount="150" cost="fixed"/>
<resource name="peasant" amount="200" cost="fixed"/>
</spell>
<spell name="view_reality" rank="5" index="71">
<spell name="view_reality" rank="5">
<resource name="aura" amount="40" cost="fixed"/>
</spell>
<spell name="astral_disruption" rank="4" index="72" variable="true">
<spell name="astral_disruption" rank="4" variable="true">
<resource name="aura" amount="140" cost="fixed"/>
</spell>
<spell name="seduction" rank="5" index="73" parameters="u" los="true">
<spell name="seduction" rank="5" parameters="u" los="true">
<resource name="aura" amount="12" cost="fixed"/>
</spell>
<spell name="sound_out" rank="5" index="74" parameters="ur" los="true">
<spell name="sound_out" rank="5" parameters="ur" los="true">
<resource name="aura" amount="4" cost="fixed"/>
<resource name="money" amount="100" cost="fixed"/>
</spell>
<spell name="calm_monster" rank="5" index="75" parameters="u" los="true" ship="true">
<spell name="calm_monster" rank="5" parameters="u" los="true" ship="true">
<resource name="aura" amount="15" cost="fixed"/>
</spell>
<spell name="heroic_song" rank="4" index="76" variable="true" combat="1">
<spell name="heroic_song" rank="4" variable="true" combat="1">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="frighten" rank="5" index="77" variable="true" combat="1">
<spell name="frighten" rank="5" variable="true" combat="1">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="mindblast" rank="5" index="78" variable="true" combat="1">
<spell name="mindblast" rank="5" variable="true" combat="1">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="combat_speed" rank="5" index="79" variable="true" combat="1">
<spell name="combat_speed" rank="5" variable="true" combat="1">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="double_time" rank="5" index="80" parameters="u+" los="true" ship="true" variable="true">
<spell name="double_time" rank="5" parameters="u+" los="true" ship="true" variable="true">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="fiery_dragonbreath" rank="5" index="81" combat="2">
<spell name="fiery_dragonbreath" rank="5" combat="2">
<resource name="aura" amount="1" cost="fixed"/>
</spell>
<spell name="icy_dragonbreath" rank="5" index="82" combat="2">
<spell name="icy_dragonbreath" rank="5" combat="2">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="powerful_dragonbreath" rank="5" index="83" combat="2">
<spell name="powerful_dragonbreath" rank="5" combat="2">
<resource name="aura" amount="3" cost="fixed"/>
</spell>
<spell name="magicstreet" rank="5" index="84" ship="true" far="true" variable="true">
<spell name="magicstreet" rank="5" ship="true" far="true" variable="true">
<resource name="aura" amount="1" cost="level"/>
<resource name="stone" amount="1" cost="fixed"/>
<resource name="log" amount="1" cost="fixed"/>
</spell>
<spell name="reanimate" rank="4" index="85" variable="true" combat="3">
<spell name="reanimate" rank="4" variable="true" combat="3">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="courting" rank="5" index="86" variable="true">
<spell name="courting" rank="5" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="generous" rank="5" index="87" ship="true" far="true" variable="true">
<spell name="generous" rank="5" ship="true" far="true" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="sacrifice_strength" rank="1" index="88" syntax="aura" parameters="ui">
<spell name="sacrifice_strength" rank="1" syntax="aura" parameters="ui">
<resource name="aura" amount="100" cost="fixed"/>
</spell>
<spell name="song_of_peace" rank="5" index="89" variable="true">
<spell name="song_of_peace" rank="5" variable="true">
<resource name="aura" amount="20" cost="level"/>
</spell>
<spell name="migration" rank="5" index="90" parameters="u" los="true" variable="true">
<spell name="migration" rank="5" parameters="u" los="true" variable="true">
<resource name="aura" amount="3" cost="level"/>
<resource name="permaura" amount="1" cost="level"/>
</spell>
<spell name="calm_riot" rank="5" index="91" far="true">
<spell name="calm_riot" rank="5" far="true">
<resource name="aura" amount="30" cost="fixed"/>
</spell>
<spell name="incite_riot" rank="5" index="92" far="true">
<spell name="incite_riot" rank="5" far="true">
<resource name="aura" amount="40" cost="fixed"/>
</spell>
<spell name="shapeshift" rank="5" index="93" syntax="race" parameters="uc" variable="true">
<spell name="shapeshift" rank="5" syntax="race" parameters="uc" variable="true">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="wolfhowl" rank="5" index="94" variable="true" combat="1">
<spell name="wolfhowl" rank="5" variable="true" combat="1">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="igjarjuk" rank="5" index="94" variable="true" combat="1">
<function name="cast" value="igjarjuk"/>
<spell name="igjarjuk" rank="5" variable="true" combat="1">
</spell>
<spell name="resist_magic" rank="2" index="97" parameters="u+" los="true" ship="true" variable="true">
<spell name="resist_magic" rank="2" parameters="u+" los="true" ship="true" variable="true">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="keeploot" rank="5" index="98" variable="true" combat="3">
<spell name="keeploot" rank="5" variable="true" combat="3">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="protective_runes" rank="2" index="99" parameters="kc" regiontarget="false" unittarget="false" buildingtarget="true" shiptarget="true" ship="true">
<spell name="protective_runes" rank="2" parameters="kc" regiontarget="false" unittarget="false" buildingtarget="true" shiptarget="true" ship="true">
<resource name="aura" amount="20" cost="fixed"/>
</spell>
<spell name="song_resist_magic" rank="2" index="100" far="true" variable="true">
<spell name="song_resist_magic" rank="2" far="true" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="song_suscept_magic" rank="2" index="101" far="true" variable="true">
<spell name="song_suscept_magic" rank="2" far="true" variable="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="analyze_magic" rank="5" index="102" parameters="kc+" los="true" ship="true" variable="true">
<spell name="analyze_magic" rank="5" parameters="kc+" los="true" ship="true" variable="true">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="analysedream" rank="5" index="103" parameters="u" los="true" ship="true">
<spell name="analysedream" rank="5" parameters="u" los="true" ship="true">
<resource name="aura" amount="25" cost="fixed"/>
</spell>
<spell name="analysesong_unit" rank="5" index="104" parameters="u" los="true" ship="true">
<spell name="analysesong_unit" rank="5" parameters="u" los="true" ship="true">
<resource name="aura" amount="10" cost="fixed"/>
</spell>
<spell name="analyse_object" rank="5" index="105" parameters="kc+" ship="true" variable="true">
<resource name="aura" amount="3" cost="level" regiontarget="true" unittarget="false" buildingtarget="true" shiptarget="true"/>
<spell name="analyse_object" rank="5" parameters="kc+" ship="true" variable="true" regiontarget="true" unittarget="false" buildingtarget="true" shiptarget="true">
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="destroy_magic" rank="2" index="106" parameters="kc+" los="true" ship="true" far="true" variable="true">
<spell name="destroy_magic" rank="2" parameters="kc+" los="true" ship="true" far="true" variable="true">
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="break_curse" rank="3" index="107" syntax="spellid" parameters="kcc" los="true" ship="true" far="true" variable="true">
<spell name="break_curse" rank="3" syntax="spellid" parameters="kcc" los="true" ship="true" far="true" variable="true">
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="meteor_rain" rank="5" index="108" variable="true" combat="2">
<function name="cast" value="combat_spell"/>
<spell name="meteor_rain" rank="5" variable="true" combat="2">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="fish_shield" rank="2" index="109" variable="true" combat="1">
<spell name="fish_shield" rank="2" variable="true" combat="1">
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="armor_shield" rank="2" index="110" variable="true" combat="1">
<spell name="armor_shield" rank="2" variable="true" combat="1">
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="deathcloud" rank="5" index="111" far="true">
<spell name="deathcloud" rank="5" far="true">
<resource name="aura" amount="40" cost="fixed"/>
<resource name="hp" amount="15" cost="fixed"/>
</spell>
<spell name="orkdream" rank="5" index="112" parameters="u+" los="true" variable="true">
<spell name="orkdream" rank="5" parameters="u+" los="true" variable="true">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="summondragon" rank="5" index="113" far="true">
<spell name="summondragon" rank="5" far="true">
<resource name="aura" amount="80" cost="fixed"/>
<resource name="dragonhead" amount="1" cost="fixed"/>
</spell>
<spell name="living_rock" rank="5" index="116" syntax="direction" parameters="bc" variable="true">
<spell name="living_rock" rank="5" syntax="direction" parameters="bc" variable="true">
<resource name="aura" amount="10" cost="level"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="laen" amount="5" cost="fixed"/>
</spell>
<spell name="blessstonecircle" rank="5" index="117" parameters="b">
<spell name="blessstonecircle" rank="5" parameters="b">
<resource name="aura" amount="350" cost="fixed"/>
<resource name="permaura" amount="5" cost="fixed"/>
</spell>
<spell name="summon_familiar" rank="5" index="122">
<function name="cast" value="cast_familiar"/>
<spell name="summon_familiar" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="5" cost="fixed"/>
</spell>
<spell name="song_of_slavery" rank="5" index="123" parameters="u" los="true">
<spell name="song_of_slavery" rank="5" parameters="u" los="true">
<resource name="aura" amount="40" cost="fixed"/>
</spell>
<spell name="fumblecurse" rank="4" index="136" parameters="u" los="true" variable="true">
<spell name="fumblecurse" rank="4" parameters="u" los="true" variable="true">
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="icastle" rank="5" index="137" syntax="buildingtype" parameters="c">
<spell name="icastle" rank="5" syntax="buildingtype" parameters="c">
<resource name="aura" amount="3" cost="fixed"/>
</spell>
<spell name="gwyrrddestroymagic" rank="2" index="138" parameters="kc+" los="true" ship="true" far="true" variable="true">
<spell name="gwyrrddestroymagic" rank="2" parameters="kc+" los="true" ship="true" far="true" variable="true">
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="draigdestroymagic" rank="2" index="139" parameters="kc+" los="true" ship="true" far="true" variable="true">
<spell name="draigdestroymagic" rank="2" parameters="kc+" los="true" ship="true" far="true" variable="true">
<resource name="aura" amount="10" cost="level"/>
</spell>
<spell name="illaundestroymagic" rank="2" index="140" parameters="kc+" los="true" ship="true" far="true" variable="true">
<spell name="illaundestroymagic" rank="2" parameters="kc+" los="true" ship="true" far="true" variable="true">
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="cerddor_destroymagic" rank="2" index="141" parameters="kc+" los="true" ship="true" far="true" variable="true">
<spell name="cerddor_destroymagic" rank="2" parameters="kc+" los="true" ship="true" far="true" variable="true">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="barkskin" rank="2" index="142" variable="true" combat="1">
<spell name="barkskin" rank="2" variable="true" combat="1">
<resource name="aura" amount="4" cost="level"/>
</spell>
<spell name="draigfumbleshield" rank="2" index="143" variable="true" combat="1">
<spell name="draigfumbleshield" rank="2" variable="true" combat="1">
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="gwyrrdfumbleshield" rank="2" index="144" variable="true" combat="1">
<spell name="gwyrrdfumbleshield" rank="2" variable="true" combat="1">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="cerddorfumbleshield" rank="2" index="145" variable="true" combat="1">
<spell name="cerddorfumbleshield" rank="2" variable="true" combat="1">
<resource name="aura" amount="5" cost="level"/>
</spell>
<spell name="tybiedfumbleshield" rank="2" index="146" variable="true" combat="1">
<spell name="tybiedfumbleshield" rank="2" variable="true" combat="1">
<resource name="aura" amount="3" cost="level"/>
</spell>
<spell name="shadowknights" rank="4" index="147" variable="true" combat="1">
<spell name="shadowknights" rank="4" variable="true" combat="1">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="concealing_aura" rank="5" index="150" parameters="u" ship="true" variable="true">
<spell name="concealing_aura" rank="5" parameters="u" ship="true" variable="true">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="firewall" rank="4" index="151" syntax="direction" parameters="c" variable="true">
<spell name="firewall" rank="4" syntax="direction" parameters="c" variable="true">
<resource name="aura" amount="6" cost="level"/>
</spell>
<spell name="sparklechaos" rank="5" index="153" parameters="u" los="true" variable="true">
<spell name="sparklechaos" rank="5" parameters="u" los="true" variable="true">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="sparkledream" rank="5" index="154" parameters="u" los="true" ship="true" variable="true">
<spell name="sparkledream" rank="5" parameters="u" los="true" ship="true" variable="true">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="pull_astral" rank="7" index="156" parameters="ru+" variable="true" target_global="true">
<spell name="pull_astral" rank="7" parameters="ru+" variable="true" globaltarget="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="fetch_astral" rank="7" index="157" parameters="u+" variable="true" target_global="true">
<spell name="fetch_astral" rank="7" parameters="u+" variable="true" globaltarget="true">
<resource name="aura" amount="2" cost="level"/>
</spell>
<spell name="shockwave" rank="5" index="163" variable="true" combat="2">
<spell name="shockwave" rank="5" variable="true" combat="2">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="undeadhero" rank="5" index="164" variable="true" combat="3">
<spell name="undeadhero" rank="5" variable="true" combat="3">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="wyrm_transformation" rank="5" index="166">
<spell name="wyrm_transformation" rank="5">
<resource name="aura" amount="1" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="eternal_walls" rank="5" index="167" parameters="b" ship="true" variable="true">
<spell name="eternal_walls" rank="5" parameters="b" ship="true" variable="true">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="puttorest" rank="5" index="168" variable="true">
<spell name="puttorest" rank="5" variable="true">
<resource name="aura" amount="3" cost="level"/>
<resource name="lifepotion" amount="1" cost="fixed"/>
</spell>
<spell name="unholypower" rank="5" index="169" parameters="u+" los="true" variable="true">
<spell name="unholypower" rank="5" parameters="u+" los="true" variable="true">
<resource name="aura" amount="10" cost="level"/>
<resource name="peasant" amount="5" cost="level"/>
</spell>
<spell name="holyground" rank="5" index="170">
<spell name="holyground" rank="5">
<resource name="aura" amount="80" cost="fixed"/>
<resource name="permaura" amount="3" cost="fixed"/>
</spell>
<spell name="bloodsacrifice" rank="1" index="171" ship="true">
<spell name="bloodsacrifice" rank="1" ship="true">
<resource name="hp" amount="16" cost="fixed"/>
</spell>
<spell name="magic_roots" rank="5" index="172" far="true">
<spell name="magic_roots" rank="5" far="true">
<resource name="aura" amount="250" cost="fixed"/>
<resource name="permaura" amount="10" cost="fixed"/>
<resource name="toadslime" amount="1" cost="fixed"/>
</spell>
<spell name="clone" rank="5" index="173">
<spell name="clone" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="20" cost="fixed"/>
<resource name="dragonblood" amount="5" cost="fixed"/>
<resource name="lifepotion" amount="5" cost="fixed"/>
</spell>
<spell name="drain_skills" rank="5" index="174" combat="2">
<spell name="drain_skills" rank="5" combat="2">
<resource name="aura" amount="4" cost="fixed"/>
</spell>
<spell name="aura_of_fear" rank="5" index="175" combat="2">
<spell name="aura_of_fear" rank="5" combat="2">
<resource name="aura" amount="12" cost="fixed"/>
</spell>
<spell name="mallorntreegrow" rank="5" index="177" far="true" variable="true">
<spell name="mallorntreegrow" rank="5" far="true" variable="true">
<resource name="aura" amount="6" cost="level"/>
<resource name="mallorn" amount="1" cost="level"/>
<resource name="lifepotion" amount="1" cost="fixed"/>
</spell>
<spell name="big_recruit" rank="5" index="179" variable="true">
<spell name="big_recruit" rank="5" variable="true">
<resource name="aura" amount="20" cost="level"/>
</spell>
<spell name="immolation" rank="5" index="180" combat="2">
<spell name="immolation" rank="5" combat="2">
<resource name="aura" amount="24" cost="fixed"/>
</spell>
<spell name="firestorm" rank="5" index="181" combat="2">
<spell name="firestorm" rank="5" combat="2">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="coldfront" rank="5" index="182" combat="2">
<spell name="coldfront" rank="5" combat="2">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<spell name="acidrain" rank="5" index="183" combat="2">
<spell name="acidrain" rank="5" combat="2">
<resource name="aura" amount="2" cost="fixed"/>
</spell>
<!-- draig spells -->
<spell name="earn_silver#draig" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#draig" ship="true" variable="true" rank="5">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="create_firesword" ship="true" rank="5" index="148">
<spell name="create_firesword" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="p10" amount="1" cost="fixed"/>
<resource name="sword" amount="1" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="create_trollbelt" ship="true" rank="5" index="48">
<spell name="create_trollbelt" ship="true" rank="5">
<resource name="aura" amount="20" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<!-- gwyrrd spells -->
<spell name="blessedharvest" rank="5" index="25" ship="true" far="true" variable="true">
<spell name="blessedharvest" rank="5" ship="true" far="true" variable="true">
<!-- Segen der Erde -->
<function name="cast" value="cast_blessedharvest"/>
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="earn_silver#gwyrrd" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#gwyrrd" ship="true" variable="true" rank="5">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="create_magicherbbag" ship="true" rank="5" index="165">
<spell name="create_magicherbbag" ship="true" rank="5">
<resource name="aura" amount="30" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="lifepotion" amount="1" cost="fixed"/>
</spell>
<!-- illaun spells -->
<spell name="earn_silver#illaun" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#illaun" ship="true" variable="true" rank="5">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="create_dreameye" ship="true" rank="5" index="149">
<spell name="create_dreameye" ship="true" rank="5">
<resource name="dragonhead" amount="1" cost="fixed"/>
<resource name="permaura" amount="5" cost="fixed"/>
</spell>
<spell name="create_invisibility_sphere" ship="true" rank="5" index="178">
<spell name="create_invisibility_sphere" ship="true" rank="5">
<resource name="aura" amount="150" cost="fixed"/>
<resource name="money" amount="30000" cost="fixed"/>
<resource name="permaura" amount="3" cost="fixed"/>
</spell>
<!-- cerddor spells -->
<spell name="raindance" rank="5" index="26" ship="true" far="true" variable="true">
<spell name="raindance" rank="5" ship="true" far="true" variable="true">
<!-- Segen der Erde -->
<function name="cast" value="cast_blessedharvest"/>
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="earn_silver#cerddor" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#cerddor" ship="true" variable="true" rank="5">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="create_roqf" ship="true" rank="5" index="63">
<spell name="create_roqf" ship="true" rank="5">
<resource name="aura" amount="20" cost="fixed"/>
<resource name="money" amount="1000" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="blabbermouth" parameters="u" los="true" rank="5" index="115">
<function name="cast" value="cast_babbler"/>
<spell name="blabbermouth" parameters="u" los="true" rank="5">
<resource name="aura" amount="10" cost="fixed"/>
<!-- missing syntactical info: ONETARGET | UNITSPELL -->
</spell>
<spell name="readmind" parameters="u" rank="5" index="114">
<function name="cast" value="cast_readmind"/>
<spell name="readmind" parameters="u" rank="5">
<resource name="aura" amount="20" cost="fixed"/>
<!-- missing syntactical info: ONETARGET | UNITSPELL -->
</spell>
<!-- tybied spells -->
<spell name="earn_silver#tybied" ship="true" variable="true" rank="5" index="159">
<spell name="earn_silver#tybied" ship="true" variable="true" rank="5">
<resource name="aura" amount="1" cost="level"/>
</spell>
<spell name="create_antimagic" ship="true" rank="5" index="38">
<spell name="create_antimagic" ship="true" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
</spell>
<spell name="create_rop" ship="true" rank="5" index="1">
<spell name="create_rop" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="money" amount="4000" cost="fixed"/>
</spell>
<spell name="create_bagofholding" ship="true" rank="5" index="155">
<spell name="create_bagofholding" ship="true" rank="5">
<resource name="aura" amount="30" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="money" amount="5000" cost="fixed"/>
</spell>
<!-- gray magic -->
<spell name="create_runesword" ship="true" rank="5" index="135">
<spell name="create_runesword" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="money" amount="1000" cost="fixed"/>
<resource name="laensword" amount="1" cost="fixed"/>
</spell>
<spell name="create_chastitybelt" ship="true" rank="5" index="134">
<spell name="create_chastitybelt" ship="true" rank="5">
<resource name="aura" amount="50" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
<resource name="money" amount="3000" cost="fixed"/>
</spell>
<spell name="create_focus" ship="true" rank="5" index="2">
<spell name="create_focus" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>
<spell name="create_ror" ship="true" rank="5" index="3">
<spell name="create_ror" ship="true" rank="5">
<resource name="aura" amount="100" cost="fixed"/>
<resource name="permaura" amount="1" cost="fixed"/>
</spell>

View file

@ -10,7 +10,7 @@
<skill name="roadwork" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="giantturtle" default="yes"/>
<familiar race="giantturtle"/>
<familiar race="dolphin"/>
<familiar race="giantturtle"/>
<familiar race="dolphin"/>

View file

@ -17,7 +17,7 @@
<skill name="taxation" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="lynx" default="yes"/>
<familiar race="lynx"/>
<familiar race="dreamcat"/>
<familiar race="lynx"/>
<familiar race="songdragon"/>

View file

@ -27,7 +27,7 @@ recruitethereal="yes" equipment="yes" healing="1.5">
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<attack type="5"/>
<familiar race="imp" default="yes"/>
<familiar race="imp"/>
<familiar race="imp"/>
<familiar race="ghost"/>
<familiar race="rat"/>

View file

@ -23,7 +23,7 @@
<skill name="taxation" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="tunnelworm" default="yes"/>
<familiar race="tunnelworm"/>
<familiar race="eagle"/>
<familiar race="owl"/>
<familiar race="lynx"/>

View file

@ -18,7 +18,7 @@
<skill name="perception" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="lynx" default="yes"/>
<familiar race="lynx"/>
<familiar race="fairy"/>
<familiar race="owl"/>
<familiar race="nymph"/>

View file

@ -21,7 +21,7 @@ getitem="yes" equipment="yes" healing="2.0">
<skill name="unarmed" modifier="-99"/>
<skill name="weaponsmithing" modifier="-1"/>
<attack type="1" damage="1d5"/>
<familiar race="rat" default="yes"/>
<familiar race="rat"/>
<familiar race="imp"/>
</race>
</races>

View file

@ -21,7 +21,7 @@ healing="2.0">
<skill name="cartmaking" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="rat" default="yes"/>
<familiar race="rat"/>
<familiar race="songdragon"/>
<familiar race="imp"/>
<familiar race="rat"/>

View file

@ -24,7 +24,7 @@
<skill name="taxation" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="owl" default="yes"/>
<familiar race="owl"/>
<familiar race="rat"/>
<familiar race="eagle"/>
<familiar race="songdragon"/>

View file

@ -7,7 +7,7 @@
<skill name="sailing" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="wolf" default="yes"/>
<familiar race="wolf"/>
<familiar race="dreamcat"/>
<familiar race="owl"/>
<familiar race="owl"/>

View file

@ -20,7 +20,7 @@
<skill name="perception" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="ghost" default="yes"/>
<familiar race="ghost"/>
<familiar race="rat"/>
<familiar race="owl"/>
<familiar race="rat"/>

View file

@ -22,7 +22,7 @@
<skill name="taxation" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<familiar race="goblin" default="yes"/>
<familiar race="goblin"/>
<familiar race="ghost"/>
<familiar race="imp"/>
<familiar race="rat"/>

View file

@ -27,7 +27,7 @@ healing="1.5">
<skill name="taxation" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5+3"/>
<familiar race="tunnelworm" default="yes"/>
<familiar race="tunnelworm"/>
<familiar race="rat"/>
<familiar race="rat"/>
<familiar race="eagle"/>

View file

@ -11,8 +11,8 @@ return {
require('eressea.tunnels'),
require('eressea.ponnuki'),
require('eressea.astral'),
-- require('eressea.locales'),
require('eressea.jsreport'),
require('eressea.ents'),
require('eressea.equipment'),
require('eressea.cursed')
}

View file

@ -5,7 +5,7 @@ eressea.log.debug("rules for game E3")
return {
require('eressea'),
require('eressea.xmasitems'),
-- require('eressea.markets'),
require('eressea.frost'),
require('eressea.equipment'),
require('eressea.ents')
}

View file

@ -0,0 +1,141 @@
-- Equipment
local sets = {
['first_unit'] = {
['items'] = {
['money'] = 2500,
['log'] = 10,
['stone'] = 4
}
},
['seed_unit'] = {
['items'] = {
['log'] = 50,
['stone'] = 50,
['iron'] = 50,
['laen'] = 10,
['sword'] = 1,
['mallorn'] = 10,
['skillpotion'] = 5,
['lifepotion'] = 5,
['money'] = 20000
},
['skills'] = {
['perception'] = 30,
['melee'] = 1
}
},
['seed_dwarf'] = {
['items'] = {
['axe'] = 1,
['chainmail'] = 1,
},
['skills'] = {
['melee'] = 1
}
},
['seed_elf'] = {
['items'] = {
['fairyboot'] = 1,
},
['callback'] = equip_newunits
},
['seed_orc'] = {
['skills'] = {
['polearm'] = 4,
['melee'] = 4,
['crossbow'] = 4,
['catapult'] = 4,
['bow'] = 4,
}
},
['seed_goblin'] = {
['items'] = {
['roi'] = 1
},
['callback'] = equip_newunits
},
['seed_human'] = {
['callback'] = equip_newunits
},
['seed_troll'] = {
['items'] = {
['stone'] = 50,
},
['skills'] = {
['building'] = 1,
['perception'] = 3,
}
},
['seed_demon'] = {
['skills'] = {
['stamina'] = 15
}
},
['seed_insect'] = {
['items'] = {
['nestwarmth'] =9
}
},
['seed_halfling'] = {
['items'] = {
['horse'] = 2,
['cart'] = 1,
['balm'] = 5,
['spice'] = 5,
['myrrh'] = 5,
['jewel'] = 5,
['oil'] = 5,
['silk'] = 5,
['incense'] = 5
},
['skills'] = {
['trade'] = 1,
['riding'] = 2
}
},
['seed_cat'] = {
['items'] = {
['roi'] = 1
},
['callback'] = equip_newunits
},
['seed_aquarian'] = {
['skills'] = {
['sailing'] = 1
},
['callback'] = equip_newunits
}
}
function equip_unit(u, name, flags)
local set = sets[name]
if set then
local items = set['items']
if items then
for k,v in pairs(items) do
u:add_item(k, v)
end
end
local skills = set['skills']
if skills then
for k,v in pairs(skills) do
u:set_skill(k, v)
end
end
local spells = set['spells']
if spells then
for k, v in ipairs(spells) do
u:add_spell(v)
end
end
local callback = set['callback']
if callback and type(callback) == 'function' then
callback(u)
end
return true
end
return false
end
return nil

View file

@ -8,27 +8,32 @@ end
function test_read_race()
local f
eressea.free_game()
assert_not_nil(eressea.config)
eressea.config.parse('{ "races": { "orc" : {}}}')
f = faction.create("orc", "orc@example.com", "en")
assert_not_nil(f)
end
function disable_test_read_ship()
local s
eressea.free_game()
assert_not_nil(eressea.config)
conf = [[{
"ships": {
"boat" : {
"construction" : {
"maxsize" : 20
}
}
}
}]]
eressea.config.parse(conf);
s = ship.create(nil, "boat")
assert_not_nil(s)
function test_seed_unit()
local r = region.create(0, 0, "plain")
local f = faction.create('human')
local u = unit.create(f, r, 1)
u:equip('seed_unit')
assert_equal(20000, u:get_item('money'))
assert_equal(50, u:get_item('log'))
assert_equal(50, u:get_item('stone'))
assert_equal(1, u:get_skill('melee'))
end
function test_seed_elf()
local r = region.create(0, 0, "plain")
local f = faction.create('human')
local u = unit.create(f, r, 1)
-- quirk: independent of the race, seed_elf contains a fairyboot
u:equip('seed_elf')
assert_equal(1, u:get_item('fairyboot'))
-- all humans start in a building:
assert_not_nil(u.building)
assert_equal('castle', u.building.type)
assert_equal(10, u.building.size)
end

View file

@ -0,0 +1,89 @@
require "lunit"
module("tests.e2.astral", package.seeall, lunit.testcase)
function setup()
eressea.free_game()
eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("NewbieImmunity", "0")
eressea.settings.set("rules.food.flags", "4")
eressea.settings.set("rules.peasants.growth.factor", "0")
eressea.settings.set("magic.fumble.enable", "0")
eressea.settings.set("magic.regeneration.enable", "0")
end
local function dump_messages(f)
for k, v in ipairs(f.messages) do
print(v)
end
end
function test_fetch_astral()
local r = region.create(0, 0, "plain")
local f = faction.create("human")
local u1 = unit.create(f, r, 1)
local u2 = unit.create(f, r, 1)
u1.magic = "gray"
u1:set_skill("magic", 6)
u1.aura = 0
u1:add_spell("fetch_astral")
u1:clear_orders()
u1:add_order("ZAUBERE Ruf~der~Realitaet " .. itoa36(u2.id))
process_orders()
assert_equal(1, f:count_msg_type('missing_components_list'), 'no components')
u1.aura = 12 -- 2 Aura pro Stufe
process_orders()
assert_equal(12, u1.aura)
assert_equal(1, f:count_msg_type('spellfail_astralonly'), 'astral space')
u2.region = u2.region:get_astral('fog')
process_orders()
assert_equal(0, u1.aura)
assert_equal(u1.region, u2.region)
end
function test_pull_astral()
local r = region.create(0, 0, "plain")
local f = faction.create("human")
local u1 = unit.create(f, r, 1)
local u2 = unit.create(f, r, 1)
u1.magic = "gray"
u1:set_skill("magic", 6)
u1.aura = 0
u1:add_spell("pull_astral")
u1:clear_orders()
u1:add_order("ZAUBERE Astraler~Ruf " .. itoa36(u2.id))
process_orders()
assert_equal(1, f:count_msg_type('error209'), 'syntax error')
u1:clear_orders()
u1:clear_orders()
u1:add_order("ZAUBERE Astraler~Ruf 1 0 " .. itoa36(u2.id))
process_orders()
assert_equal(0, f:count_msg_type('error209'), 'syntax error')
assert_equal(1, f:count_msg_type('error194'), 'target region')
u1:clear_orders()
u1:add_order("ZAUBERE Astraler~Ruf 0 0 " .. itoa36(u2.id))
u1.aura = 0 -- missing components
process_orders()
assert_equal(0, f:count_msg_type('error194'), 'target region')
assert_equal(1, f:count_msg_type('missing_components_list'), 'no components')
u1.aura = 12 -- 2 Aura pro Stufe
process_orders()
assert_equal(1, f:count_msg_type('spellfail_astralonly'), 'astral space')
u1.region = u1.region:get_astral('fog')
assert_equal('fog', u1.region.terrain)
process_orders()
assert_equal(0, f:count_msg_type('spellfail_astralonly'), 'astral space')
assert_equal(1, f:count_msg_type('send_astral'), 'astral space')
assert_equal(u1.region, u2.region)
end

View file

@ -1,6 +1,7 @@
require 'tests.e2.astral'
require 'tests.e2.spells'
require 'tests.e2.e2features'
require 'tests.e2.insects'
require 'tests.e2.spells'
require 'tests.e2.buildings'
require 'tests.e2.production'
require 'tests.e2.adamantium'
@ -12,6 +13,7 @@ require 'tests.e2.guard'
require 'tests.e2.stealth'
require 'tests.e2.items'
require 'tests.e2.ships'
require 'tests.config'
require 'tests.items'
require 'tests.economy'
require 'tests.orders'

View file

@ -9,6 +9,7 @@ function setup()
eressea.settings.set("rules.ship.storms", "0")
eressea.settings.set("rules.encounters", "0")
eressea.settings.set("magic.regeneration.enable", "0")
eressea.settings.set("rules.grow.formula", "0")
eressea.settings.set("study.random_progress", "0")
end

View file

@ -41,6 +41,11 @@ function test_build_watch()
u:add_order("MACHE Wache")
process_orders()
assert_not_nil(u.building)
if 5 ~= u.building.size then
for k,v in f.messages do
print(v)
end
end
assert_equal(5, u.building.size)
u:set_skill("building", 2)

View file

@ -1,5 +1,4 @@
-- new tests 2014-06-11
require 'tests.config'
require 'tests.faction'
require 'tests.locale'
require 'tests.movement'

View file

@ -8,6 +8,7 @@ function setup()
eressea.settings.set("NewbieImmunity", "0")
eressea.settings.set("rules.food.flags", "4")
eressea.settings.set("rules.encounters", "0")
eressea.settings.set("magic.fumble.enable", "0")
eressea.settings.set("magic.regeneration.enable", "0")
end
@ -21,7 +22,7 @@ function test_create_bogus()
u:clear_orders()
u:add_order("ZAUBERE 'Erschaffe Katastrophe'")
process_orders()
assert_equal(f.messages[3], 'error173') -- HACKity HACK
assert_equal(1, f:count_msg_type('error173'), 'spell not found')
end
function test_create_roi()

View file

@ -39,6 +39,7 @@ without prior permission by the authors of Eressea.
#include <tolua.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct helpmode {

View file

@ -8,6 +8,7 @@
#include "bind_building.h"
#include "chaos.h"
#include "teleport.h"
#include <kernel/calendar.h>
#include <kernel/config.h>
@ -561,6 +562,24 @@ static int tolua_region_getkey(lua_State * L)
return 1;
}
static int tolua_region_getastral(lua_State * L)
{
region *r = (region *)tolua_tousertype(L, 1, 0);
region *rt = r_standard_to_astral(r);
if (!rt) {
const char *tname = tolua_tostring(L, 2, 0);
plane *pl = get_astralplane();
rt = new_region(real2tp(r->x), real2tp(r->y), pl, 0);
if (tname) {
const terrain_type *terrain = get_terrain(tname);
terraform_region(rt, terrain);
}
}
tolua_pushusertype(L, rt, TOLUA_CAST "region");
return 1;
}
static int tolua_region_setkey(lua_State * L)
{
region *self = (region *)tolua_tousertype(L, 1, 0);
@ -772,6 +791,8 @@ void tolua_region_open(lua_State * L)
tolua_variable(L, TOLUA_CAST "owner", &tolua_region_get_owner,
&tolua_region_set_owner);
tolua_function(L, TOLUA_CAST "get_astral", tolua_region_getastral);
tolua_function(L, TOLUA_CAST "get_key", tolua_region_getkey);
tolua_function(L, TOLUA_CAST "set_key", tolua_region_setkey);
}

View file

@ -17,6 +17,7 @@
#include <kernel/building.h>
#include <kernel/config.h>
#include <kernel/curse.h>
#include "kernel/equipment.h"
#include <kernel/faction.h>
#include <kernel/group.h>
#include <kernel/item.h>
@ -962,6 +963,16 @@ static int tolua_event_get(lua_State * L)
return 0;
}
static int tolua_equipunit(lua_State * L)
{
unit *u = (unit *)tolua_tousertype(L, 1, 0);
const char *eqname = tolua_tostring(L, 2, 0);
int mask = (int)tolua_tonumber(L, 3, EQUIP_ALL);
assert(u && mask > 0);
equip_unit_mask(u, eqname, mask);
return 0;
}
void tolua_unit_open(lua_State * L)
{
/* register user types */
@ -1062,6 +1073,7 @@ void tolua_unit_open(lua_State * L)
tolua_variable(L, TOLUA_CAST "hp_max", tolua_unit_get_hpmax, 0);
tolua_variable(L, TOLUA_CAST "aura_max", tolua_unit_get_auramax, 0);
tolua_function(L, TOLUA_CAST "equip", tolua_equipunit);
tolua_function(L, TOLUA_CAST "show", tolua_bufunit);
}
tolua_endmodule(L);

View file

@ -9,7 +9,6 @@
#include "kernel/alliance.h"
#include "kernel/building.h"
#include "kernel/curse.h"
#include "kernel/equipment.h"
#include "kernel/unit.h"
#include "kernel/terrain.h"
#include "kernel/messages.h"
@ -24,6 +23,7 @@
#include "kernel/save.h"
#include "kernel/spell.h"
#include "kernel/spellbook.h"
#include "races/races.h"
#include "bind_unit.h"
#include "bind_storage.h"
@ -47,7 +47,6 @@
#include "monsters.h"
#include "market.h"
#include <modules/autoseed.h>
#include <modules/score.h>
#include <attributes/key.h>
@ -154,25 +153,6 @@ int tolua_itemlist_next(lua_State * L)
return 0;
}
static int tolua_autoseed(lua_State * L)
{
const char *filename = tolua_tostring(L, 1, 0);
int new_island = tolua_toboolean(L, 2, 0);
newfaction *players = read_newfactions(filename);
if (players != NULL) {
while (players) {
int n = listlen(players);
int k = (n + ISLANDSIZE - 1) / ISLANDSIZE;
k = n / k;
n = autoseed(&players, k, new_island ? 0 : TURNS_PER_ISLAND);
if (n == 0) {
break;
}
}
}
return 0;
}
static int tolua_getkey(lua_State * L)
{
const char *name = tolua_tostring(L, 1, 0);
@ -413,33 +393,6 @@ static int tolua_get_nmrs(lua_State * L)
return 1;
}
static int tolua_equipunit(lua_State * L)
{
unit *u = (unit *)tolua_tousertype(L, 1, 0);
const char *eqname = tolua_tostring(L, 2, 0);
int mask = (int)tolua_tonumber(L, 3, EQUIP_ALL);
assert(u && mask > 0);
equip_unit_mask(u, get_equipment(eqname), mask);
return 0;
}
static int tolua_equipment_setitem(lua_State * L)
{
int result = -1;
const char *eqname = tolua_tostring(L, 1, 0);
const char *iname = tolua_tostring(L, 2, 0);
const char *value = tolua_tostring(L, 3, 0);
if (iname != NULL) {
const struct item_type *itype = it_find(iname);
if (itype != NULL) {
equipment_setitem(get_or_create_equipment(eqname), itype, value);
result = 0;
}
}
lua_pushinteger(L, result);
return 1;
}
static int tolua_spawn_braineaters(lua_State * L)
{
float chance = (float)tolua_tonumber(L, 1, 0);
@ -476,22 +429,17 @@ static int tolua_write_reports(lua_State * L)
return 1;
}
static int tolua_process_orders(lua_State * L)
{
UNUSED_ARG(L);
#if 0
order * ord = parse_order("@GIB xmis ALLES Gurgelkraut", default_locale);
assert(ord);
free_order(ord);
return 0;
#endif
processorders();
return 0;
}
static int tolua_turn_begin(lua_State * L)
{
faction *f;
UNUSED_ARG(L);
for (f = factions; f; f = f->next) {
if (f->msgs) {
free_messagelist(f->msgs->begin);
free(f->msgs);
f->msgs = NULL;
}
}
turn_begin();
return 0;
}
@ -510,6 +458,14 @@ static int tolua_turn_end(lua_State * L)
return 0;
}
static int tolua_process_orders(lua_State * L)
{
UNUSED_ARG(L);
tolua_turn_begin(L);
tolua_turn_process(L);
return tolua_turn_end(L);
}
static int tolua_write_passwords(lua_State * L)
{
int result = writepasswd();
@ -890,8 +846,13 @@ static int init_data(const char *filename)
return 0;
}
static int tolua_equip_newunits(lua_State * L) {
unit *u = (unit *)tolua_tousertype(L, 1, 0);
equip_newunits(u);
return 0;
}
int tolua_read_xml(lua_State * L)
static int tolua_read_xml(lua_State * L)
{
const char *filename = tolua_tostring(L, 1, "config.xml");
lua_pushinteger(L, init_data(filename));
@ -1053,8 +1014,6 @@ int tolua_bindings_open(lua_State * L, const dictionary *inifile)
tolua_function(L, TOLUA_CAST "set_turn", &tolua_set_turn);
tolua_function(L, TOLUA_CAST "get_turn", &tolua_get_turn);
tolua_function(L, TOLUA_CAST "get_season", tolua_get_season);
tolua_function(L, TOLUA_CAST "equipment_setitem", tolua_equipment_setitem);
tolua_function(L, TOLUA_CAST "equip_unit", tolua_equipunit);
tolua_function(L, TOLUA_CAST "atoi36", tolua_atoi36);
tolua_function(L, TOLUA_CAST "itoa36", tolua_itoa36);
tolua_function(L, TOLUA_CAST "dice_roll", tolua_dice_rand);
@ -1065,12 +1024,12 @@ int tolua_bindings_open(lua_State * L, const dictionary *inifile)
tolua_function(L, TOLUA_CAST "update_owners", tolua_update_owners);
tolua_function(L, TOLUA_CAST "learn_skill", tolua_learn_skill);
tolua_function(L, TOLUA_CAST "create_curse", tolua_create_curse);
tolua_function(L, TOLUA_CAST "autoseed", tolua_autoseed);
tolua_function(L, TOLUA_CAST "get_key", tolua_getkey);
tolua_function(L, TOLUA_CAST "set_key", tolua_setkey);
tolua_function(L, TOLUA_CAST "translate", &tolua_translate);
tolua_function(L, TOLUA_CAST "spells", tolua_get_spells);
tolua_function(L, TOLUA_CAST "read_xml", tolua_read_xml);
tolua_function(L, TOLUA_CAST "equip_newunits", tolua_equip_newunits);
} tolua_endmodule(L);
return 1;
}

View file

@ -263,7 +263,7 @@ void add_recruits(unit * u, int number, int wanted)
len = snprintf(equipment, sizeof(equipment), "new_%s", u_race(u)->_name);
if (len > 0 && (size_t)len < sizeof(equipment)) {
equip_unit(unew, get_equipment(equipment));
equip_unit(unew, equipment);
}
if (unew != u) {
transfermen(unew, u, unew->number);

View file

@ -162,6 +162,36 @@ static void push_param(lua_State * L, char c, spllprm * param)
}
}
/** callback to use lua functions isntead of equipment */
static bool lua_equipunit(unit *u, const char *eqname, int mask) {
lua_State *L = (lua_State *)global.vm_state;
bool result = false;
static bool disabled = false;
if (disabled) {
return false;
}
lua_getglobal(L, "equip_unit");
if (lua_isfunction(L, -1)) {
tolua_pushusertype(L, u, TOLUA_CAST "unit");
lua_pushstring(L, eqname);
lua_pushinteger(L, mask);
if (lua_pcall(L, 3, 1, 0) != 0) {
const char *error = lua_tostring(L, -1);
log_error("equip(%s) with '%s/%d': %s.\n", unitname(u), eqname, mask, error);
lua_pop(L, 1);
}
else {
result = (bool)lua_toboolean(L, -1);
lua_pop(L, 1);
}
}
else {
disabled = true;
}
return result;
}
/** callback to use lua for spell functions */
static int lua_callspell(castorder * co, const char *fname)
{
@ -346,6 +376,7 @@ void register_tolua_helpers(void)
at_register(&at_direction);
at_deprecate("lcbuilding", building_action_read);
callbacks.equip_unit = lua_equipunit;
callbacks.cast_spell = lua_callspell;
callbacks.use_item = use_item_callback;
callbacks.produce_resource = produce_resource_lua;

View file

@ -4,7 +4,8 @@
#include "calendar.h"
#include "move.h" /* storms */
#include <kernel/config.h>
#include "kernel/config.h"
#include "util/log.h"
#include <assert.h>
#include <stdlib.h>
@ -45,6 +46,10 @@ const gamedate *get_gamedate(int turn_now, gamedate * gd)
int t = turn_now - first_turn();
assert(gd);
if (t<0) {
log_fatal("current turn %d is before first %d",
turn_now, first_turn());
}
assert(t>=0);
gd->turn = turn_now;

View file

@ -19,6 +19,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#ifndef H_KRNL_CALLBACKS_H
#define H_KRNL_CALLBACKS_H
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
@ -31,6 +33,7 @@ extern "C" {
struct resource_type;
struct callback_struct {
bool (*equip_unit)(struct unit *u, const char *eqname, int mask);
int (*cast_spell)(struct castorder *co, const char *fname);
int (*use_item)(struct unit *u, const struct item_type *itype,
int amount, struct order *ord);

View file

@ -21,11 +21,12 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "equipment.h"
/* kernel includes */
#include "item.h"
#include "unit.h"
#include "callbacks.h"
#include "faction.h"
#include "item.h"
#include "race.h"
#include "spell.h"
#include "unit.h"
/* util includes */
#include <selist.h>
@ -88,80 +89,90 @@ equipment_setitem(equipment * eq, const item_type * itype, const char *value)
}
void
equipment_setcallback(struct equipment *eq,
void(*callback) (const struct equipment *, struct unit *))
equipment_setcallback(struct equipment *eq, equip_callback_fun callback)
{
eq->callback = callback;
}
void equip_unit(struct unit *u, const struct equipment *eq)
bool equip_unit(struct unit *u, const char *eqname)
{
equip_unit_mask(u, eq, EQUIP_ALL);
return equip_unit_mask(u, eqname, EQUIP_ALL);
}
void equip_unit_mask(struct unit *u, const struct equipment *eq, int mask)
bool equip_unit_mask(struct unit *u, const char *eqname, int mask)
{
const equipment * eq = get_equipment(eqname);
if (eq) {
equip_unit_set(u, eq, mask);
return true;
}
if (callbacks.equip_unit) {
return callbacks.equip_unit(u, eqname, mask);
}
return false;
}
if (mask & EQUIP_SKILLS) {
int sk;
for (sk = 0; sk != MAXSKILLS; ++sk) {
if (eq->skills[sk] != NULL) {
int i = dice_rand(eq->skills[sk]);
if (i > 0) {
set_level(u, (skill_t)sk, i);
if (sk == SK_STAMINA) {
u->hp = unit_max_hp(u) * u->number;
}
}
}
}
}
if (mask & EQUIP_SPELLS) {
if (eq->spells) {
selist * ql = eq->spells;
int qi;
sc_mage * mage = get_mage_depr(u);
for (qi = 0; ql; selist_advance(&ql, &qi, 1)) {
lazy_spell *sbe = (lazy_spell *)selist_get(ql, qi);
spell *sp = spellref_get(sbe->spref);
unit_add_spell(u, mage, sp, sbe->level);
}
}
}
if (mask & EQUIP_ITEMS) {
itemdata *idata;
for (idata = eq->items; idata != NULL; idata = idata->next) {
int i = u->number * dice_rand(idata->value);
void equip_unit_set(struct unit *u, const equipment *eq, int mask)
{
if (mask & EQUIP_SKILLS) {
int sk;
for (sk = 0; sk != MAXSKILLS; ++sk) {
if (eq->skills[sk] != NULL) {
int i = dice_rand(eq->skills[sk]);
if (i > 0) {
i_add(&u->items, i_new(idata->itype, i));
}
}
}
if (eq->subsets) {
int i;
for (i = 0; eq->subsets[i].sets; ++i) {
if (chance(eq->subsets[i].chance)) {
double rnd = (1 + rng_int() % 1000) / 1000.0;
int k;
for (k = 0; eq->subsets[i].sets[k].set; ++k) {
if (rnd <= eq->subsets[i].sets[k].chance) {
equip_unit_mask(u, eq->subsets[i].sets[k].set, mask);
break;
}
rnd -= eq->subsets[i].sets[k].chance;
set_level(u, (skill_t)sk, i);
if (sk == SK_STAMINA) {
u->hp = unit_max_hp(u) * u->number;
}
}
}
}
}
if (mask & EQUIP_SPECIAL) {
if (eq->callback)
eq->callback(eq, u);
if (mask & EQUIP_SPELLS) {
if (eq->spells) {
selist * ql = eq->spells;
int qi;
sc_mage * mage = get_mage_depr(u);
for (qi = 0; ql; selist_advance(&ql, &qi, 1)) {
lazy_spell *sbe = (lazy_spell *)selist_get(ql, qi);
spell *sp = spellref_get(sbe->spref);
unit_add_spell(u, mage, sp, sbe->level);
}
}
}
if (eq->items && mask & EQUIP_ITEMS) {
itemdata *idata;
for (idata = eq->items; idata != NULL; idata = idata->next) {
int i = u->number * dice_rand(idata->value);
if (i > 0) {
i_add(&u->items, i_new(idata->itype, i));
}
}
}
if (eq->subsets) {
int i;
for (i = 0; eq->subsets[i].sets; ++i) {
if (chance(eq->subsets[i].chance)) {
double rnd = (1 + rng_int() % 1000) / 1000.0;
int k;
for (k = 0; eq->subsets[i].sets[k].set; ++k) {
if (rnd <= eq->subsets[i].sets[k].chance) {
equip_unit_set(u, eq->subsets[i].sets[k].set, mask);
break;
}
rnd -= eq->subsets[i].sets[k].chance;
}
}
}
}
if (mask & EQUIP_SPECIAL) {
if (eq->callback) {
eq->callback(eq, u);
}
}
}

View file

@ -21,6 +21,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "skill.h"
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
@ -44,12 +46,14 @@ extern "C" {
subsetitem *sets;
} subset;
typedef void(*equip_callback_fun) (const struct equipment *, struct unit *);
typedef struct equipment {
struct itemdata *items;
char *skills[MAXSKILLS];
struct selist *spells;
struct subset *subsets;
void(*callback) (const struct equipment *, struct unit *);
equip_callback_fun callback;
} equipment;
void equipment_done(void);
@ -64,18 +68,17 @@ extern "C" {
void equipment_setskill(struct equipment *eq, skill_t sk,
const char *value);
void equipment_addspell(struct equipment *eq, const char *name, int level);
void equipment_setcallback(struct equipment *eq,
void(*callback) (const struct equipment *, struct unit *));
void equipment_setcallback(struct equipment *eq, equip_callback_fun callback);
void equip_unit(struct unit *u, const struct equipment *eq);
#define EQUIP_SKILLS (1<<1)
#define EQUIP_SPELLS (1<<2)
#define EQUIP_ITEMS (1<<3)
#define EQUIP_SPECIAL (1<<4)
#define EQUIP_ALL (0xFF)
void equip_unit_mask(struct unit *u, const struct equipment *eq,
int mask);
void equip_items(struct item **items, const struct equipment *eq);
void equip_unit_set(struct unit *u, const struct equipment *eq, int mask);
bool equip_unit_mask(struct unit *u, const char *eqname, int mask);
bool equip_unit(struct unit *u, const char *eqname);
#ifdef __cplusplus
}

View file

@ -2,6 +2,7 @@
#include "magic.h"
#include <kernel/callbacks.h>
#include <kernel/equipment.h>
#include <kernel/item.h>
#include <kernel/unit.h>
@ -35,7 +36,7 @@ static void test_equipment(CuTest * tc)
equipment_addspell(eq, sp->sname, 1);
u = test_create_unit(test_create_faction(NULL), test_create_region(0, 0, NULL));
equip_unit_mask(u, eq, EQUIP_ALL);
equip_unit_set(u, eq, EQUIP_ALL);
CuAssertIntEquals(tc, 1, i_get(u->items, it_horses));
CuAssertIntEquals(tc, 5, get_level(u, SK_MAGIC));
@ -69,10 +70,35 @@ static void test_get_equipment(CuTest * tc)
test_teardown();
}
static bool equip_test(unit *u, const char *name, int mask) {
if (mask & EQUIP_ITEMS) {
i_change(&u->items, it_find("horse"), 1);
return true;
}
return false;
}
static void test_equipment_callback(CuTest *tc) {
unit *u;
item_type *itype;
test_setup();
itype = test_create_horse();
u = test_create_unit(test_create_faction(NULL), test_create_plain(0, 0));
CuAssertTrue(tc, !equip_unit_mask(u, "horse", EQUIP_ITEMS));
CuAssertPtrEquals(tc, NULL, u->items);
callbacks.equip_unit = equip_test;
CuAssertTrue(tc, equip_unit(u, "horse"));
CuAssertIntEquals(tc, 1, i_get(u->items, itype));
CuAssertTrue(tc, !equip_unit_mask(u, "horse", EQUIP_SPELLS));
CuAssertIntEquals(tc, 1, i_get(u->items, itype));
test_teardown();
}
CuSuite *get_equipment_suite(void)
{
CuSuite *suite = CuSuiteNew();
SUITE_ADD_TEST(suite, test_equipment);
SUITE_ADD_TEST(suite, test_get_equipment);
SUITE_ADD_TEST(suite, test_equipment_callback);
return suite;
}

View file

@ -237,7 +237,7 @@ faction *addfaction(const char *email, const char *password,
if (check_email(email) == 0) {
faction_setemail(f, email);
} else {
log_warning("Invalid email address for faction %s: %s\n", itoa36(f->no), email?email:"");
log_info("Invalid email address for faction %s: %s\n", itoa36(f->no), email?email:"");
faction_setemail(f, NULL);
}

View file

@ -363,6 +363,8 @@ race *rc_create(const char *zName)
rc->regaura = 1.0F;
rc->speed = 1.0F;
rc->battle_flags = 0;
rc->at_default = -2;
rc->df_default = -2;
if (strchr(zName, ' ') != NULL) {
log_error("race '%s' has an invalid name. remove spaces\n", zName);
assert(strchr(zName, ' ') == NULL);

View file

@ -59,6 +59,8 @@ static void test_rc_defaults(CuTest *tc) {
CuAssertIntEquals(tc, 0, rc->armor);
CuAssertIntEquals(tc, 0, rc->at_bonus);
CuAssertIntEquals(tc, 0, rc->df_bonus);
CuAssertIntEquals(tc, -2, rc->df_default);
CuAssertIntEquals(tc, -2, rc->at_default);
CuAssertIntEquals(tc, 0, rc->battle_flags);
CuAssertIntEquals(tc, PERSON_WEIGHT, rc->weight);
test_teardown();

View file

@ -1349,7 +1349,7 @@ static void fix_familiars(void) {
log_error("%s seems to be a familiar with no spells.",
unitname(u));
/* magical familiar, no spells */
equip_unit_mask(u, eq, EQUIP_SPELLS);
equip_unit_set(u, eq, EQUIP_SPELLS);
}
}
}

View file

@ -4140,13 +4140,6 @@ void turn_end(void)
update_spells();
}
void processorders(void)
{
turn_begin();
turn_process();
turn_end();
}
void update_subscriptions(void)
{
FILE *F;

View file

@ -53,7 +53,6 @@ extern "C" {
int enter_building(struct unit *u, struct order *ord, int id, bool report);
int enter_ship(struct unit *u, struct order *ord, int id, bool report);
void processorders(void);
void turn_begin(void);
void turn_process(void);
void turn_end(void);

View file

@ -1475,7 +1475,7 @@ verify_ship(region * r, unit * mage, const spell * sp, spllprm * spobj,
{
ship *sh = findship(spobj->data.i);
if (sh != NULL && sh->region != r && (sp->sptyp & SEARCHLOCAL)) {
if (sh != NULL && sh->region != r && (sp->sptyp & GLOBALTARGET) == 0) {
/* Burg muss in gleicher Region sein */
sh = NULL;
}
@ -1498,7 +1498,7 @@ verify_building(region * r, unit * mage, const spell * sp, spllprm * spobj,
{
building *b = findbuilding(spobj->data.i);
if (b != NULL && b->region != r && (sp->sptyp & SEARCHLOCAL)) {
if (b != NULL && b->region != r && (sp->sptyp & GLOBALTARGET) == 0) {
/* Burg muss in gleicher Region sein */
b = NULL;
}
@ -1552,14 +1552,15 @@ verify_unit(region * r, unit * mage, const spell * sp, spllprm * spobj,
default:
assert(!"shouldn't happen, this");
}
if (u != NULL && (sp->sptyp & SEARCHLOCAL)) {
if (u->region != r)
u = NULL;
else if (sp->sptyp & TESTCANSEE) {
if (u != NULL) {
if (u->region == r) {
if (!cansee(mage->faction, r, u, 0) && !ucontact(u, mage)) {
u = NULL;
}
}
else if ((sp->sptyp & GLOBALTARGET) == 0) {
u = NULL;
}
}
if (u == NULL) {
@ -1819,12 +1820,12 @@ static int addparam_building(const char *const param[], spllprm ** spobjp)
static int
addparam_region(const char *const param[], spllprm ** spobjp, const unit * u,
order * ord)
order * ord, message **err)
{
assert(param[0]);
if (param[1] == 0) {
if (param[1] == NULL) {
/* Fehler: Zielregion vergessen */
cmistake(u, ord, 194, MSG_MAGIC);
*err = msg_error(u, ord, 194);
return -1;
}
else {
@ -1846,7 +1847,7 @@ addparam_region(const char *const param[], spllprm ** spobjp, const unit * u,
}
else {
/* Fehler: Zielregion vergessen */
cmistake(u, ord, 194, MSG_MAGIC);
*err = msg_error(u, ord, 194);
return -1;
}
return 2;
@ -1855,7 +1856,7 @@ addparam_region(const char *const param[], spllprm ** spobjp, const unit * u,
static int
addparam_unit(const char *const param[], spllprm ** spobjp, const unit * u,
order * ord)
order * ord, message **err)
{
spllprm *spobj;
int i = 0;
@ -1865,7 +1866,7 @@ addparam_unit(const char *const param[], spllprm ** spobjp, const unit * u,
if (isparam(param[0], u->faction->locale, P_TEMP)) {
if (param[1] == NULL) {
/* Fehler: Ziel vergessen */
cmistake(u, ord, 203, MSG_MAGIC);
*err = msg_error(u, ord, 203);
return -1;
}
++i;
@ -1883,7 +1884,7 @@ addparam_unit(const char *const param[], spllprm ** spobjp, const unit * u,
static spellparameter *add_spellparameter(region * target_r, unit * u,
const char *syntax, const char *const param[], int size, struct order *ord)
{
bool fail = false;
struct message *err = NULL;
int i = 0;
int p = 0;
const char *c;
@ -1919,7 +1920,7 @@ static spellparameter *add_spellparameter(region * target_r, unit * u,
}
par->param = malloc(size * sizeof(spllprm *));
while (!fail && *c && i < size && param[i] != NULL) {
while (!err && *c && i < size && param[i] != NULL) {
spllprm *spobj = NULL;
int j = -1;
switch (*c) {
@ -1938,12 +1939,14 @@ static spellparameter *add_spellparameter(region * target_r, unit * u,
break;
case 'u':
/* Parameter ist eine Einheit, evtl. TEMP */
j = addparam_unit(param + i, &spobj, u, ord);
j = addparam_unit(param + i, &spobj, u, ord, &err);
++c;
break;
case 'r':
/* Parameter sind zwei Regionskoordinaten innerhalb der "normalen" Plane */
j = addparam_region(param + i, &spobj, u, ord);
if (i + 1 < size) {
j = addparam_region(param + i, &spobj, u, ord, &err);
}
++c;
break;
case 'b':
@ -1977,7 +1980,7 @@ static spellparameter *add_spellparameter(region * target_r, unit * u,
break;
case P_UNIT:
if (i < size) {
j = addparam_unit(param + i, &spobj, u, ord);
j = addparam_unit(param + i, &spobj, u, ord, &err);
++c;
}
break;
@ -2003,8 +2006,10 @@ static spellparameter *add_spellparameter(region * target_r, unit * u,
j = -1;
break;
}
if (j < 0)
fail = true;
if (j < 0 && !err) {
/* syntax error */
err = msg_error(u, ord, 209);
}
else {
if (spobj != NULL)
par->param[p++] = spobj;
@ -2012,14 +2017,18 @@ static spellparameter *add_spellparameter(region * target_r, unit * u,
}
}
/* im Endeffekt waren es evtl. nur p parameter (wegen TEMP) */
/* im Endeffekt waren es evtl. nur p parameter (weniger weil TEMP nicht gilt) */
par->length = p;
if (fail || par->length < minlen) {
cmistake(u, ord, 209, MSG_MAGIC);
free_spellparameter(par);
return NULL;
}
if (!err && p < minlen) {
/* syntax error */
err = msg_error(u, ord, 209);
}
if (err) {
ADDMSG(&u->faction->msgs, err);
free_spellparameter(par);
par = NULL;
}
return par;
}
@ -2172,18 +2181,13 @@ void remove_familiar(unit * mage)
void create_newfamiliar(unit * mage, unit * fam)
{
/* skills and spells: */
const struct equipment *eq;
char eqname[64];
const race *rc = u_race(fam);
set_familiar(mage, fam);
snprintf(eqname, sizeof(eqname), "fam_%s", rc->_name);
eq = get_equipment(eqname);
if (eq != NULL) {
equip_unit(fam, eq);
}
else {
if (!equip_unit(fam, eqname)) {
log_info("could not perform initialization for familiar %s.\n", rc->_name);
}
/* TODO: Diese Attribute beim Tod des Familiars entfernen: */
@ -2390,8 +2394,9 @@ unit *get_clone(const unit * u)
attrib *a = a_find(u->attribs, &at_clone);
if (a != NULL) {
unit *uc = (unit *)a->data.v;
if (uc->number > 0)
if (uc->number > 0) {
return uc;
}
}
return NULL;
}
@ -2400,7 +2405,7 @@ static bool is_moving_ship(ship * sh)
{
const unit *u = ship_owner(sh);
if (u)
if (u) {
switch (getkeyword(u->thisorder)) {
case K_ROUTE:
case K_MOVE:
@ -2409,9 +2414,11 @@ static bool is_moving_ship(ship * sh)
default:
return false;
}
}
return false;
}
#define MAX_PARAMETERS 32
static castorder *cast_cmd(unit * u, order * ord)
{
char token[128];
@ -2612,33 +2619,25 @@ static castorder *cast_cmd(unit * u, order * ord)
}
/* Weitere Argumente zusammenbasteln */
if (sp->parameter) {
char **params = (char**)malloc(2 * sizeof(char *));
int p = 0, size = 2;
for (;;) {
char *params[MAX_PARAMETERS];
int i, p;
for (p = 0; p != MAX_PARAMETERS; ++p) {
s = gettoken(token, sizeof(token));
if (!s || *s == 0)
if (!s || *s == 0) {
break;
if (p + 1 >= size) {
char ** tmp;
tmp = (char**)realloc(params, sizeof(char *) * size * 2);
if (tmp) {
size *= 2;
params = tmp;
}
else {
log_error("error allocationg %d bytes: %s", size * 2, strerror(errno));
break;
}
}
params[p++] = str_strdup(s);
params[p] = str_strdup(s);
}
if (p == MAX_PARAMETERS) {
log_error("%s: MAX_PARAMETERS (%d) too small to CAST %s, parsing stopped early.",
unitname(u), MAX_PARAMETERS, sp->sname);
}
params[p] = 0;
args =
add_spellparameter(target_r, caster, sp->parameter,
(const char *const *)params, p, ord);
for (p = 0; params[p]; ++p)
free(params[p]);
free(params);
for (i = 0; i != p; ++i) {
free(params[i]);
}
if (args == NULL) {
/* Syntax war falsch */
return 0;

View file

@ -174,7 +174,7 @@ extern "C" {
#define NOTFAMILIARCAST (1<<12)
#define TESTRESISTANCE (1<<13) /* alle Zielobjekte (u, s, b, r) auf
Magieresistenz prüfen */
#define SEARCHLOCAL (1<<14) /* Ziel muss in der target_region sein */
#define GLOBALTARGET (1<<14) /* Ziel muss in der target_region sein */
#define TESTCANSEE (1<<15) /* alle Zielunits auf cansee prüfen */
#define ANYTARGET (UNITSPELL|REGIONSPELL|BUILDINGSPELL|SHIPSPELL) /* wirkt auf alle objekttypen (unit, ship, building, region) */

View file

@ -612,7 +612,7 @@ static void recruit_dracoids(unit * dragon, int size)
name_unit(un);
change_money(dragon, -un->number * 50);
equip_unit(un, get_equipment("new_dracoid"));
equip_unit(un, "new_dracoid");
unit_setstatus(un, ST_FIGHT);
for (weapon = un->items; weapon; weapon = weapon->next) {
@ -864,7 +864,7 @@ static int nrand(int start, int sub)
unit *spawn_seaserpent(region *r, faction *f) {
unit *u = create_unit(r, f, 1, get_race(RC_SEASERPENT), 0, NULL, NULL);
fset(u, UFL_ISNEW | UFL_MOVED);
equip_unit(u, get_equipment("seed_seaserpent"));
equip_unit(u, "seed_seaserpent");
return u;
}
@ -903,7 +903,7 @@ void spawn_dragons(void)
u = create_unit(r, monsters, nrand(30, 20) + 1, get_race(RC_DRAGON), 0, NULL, NULL);
}
fset(u, UFL_ISNEW | UFL_MOVED);
equip_unit(u, get_equipment("seed_dragon"));
equip_unit(u, "seed_dragon");
log_debug("spawning %d %s in %s.\n", u->number,
LOC(default_locale,
@ -965,7 +965,7 @@ void spawn_undead(void)
fset(u, UFL_ISNEW | UFL_MOVED);
if ((rc == get_race(RC_SKELETON) || rc == get_race(RC_ZOMBIE))
&& rng_int() % 10 < 4) {
equip_unit(u, get_equipment("rising_undead"));
equip_unit(u, "rising_undead");
}
for (i = 0; i < MAXSKILLS; i++) {

View file

@ -12,7 +12,6 @@
#include "races.h"
#include <kernel/building.h>
#include <kernel/equipment.h>
#include <kernel/faction.h>
#include <kernel/item.h>
#include <kernel/pathfinder.h>
@ -36,7 +35,7 @@ void age_skeleton(struct unit *u);
void age_zombie(struct unit *u);
void age_ghoul(struct unit *u);
static void equip_newunits(const struct equipment *eq, struct unit *u)
void equip_newunits(struct unit *u)
{
struct region *r = u->region;
const struct resource_type *rtype;
@ -81,8 +80,6 @@ static void equip_newunits(const struct equipment *eq, struct unit *u)
* in die jeweilige Rassendefiniton eingebunden */
void register_races(void)
{
register_function((pf_generic)equip_newunits, "equip_newunits");
/* function age for race->age() */
register_function((pf_generic)age_undead, "age_undead");
register_function((pf_generic)age_skeleton, "age_skeleton");

View file

@ -18,6 +18,7 @@ extern "C" {
void register_races(void);
void make_undead_unit(struct unit *);
void equip_newunits(struct unit *u);
#ifdef __cplusplus
}

View file

@ -265,7 +265,7 @@ static void get_villagers(region * r, unit * u)
u);
leave(newunit, true);
fset(newunit, UFL_ISNEW | UFL_MOVED);
equip_unit(newunit, get_equipment("rand_villagers"));
equip_unit(newunit, "rand_villagers");
}
static void get_allies(region * r, unit * u)
@ -352,7 +352,7 @@ static void get_allies(region * r, unit * u)
newunit =
create_unit(r, u->faction, number, u->faction->race, 0,
LOC(u->faction->locale, name), u);
equip_unit(newunit, get_equipment(equip));
equip_unit(newunit, equip);
u_setfaction(newunit, u->faction);
set_racename(&newunit->attribs, get_racename(u->attribs));

View file

@ -5311,7 +5311,7 @@ int sp_fetchastral(castorder * co)
{
int n;
unit *mage = co->magician.u;
int cast_level = co->level;
int cast_level = 0;
spellparameter *pa = co->par;
double power = co->force;
int remaining_cap = (int)((power - 3) * 1500);
@ -5343,6 +5343,7 @@ int sp_fetchastral(castorder * co)
"spellfail_astralonly", ""));
continue;
}
if (rtl != NULL)
free_regionlist(rtl);
rtl = astralregions(u->region, NULL);
@ -5359,6 +5360,7 @@ int sp_fetchastral(castorder * co)
ro = u->region;
}
cast_level = co->level; /* at least one unit could have been teleported */
if (is_cursed(ro->attribs, &ct_astralblock)) {
ADDMSG(&mage->faction->msgs, msg_feedback(mage, co->order,
"spellfail_astralblock", ""));

View file

@ -181,7 +181,7 @@ void spawn_braineaters(float chance)
if (next-- == 0) {
u = create_unit(r, f, 1 + rng_int() % 10 + rng_int() % 10,
rc_brain, 0, NULL, NULL);
equip_unit(u, get_equipment("seed_braineater"));
equip_unit(u, "seed_braineater");
next = rng_int() % (int)(chance * 100);
}

View file

@ -862,28 +862,6 @@ static void add_items(equipment * eq, xmlNodeSetPtr nsetItems)
}
}
static void add_callbacks(equipment * eq, xmlNodeSetPtr nsetItems)
{
if (nsetItems != NULL && nsetItems->nodeNr > 0) {
int i;
for (i = 0; i != nsetItems->nodeNr; ++i) {
xmlNodePtr node = nsetItems->nodeTab[i];
xmlChar *propValue;
pf_generic fun;
propValue = xmlGetProp(node, BAD_CAST "name");
if (propValue != NULL) {
fun = get_function((const char *)propValue);
if (fun) {
equipment_setcallback(eq, (void(*)(const struct equipment *,
struct unit *))fun);
}
xmlFree(propValue);
}
}
}
}
static void add_spells(equipment * eq, xmlNodeSetPtr nsetItems)
{
if (nsetItems != NULL && nsetItems->nodeNr > 0) {
@ -1022,11 +1000,6 @@ static int parse_equipment(xmlDocPtr doc)
xpath->node = node;
xpathResult = xmlXPathEvalExpression(BAD_CAST "callback", xpath);
assert(!eq->callback);
add_callbacks(eq, xpathResult->nodesetval);
xmlXPathFreeObject(xpathResult);
xpathResult = xmlXPathEvalExpression(BAD_CAST "item", xpath);
assert(!eq->items);
add_items(eq, xpathResult->nodesetval);
@ -1166,11 +1139,9 @@ static int parse_spells(xmlDocPtr doc)
xmlFree(propValue);
/* level, rank and flags */
#endif
sp->rank = (char)xml_ivalue(node, "rank", -1);
sp->rank = (char)xml_ivalue(node, "rank", 0);
if (xml_bvalue(node, "los", false))
sp->sptyp |= TESTCANSEE; /* must see or have contact */
if (!xml_bvalue(node, "target_global", false))
sp->sptyp |= SEARCHLOCAL; /* must be in same region */
if (xml_bvalue(node, "ship", false))
sp->sptyp |= ONSHIPCAST;
if (xml_bvalue(node, "ocean", false))
@ -1180,6 +1151,8 @@ static int parse_spells(xmlDocPtr doc)
if (xml_bvalue(node, "variable", false))
sp->sptyp |= SPELLLEVEL;
if (xml_bvalue(node, "globaltarget", false))
sp->sptyp |= GLOBALTARGET; /* target need not be in same region */
if (xml_bvalue(node, "buildingtarget", false))
sp->sptyp |= BUILDINGSPELL;
if (xml_bvalue(node, "shiptarget", false))
@ -1324,8 +1297,8 @@ static int parse_races(xmlDocPtr doc)
}
}
rc->at_default = (char)xml_ivalue(node, "unarmedattack", -2);
rc->df_default = (char)xml_ivalue(node, "unarmeddefense", -2);
rc->at_default = (char)xml_ivalue(node, "unarmedattack", rc->at_default);
rc->df_default = (char)xml_ivalue(node, "unarmeddefense", rc->df_default);
rc->at_bonus = (char)xml_ivalue(node, "attackmodifier", rc->at_bonus);
rc->df_bonus = (char)xml_ivalue(node, "defensemodifier", rc->df_bonus);
@ -1355,7 +1328,7 @@ static int parse_races(xmlDocPtr doc)
rc->flags |= RCF_WALK;
if (!xml_bvalue(node, "canlearn", true))
rc->flags |= RCF_NOLEARN;
if (!xml_bvalue(node, "canteach", true))
if (!xml_bvalue(node, "teach", true))
rc->flags |= RCF_NOTEACH;
if (xml_bvalue(node, "horse", false))
rc->flags |= RCF_HORSE;
@ -1464,13 +1437,7 @@ static int parse_races(xmlDocPtr doc)
assert(propValue != NULL);
frc = rc_get_or_create((const char *)propValue);
frc->flags |= RCF_FAMILIAR;
if (xml_bvalue(node, "default", false)) {
rc->familiars[k] = rc->familiars[0];
rc->familiars[0] = frc;
}
else {
rc->familiars[k] = frc;
}
rc->familiars[k] = frc;
xmlFree(propValue);
}
else {