add rules configuration for no GIVE to other factions.

Eressea 1.5:
- skill limit 10
- disable stealth/espionage/perception
- less peasants per region
- disable STEALTH command
- reduce available races
- disable ENTERTAIN, WORK, TAX, TEACH, SELL
This commit is contained in:
Enno Rehling 2009-01-27 10:13:12 +00:00
parent 3e2922666f
commit 00d399f03d
31 changed files with 598 additions and 78 deletions

View File

@ -543,7 +543,7 @@ recruit(unit * u, struct order * ord, request ** recruitorders)
}
if (has_skill(u, SK_ALCHEMY)
&& count_skill(u->faction, SK_ALCHEMY) + n >
max_skill(u->faction, SK_ALCHEMY))
skill_limit(u->faction, SK_ALCHEMY))
{
cmistake(u, ord, 156, MSG_EVENT);
return;
@ -565,7 +565,11 @@ recruit(unit * u, struct order * ord, request ** recruitorders)
o->ord = copy_order(ord);
addlist(recruitorders, o);
}
/* ------------------------------------------------------------- */
#define GIVE_SELF 1
#define GIVE_PEASANTS 2
#define GIVE_OTHERS 4
#define GIVE_ANY (GIVE_SELF|GIVE_PEASANTS|GIVE_OTHERS)
static void
give_cmd(unit * u, order * ord)
@ -573,7 +577,7 @@ give_cmd(unit * u, order * ord)
region * r = u->region;
unit *u2;
const char *s;
int i, n;
int i, n, rule;
const item_type * itype;
param_t p;
@ -586,6 +590,15 @@ give_cmd(unit * u, order * ord)
return;
}
rule = get_param_int(global.parameters, "rules.give", 7);
if (getunitpeasants && (rule & GIVE_PEASANTS)==0) {
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "feedback_give_forbidden", ""));
return;
} else if (u2 && u2->faction!=u->faction && (rule & GIVE_OTHERS)==0) {
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "feedback_give_forbidden", ""));
return;
}
/* Damit Tarner nicht durch die Fehlermeldung enttarnt werden können */
if (u2 && !alliedunit(u2, u->faction, HELP_GIVE) && !cansee(u->faction,r,u2,0) && !ucontact(u2, u) && !fval(u2, UFL_TAKEALL)) {
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "feedback_unit_not_found", ""));
@ -2741,15 +2754,15 @@ research_cmd(unit *u, struct order * ord)
}
static int
wahrnehmung(region * r, faction * f)
max_skill(region * r, faction * f, skill_t sk)
{
unit *u;
int w = 0;
for (u = r->units; u; u = u->next) {
if (u->faction == f) {
if (eff_skill(u, SK_PERCEPTION, r) > w) {
w = eff_skill(u, SK_PERCEPTION, r);
if (eff_skill(u, sk, r) > w) {
w = eff_skill(u, sk, r);
}
}
}
@ -2820,7 +2833,7 @@ steal_cmd(unit * u, struct order * ord, request ** stealorders)
return;
}
n = eff_skill(u, SK_STEALTH, r) - wahrnehmung(r, f);
n = eff_skill(u, SK_STEALTH, r) - max_skill(r, f, SK_PERCEPTION);
if (n <= 0) {
/* Wahrnehmung == Tarnung */

View File

@ -223,7 +223,7 @@ give_men(int n, unit * u, unit * u2, struct order * ord)
/* wird das Alchemistenmaximum ueberschritten ? */
if (k > max_skill(u2->faction, SK_ALCHEMY)) {
if (k > skill_limit(u2->faction, SK_ALCHEMY)) {
error = 156;
}
}
@ -371,7 +371,7 @@ give_unit(unit * u, unit * u2, order * ord)
}
if (has_skill(u, SK_MAGIC)) {
if (count_skill(u2->faction, SK_MAGIC) + u->number >
max_skill(u2->faction, SK_MAGIC))
skill_limit(u2->faction, SK_MAGIC))
{
cmistake(u, ord, 155, MSG_COMMERCE);
return;
@ -383,7 +383,7 @@ give_unit(unit * u, unit * u2, order * ord)
}
if (has_skill(u, SK_ALCHEMY)
&& count_skill(u2->faction, SK_ALCHEMY) + u->number >
max_skill(u2->faction, SK_ALCHEMY))
skill_limit(u2->faction, SK_ALCHEMY))
{
cmistake(u, ord, 156, MSG_COMMERCE);
return;

View File

@ -3735,7 +3735,7 @@ init_processor(void)
add_proc_order(p, K_WEREWOLF, &setwere_cmd, 0, NULL);
#endif /* KARMA_MODULE */
if (alliances!=NULL) {
if (get_param_int(global.parameters, "alliance-vinyambar", 0)==1) {
p+=10;
add_proc_global(p, &alliancekick, NULL);
}
@ -3748,7 +3748,7 @@ init_processor(void)
add_proc_region(p, &enter_1, "Kontaktieren & Betreten (1. Versuch)");
add_proc_order(p, K_USE, &use_cmd, 0, "Benutzen");
if (alliances!=NULL) {
if (get_param_int(global.parameters, "alliance-vinyambar", 0)==1) {
p+=10; /* in case USE changes it */
add_proc_global(p, &alliancevictory, "Testen der Allianzbedingungen");
}
@ -3875,7 +3875,6 @@ void
processorders (void)
{
static int init = 0;
const char * str;
if (!init) {
init_processor();
@ -3888,8 +3887,7 @@ processorders (void)
ageing();
remove_empty_units();
str = get_param(global.parameters, "modules.wormholes");
if (str && atoi(str)) {
if (get_param_int(global.parameters, "modules.wormholes", 0)) {
create_wormholes();
}

View File

@ -548,7 +548,7 @@ learn_cmd(unit * u, order * ord)
mtyp = M_GRAU;
if (!is_mage(u)) create_mage(u, mtyp);
} else if (!has_skill(u, SK_MAGIC)) {
int mmax = max_skill(u->faction, SK_MAGIC);
int mmax = skill_limit(u->faction, SK_MAGIC);
/* Die Einheit ist noch kein Magier */
if (count_skill(u->faction, SK_MAGIC) + u->number > mmax)
{
@ -599,7 +599,7 @@ learn_cmd(unit * u, order * ord)
if (sk == SK_ALCHEMY) {
maxalchemy = eff_skill(u, SK_ALCHEMY, r);
if (!has_skill(u, SK_ALCHEMY)) {
int amax = max_skill(u->faction, SK_ALCHEMY);
int amax = skill_limit(u->faction, SK_ALCHEMY);
if (count_skill(u->faction, SK_ALCHEMY) + u->number > amax) {
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "error_max_alchemists", "amount", amax));
return 0;

View File

@ -341,6 +341,7 @@ b_blockfogwall(const border * b, const unit * u, const region * r)
return (boolean)(effskill(u, SK_PERCEPTION) > 4); /* Das ist die alte Nebelwand */
}
/** Legacy type used in old Eressea games, no longer in use. */
border_type bt_fogwall = {
"fogwall", VAR_INT,
b_transparent, /* transparent */

View File

@ -82,6 +82,10 @@ CheckOverload(void)
return value;
}
/* test if the unit can slip through a siege undetected.
* returns 0 if siege is successful, or 1 if the building is either
* not besieged or the unit can slip through the siege due to better stealth.
*/
static int
slipthru(const region * r, const unit * u, const building * b)
{
@ -89,28 +93,26 @@ slipthru(const region * r, const unit * u, const building * b)
int n, o;
/* b ist die burg, in die man hinein oder aus der man heraus will. */
if (b==NULL || b->besieged < b->size * SIEGEFACTOR) {
return 1;
}
if (!b) {
return 1;
}
if (b->besieged < b->size * SIEGEFACTOR) {
return 1;
}
/* u wird am hinein- oder herausschluepfen gehindert, wenn STEALTH <=
* OBSERVATION +2 der belagerer u2 ist */
n = eff_skill(u, SK_STEALTH, r);
for (u2 = r->units; u2; u2 = u2->next)
for (u2 = r->units; u2; u2 = u2->next) {
if (usiege(u2) == b) {
if (invisible(u, u2) >= u->number) continue;
o = eff_skill(u2, SK_PERCEPTION, r);
if (o + 2 >= n)
if (o + 2 >= n) {
return 0; /* entdeckt! */
}
}
}
return 1;
}
@ -683,7 +685,7 @@ build(unit * u, const construction * ctype, int completed, int want)
}
/* Flinkfingerring wirkt nicht auf Mengenbegrenzte (magische)
* Talente */
if (max_skill(u->faction, type->skill)==INT_MAX) {
if (skill_limit(u->faction, type->skill)==INT_MAX) {
int i = 0;
item * itm = *i_find(&u->items, olditemtype[I_RING_OF_NIMBLEFINGER]);
if (itm!=NULL) i = itm->number;

View File

@ -388,8 +388,6 @@ const char *keywords[MAXKEYWORDS] =
"DEFAULT",
"URSPRUNG",
"EMAIL",
"MEINUNG",
"MAGIEGEBIET",
"PIRATERIE",
"NEUSTART",
"GRUPPE",
@ -522,7 +520,7 @@ max_magicians(const faction * f)
}
int
max_skill(faction * f, skill_t sk)
skill_limit(faction * f, skill_t sk)
{
int m = INT_MAX;
int al = allied_skilllimit(f, sk);

View File

@ -155,7 +155,7 @@ extern struct unit_list * get_lighthouses(const struct region * r);
extern int lighthouse_range(const struct building * b, const struct faction * f);
/* skills */
extern int max_skill(struct faction * f, skill_t sk);
extern int skill_limit(struct faction * f, skill_t sk);
extern int count_skill(struct faction * f, skill_t sk);
/* direction, geography */

View File

@ -133,8 +133,6 @@ enum {
K_DEFAULT,
K_URSPRUNG,
K_EMAIL,
K_VOTE, /* not in use */
K_MAGIEGEBIET, /* not in use */
K_PIRACY,
K_RESTART,
K_GROUP,

View File

@ -581,8 +581,6 @@ race_compat(void)
if (rc == new_race[RC_TROLL]) {
a_add(&rc->attribs, make_skillmod(NOSKILL, SMF_RIDING, NULL, 0.0, -1));
}
} else {
log_warning(("could not find old race %s\n", oldracenames[i]));
}
}
}

View File

@ -660,7 +660,7 @@ check_mages(void)
if (!is_monsters(f)) {
unit * u;
int mages = 0;
int maxmages = max_skill(f, SK_MAGIC);
int maxmages = skill_limit(f, SK_MAGIC);
for (u = f->units;u!=NULL;u=u->nextF) {
if (is_mage(u)) {

View File

@ -52,8 +52,6 @@
<order name="GRUPPE" disable="yes"/>
<order name="KAMPFZAUBER" disable="yes"/>
<order name="LEHREN" disable="yes"/>
<order name="MAGIEGEBIET" disable="yes"/>
<order name="MEINUNG" disable="yes"/>
<order name="NEUSTART" disable="yes"/>
<order name="NUMMER" disable="yes"/>
<order name="OPTION" disable="yes"/>

44
src/res/changes.txt Normal file
View File

@ -0,0 +1,44 @@
Konzepte:
- Astralraum abschaffen
- Regionsbesitz und Moral
- Allianzen
- GIB abstellen
= done
Talente:
- Talentlimit 10 + Rassenbonus
= done
- Ausdauer wirkt sich nicht auf Trefferpunkte aus
- Wahrnehmung und Tarnung abschalten
= done
Kampf:
- Regionen belagern
- Allianz ersetzt HELFE KAEMPFE
- Reduktion auf 1 Kampfrunde
- neue Trefferchanceberechnung
- neue Beuteregelung
Gegenstände:
- Waffen mit höherem Schaden.
- RdU und AdwS überarbeiten
Diverse:
- neue Terraintypen (weniger Bauern, knappere Ressourcen)
- limitierte Rekrutieren von Migranten erlauben
- Parteitarnung fällt weg
= done (disable TARNEN)
- Monster entfernen
Ökonomie:
- UNTERHALTEN abstellen
= done (Befehl & Skill)
- TREIBEN abstellen
= done (Befehl & Skill)
- ARBEITEN abstellen
= done (Befehl)
- LEHREN abstellen
= done (Befehl)
- VERKAUFEN abstellen.
= done (Befehl)
- Steuern für den Regionsbesitzer

View File

@ -19,8 +19,6 @@
<game name="Kreis der Macht" units="250" welcome="vinyambar">
<comment>Game specific</comment>
<order name="ARBEITEN" disable></order>
<order name="MEINUNG" disable></order>
<order name="MAGIEGEBIET" disable></order>
</game>
<include href="vinyambar/de/strings.xml" />
<include href="vinyambar/conquest.xml" />

View File

@ -2296,12 +2296,6 @@
<string name="EMAIL">
<text locale="de">EMAIL</text>
</string>
<string name="MEINUNG">
<text locale="de">MEINUNG</text>
</string>
<string name="MAGIEGEBIET">
<text locale="de">MAGIEGEBIET</text>
</string>
<string name="PIRATERIE">
<text locale="de">PIRATERIE</text>
</string>

View File

@ -1474,12 +1474,6 @@
<string name="MACHEN">
<text locale="en">MAKE</text>
</string>
<string name="MAGIEGEBIET">
<text locale="en">SCHOOL</text>
</string>
<string name="MEINUNG">
<text locale="en">OPINION</text>
</string>
<string name="NACH">
<text locale="en">MOVE</text>
</string>

View File

@ -44,8 +44,6 @@
<game name="Eressea" units="1000">
<!-- Game specific settings -->
<order name="MEINUNG" disable="yes"/>
<order name="MAGIEGEBIET" disable="yes"/>
<skill name="alchemy" enable="true"/>
<skill name="crossbow" enable="true"/>

118
src/res/eressea2.xml Normal file
View File

@ -0,0 +1,118 @@
<?xml version="1.0"?>
<eressea xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="messages.xml"/>
<!-- Localization -->
<xi:include href="de/strings.xml"/>
<xi:include href="en/strings.xml"/>
<xi:include href="common/items.xml" />
<xi:include href="common/armor.xml" />
<xi:include href="common/weapons.xml" />
<xi:include href="common/resources.xml" />
<xi:include href="common/luxuries.xml" />
<xi:include href="common/potions.xml" />
<xi:include href="eressea2/terrains.xml"/>
<xi:include href="eressea2/races.xml"/>
<xi:include href="spoils.xml"/>
<xi:include href="prefixes.xml"/>
<xi:include href="ships.xml"/>
<xi:include href="buildings.xml"/>
<xi:include href="eressea/calendar.xml"/>
<xi:include href="equipment.xml"/>
<xi:include href="spells.xml"/>
<xi:include href="dungeons.xml"/>
<xi:include href="directions.xml"/>
<equipment>
<set name="first_unit">
<item name="conquesttoken" amount="1"/>
<item name="log" amount="30"/>
<item name="stone" amount="30"/>
<item name="money" amount="4200"/>
</set>
<set name="new_faction">
<item name="adamantium" amount="1"/>
</set>
</equipment>
<xi:include href="names-undead.xml"/>
<xi:include href="names-skeletons.xml"/>
<xi:include href="names-zombies.xml"/>
<xi:include href="names-ghouls.xml"/>
<xi:include href="names-dragons.xml"/>
<game name="Eressea" units="1000">
<!-- Game specific settings -->
<order name="ARBEITEN" disable="yes"/>
<order name="BETEN" disable="yes"/>
<order name="FRIEDEN" disable="yes"/>
<order name="GM" disable="yes"/>
<order name="JIHAD" disable="yes"/>
<order name="KRIEG" disable="yes"/>
<order name="LEHREN" disable="yes"/>
<order name="LIEFERE" disable="yes"/>
<order name="OPFERE" disable="yes"/>
<order name="SABOTIEREN" disable="yes"/>
<order name="SPIONIEREN" disable="yes"/>
<order name="TARNEN" disable="yes"/>
<order name="TREIBEN" disable="yes"/>
<order name="UNTERHALTEN" disable="yes"/>
<order name="VERKAUFEN" disable="yes"/>
<order name="WERWESEN" disable="yes"/>
<order name="XONTORMIA" disable="yes"/>
<skill name="alchemy" enable="true"/>
<skill name="armorer" enable="true"/>
<skill name="bow" enable="true"/>
<skill name="building" enable="true"/>
<skill name="cartmaking" enable="true"/>
<skill name="catapult" enable="true"/>
<skill name="crossbow" enable="true"/>
<skill name="forestry" enable="true"/>
<skill name="herbalism" enable="true"/>
<skill name="magic" enable="true"/>
<skill name="melee" enable="true"/>
<skill name="mining" enable="true"/>
<skill name="polearm" enable="true"/>
<skill name="quarrying" enable="true"/>
<skill name="riding" enable="true"/>
<skill name="roadwork" enable="true"/>
<skill name="sailing" enable="true"/>
<skill name="shipcraft" enable="true"/>
<skill name="stamina" enable="true"/>
<skill name="tactics" enable="true"/>
<skill name="trade" enable="true"/>
<skill name="training" enable="true"/>
<skill name="unarmed" enable="true"/>
<skill name="weaponsmithing" enable="true"/>
<param name="hunger.long" value="1"/>
<param name="rules.check_overload" value="0"/>
<param name="rules.give" value="3"/> <!-- only self + peasants -->
<param name="skill.maxlevel" value="10"/>
</game>
<xi:include href="eressea/strings.xml"/>
<xi:include href="eressea/races.xml"/>
<xi:include href="eressea/items.xml"/>
<xi:include href="eressea/artrewards.xml"/>
<xi:include href="eressea/dungeons.xml"/>
<xi:include href="eressea/temple.xml"/>
<strings>
<string name="mailto">
<text locale="de">eressea-server@eressea.de</text>
<text locale="en">eressea-server@eressea.de</text>
</string>
<string name="newbie_info_1">
<text locale="de">Bitte denke daran, deine Befehle mit dem Betreff
ERESSEA BEFEHLE an eressea-server@eressea.de zu senden.</text>
<text locale="en">Remember to send your orders to
eressea-server@eressea.de with the subject ERESSEA ORDERS.</text>
</string>
<string name="mailcmd">
<text locale="de">ERESSEA BEFEHLE</text>
<text locale="en">ERESSEA ORDERS</text>
</string>
</strings>
</eressea>

297
src/res/eressea2/races.xml Normal file
View File

@ -0,0 +1,297 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<races>
<!-- races for shadowcall: shadowbat, nightmare, vampunicorn -->
<race name="shadowbat" magres="0.800000" maxaura="0.000000" regaura="0.000000" recruitcost="500" weight="500" capacity="540" speed="1.000000" hp="1" ac="4" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000" killpeasants="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="1d6"/>
<attack type="3" damage="1d1"/>
</race>
<race name="nightmare" magres="0.500000" maxaura="0.000000" regaura="0.000000" recruitcost="500" weight="100" capacity="540" speed="1.000000" hp="80" ac="10" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" fly="yes" walk="yes" teach="no" getitem="yes" invinciblenonmagic="yes">
<ai splitsize="500" killpeasants="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
<attack type="4" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="2" damage="1d10"/>
</race>
<race name="vampunicorn" magres="1.000000" maxaura="0.000000" regaura="0.000000" recruitcost="500" weight="5000" capacity="2000" speed="1.000000" hp="30" ac="4" damage="2d4" unarmedattack="0" unarmeddefense="0" attackmodifier="3" defensemodifier="3" scarepeasants="yes" walk="yes" teach="no" getitem="yes">
<ai splitsize="5000" killpeasants="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d10"/>
<attack type="3" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="3" damage="1d4"/>
<attack type="2" damage="2d60"/>
</race>
<!-- races used by spells and magic -->
<race name="toad" magres="0.200000" maxaura="1.000000" regaura="1.000000" recruitcost="50" maintenance="10" weight="100" capacity="540" speed="1.000000" hp="10" damage="1d2" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" giveitem="yes" giveperson="yes" giveunit="yes" getitem="yes" walk="yes">
<ai splitsize="1" learn="yes"/>
<skill name="crossbow" modifier="-10"/>
<skill name="mining" modifier="-10"/>
<skill name="bow" modifier="-10"/>
<skill name="building" modifier="-10"/>
<skill name="trade" modifier="-10"/>
<skill name="forestry" modifier="-10"/>
<skill name="catapult" modifier="-10"/>
<skill name="training" modifier="-10"/>
<skill name="riding" modifier="-10"/>
<skill name="armorer" modifier="-10"/>
<skill name="shipcraft" modifier="-10"/>
<skill name="melee" modifier="-10"/>
<skill name="sailing" modifier="-10"/>
<skill name="polearm" modifier="-10"/>
<skill name="quarrying" modifier="-10"/>
<skill name="roadwork" modifier="-10"/>
<skill name="tactics" modifier="-10"/>
<skill name="weaponsmithing" modifier="-10"/>
<skill name="cartmaking" modifier="-10"/>
<skill name="stamina" modifier="-10"/>
<attack type="4" damage="1d2"/>
</race>
<race name="alp" magres="0.950000" maxaura="1.000000" regaura="1.000000" recruitcost="50000" weight="0" capacity="0" speed="1.500000" hp="20" ac="2" damage="1d4" unarmedattack="0" unarmeddefense="0" attackmodifier="2" defensemodifier="20" fly="yes" walk="yes" canlearn="no" canteach="no">
<ai splitsize="1"/>
<function name="name" value="namegeneric"/>
<attack type="1" damage="1d4"/>
</race>
<race name="mountainguard" unarmedguard="yes" magres="0.500000" maxaura="1.000000" regaura="0.500000" recruitcost="50000" weight="10000" capacity="2000" speed="0.000000" hp="1000" ac="12" damage="2d40" unarmedattack="0" unarmeddefense="0" attackmodifier="6" defensemodifier="8" cannotmove="yes" canlearn="no" teach="no" noweapons="yes" giveitem="yes">
<ai splitsize="1"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d40"/>
</race>
<race name="shadowmaster" cansail="no" cansteal="no" canlearn="no" magres="0.750000" maxaura="1.000000" regaura="2.000000" recruitcost="50000" weight="500" capacity="540" speed="1.000000" hp="150" ac="4" damage="2d5" unarmedattack="0" unarmeddefense="0" attackmodifier="11" defensemodifier="13" scarepeasants="yes" walk="yes" teach="no" desert="yes">
<ai splitsize="50" killpeasants="yes" moverandom="yes" learn="yes"/>
<function name="name" value="namegeneric"/>
<attack type="4" damage="2d4"/>
<attack type="2" damage="2d30"/>
<attack type="3" damage="1d2"/>
</race>
<race name="stonegolem" magres="0.250000" maxaura="1.000000" regaura="0.100000" recruitcost="5000" weight="10000" capacity="2000" speed="1.000000" hp="60" ac="4" damage="2d12+6" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no" giveitem="yes">
<ai splitsize="50"/>
<skill name="building" modifier="14"/>
<skill name="roadwork" modifier="14"/>
<attack type="4" damage="2d10+4"/>
</race>
<race name="irongolem" magres="0.250000" maxaura="1.000000" regaura="0.100000" recruitcost="5000" weight="10000" capacity="2000" speed="1.000000" hp="50" ac="2" damage="2d10+4" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="2" walk="yes" canlearn="no" teach="no" giveitem="yes">
<ai splitsize="50"/>
<function name="name" value="namegeneric"/>
<skill name="armorer" modifier="14"/>
<skill name="weaponsmithing" modifier="14"/>
<attack type="4" damage="2d8+4"/>
</race>
<race name="spell" magres="0.000000" maxaura="1.000000" regaura="0.100000" recruitcost="0" weight="0" capacity="0" speed="0.000000" hp="1" damage="1d4" unarmedattack="-2" unarmeddefense="-2" canlearn="no" noheal="yes" noweapons="yes" illusionary="yes" invisible="yes" fly="yes" swim="yes" walk="yes">
<ai splitsize="1"/>
<attack type="1" damage="1d4"/>
</race>
<!-- races for player factions -->
<race name="aquarian" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" coastal="yes" walk="yes" giveitem="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="-2"/>
<skill name="building" modifier="-1"/>
<skill name="trade" modifier="2"/>
<skill name="armorer" modifier="-1"/>
<skill name="shipcraft" modifier="3"/>
<skill name="sailing" modifier="3"/>
<skill name="roadwork" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
</race>
<race name="cat" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" defensemodifier="1" playerrace="yes" walk="yes" giveitem="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="-2"/>
<skill name="building" modifier="-1"/>
<skill name="catapult" modifier="-1"/>
<skill name="armorer" modifier="-1"/>
<skill name="shipcraft" modifier="-1"/>
<skill name="sailing" modifier="-2"/>
<skill name="quarrying" modifier="-1"/>
<skill name="roadwork" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
</race>
<race name="halfling" magres="0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveitem="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="crossbow" modifier="1"/>
<skill name="mining" modifier="1"/>
<skill name="bow" modifier="-1"/>
<skill name="building" modifier="1"/>
<skill name="trade" modifier="2"/>
<skill name="catapult" modifier="-1"/>
<skill name="training" modifier="-1"/>
<skill name="riding" modifier="-1"/>
<skill name="shipcraft" modifier="-1"/>
<skill name="melee" modifier="-1"/>
<skill name="sailing" modifier="-2"/>
<skill name="polearm" modifier="-1"/>
<skill name="roadwork" modifier="1"/>
<skill name="cartmaking" modifier="2"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
</race>
<race name="insect" magres="0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="80" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveitem="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="crossbow" modifier="1"/>
<skill name="mining" modifier="1"/>
<skill name="bow" modifier="-2"/>
<skill name="building" modifier="2"/>
<skill name="trade" modifier="-1"/>
<skill name="forestry" modifier="1"/>
<skill name="training" modifier="-3"/>
<skill name="riding" modifier="-3"/>
<skill name="armorer" modifier="2"/>
<skill name="melee" modifier="-1"/>
<skill name="polearm" modifier="1"/>
<skill name="roadwork" modifier="-1"/>
<skill name="tactics" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
</race>
<race name="demon" magres="0.150000" maxaura="1.000000" regaura="1.250000" recruitcost="150" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="50" ac="2" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" shapeshift="yes" giveitem="yes" giveperson="yes" giveunit="yes" getitem="yes" recruitethereal="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="initfamiliar" value="oldfamiliars"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="trade" modifier="-3"/>
<skill name="forestry" modifier="1"/>
<skill name="training" modifier="-3"/>
<skill name="riding" modifier="-1"/>
<skill name="shipcraft" modifier="-1"/>
<skill name="melee" modifier="1"/>
<skill name="sailing" modifier="-1"/>
<skill name="polearm" modifier="1"/>
<skill name="tactics" modifier="-1"/>
<skill name="weaponsmithing" modifier="1"/>
<skill name="cartmaking" modifier="-2"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
<attack type="5"/>
</race>
<race name="troll" magres="0.100000" maxaura="1.000000" regaura="1.000000" recruitcost="90" maintenance="10" weight="2000" capacity="1080" speed="1.000000" hp="30" ac="1" damage="1d5+3" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveitem="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="2"/>
<skill name="bow" modifier="-2"/>
<skill name="building" modifier="2"/>
<skill name="catapult" modifier="2"/>
<skill name="training" modifier="-1"/>
<skill name="riding" modifier="-2"/>
<skill name="armorer" modifier="2"/>
<skill name="shipcraft" modifier="-1"/>
<skill name="melee" modifier="1"/>
<skill name="sailing" modifier="-1"/>
<skill name="quarrying" modifier="2"/>
<skill name="roadwork" modifier="2"/>
<skill name="tactics" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5+3"/>
</race>
<race name="human" magres="0.000000" maxaura="1.000000" regaura="1.000000" recruitcost="75" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="20" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveitem="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="trade" modifier="1"/>
<skill name="shipcraft" modifier="1"/>
<skill name="sailing" modifier="1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
</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" giveitem="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="initfamiliar" value="oldfamiliars"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="1"/>
<skill name="building" modifier="1"/>
<skill name="trade" modifier="-1"/>
<skill name="catapult" modifier="1"/>
<skill name="shipcraft" modifier="-2"/>
<skill name="sailing" modifier="-2"/>
<skill name="roadwork" modifier="-2"/>
<skill name="tactics" modifier="-2"/>
<skill name="cartmaking" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
</race>
<race name="uruk" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveitem="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"/>
<skill name="building" modifier="1"/>
<skill name="trade" modifier="-3"/>
<skill name="forestry" modifier="1"/>
<skill name="herbalism" modifier="-2"/>
<skill name="magic" modifier="-1"/>
<skill name="training" modifier="-1"/>
<skill name="armorer" modifier="1"/>
<skill name="shipcraft" modifier="-1"/>
<skill name="sailing" modifier="-1"/>
<skill name="quarrying" modifier="1"/>
<skill name="tactics" modifier="1"/>
<skill name="weaponsmithing" modifier="2"/>
<skill name="cartmaking" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
</race>
<race name="elf" magres="0.100000" maxaura="1.000000" regaura="1.250000" recruitcost="130" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="18" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveitem="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="-2"/>
<skill name="bow" modifier="2"/>
<skill name="building" modifier="-1"/>
<skill name="catapult" modifier="-2"/>
<skill name="training" modifier="1"/>
<skill name="armorer" modifier="-1"/>
<skill name="shipcraft" modifier="-1"/>
<skill name="sailing" modifier="-1"/>
<skill name="quarrying" modifier="-1"/>
<skill name="roadwork" modifier="-1"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
</race>
<race name="dwarf" magres="0.050000" maxaura="1.000000" regaura="0.500000" recruitcost="110" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveitem="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
<ai splitsize="10000" moverandom="yes" learn="yes"/>
<function name="itemdrop" value="defaultdrops"/>
<skill name="mining" modifier="2"/>
<skill name="bow" modifier="-1"/>
<skill name="building" modifier="2"/>
<skill name="trade" modifier="1"/>
<skill name="forestry" modifier="-1"/>
<skill name="catapult" modifier="2"/>
<skill name="training" modifier="-2"/>
<skill name="riding" modifier="-2"/>
<skill name="armorer" modifier="2"/>
<skill name="shipcraft" modifier="-1"/>
<skill name="melee" modifier="1"/>
<skill name="sailing" modifier="-2"/>
<skill name="quarrying" modifier="2"/>
<skill name="roadwork" modifier="2"/>
<skill name="weaponsmithing" modifier="2"/>
<skill name="unarmed" modifier="-99"/>
<attack type="1" damage="1d5"/>
</race>
</races>

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<terrains>
<!-- defaults: walk="yes" sail="yes" fly="yes" shallow="yes" swim="no" forest="no" sea="no" land="yes" forbidden="no" arctic="no" cavalry="no" -->
<terrain name="ocean" size="100" shallow="no" walk="no" swim="yes" land="no" sea="yes" />
<terrain name="plain" size="2400" road="50" shallow="no" forest="yes" cavalry="yes" seed="3">
<herb name="h0" />
<herb name="h1" />
<herb name="h2" />
<herb name="h3" />
<herb name="h4" />
<herb name="h5" />
<resource name="iron" chance="0.1" level="2d4-1" base="5d8" div="2d20+10" />
<resource name="stone" chance="0.15" level="1d4" base="5d8" div="2d30+20" />
<resource name="laen" chance="0.01" level="1d4" base="1d4" div="2d20+50" />
</terrain>
<terrain name="swamp" size="800" road="75" seed="2">
<herb name="h6" />
<herb name="h7" />
<herb name="h8" />
<resource name="iron" chance="0.02" level="2d4-1" base="5d8" div="2d20+10" />
<resource name="stone" chance="0.02" level="1d4" base="5d8" div="2d30+20" />
<resource name="laen" chance="0.02" level="1d4" base="1d4" div="2d20+50" />
</terrain>
<terrain name="desert" size="800" road="100" cavalry="yes" seed="2">
<herb name="h9" />
<herb name="h10" />
<herb name="h11" />
<resource name="iron" chance="0.15" level="2d4-1" base="5d8" div="2d20+10" />
<resource name="stone" chance="0.25" level="1d4" base="5d8" div="2d30+20" />
<resource name="laen" chance="0.025" level="1d4" base="1d4" div="2d20+50" />
</terrain>
<terrain name="highland" size="1600" road="100" cavalry="yes" seed="2">
<herb name="h12" />
<herb name="h13" />
<herb name="h14" />
<resource name="iron" chance="0.15" level="2d4-1" base="5d8" div="2d20+10" />
<resource name="stone" chance="0.25" level="1d4" base="5d8" div="2d30+20" />
<resource name="laen" chance="0.025" level="1d4" base="1d4" div="2d20+50" />
</terrain>
<terrain name="mountain" size="800" road="250" seed="2">
<herb name="h15" />
<herb name="h16" />
<herb name="h17" />
<resource name="iron" chance="1.0" level="1" base="50" div="50" />
<resource name="stone" chance="1.0" level="1" base="100" div="100" />
<resource name="laen" chance="0.05" level="1" base="4" div="100" />
</terrain>
<terrain name="glacier" size="400" road="250" arctic="yes" seed="2">
<herb name="h18" />
<herb name="h19" />
<herb name="h20" />
<resource name="iron" chance="1.0" level="1" base="3" div="50" />
<resource name="stone" chance="1.0" level="1" base="2" div="100" />
<resource name="laen" chance="0.05" level="1" base="4" div="100" />
</terrain>
<terrain name="iceberg_sleep" size="100" road="250" arctic="yes">
<herb name="h18" />
<herb name="h19" />
<herb name="h20" />
<resource name="iron" chance="0.9" level="1" base="3" div="50" />
<resource name="stone" chance="0.9" level="1" base="2" div="100" />
<resource name="laen" chance="0.05" level="1" base="4" div="100" />
</terrain>
<terrain name="iceberg" size="100" arctic="yes">
<herb name="h18" />
<herb name="h19" />
<herb name="h20" />
<resource name="iron" chance="0.9" level="1" base="3" div="50" />
<resource name="stone" chance="0.9" level="1" base="2" div="100" />
</terrain>
<terrain name="firewall" size="100" road="250" land="no" walk="no" sail="no" fly="no" forbidden="yes" />
<terrain name="fog" sail="no" land="no" size="0" />
<terrain name="thickfog" forbidden="yes" sail="no" walk="no" fly="no" land="no" size="0" />
<terrain name="volcano" size="500" road="250" seed="1">
<resource name="iron" chance="0.5" level="1" base="50" div="50" />
<resource name="stone" chance="0.5" level="1" base="100" div="100" />
<resource name="laen" chance="0.075" level="1" base="4" div="100" />
</terrain>
<terrain name="activevolcano" size="500" road="250">
<resource name="iron" chance="0.5" level="1" base="50" div="50" />
<resource name="stone" chance="0.5" level="1" base="100" div="100" />
<resource name="laen" chance="0.075" level="1" base="4" div="100" />
</terrain>
</terrains>

View File

@ -1488,12 +1488,6 @@
<string name="MACHEN">
<text locale="fr">FAIRE</text>
</string>
<string name="MAGIEGEBIET">
<text locale="fr">SPHERE</text>
</string>
<string name="MEINUNG">
<text locale="fr">OPINION</text>
</string>
<string name="NACH">
<text locale="fr">ALLER</text>
</string>

View File

@ -29,8 +29,6 @@
<game name="HSE" welcome="eressea">
<comment>Game specific</comment>
<order name="MEINUNG" disable="yes"/>
<order name="NUMMER" disable="yes"/>
<order name="MAGIEGEBIET" disable="yes"/>
<skill name="alchemy" enable="true"/>
<skill name="crossbow" enable="true"/>

View File

@ -32,9 +32,7 @@
<game name="HSE4" welcome="eressea">
<comment>Game specific</comment>
<order name="MEINUNG" disable="yes"/>
<order name="NUMMER" disable="yes"/>
<order name="MAGIEGEBIET" disable="yes"/>
<skill name="alchemy" enable="true"/>
<skill name="crossbow" enable="true"/>

View File

@ -50,8 +50,6 @@
<order name="ZERSTOEREN" disable="yes"/>
<order name="ZUECHTEN" disable="yes"/>
<order name="REPORT" disable="yes"/>
<order name="MEINUNG" disable="yes"/>
<order name="MAGIEGEBIET" disable="yes"/>
<order name="PIRATERIE" disable="yes"/>
<order name="NEUSTART" disable="yes"/>
<order name="OPFERE" disable="yes"/>

View File

@ -6242,6 +6242,16 @@
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - The unit could not be found."</text>
</message>
<message name="feedback_give_forbidden" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
<arg name="command" type="order"/>
</type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Dieser Einheit kann nichts gegeben werden."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - You cannot give anything to this unit."</text>
</message>
<message name="pump_effect" section="events">
<type>
<arg name="mage" type="unit"/>

View File

@ -28,8 +28,6 @@
<game name="Eressea RTS" learningbydoing="0.0">
<!-- Game specific settings -->
<order name="MEINUNG" disable="yes"/>
<order name="MAGIEGEBIET" disable="yes"/>
<order name="LEHREN" disable="yes"/>
<order name="SPIONIEREN" disable="yes"/>
<order name="SABOTIEREN" disable="yes"/>

View File

@ -34,8 +34,6 @@
<game name="Tutorial" welcome="tutorial">
<!-- Game specific settings -->
<order name="EMAIL" disable="yes"></order>
<order name="MEINUNG" disable="yes"></order>
<order name="MAGIEGEBIET" disable="yes"></order>
<skill name="alchemy" enable="true"/>
<skill name="crossbow" enable="true"/>

View File

@ -13,8 +13,6 @@
<game name="Kreis der Macht" units="250" welcome="vinyambar">
<comment>Game specific</comment>
<order name="ARBEITEN" disable></order>
<order name="MEINUNG" disable></order>
<order name="MAGIEGEBIET" disable></order>
<param name="entertain.base" value="15"></param>
<param name="entertain.perlevel" value="5"></param>
<param name="nmr.timeout" value="5"></param>

View File

@ -11,8 +11,6 @@
<game name="Vinyambar I" units="250" welcome="vinyambar">
<comment>Game specific</comment>
<order name="MEINUNG" disable></order>
<order name="MAGIEGEBIET" disable></order>
<param name="entertain.base" value="0"></param>
<param name="entertain.perlevel" value="20"></param>
<param name="nmr.timeout" value="4"></param>

View File

@ -25,8 +25,6 @@
<game name="Wettstreit der Weisen" unitsperalliance="yes" units="1000" welcome="vinyambar">
<!-- Game specific settings -->
<order name="ARBEITEN" disable="yes"/>
<order name="MEINUNG" disable="yes"/>
<order name="MAGIEGEBIET" disable="yes"/>
<skill name="alchemy" enable="true"/>
<skill name="crossbow" enable="true"/>

View File

@ -12,8 +12,6 @@
<game name="Vinyambar II" units="250" welcome="vinyambar">
<comment>Game specific</comment>
<order name="ARBEITEN" disable></order>
<order name="MEINUNG" disable></order>
<order name="MAGIEGEBIET" disable></order>
<param name="entertain.base" value="0"></param>
<param name="entertain.perlevel" value="20"></param>
<param name="nmr.timeout" value="5"></param>