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