- Neue Orkrasse RC_URUK

Muss getestet werden. Langsameres Lernen nicht drin.
This commit is contained in:
Christian Schlittchen 2002-02-10 16:04:39 +00:00
parent f1fc6dce4f
commit 0a0474df52
12 changed files with 118 additions and 29 deletions

View File

@ -245,7 +245,7 @@ expandrecruit(region * r, request * recruitorders)
{
/* Rekrutierung */
int i, n, p = rpeasants(r), h = rhorses(r);
int i, n, p = rpeasants(r), h = rhorses(r), uruks = 0;
int rfrac = p / RECRUITFRACTION;
unit * u;
@ -266,7 +266,7 @@ expandrecruit(region * r, request * recruitorders)
if (h <= 0) continue;
} else if ((rc->ec_flags & ECF_REC_ETHEREAL) == 0) {
/* recruit from peasants if any space left */
if (n >= rfrac) continue;
if (n - (uruks+1)/2 >= rfrac) continue;
}
}
if (recruitcost) {
@ -276,7 +276,10 @@ expandrecruit(region * r, request * recruitorders)
if ((rc->ec_flags & ECF_REC_UNLIMITED)==0) {
if (rc->ec_flags & ECF_REC_HORSES) h--; /* use a horse */
else {
if ((rc->ec_flags & ECF_REC_ETHEREAL)==0) p--; /* use a peasant */
if ((rc->ec_flags & ECF_REC_ETHEREAL)==0) {
p--; /* use a peasant */
if(rc == new_race[RC_URUK]) uruks++;
}
n++;
}
}
@ -286,7 +289,7 @@ expandrecruit(region * r, request * recruitorders)
}
assert(p>=0 && h>=0);
rsetpeasants(r, p);
rsetpeasants(r, p+uruks/2);
rsethorses(r, h);
free(oa);
@ -295,7 +298,7 @@ expandrecruit(region * r, request * recruitorders)
if (u->n >= 0) {
if (u->number)
u->hp += u->n * unit_max_hp(u);
if (u->race == new_race[RC_ORC]) {
if (u->race == new_race[RC_URUK]) {
change_skill(u, SK_SWORD, skill_level(1) * u->n);
change_skill(u, SK_SPEAR, skill_level(1) * u->n);
}
@ -365,12 +368,17 @@ recruit(region * r, unit * u, strlist * S,
return;
}
#if RACE_ADJUSTMENTS
if (fval(r, RF_ORCIFIED) && u->faction->race != new_race[RC_URUK] &&
#else
if (fval(r, RF_ORCIFIED) && u->faction->race != new_race[RC_ORC] &&
#endif
!(u->faction->race->ec_flags & ECF_REC_HORSES)) {
cmistake(u, S->s, 238, MSG_EVENT);
return;
}
recruitcost = u->faction->race->recruitcost;
if (recruitcost) {
pl = getplane(r);
@ -537,6 +545,11 @@ givemen(int n, unit * u, unit * u2, const char * cmd)
return;
} else if (u == u2) {
error = 10;
#if RACE_ADJUSTMENTS
} else if (u->race == new_race[RC_URUK]) {
/* Uruks/Snotlings können nicht an Bauern übergeben werden. */
error = 307;
#endif
} else if ((u && unit_has_cursed_item(u)) || (u2 && unit_has_cursed_item(u2))) {
error = 78;
} else if (fval(u, FL_LOCKED) || fval(u, FL_HUNGER) || is_cursed(u->attribs, C_SLAVE, 0)) {

View File

@ -1075,6 +1075,8 @@ randomevents(void)
drown(r);
}
#if RACE_ADJUSTMENTS
/* Orks vermehren sich */
for (r = regions; r; r = r->next) {
@ -1129,6 +1131,7 @@ randomevents(void)
}
}
}
#endif
/* Talente von Dämonen verschieben sich und Dämonen fressen Bauern */

View File

@ -1324,8 +1324,6 @@ describe(FILE * F, region * r, int partial, faction * f)
}
}
extern const int wagetable[6][3];
void
statistics(FILE * F, region * r, faction * f)
{

View File

@ -132,7 +132,7 @@ setstealth(unit * u, strlist * S)
if (u->race == new_race[RC_DAEMON]) {
race_t allowed[] = { RC_DWARF, RC_ELF, RC_ORC, RC_GOBLIN, RC_HUMAN,
RC_TROLL, RC_DAEMON, RC_INSECT, RC_HALFLING, RC_CAT, RC_AQUARIAN,
NORACE };
RC_URUK, NORACE };
int i;
for (i=0;allowed[i]!=NORACE;++i) if (new_race[allowed[i]]==trace) break;
if (new_race[allowed[i]]==trace) {

View File

@ -682,11 +682,22 @@ weapon_skill(const weapon_type * wtype, const unit * u, boolean attacking)
skill = effskill(u, SK_WEAPONLESS);
if (skill==0) {
/* wenn kein waffenloser kampf, dann den rassen-defaultwert */
if(u->race == new_race[RC_URUK]) {
int sword = effskill(u, SK_SWORD);
int spear = effskill(u, SK_SPEAR);
skill = max(sword, spear) - 3;
if (attacking) {
skill = max(skill, u->race->at_default);
} else {
skill = max(skill, u->race->df_default);
}
} else {
if (attacking) {
skill = u->race->at_default;
} else {
skill = u->race->df_default;
}
}
} else {
/* der rassen-defaultwert kann höher sein als der Talentwert von
* waffenloser kampf */

View File

@ -2764,7 +2764,8 @@ wage(const region *r, const unit *u, boolean img)
if (b) esize = buildingeffsize(b, img);
if (u) {
wage = wagetable[esize][old_race(u->race) == RC_ORC];
/* TODO: Snotling! */
wage = wagetable[esize][u->race == new_race[RC_ORC] || u->race == new_race[RC_URUK]];
if (fspecial(u->faction, FS_URBAN)) {
wage += wagetable[esize][3];
}

View File

@ -616,34 +616,35 @@ enum {
RC_HALFLING,
RC_CAT,
RC_AQUARIAN,
RC_URUK,
RC_UNDEAD, /* 11 - Untoter */
RC_UNDEAD, /* 12 - Untoter */
RC_ILLUSION,
RC_FIREDRAGON,
RC_DRAGON,
RC_WYRM,
RC_TREEMAN,
RC_BIRTHDAYDRAGON, /* 17 - Katzendrache*/
RC_BIRTHDAYDRAGON, /* 18 - Katzendrache*/
RC_DRACOID,
RC_SPECIAL,
RC_SPELL,
RC_IRONGOLEM, /* 21 - Eisengolem */
RC_IRONGOLEM, /* 22 - Eisengolem */
RC_STONEGOLEM,
RC_SHADOW,
RC_SHADOWLORD,
RC_IRONKEEPER, /* 25 - Bergwächter */
RC_IRONKEEPER, /* 26 - Bergwächter */
RC_ALP,
RC_TOAD, /* 27 - Kröte */
RC_TOAD, /* 28 - Kröte */
RC_HIRNTOETER,
RC_PEASANT,
RC_WOLF, /* 30 */
RC_WOLF, /* 31 */
RC_HOUSECAT,
RC_TUNNELWORM,
@ -654,7 +655,7 @@ enum {
RC_UNICORN,
RC_WARG,
RC_WRAITH,
RC_IMP, /* 40 */
RC_IMP, /* 41 */
RC_DREAMCAT,
RC_FEY,
RC_OWL,
@ -664,7 +665,7 @@ enum {
RC_OCEANTURTLE,
RC_KRAKEN,
RC_SEASERPENT,
RC_SHADOWKNIGHT, /* 50 */
RC_SHADOWKNIGHT, /* 51 */
RC_CENTAUR,
@ -675,10 +676,11 @@ enum {
RC_GHOUL,
RC_GHOUL_LORD,
RC_MUS_SPIRIT, /* 58 */
RC_GNOME, /* 59 */
RC_TEMPLATE, /* 60 */
RC_CLONE, /* 61 */
RC_MUS_SPIRIT, /* 59 */
RC_GNOME, /* 60 */
RC_TEMPLATE, /* 61 */
RC_CLONE, /* 62 */
MAXRACES,
NORACE = (race_t) - 1

View File

@ -155,7 +155,7 @@ const struct race_syn race_synonyms[] = {
/* required for old_race, do not change order! */
static const char * oldracenames[MAXRACES] = {
"dwarf", "elf", "orc", "goblin", "human", "troll", "demon", "insect", "halfling", "cat", "aquarian",
"dwarf", "elf", "orc", "goblin", "human", "troll", "demon", "insect", "halfling", "cat", "aquarian", "uruk"
"undead", "illusion",
"young dragon", "dragon", "wyrm", "ent", "catdragon", "dracoid",
"special", "spell",
@ -208,6 +208,7 @@ give_starting_equipment(struct region *r, struct unit *u)
set_show_item(u->faction, I_FEENSTIEFEL);
break;
case RC_ORC:
case RC_URUK:
set_level(u, SK_SPEAR, 4);
set_level(u, SK_SWORD, 4);
set_level(u, SK_CROSSBOW, 4);

View File

@ -4287,7 +4287,7 @@
<text locale="en">"$unit($unit) in $region($region): '$command' - options ZIP and BZIP2 can only be switched, not turned off."</text>
</message>
<message name="error305">
<message name="error306">
<type>
<arg name="unit" type="unit"></arg>
<arg name="region" type="region"></arg>
@ -4300,6 +4300,19 @@
</locale>
</message>
<message name="error307">
<type>
<arg name="unit" type="unit"></arg>
<arg name="region" type="region"></arg>
<arg name="command" type="string"></arg>
</type>
<locale name="de">
<nr section="errors">
<text>"$unit($unit) in $region($region): '$command' - Orks sind keine Bauern."</text>
</nr>
</locale>
</message>
<message name="drown_on_ship">
<type>
<arg name="unit" type="unit"></arg>

View File

@ -1861,6 +1861,12 @@
<string name="Orks">
<text locale="de">Orks</text>
</string>
<string name="Uruk">
<text locale="de">Ork</text>
</string>
<string name="Uruks">
<text locale="de">Orks</text>
</string>
<string name="Riesenschildkröte">
<text locale="de">Riesenschildkröte</text>
</string>
@ -2013,6 +2019,12 @@
<string name="rc_orc">
<text locale="de">Ork</text>
</string>
<string name="rc_uruk_p">
<text locale="de">Orks</text>
</string>
<string name="rc_uruk">
<text locale="de">Ork</text>
</string>
<string name="rc_zombie">
<text locale="de">Zombie</text>
</string>

View File

@ -1691,8 +1691,14 @@
<text locale="en">orc</text>
</string>
<string name="Orks">
<text locale="en">orcs</text>
</string>
<string name="Uruk">
<text locale="en">orc</text>
</string>
<string name="Uruks">
<text locale="en">orcs</text>
</string>
<string name="Riesenschildkröte">
<text locale="en">giant turtle</text>
</string>

View File

@ -1093,7 +1093,7 @@
<familiar race="eagle"></familiar>
<familiar race="imp"></familiar>
</race>
<race name="goblin" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="40" maintenance="10" weight="1000" speed="1.000000" hp="16" ac="0" damage="1d5" unarmedattack="-2" unarmeddefense="0" attackmodifier="0" defensemodifier="0" playerrace walk giveitem giveperson giveunit getitem equipment>
<race name="goblin" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="40" maintenance="10" weight="900" speed="1.000000" hp="16" ac="0" damage="1d5" unarmedattack="-2" unarmeddefense="0" attackmodifier="0" defensemodifier="0" playerrace walk giveitem giveperson giveunit getitem equipment>
<ai splitsize="10000" attackrandom moverandom learn></ai>
<function name="initfamiliar" value="oldfamiliars"></function>
<skill name="sk_alchemy" modifier="1"></skill>
@ -1173,7 +1173,7 @@
<familiar race="unicorn"></familiar>
<familiar race="imp"></familiar>
</race>
<race name="dwarf" magres="0.050000" maxaura="1.000000" regaura="0.500000" recruitcost="90" maintenance="10" weight="1000" speed="1.000000" hp="24" ac="0" damage="1d5" unarmedattack="-2" unarmeddefense="-2" attackmodifier="0" defensemodifier="0" playerrace walk giveitem giveperson giveunit getitem equipment>
<race name="dwarf" magres="0.050000" maxaura="1.000000" regaura="0.500000" recruitcost="110" maintenance="10" weight="1000" speed="1.000000" hp="24" ac="0" damage="1d5" unarmedattack="-2" unarmeddefense="-2" attackmodifier="0" defensemodifier="0" playerrace walk giveitem giveperson giveunit getitem equipment>
<ai splitsize="10000" attackrandom moverandom learn></ai>
<skill name="sk_mining" modifier="2"></skill>
<skill name="sk_bow" modifier="-1"></skill>
@ -1204,4 +1204,33 @@
<familiar race="wolf"></familiar>
<familiar race="rat"></familiar>
</race>
<race name="uruk" magres="-0.050000" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" speed="1.000000" hp="24" ac="0" damage="1d5" unarmedattack="-2" unarmeddefense="-2" attackmodifier="0" defensemodifier="0" playerrace walk giveitem giveperson giveunit getitem equipment>
<ai splitsize="10000" attackrandom moverandom learn></ai>
<skill name="sk_alchemy" modifier="1"></skill>
<skill name="sk_mining" modifier="1"></skill>
<skill name="sk_building" modifier="1"></skill>
<skill name="sk_trade" modifier="-3"></skill>
<skill name="sk_forestry" modifier="1"></skill>
<skill name="sk_herbalism" modifier="-2"></skill>
<skill name="sk_magic" modifier="-1"></skill>
<skill name="sk_training" modifier="-1"></skill>
<skill name="sk_armorer" modifier="1"></skill>
<skill name="sk_shipcraft" modifier="-1"></skill>
<skill name="sk_sailing" modifier="-1"></skill>
<skill name="sk_espionage" modifier="-1"></skill>
<skill name="sk_quarrying" modifier="1"></skill>
<skill name="sk_tactics" modifier="1"></skill>
<skill name="sk_entertainment" modifier="-2"></skill>
<skill name="sk_weaponsmithing" modifier="2"></skill>
<skill name="sk_cartmaking" modifier="-1"></skill>
<skill name="sk_taxation" modifier="1"></skill>
<skill name="sk_unarmed" modifier="-99"></skill>
<attack type="1" damage="1d5"></attack>
<familiar race="goblin" default></familiar>
<familiar race="ghost"></familiar>
<familiar race="imp"></familiar>
<familiar race="rat"></familiar>
<familiar race="wolf"></familiar>
<familiar race="demon"></familiar>
</race>
</races>