diff --git a/src/common/gamecode/creport.c b/src/common/gamecode/creport.c
index 27563403f..de78d6906 100644
--- a/src/common/gamecode/creport.c
+++ b/src/common/gamecode/creport.c
@@ -606,6 +606,7 @@ cr_output_ship(FILE * F, const ship * sh, const unit * u, int fcaptain, const fa
fprintf(F, "%d;cargo\n", n);
fprintf(F, "%d;capacity\n", c);
+ fprintf(F, "%d;speed\n", shipspeed(sh, u));
n = (n+99) / 100; /* 1 Silber = 1 GE */
fprintf(F, "%d;Ladung\n", n);
diff --git a/src/common/kernel/battle.c b/src/common/kernel/battle.c
index a0da092ca..a8a962aa7 100644
--- a/src/common/kernel/battle.c
+++ b/src/common/kernel/battle.c
@@ -718,8 +718,10 @@ static int CavalrySkill(void)
return skill;
}
+#define BONUS_SKILL 1
+#define BONUS_DAMAGE 2
static int
-CavalryBonus(const unit * u, troop enemy)
+CavalryBonus(const unit * u, troop enemy, int type)
{
static int mode = -1;
@@ -728,15 +730,15 @@ CavalryBonus(const unit * u, troop enemy)
}
if (mode==0) {
/* old rule, Eressea 1.0 compat */
- return 2;
+ return (type==BONUS_SKILL)?2:0;
} else {
/* new rule, chargers in Eressea 1.1 */
int skl = effskill(u, SK_RIDING);
/* only half against trolls */
if (enemy.fighter->unit->race==new_race[RC_TROLL]) {
- skl = (skl-2)*3/4;
+ skl = skl/4;
} else {
- skl = (skl-2)*3/2;
+ skl = skl/2;
}
return MAX(skl, 0);
}
@@ -790,7 +792,7 @@ weapon_effskill(troop t, troop enemy, const weapon * w, boolean attacking, boole
/* Burgenbonus, Pferdebonus */
if (is_riding(t) && (wtype==NULL || (fval(wtype, WTF_HORSEBONUS) && !fval(wtype, WTF_MISSILE)))) {
- skill += CavalryBonus(tu, enemy);
+ skill += CavalryBonus(tu, enemy, BONUS_SKILL);
if (wtype) skill = skillmod(urace(tu)->attribs, tu, tu->region, wtype->skill, skill, SMF_RIDING);
}
@@ -1118,6 +1120,10 @@ terminate(troop dt, troop at, int type, const char *damage, boolean missile)
sd = weapon_effskill(dt, at, weapon, false, false);
if (weapon!=NULL) dwtype=weapon->type;
+ if (is_riding(at) && (awtype==NULL || (fval(awtype, WTF_HORSEBONUS) && !fval(awtype, WTF_MISSILE)))) {
+ da += CavalryBonus(au, dt, BONUS_DAMAGE);
+ }
+
if (armor) {
ar += armor->prot;
if (armor->projectile>0 && chance(armor->projectile)) {
diff --git a/src/common/kernel/building.c b/src/common/kernel/building.c
index 050baad21..16350c6e8 100644
--- a/src/common/kernel/building.c
+++ b/src/common/kernel/building.c
@@ -230,18 +230,6 @@ findbuilding(int i)
/* ** old building types ** */
-/** Building: Fortification */
-enum {
- B_SITE,
- B_TRADEPOST,
- B_FORTIFICATION,
- B_TOWER,
- B_CASTLE,
- B_FORTRESS,
- B_CITADEL,
- MAXBUILDINGS
-};
-
static int
sm_smithy(const unit * u, const region * r, skill_t sk, int value) /* skillmod */
{
@@ -266,7 +254,7 @@ init_smithy(struct building_type * bt)
static const char *
castle_name(const struct building_type* btype, int bsize)
{
- const char * fname[MAXBUILDINGS] = {
+ const char * fname[] = {
"site",
"tradepost",
"fortification",
@@ -290,7 +278,8 @@ castle_name(const struct building_type* btype, int bsize)
static const char *
fort_name(const struct building_type* btype, int bsize)
{
- const char * fname[MAXBUILDINGS] = {
+ const char * fname[] = {
+ "scaffolding",
"guardhouse",
"guardtower",
};
diff --git a/src/res/e2k9.xml b/src/res/e2k9.xml
index 5195995cc..4c99fcfb2 100644
--- a/src/res/e2k9.xml
+++ b/src/res/e2k9.xml
@@ -134,7 +134,7 @@
-
+
diff --git a/src/res/e2k9/buildings.xml b/src/res/e2k9/buildings.xml
index ca51a0841..cbc635ae1 100644
--- a/src/res/e2k9/buildings.xml
+++ b/src/res/e2k9/buildings.xml
@@ -5,9 +5,12 @@
-
-
-
+
+
+
+
+
+
diff --git a/src/res/e2k9/strings.xml b/src/res/e2k9/strings.xml
index 1e3a2d3df..c4e441b60 100644
--- a/src/res/e2k9/strings.xml
+++ b/src/res/e2k9/strings.xml
@@ -21,6 +21,10 @@
repeating crossbows
+
+ Gerüst
+ scaffolding
+
Wachstube
guard house