diff --git a/src/common/gamecode/economy.c b/src/common/gamecode/economy.c
index 818825dec..c88b13e39 100644
--- a/src/common/gamecode/economy.c
+++ b/src/common/gamecode/economy.c
@@ -931,17 +931,15 @@ maintain(building * b, boolean first)
}
if (paid && c>0) {
/* TODO: wieviel von was wurde bezahlt */
- message * msg = NULL;
if (first) {
- msg = add_message(&u->faction->msgs,
- msg_message("maintenance", "unit building", u, b));
+ ADDMSG(&u->faction->msgs, msg_message("maintenance", "unit building", u, b));
} else {
- msg = add_message(&u->faction->msgs,
- msg_message("maintenance_late", "building", b));
+ ADDMSG(&u->faction->msgs, msg_message("maintenance_late", "building", b));
}
- if (msg) msg_release(msg);
fset(b, BLD_MAINTAINED);
- if (work) fset(b, BLD_WORKING);
+ if (work) {
+ fset(b, BLD_WORKING);
+ }
for (c=0;b->type->maintenance[c].number;++c) {
const maintenance * m = b->type->maintenance+c;
int cost = m->number;
@@ -1035,19 +1033,27 @@ maintain_buildings(boolean crash)
building **bp = &r->buildings;
while (*bp) {
building * b = *bp;
- if (!maintain(b, !crash) && crash) {
- if (rand() % 100 < EINSTURZCHANCE) {
- gebaeude_stuerzt_ein(r, b);
- continue;
- } else {
- unit * u = buildingowner(r, b);
- struct message * msg = msg_message("nomaintenance", "building", b);
- if (u) {
+ boolean maintained = maintain(b, !crash);
+
+ /* the second time, send a message */
+ if (crash) {
+ if (!maintained && (rand() % 100 < EINSTURZCHANCE)) {
+ gebaeude_stuerzt_ein(r, b);
+ continue;
+ } else if (!fval(b, BLD_WORKING)) {
+ unit * u = buildingowner(r, b);
+ const char * msgtype = maintained?"maintenance_none":"maintenance_nowork";
+ struct message * msg = msg_message(msgtype, "building", b);
+
+ if (u) {
add_message(&u->faction->msgs, msg);
r_addmessage(r, u->faction, msg);
- }
- }
- }
+ } else {
+ add_message(&r->msgs, msg);
+ }
+ msg_release(msg);
+ }
+ }
bp=&b->next;
}
}
diff --git a/src/res/messages.xml b/src/res/messages.xml
index 58db7d396..f35a5a286 100644
--- a/src/res/messages.xml
+++ b/src/res/messages.xml
@@ -598,11 +598,19 @@
"A message by $unit($unit) from $region($region): '$string'"
"A message by $unit($unit) from $region($region): '$string'"
-
+
+
+
+
+ "$building($building) hat diese Woche nicht funktioniert, da der Unterhalt nicht rechtzeitig gezahlt wurde."
+ "$building($building) did not function this week because upkeep could not be paid."
+
+
"Für das Gebäude $building($building) konnte die ganze Woche kein Unterhalt bezahlt werden."
+ "Upkeep for $building($building) could not be paid all week."