diff --git a/conf/e2/config.json b/conf/e2/config.json
index fa8566eab..217cfffe9 100644
--- a/conf/e2/config.json
+++ b/conf/e2/config.json
@@ -11,6 +11,7 @@
"settings": {
"game.id": 2,
"game.name": "Eressea",
+ "orders.default": "work",
"NewbieImmunity": 8,
"modules.wormholes": true,
"entertain.base": 0,
diff --git a/conf/e2/config.xml b/conf/e2/config.xml
index d1eac12d8..5516fd601 100644
--- a/conf/e2/config.xml
+++ b/conf/e2/config.xml
@@ -67,9 +67,5 @@
ERESSEA 2 BEFEHLE
ERESSEA 2 ORDERS
-
- ARBEITEN
- WORK
-
diff --git a/conf/e3/config.json b/conf/e3/config.json
index a1fc05b74..c9a86c8da 100644
--- a/conf/e3/config.json
+++ b/conf/e3/config.json
@@ -27,6 +27,7 @@
"settings": {
"game.id": 3,
"game.name": "E3",
+ "orders.default": "work",
"database.gameid": 7,
"NewbieImmunity": 4,
"modules.astralspace": false,
diff --git a/conf/e3/config.xml b/conf/e3/config.xml
index 0531f69d2..04af3858d 100644
--- a/conf/e3/config.xml
+++ b/conf/e3/config.xml
@@ -59,9 +59,5 @@
ERESSEA 3 BEFEHLE
ERESSEA 3 ORDERS
-
- ARBEITEN
- WORK
-
diff --git a/conf/e4/config.json b/conf/e4/config.json
index 345558dff..7a73de86f 100644
--- a/conf/e4/config.json
+++ b/conf/e4/config.json
@@ -27,6 +27,7 @@
"settings": {
"game.id": 4,
"game.name": "Deveron",
+ "orders.default": "work",
"database.gameid": 7,
"NewbieImmunity": 4,
"modules.astralspace": false,
diff --git a/conf/e4/config.xml b/conf/e4/config.xml
index ffa1c5df8..2def4f1a8 100644
--- a/conf/e4/config.xml
+++ b/conf/e4/config.xml
@@ -60,9 +60,5 @@
ERESSEA 4 BEFEHLE
ERESSEA 4 ORDERS
-
- ARBEITEN
- WORK
-
diff --git a/res/eressea/strings.xml b/res/eressea/strings.xml
index 6b6cf8903..b7db0eb4b 100644
--- a/res/eressea/strings.xml
+++ b/res/eressea/strings.xml
@@ -284,10 +284,6 @@
getting it after the second turn, please make one of your units give the
order OPTION COMPUTER.
-
- ARBEITEN
- WORK
-
Tempel
temple
diff --git a/src/kernel/config.c b/src/kernel/config.c
index cc769b2c9..597841c46 100644
--- a/src/kernel/config.c
+++ b/src/kernel/config.c
@@ -1003,29 +1003,24 @@ void kernel_init(void)
}
static order * defaults[MAXLOCALES];
-keyword_t default_keyword = NOKEYWORD;
-void set_default_order(int kwd) {
- default_keyword = (keyword_t)kwd;
-}
-
-// TODO: outside of tests, default_keyword is never used, why is this here?
-// see also test_long_order_hungry
order *default_order(const struct locale *lang)
{
int i = locale_index(lang);
order *result = 0;
assert(i < MAXLOCALES);
- if (default_keyword != NOKEYWORD) {
- return create_order(default_keyword, lang, 0);
- }
-
result = defaults[i];
if (!result) {
- const char * str = LOC(lang, "defaultorder");
+ const char * str;
+ keyword_t kwd = NOKEYWORD;
+ str = config_get("orders.default");
if (str) {
- result = defaults[i] = parse_order(str, lang);
+ kwd = findkeyword(str);
+ }
+ if (kwd != NOKEYWORD) {
+ result = create_order(kwd, lang, NULL);
+ defaults[i] = result;
}
}
return result ? copy_order(result) : 0;
diff --git a/src/kernel/config.h b/src/kernel/config.h
index dda7873aa..87d44492d 100644
--- a/src/kernel/config.h
+++ b/src/kernel/config.h
@@ -195,7 +195,6 @@ struct param;
bool IsImmune(const struct faction *f);
struct order *default_order(const struct locale *lang);
- void set_default_order(int kwd);
int entertainmoney(const struct region *r);
void init_parameters(struct locale *lang);
diff --git a/src/kernel/config.test.c b/src/kernel/config.test.c
index 7cd495284..d5b46581c 100644
--- a/src/kernel/config.test.c
+++ b/src/kernel/config.test.c
@@ -180,7 +180,8 @@ static void test_default_order(CuTest *tc) {
loc = test_create_locale();
ord = default_order(loc);
CuAssertPtrEquals(tc, 0, ord);
- locale_setstring(loc, "defaultorder", "work");
+
+ config_set("orders.default", "work");
ord = default_order(loc);
CuAssertPtrNotNull(tc, ord);
CuAssertIntEquals(tc, K_WORK, getkeyword(ord));
diff --git a/src/laws.test.c b/src/laws.test.c
index 1b2136db7..94296400d 100644
--- a/src/laws.test.c
+++ b/src/laws.test.c
@@ -1003,8 +1003,6 @@ static void test_long_order_buy_cast(CuTest *tc) {
}
static void test_long_order_hungry(CuTest *tc) {
- // FIXME: set_default_order is a test-only function, this is a bad test.
- // see also default_order
unit *u;
test_cleanup();
config_set("hunger.long", "1");
@@ -1012,12 +1010,11 @@ static void test_long_order_hungry(CuTest *tc) {
fset(u, UFL_HUNGER);
unit_addorder(u, create_order(K_MOVE, u->faction->locale, 0));
unit_addorder(u, create_order(K_DESTROY, u->faction->locale, 0));
- set_default_order(K_WORK);
+ config_set("orders.default", "work");
update_long_order(u);
CuAssertIntEquals(tc, K_WORK, getkeyword(u->thisorder));
CuAssertPtrNotNull(tc, u->orders);
CuAssertPtrEquals(tc, 0, u->faction->msgs);
- set_default_order(NOKEYWORD);
test_cleanup();
}