diff --git a/res/core/messages.xml b/res/core/messages.xml
index d40efb9ac..ecb5707c1 100644
--- a/res/core/messages.xml
+++ b/res/core/messages.xml
@@ -2690,6 +2690,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/translations/messages.de.po b/res/translations/messages.de.po
index 5d2717e51..af60271ba 100644
--- a/res/translations/messages.de.po
+++ b/res/translations/messages.de.po
@@ -2775,7 +2775,10 @@ msgid "error324"
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Die Einheit gehört nicht zu unserer Partei.\""
msgid "error322"
-msgstr "\"$unit($unit) in $region($region): '$order($command)' - Die Einheit ist bereits auf einem Schiff.\""
+msgstr "\"$unit($unit) in $region($region): '$order($command)' - Nur Schiffe gleicher Bauart können einen Konvoi bilden.\""
+
+msgid "error328"
+msgstr "\"$unit($unit) in $region($region): '$order($command)' - Nur Schiffe an der selben Küste können einen Konvoi bilden.\""
msgid "error323"
msgstr "\"$unit($unit) in $region($region): '$order($command)' - Das Schiff ist verzaubert.\""
diff --git a/res/translations/messages.en.po b/res/translations/messages.en.po
index 659adee9f..9ec9c934b 100644
--- a/res/translations/messages.en.po
+++ b/res/translations/messages.en.po
@@ -2781,11 +2781,14 @@ msgid "error324"
msgstr "\"$unit($unit) in $region($region): '$order($command)' - The unit is not one of ours.\""
msgid "error322"
-msgstr "\"$unit($unit) in $region($region): '$order($command)' - The unit is already on a ship.\""
+msgstr "\"$unit($unit) in $region($region): '$order($command)' - Only ships of the same type can form a convoy.\""
msgid "error323"
msgstr "\"$unit($unit) in $region($region): '$order($command)' - The ship is under a spell.\""
+msgid "error328"
+msgstr "\"$unit($unit) in $region($region): '$order($command)' - All ships of a convoy must be on the same coast.\""
+
msgid "dissolve_units_2"
msgstr "\"$unit($unit) in $region($region): $int($number) $race($race,$number) turned into $if($eq($number,1),\"a tree\", \"trees\").\""
diff --git a/src/economy.c b/src/economy.c
index 35e08ade6..5da191e50 100644
--- a/src/economy.c
+++ b/src/economy.c
@@ -1775,12 +1775,12 @@ static void breedtrees(unit * u, int raw)
}
if (n > raw) n = raw;
- /* Fuer jeden Samen Talent*5% Erfolgschance. */
- for (i = n; i > 0; i--) {
- if (rng_int() % 100 < skill * 5)
- planted++;
+ /* Talent * 5% der Samen setzen an (max 100%) */
+ planted = n;
+ if (skill < 20) {
+ planted = planted * skill / 20;
}
- rsettrees(r, 1, rtrees(r, 1) + planted);
+ rsettrees(r, 0, rtrees(r, 0) + planted);
/* Alles ok. Abziehen. */
produceexp(u, SK_HERBALISM, u->number);
diff --git a/src/give.c b/src/give.c
index ac792da9a..ff1a3ac03 100644
--- a/src/give.c
+++ b/src/give.c
@@ -371,7 +371,7 @@ message * give_ship(unit *u1, unit *u2, int n, order *ord)
u2->ship->coast = u1->ship->coast;
}
else {
- return msg_error(u1, ord, 182);
+ return msg_error(u1, ord, 328);
}
}
}
diff --git a/src/kernel/messages.c b/src/kernel/messages.c
index 656e08b3a..98411973d 100644
--- a/src/kernel/messages.c
+++ b/src/kernel/messages.c
@@ -62,6 +62,7 @@ static message *missing_feedback(const char *name, const struct unit *u,
log_error("trying to create undefined feedback of type \"%s\"\n", name);
}
else if (missing_message_mode == MESSAGE_MISSING_REPLACE) {
+ log_warning("trying to create undefined message of type \"%s\"\n", name);
if (strcmp(name, "missing_feedback") != 0) {
if (!mt_find("missing_feedback")) {
mt_create_va(mt_new("missing_feedback", NULL), "unit:unit",
diff --git a/src/laws.c b/src/laws.c
index 4170975b5..53b49e1b6 100644
--- a/src/laws.c
+++ b/src/laws.c
@@ -594,6 +594,13 @@ growing_trees_e3(region * r, const int current_season,
}
}
+static short cap_short(int i) {
+ if (i > SHRT_MIN) {
+ return ((i < SHRT_MAX) ? (short)i : SHRT_MAX);
+ }
+ return SHRT_MIN;
+}
+
static void
growing_trees(region * r, const season_t current_season, const season_t last_weeks_season)
{
@@ -687,8 +694,8 @@ growing_trees(region * r, const season_t current_season, const season_t last_wee
a = a_find(r->attribs, &at_germs);
if (!a) {
a = a_add(&r->attribs, a_new(&at_germs));
- a->data.sa[0] = (short)rtrees(r, 0);
- a->data.sa[1] = (short)rtrees(r, 1);
+ a->data.sa[0] = cap_short(rtrees(r, 0));
+ a->data.sa[1] = cap_short(rtrees(r, 1));
}
/* wir haben 6 Wochen zum wachsen, jeder Same/Spross hat 18% Chance
* zu wachsen, damit sollten nach 5-6 Wochen alle gewachsen sein */