forked from github/server
set age_unit and name_unit funpointers in rc_create.
no more <function/> in XML races. rename juju-zombie => juju.
This commit is contained in:
parent
7e4b0ac717
commit
bfb5a9b692
|
@ -2379,19 +2379,19 @@
|
||||||
<text locale="en">ghoul</text>
|
<text locale="en">ghoul</text>
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
<string name="juju-zombie">
|
<string name="juju">
|
||||||
<text locale="de">Juju-Zombie</text>
|
<text locale="de">Juju-Zombie</text>
|
||||||
<text locale="en">juju-zombie</text>
|
<text locale="en">juju-zombie</text>
|
||||||
</string>
|
</string>
|
||||||
<string name="juju-zombie_p">
|
<string name="juju_p">
|
||||||
<text locale="de">Juju-Zombies</text>
|
<text locale="de">Juju-Zombies</text>
|
||||||
<text locale="en">juju-zombies</text>
|
<text locale="en">juju-zombies</text>
|
||||||
</string>
|
</string>
|
||||||
<string name="juju-zombie_d">
|
<string name="juju_d">
|
||||||
<text locale="de">Juju-Zombies</text>
|
<text locale="de">Juju-Zombies</text>
|
||||||
<text locale="en">juju-zombies</text>
|
<text locale="en">juju-zombies</text>
|
||||||
</string>
|
</string>
|
||||||
<string name="juju-zombie_x">
|
<string name="juju_x">
|
||||||
<text locale="de">Juju-Zombie</text>
|
<text locale="de">Juju-Zombie</text>
|
||||||
<text locale="en">juju-zombie</text>
|
<text locale="en">juju-zombie</text>
|
||||||
</string>
|
</string>
|
||||||
|
|
|
@ -1912,10 +1912,10 @@
|
||||||
<string name="zombie">
|
<string name="zombie">
|
||||||
<text locale="fr">zombie</text>
|
<text locale="fr">zombie</text>
|
||||||
</string>
|
</string>
|
||||||
<string name="juju-zombie_p">
|
<string name="juju_p">
|
||||||
<text locale="fr">zombies juju</text>
|
<text locale="fr">zombies juju</text>
|
||||||
</string>
|
</string>
|
||||||
<string name="juju-zombie">
|
<string name="juju">
|
||||||
<text locale="fr">zombie juju</text>
|
<text locale="fr">zombie juju</text>
|
||||||
</string>
|
</string>
|
||||||
<string name="ghoul_p">
|
<string name="ghoul_p">
|
||||||
|
|
|
@ -415,7 +415,6 @@
|
||||||
</race>
|
</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.000000" regaura="0.000000" weight="500" capacity="540" speed="1.0" hp="25" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||||
<ai splitsize="5000"/>
|
<ai splitsize="5000"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<skill name="crossbow" modifier="-99"/>
|
<skill name="crossbow" modifier="-99"/>
|
||||||
<skill name="mining" modifier="-99"/>
|
<skill name="mining" modifier="-99"/>
|
||||||
<skill name="bow" modifier="-99"/>
|
<skill name="bow" modifier="-99"/>
|
||||||
|
@ -588,7 +587,6 @@
|
||||||
</race>
|
</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.0" regaura="1.0" weight="100" capacity="540" speed="1.0" hp="20" damage="0d0" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" invinciblenonmagic="yes">
|
||||||
<ai splitsize="500" killpeasants="yes" moverandom="yes" learn="yes"/>
|
<ai splitsize="500" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="2" damage="3d15"/>
|
<attack type="2" damage="3d15"/>
|
||||||
<attack type="3" damage="1d1"/>
|
<attack type="3" damage="1d1"/>
|
||||||
<attack type="4" damage="1d1"/>
|
<attack type="4" damage="1d1"/>
|
||||||
|
@ -643,19 +641,16 @@
|
||||||
</race>
|
</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.0" regaura="0.500000" weight="10000" capacity="2000" speed="0.000000" hp="1000" ac="12" damage="2d40" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="8" cannotmove="yes" canlearn="no" teach="no" noweapons="yes">
|
||||||
<ai splitsize="1"/>
|
<ai splitsize="1"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="4" damage="2d40"/>
|
<attack type="4" damage="2d40"/>
|
||||||
</race>
|
</race>
|
||||||
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="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.0" regaura="2.000000" weight="500" capacity="540" speed="1.0" hp="150" ac="4" damage="2d5" unarmedattack="0" unarmeddefense="0" attackmodifier="11" defensemodifier="13" scarepeasants="yes" walk="yes" teach="no" desert="yes">
|
||||||
<ai splitsize="50" killpeasants="yes" moverandom="yes" learn="yes"/>
|
<ai splitsize="50" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="4" damage="2d4"/>
|
<attack type="4" damage="2d4"/>
|
||||||
<attack type="2" damage="2d30"/>
|
<attack type="2" damage="2d30"/>
|
||||||
<attack type="3" damage="1d2"/>
|
<attack type="3" damage="1d2"/>
|
||||||
</race>
|
</race>
|
||||||
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="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.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="50" ac="3" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="8" defensemodifier="11" scarepeasants="yes" walk="yes" teach="no" desert="yes" recruitethereal="yes">
|
||||||
<ai splitsize="1000" killpeasants="yes" moverandom="yes" learn="yes"/>
|
<ai splitsize="1000" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="4" damage="2d3"/>
|
<attack type="4" damage="2d3"/>
|
||||||
<attack type="3" damage="1d1"/>
|
<attack type="3" damage="1d1"/>
|
||||||
</race>
|
</race>
|
||||||
|
@ -667,7 +662,6 @@
|
||||||
</race>
|
</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.0" regaura="0.100000" weight="10000" capacity="2000" speed="1.0" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
|
||||||
<ai splitsize="50"/>
|
<ai splitsize="50"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<skill name="armorer" modifier="14"/>
|
<skill name="armorer" modifier="14"/>
|
||||||
<skill name="weaponsmithing" modifier="14"/>
|
<skill name="weaponsmithing" modifier="14"/>
|
||||||
<attack type="4" damage="2d8+4"/>
|
<attack type="4" damage="2d8+4"/>
|
||||||
|
@ -683,7 +677,6 @@
|
||||||
|
|
||||||
<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.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" walk="yes" teach="no" giveperson="yes" getitem="yes" equipment="yes">
|
||||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||||
<function name="name" value="namedracoid"/>
|
|
||||||
<attack type="4" damage="1d6"/>
|
<attack type="4" damage="1d6"/>
|
||||||
<attack type="4" damage="1d6"/>
|
<attack type="4" damage="1d6"/>
|
||||||
<attack type="1" damage="1d5"/>
|
<attack type="1" damage="1d5"/>
|
||||||
|
@ -691,14 +684,12 @@
|
||||||
|
|
||||||
<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.0" regaura="0.500000" weight="5000" capacity="2500" speed="1.0" hp="50" ac="4" damage="2d4+12" unarmedattack="0" unarmeddefense="0" attackmodifier="9" defensemodifier="7" scarepeasants="yes" walk="yes" teach="no">
|
||||||
<ai splitsize="1000" moverandom="yes" learn="yes"/>
|
<ai splitsize="1000" moverandom="yes" learn="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="4" damage="2d12"/>
|
<attack type="4" damage="2d12"/>
|
||||||
<attack type="4" damage="2d12"/>
|
<attack type="4" damage="2d12"/>
|
||||||
</race>
|
</race>
|
||||||
|
|
||||||
<race name="undead" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d7" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes">
|
<race name="undead" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="20" damage="1d7" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes">
|
||||||
<ai splitsize="20000" moverandom="yes"/>
|
<ai splitsize="20000" moverandom="yes"/>
|
||||||
<function name="name" value="nameundead"/>
|
|
||||||
<attack type="4" damage="1d7"/>
|
<attack type="4" damage="1d7"/>
|
||||||
<attack type="5"/>
|
<attack type="5"/>
|
||||||
</race>
|
</race>
|
||||||
|
@ -731,7 +722,6 @@
|
||||||
|
|
||||||
<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">
|
<race name="ghast" magres="60" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="60" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="nameghoul"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -750,7 +740,6 @@
|
||||||
|
|
||||||
<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">
|
<race name="ghoul" magres="30" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="30" ac="1" damage="1d7" unarmedattack="3" unarmeddefense="3" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="nameghoul"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -766,9 +755,8 @@
|
||||||
<attack type="2" damage="1d30"/>
|
<attack type="2" damage="1d30"/>
|
||||||
</race>
|
</race>
|
||||||
|
|
||||||
<race name="juju-zombie" 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">
|
<race name="juju" magres="50" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="80" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistbash="yes" resistcut="yes" resistpierce="yes">
|
||||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="namezombie"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -785,7 +773,6 @@
|
||||||
|
|
||||||
<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">
|
<race name="zombie" magres="20" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="40" ac="1" damage="1d7" unarmedattack="2" unarmeddefense="2" attackmodifier="5" defensemodifier="5" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="namezombie"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -800,7 +787,6 @@
|
||||||
|
|
||||||
<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">
|
<race name="skeletonlord" magres="30" maxaura="1.0" regaura="1.0" weight="1000" capacity="540" speed="1.0" hp="60" ac="4" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="nameskeleton"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -816,7 +802,6 @@
|
||||||
|
|
||||||
<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">
|
<race name="skeleton" magres="10" maxaura="1.0" regaura="1.0" weight="500" capacity="540" speed="1.0" hp="20" ac="1" damage="1d7" unarmedattack="1" unarmeddefense="1" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="nameskeleton"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -831,13 +816,11 @@
|
||||||
|
|
||||||
<race name="shadowknight" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.0" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
|
<race name="shadowknight" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.0" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
|
||||||
<ai splitsize="20000" moverandom="yes"/>
|
<ai splitsize="20000" moverandom="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="1" damage="1d1"/>
|
<attack type="1" damage="1d1"/>
|
||||||
</race>
|
</race>
|
||||||
|
|
||||||
<race name="seaserpent" magres="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.0" regaura="1.0" weight="20000" capacity="5000" speed="1.0" hp="600" ac="3" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" swim="yes" teach="no" getitem="yes" resistbash="yes">
|
||||||
<ai splitsize="6" killpeasants="yes" moverandom="yes" learn="yes" moveattack="yes"/>
|
<ai splitsize="6" killpeasants="yes" moverandom="yes" learn="yes" moveattack="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<skill name="tactics" modifier="4"/>
|
<skill name="tactics" modifier="4"/>
|
||||||
<attack type="4" damage="1d30"/>
|
<attack type="4" damage="1d30"/>
|
||||||
<attack type="4" damage="1d30"/>
|
<attack type="4" damage="1d30"/>
|
||||||
|
|
|
@ -330,7 +330,6 @@
|
||||||
</race>
|
</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.000000" regaura="0.000000" weight="500" capacity="540" speed="1.000000" hp="25" damage="2d6" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
|
||||||
<ai splitsize="5000"/>
|
<ai splitsize="5000"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<skill name="alchemy" modifier="-99"/>
|
<skill name="alchemy" modifier="-99"/>
|
||||||
<skill name="crossbow" modifier="-99"/>
|
<skill name="crossbow" modifier="-99"/>
|
||||||
<skill name="mining" modifier="-99"/>
|
<skill name="mining" modifier="-99"/>
|
||||||
|
@ -581,7 +580,6 @@
|
||||||
<race name="braineater" magres="90" maxaura="1.000000"
|
<race name="braineater" magres="90" maxaura="1.000000"
|
||||||
regaura="1.000000" weight="100" capacity="540" speed="1.000000" hp="20" damage="0d0" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" invinciblenonmagic="yes">
|
regaura="1.000000" weight="100" capacity="540" speed="1.000000" hp="20" damage="0d0" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" invinciblenonmagic="yes">
|
||||||
<ai splitsize="500" killpeasants="yes" moverandom="yes" learn="yes"/>
|
<ai splitsize="500" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="2" damage="3d15"/>
|
<attack type="2" damage="3d15"/>
|
||||||
<attack type="3" damage="1d1"/>
|
<attack type="3" damage="1d1"/>
|
||||||
<attack type="4" damage="1d1"/>
|
<attack type="4" damage="1d1"/>
|
||||||
|
@ -652,19 +650,16 @@
|
||||||
</race>
|
</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.000000" regaura="0.500000" weight="10000" capacity="2000" speed="0.000000" hp="1000" ac="12" damage="2d40" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="8" cannotmove="yes" canlearn="no" teach="no" noweapons="yes">
|
||||||
<ai splitsize="1"/>
|
<ai splitsize="1"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="4" damage="2d40"/>
|
<attack type="4" damage="2d40"/>
|
||||||
</race>
|
</race>
|
||||||
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="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.000000" regaura="2.000000" weight="500" capacity="540" speed="1.000000" hp="150" ac="4" damage="2d5" unarmedattack="0" unarmeddefense="0" attackmodifier="11" defensemodifier="13" scarepeasants="yes" walk="yes" teach="no" desert="yes">
|
||||||
<ai splitsize="50" killpeasants="yes" moverandom="yes" learn="yes"/>
|
<ai splitsize="50" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="4" damage="2d4"/>
|
<attack type="4" damage="2d4"/>
|
||||||
<attack type="2" damage="2d30"/>
|
<attack type="2" damage="2d30"/>
|
||||||
<attack type="3" damage="1d2"/>
|
<attack type="3" damage="1d2"/>
|
||||||
</race>
|
</race>
|
||||||
<race name="shadowdemon" cansail="no" cansteal="no" canlearn="no" magres="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.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="50" ac="3" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="8" defensemodifier="11" scarepeasants="yes" walk="yes" teach="no" desert="yes" recruitethereal="yes">
|
||||||
<ai splitsize="1000" killpeasants="yes" moverandom="yes" learn="yes"/>
|
<ai splitsize="1000" killpeasants="yes" moverandom="yes" learn="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="4" damage="2d3"/>
|
<attack type="4" damage="2d3"/>
|
||||||
<attack type="3" damage="1d1"/>
|
<attack type="3" damage="1d1"/>
|
||||||
</race>
|
</race>
|
||||||
|
@ -676,7 +671,6 @@
|
||||||
</race>
|
</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.000000" regaura="0.100000" weight="10000" capacity="2000" speed="1.000000" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no">
|
||||||
<ai splitsize="50"/>
|
<ai splitsize="50"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<skill name="armorer" modifier="14"/>
|
<skill name="armorer" modifier="14"/>
|
||||||
<skill name="weaponsmithing" modifier="14"/>
|
<skill name="weaponsmithing" modifier="14"/>
|
||||||
<attack type="4" damage="2d8+4"/>
|
<attack type="4" damage="2d8+4"/>
|
||||||
|
@ -691,7 +685,6 @@
|
||||||
</race>
|
</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.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" walk="yes" teach="no" giveperson="yes" getitem="yes" equipment="yes">
|
||||||
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
<ai splitsize="10000" moverandom="yes" learn="yes"/>
|
||||||
<function name="name" value="namedracoid"/>
|
|
||||||
<attack type="4" damage="1d6"/>
|
<attack type="4" damage="1d6"/>
|
||||||
<attack type="4" damage="1d6"/>
|
<attack type="4" damage="1d6"/>
|
||||||
<attack type="1" damage="1d5"/>
|
<attack type="1" damage="1d5"/>
|
||||||
|
@ -705,13 +698,11 @@
|
||||||
</race>
|
</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.000000" regaura="0.500000" weight="5000" capacity="2500" speed="1.000000" hp="50" ac="4" damage="2d4+12" unarmedattack="0" unarmeddefense="0" attackmodifier="9" defensemodifier="7" scarepeasants="yes" walk="yes" teach="no">
|
||||||
<ai splitsize="1000" moverandom="yes" learn="yes"/>
|
<ai splitsize="1000" moverandom="yes" learn="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="4" damage="2d12"/>
|
<attack type="4" damage="2d12"/>
|
||||||
<attack type="4" damage="2d12"/>
|
<attack type="4" damage="2d12"/>
|
||||||
</race>
|
</race>
|
||||||
<race name="wyrm" magres="90" maxaura="1.000000" regaura="3.000000" weight="18000" capacity="1000000" speed="1.000000" hp="2700" ac="8" damage="2d60" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
|
<race name="wyrm" magres="90" maxaura="1.000000" regaura="3.000000" weight="18000" capacity="1000000" speed="1.000000" hp="2700" ac="8" damage="2d60" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="10" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
|
||||||
<ai splitsize="1" killpeasants="yes" learn="yes"/>
|
<ai splitsize="1" killpeasants="yes" learn="yes"/>
|
||||||
<function name="name" value="namedragon"/>
|
|
||||||
<skill name="magic" modifier="12"/>
|
<skill name="magic" modifier="12"/>
|
||||||
<skill name="tactics" modifier="12"/>
|
<skill name="tactics" modifier="12"/>
|
||||||
<skill name="perception" modifier="10"/>
|
<skill name="perception" modifier="10"/>
|
||||||
|
@ -722,7 +713,6 @@
|
||||||
</race>
|
</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.000000" regaura="2.000000" weight="10000" capacity="1000000" speed="1.500000" hp="900" ac="6" damage="2d30" unarmedattack="0" unarmeddefense="0" attackmodifier="7" defensemodifier="7" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes" dragon="yes">
|
||||||
<ai splitsize="2" killpeasants="yes" learn="yes"/>
|
<ai splitsize="2" killpeasants="yes" learn="yes"/>
|
||||||
<function name="name" value="namedragon"/>
|
|
||||||
<skill name="magic" modifier="8"/>
|
<skill name="magic" modifier="8"/>
|
||||||
<skill name="tactics" modifier="8"/>
|
<skill name="tactics" modifier="8"/>
|
||||||
<skill name="perception" modifier="5"/>
|
<skill name="perception" modifier="5"/>
|
||||||
|
@ -733,7 +723,6 @@
|
||||||
</race>
|
</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.000000" regaura="1.000000" weight="20000" capacity="10000" speed="1.000000" hp="300" ac="4" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
|
||||||
<ai splitsize="6" killpeasants="yes" learn="yes"/>
|
<ai splitsize="6" killpeasants="yes" learn="yes"/>
|
||||||
<function name="name" value="namedragon"/>
|
|
||||||
<skill name="magic" modifier="4"/>
|
<skill name="magic" modifier="4"/>
|
||||||
<skill name="tactics" modifier="4"/>
|
<skill name="tactics" modifier="4"/>
|
||||||
<skill name="stealth" modifier="2"/>
|
<skill name="stealth" modifier="2"/>
|
||||||
|
@ -745,7 +734,6 @@
|
||||||
</race>
|
</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">
|
<race name="undead" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d7" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes">
|
||||||
<ai splitsize="20000" moverandom="yes"/>
|
<ai splitsize="20000" moverandom="yes"/>
|
||||||
<function name="name" value="nameundead"/>
|
|
||||||
<attack type="4" damage="1d7"/>
|
<attack type="4" damage="1d7"/>
|
||||||
<attack type="5"/>
|
<attack type="5"/>
|
||||||
</race>
|
</race>
|
||||||
|
@ -997,7 +985,6 @@
|
||||||
</race>
|
</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">
|
<race name="ghast" magres="60" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="60" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="nameghoul"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -1015,7 +1002,6 @@
|
||||||
</race>
|
</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">
|
<race name="ghoul" magres="30" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="30" ac="1" damage="1d7" unarmedattack="3" unarmeddefense="3" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes">
|
||||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="nameghoul"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -1030,9 +1016,8 @@
|
||||||
<attack type="3" damage="1d2"/>
|
<attack type="3" damage="1d2"/>
|
||||||
<attack type="2" damage="1d30"/>
|
<attack type="2" damage="1d30"/>
|
||||||
</race>
|
</race>
|
||||||
<race name="juju-zombie" magres="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">
|
<race name="juju" magres="50" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="80" ac="2" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistbash="yes" resistcut="yes" resistpierce="yes">
|
||||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="namezombie"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -1048,7 +1033,6 @@
|
||||||
</race>
|
</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">
|
<race name="zombie" magres="20" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="40" ac="1" damage="1d7" unarmedattack="2" unarmeddefense="2" attackmodifier="5" defensemodifier="5" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="namezombie"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -1062,7 +1046,6 @@
|
||||||
</race>
|
</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">
|
<race name="skeletonlord" magres="30" maxaura="1.000000" regaura="1.000000" weight="1000" capacity="540" speed="1.000000" hp="60" ac="4" damage="1d7" unarmedattack="6" unarmeddefense="6" attackmodifier="8" defensemodifier="8" scarepeasants="yes" walk="yes" canlearn="no" teach="no" absorbpeasants="yes" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||||
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="2000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="nameskeleton"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -1077,7 +1060,6 @@
|
||||||
</race>
|
</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">
|
<race name="skeleton" magres="10" maxaura="1.000000" regaura="1.000000" weight="500" capacity="540" speed="1.000000" hp="20" ac="1" damage="1d7" unarmedattack="1" unarmeddefense="1" attackmodifier="6" defensemodifier="6" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noheal="yes" undead="yes" equipment="yes" resistcut="yes" resistpierce="yes">
|
||||||
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
<ai splitsize="10000" killpeasants="yes" moverandom="yes"/>
|
||||||
<function name="name" value="nameskeleton"/>
|
|
||||||
<skill name="crossbow" modifier="1"/>
|
<skill name="crossbow" modifier="1"/>
|
||||||
<skill name="bow" modifier="1"/>
|
<skill name="bow" modifier="1"/>
|
||||||
<skill name="catapult" modifier="1"/>
|
<skill name="catapult" modifier="1"/>
|
||||||
|
@ -1091,12 +1073,10 @@
|
||||||
</race>
|
</race>
|
||||||
<race name="shadowknight" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
|
<race name="shadowknight" maxaura="0.000000" regaura="0.000000" weight="1000" capacity="540" speed="1.000000" hp="1" damage="1d1" unarmedattack="0" unarmeddefense="0" attackmodifier="1" defensemodifier="1" scarepeasants="yes" walk="yes" canlearn="no" teach="no" noblock="yes">
|
||||||
<ai splitsize="20000" moverandom="yes"/>
|
<ai splitsize="20000" moverandom="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<attack type="1" damage="1d1"/>
|
<attack type="1" damage="1d1"/>
|
||||||
</race>
|
</race>
|
||||||
<race name="seaserpent" magres="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.000000" regaura="1.000000" weight="20000" capacity="5000" speed="1.000000" hp="600" ac="3" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" scarepeasants="yes" swim="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
|
||||||
<ai splitsize="6" killpeasants="yes" moverandom="yes" learn="yes" moveattack="yes"/>
|
<ai splitsize="6" killpeasants="yes" moverandom="yes" learn="yes" moveattack="yes"/>
|
||||||
<function name="name" value="namegeneric"/>
|
|
||||||
<skill name="tactics" modifier="4"/>
|
<skill name="tactics" modifier="4"/>
|
||||||
<attack type="4" damage="1d30"/>
|
<attack type="4" damage="1d30"/>
|
||||||
<attack type="4" damage="1d30"/>
|
<attack type="4" damage="1d30"/>
|
||||||
|
@ -1224,7 +1204,6 @@
|
||||||
</race>
|
</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.000000" regaura="3.000000" weight="100" capacity="100000" speed="1.000000" hp="2700" ac="10" damage="2d60" unarmedattack="0" unarmeddefense="0" attackmodifier="10" defensemodifier="12" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes">
|
||||||
<ai splitsize="1" killpeasants="yes" learn="yes"/>
|
<ai splitsize="1" killpeasants="yes" learn="yes"/>
|
||||||
<function name="name" value="namedragon"/>
|
|
||||||
<skill name="tactics" modifier="20"/>
|
<skill name="tactics" modifier="20"/>
|
||||||
<skill name="perception" modifier="20"/>
|
<skill name="perception" modifier="20"/>
|
||||||
<attack type="4" damage="5d30"/>
|
<attack type="4" damage="5d30"/>
|
||||||
|
|
|
@ -74,7 +74,7 @@ static const char *racenames[MAXRACES] = {
|
||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
NULL, NULL, NULL, NULL, NULL, "seaserpent",
|
NULL, NULL, NULL, NULL, NULL, "seaserpent",
|
||||||
"shadowknight", NULL, "skeleton", "skeletonlord", "zombie",
|
"shadowknight", NULL, "skeleton", "skeletonlord", "zombie",
|
||||||
"juju-zombie", "ghoul", "ghast", NULL, NULL, "template",
|
"juju", "ghoul", "ghast", NULL, NULL, "template",
|
||||||
"clone"
|
"clone"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -297,7 +297,7 @@ static race *rc_find_i(const char *name)
|
||||||
rc = rc->next;
|
rc = rc->next;
|
||||||
}
|
}
|
||||||
if (!rc) {
|
if (!rc) {
|
||||||
const char *rc_depr[] = { "uruk", "orc", "illusion", "template", NULL };
|
const char *rc_depr[] = { "uruk", "orc", "illusion", "template", "juju-zombie", "juju", NULL };
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; rc_depr[i]; i += 2) {
|
for (i = 0; rc_depr[i]; i += 2) {
|
||||||
if (strcmp(name, rc_depr[i]) == 0) {
|
if (strcmp(name, rc_depr[i]) == 0) {
|
||||||
|
@ -353,7 +353,11 @@ race *rc_create(const char *zName)
|
||||||
rc->next = races;
|
rc->next = races;
|
||||||
|
|
||||||
snprintf(zText, sizeof(zText), "age_%s", zName);
|
snprintf(zText, sizeof(zText), "age_%s", zName);
|
||||||
rc->age = (void(*) (struct unit *))get_function(zText);
|
rc->age_unit = (race_func)get_function(zText);
|
||||||
|
|
||||||
|
snprintf(zText, sizeof(zText), "name_%s", zName);
|
||||||
|
rc->name_unit = (race_func)get_function(zText);
|
||||||
|
|
||||||
return races = rc;
|
return races = rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -553,6 +557,6 @@ variant read_race_reference(struct storage *store)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void register_race_name_function(race_name_func func, const char *name) {
|
void register_race_function(race_func func, const char *name) {
|
||||||
register_function((pf_generic)func, name);
|
register_function((pf_generic)func, name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,7 +112,7 @@ extern "C" {
|
||||||
int level;
|
int level;
|
||||||
} att;
|
} att;
|
||||||
|
|
||||||
typedef void (*race_name_func)(struct unit *);
|
typedef void (*race_func) (struct unit *);
|
||||||
|
|
||||||
typedef struct race {
|
typedef struct race {
|
||||||
char *_name;
|
char *_name;
|
||||||
|
@ -143,8 +143,8 @@ extern "C" {
|
||||||
struct att attack[RACE_ATTACKS];
|
struct att attack[RACE_ATTACKS];
|
||||||
signed char bonus[MAXSKILLS];
|
signed char bonus[MAXSKILLS];
|
||||||
|
|
||||||
race_name_func generate_name;
|
race_func name_unit;
|
||||||
void(*age) (struct unit * u);
|
race_func age_unit;
|
||||||
|
|
||||||
struct rcoption *options; /* rarely used properties */
|
struct rcoption *options; /* rarely used properties */
|
||||||
|
|
||||||
|
@ -262,7 +262,7 @@ extern "C" {
|
||||||
variant read_race_reference(struct storage *store);
|
variant read_race_reference(struct storage *store);
|
||||||
|
|
||||||
const char *raceprefix(const struct unit *u);
|
const char *raceprefix(const struct unit *u);
|
||||||
void register_race_name_function(race_name_func, const char *);
|
void register_race_function(race_func, const char *);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -1460,8 +1460,11 @@ void default_name(const unit *u, char name[], int len) {
|
||||||
void name_unit(unit * u)
|
void name_unit(unit * u)
|
||||||
{
|
{
|
||||||
const race *rc = u_race(u);
|
const race *rc = u_race(u);
|
||||||
if (rc->generate_name) {
|
if (rc->name_unit) {
|
||||||
rc->generate_name(u);
|
rc->name_unit(u);
|
||||||
|
}
|
||||||
|
else if (u->faction->flags & FFL_NPC) {
|
||||||
|
unit_setname(u, NULL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
char name[32];
|
char name[32];
|
||||||
|
@ -1514,7 +1517,7 @@ unit *create_unit(region * r, faction * f, int number, const struct race *urace,
|
||||||
if (dname) {
|
if (dname) {
|
||||||
u->_name = strdup(dname);
|
u->_name = strdup(dname);
|
||||||
}
|
}
|
||||||
else if (urace->generate_name || playerrace(urace)) {
|
else if (urace->name_unit || playerrace(urace)) {
|
||||||
name_unit(u);
|
name_unit(u);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -487,7 +487,7 @@ static void test_name_unit(CuTest *tc) {
|
||||||
test_setup();
|
test_setup();
|
||||||
rc = test_create_race("skeleton");
|
rc = test_create_race("skeleton");
|
||||||
u = test_create_unit(test_create_faction(rc), test_create_region(0, 0, 0));
|
u = test_create_unit(test_create_faction(rc), test_create_region(0, 0, 0));
|
||||||
rc->generate_name = gen_name;
|
rc->name_unit = gen_name;
|
||||||
name_unit(u);
|
name_unit(u);
|
||||||
CuAssertStrEquals(tc, "Hodor", unit_getname(u));
|
CuAssertStrEquals(tc, "Hodor", unit_getname(u));
|
||||||
test_cleanup();
|
test_cleanup();
|
||||||
|
|
|
@ -1778,30 +1778,6 @@ static int parse_races(xmlDocPtr doc)
|
||||||
}
|
}
|
||||||
xmlXPathFreeObject(result);
|
xmlXPathFreeObject(result);
|
||||||
|
|
||||||
/* reading eressea/races/race/function */
|
|
||||||
xpath->node = node;
|
|
||||||
result = xmlXPathEvalExpression(BAD_CAST "function", xpath);
|
|
||||||
for (k = 0; k != result->nodesetval->nodeNr; ++k) {
|
|
||||||
xmlNodePtr node = result->nodesetval->nodeTab[k];
|
|
||||||
pf_generic fun;
|
|
||||||
|
|
||||||
parse_function(node, &fun, &propValue);
|
|
||||||
if (fun == NULL) {
|
|
||||||
log_error("unknown function name '%s' for race %s\n", (const char *)propValue, rc->_name);
|
|
||||||
xmlFree(propValue);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
assert(propValue != NULL);
|
|
||||||
if (strcmp((const char *)propValue, "name") == 0) {
|
|
||||||
rc->generate_name = (race_name_func)fun;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
log_error("unknown function type '%s' for race %s\n", (const char *)propValue, rc->_name);
|
|
||||||
}
|
|
||||||
xmlFree(propValue);
|
|
||||||
}
|
|
||||||
xmlXPathFreeObject(result);
|
|
||||||
|
|
||||||
/* reading eressea/races/race/familiar */
|
/* reading eressea/races/race/familiar */
|
||||||
xpath->node = node;
|
xpath->node = node;
|
||||||
result = xmlXPathEvalExpression(BAD_CAST "familiar", xpath);
|
result = xmlXPathEvalExpression(BAD_CAST "familiar", xpath);
|
||||||
|
|
|
@ -164,9 +164,10 @@ static void age_unit(region * r, unit * u)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
const race *rc = u_race(u);
|
||||||
++u->age;
|
++u->age;
|
||||||
if (u->number > 0 && u_race(u)->age) {
|
if (u->number > 0 && rc->age_unit) {
|
||||||
u_race(u)->age(u);
|
rc->age_unit(u);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (u->region && is_astral(u->region)) {
|
if (u->region && is_astral(u->region)) {
|
||||||
|
|
23
src/names.c
23
src/names.c
|
@ -212,11 +212,6 @@ const char *silbe3[SIL3] = {
|
||||||
"bus",
|
"bus",
|
||||||
};
|
};
|
||||||
|
|
||||||
static void generic_name(unit * u)
|
|
||||||
{
|
|
||||||
unit_setname(u, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dragon_name(unit * u)
|
static void dragon_name(unit * u)
|
||||||
{
|
{
|
||||||
char name[NAMESIZE + 1];
|
char name[NAMESIZE + 1];
|
||||||
|
@ -469,12 +464,14 @@ void register_names(void)
|
||||||
{
|
{
|
||||||
/* function name
|
/* function name
|
||||||
* generate a name for a nonplayerunit
|
* generate a name for a nonplayerunit
|
||||||
* race->generate_name() */
|
* race->name_unit() */
|
||||||
register_race_name_function(undead_name, "nameundead");
|
|
||||||
register_race_name_function(skeleton_name, "nameskeleton");
|
register_race_function(undead_name, "name_undead");
|
||||||
register_race_name_function(zombie_name, "namezombie");
|
register_race_function(skeleton_name, "name_skeleton");
|
||||||
register_race_name_function(ghoul_name, "nameghoul");
|
register_race_function(zombie_name, "name_zombie");
|
||||||
register_race_name_function(dracoid_name, "namedracoid");
|
register_race_function(ghoul_name, "name_ghoul");
|
||||||
register_race_name_function(dragon_name, "namedragon");
|
register_race_function(dracoid_name, "name_dracoid");
|
||||||
register_race_name_function(generic_name, "namegeneric");
|
register_race_function(dragon_name, "name_dragon");
|
||||||
|
register_race_function(dragon_name, "name_youngdragon");
|
||||||
|
register_race_function(dragon_name, "name_wyrm");
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include <kernel/race.h>
|
#include <kernel/race.h>
|
||||||
#include <kernel/unit.h>
|
#include <kernel/unit.h>
|
||||||
|
#include <kernel/faction.h>
|
||||||
#include <util/language.h>
|
#include <util/language.h>
|
||||||
#include <util/functions.h>
|
#include <util/functions.h>
|
||||||
|
|
||||||
|
@ -12,31 +13,33 @@
|
||||||
|
|
||||||
static void test_names(CuTest * tc)
|
static void test_names(CuTest * tc)
|
||||||
{
|
{
|
||||||
race_name_func foo;
|
|
||||||
unit *u;
|
unit *u;
|
||||||
race *rc;
|
race *rc;
|
||||||
test_cleanup();
|
test_cleanup();
|
||||||
register_names();
|
register_names();
|
||||||
|
CuAssertPtrNotNull(tc, get_function("name_undead"));
|
||||||
|
CuAssertPtrNotNull(tc, get_function("name_skeleton"));
|
||||||
|
CuAssertPtrNotNull(tc, get_function("name_zombie"));
|
||||||
|
CuAssertPtrNotNull(tc, get_function("name_ghoul"));
|
||||||
|
CuAssertPtrNotNull(tc, get_function("name_dragon"));
|
||||||
|
CuAssertPtrNotNull(tc, get_function("name_youngdragon"));
|
||||||
|
CuAssertPtrNotNull(tc, get_function("name_wyrm"));
|
||||||
|
CuAssertPtrNotNull(tc, get_function("name_dracoid"));
|
||||||
default_locale = test_create_locale();
|
default_locale = test_create_locale();
|
||||||
u = test_create_unit(test_create_faction(0), test_create_region(0, 0, 0));
|
|
||||||
rc = test_create_race("undead");
|
rc = test_create_race("undead");
|
||||||
|
u = test_create_unit(test_create_faction(rc), test_create_region(0, 0, 0));
|
||||||
locale_setstring(default_locale, "undead_name_0", "Graue");
|
locale_setstring(default_locale, "undead_name_0", "Graue");
|
||||||
locale_setstring(default_locale, "undead_postfix_0", "Kobolde");
|
locale_setstring(default_locale, "undead_postfix_0", "Kobolde");
|
||||||
CuAssertPtrNotNull(tc, foo = (race_name_func)get_function("nameundead"));
|
CuAssertPtrNotNull(tc, rc->name_unit);
|
||||||
rc->generate_name = foo;
|
CuAssertTrue(tc, rc->name_unit == (race_func)get_function("name_undead"));
|
||||||
rc->generate_name(u);
|
name_unit(u);
|
||||||
CuAssertStrEquals(tc, "Graue Kobolde", u->_name);
|
CuAssertStrEquals(tc, "Graue Kobolde", u->_name);
|
||||||
CuAssertPtrNotNull(tc, get_function("nameskeleton"));
|
|
||||||
CuAssertPtrNotNull(tc, get_function("namezombie"));
|
|
||||||
CuAssertPtrNotNull(tc, get_function("nameghoul"));
|
|
||||||
CuAssertPtrNotNull(tc, get_function("namedragon"));
|
|
||||||
CuAssertPtrNotNull(tc, get_function("namedracoid"));
|
|
||||||
CuAssertPtrNotNull(tc, get_function("namegeneric"));
|
|
||||||
test_cleanup();
|
test_cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_monster_names(CuTest *tc) {
|
static void test_monster_names(CuTest *tc) {
|
||||||
unit *u;
|
unit *u;
|
||||||
|
faction *f;
|
||||||
race *rc;
|
race *rc;
|
||||||
|
|
||||||
test_setup();
|
test_setup();
|
||||||
|
@ -45,11 +48,13 @@ static void test_monster_names(CuTest *tc) {
|
||||||
locale_setstring(default_locale, "race::irongolem", "Eisengolem");
|
locale_setstring(default_locale, "race::irongolem", "Eisengolem");
|
||||||
locale_setstring(default_locale, "race::irongolem_p", "Eisengolems");
|
locale_setstring(default_locale, "race::irongolem_p", "Eisengolems");
|
||||||
rc = test_create_race("irongolem");
|
rc = test_create_race("irongolem");
|
||||||
u = test_create_unit(test_create_faction(rc), test_create_region(0, 0, 0));
|
f = test_create_faction(rc);
|
||||||
|
f->flags |= FFL_NPC;
|
||||||
|
u = test_create_unit(f, test_create_region(0, 0, 0));
|
||||||
|
unit_setname(u, "Hodor");
|
||||||
CuAssertPtrNotNull(tc, u->_name);
|
CuAssertPtrNotNull(tc, u->_name);
|
||||||
rc->generate_name = (race_name_func)get_function("namegeneric");
|
name_unit(u);
|
||||||
rc->generate_name(u);
|
CuAssertPtrEquals(tc, NULL, u->_name);
|
||||||
CuAssertPtrEquals(tc, 0, u->_name);
|
|
||||||
CuAssertStrEquals(tc, "Eisengolem", unit_getname(u));
|
CuAssertStrEquals(tc, "Eisengolem", unit_getname(u));
|
||||||
u->number = 2;
|
u->number = 2;
|
||||||
CuAssertStrEquals(tc, "Eisengolems", unit_getname(u));
|
CuAssertStrEquals(tc, "Eisengolems", unit_getname(u));
|
||||||
|
|
Loading…
Reference in New Issue