From a4cb5e29066d3b0c31254e1c84b89b6b5955844e Mon Sep 17 00:00:00 2001
From: Enno Rehling <enno.rehling@gmail.com>
Date: Sun, 22 Nov 2015 10:44:46 +0100
Subject: [PATCH] replace all get_param_* for global.parameters with
 config_get_*

---
 src/battle.c               | 36 +++++++++++++++----------------
 src/bindings.c             |  2 +-
 src/chaos.c                |  2 +-
 src/creport.c              |  2 +-
 src/economy.c              | 12 +++++------
 src/give.c                 |  8 +++----
 src/items/weapons.c        |  6 ++----
 src/jsreport.c             |  2 +-
 src/kernel/build.c         |  4 ++--
 src/kernel/building.c      |  2 +-
 src/kernel/config.c        | 43 +++++++++++++++++++-------------------
 src/kernel/faction.c       |  5 ++---
 src/kernel/jsonconf.test.c | 14 ++++++-------
 src/kernel/resources.c     |  4 ++--
 src/kernel/ship.c          |  2 +-
 src/kernel/skills.c        |  2 +-
 src/kernel/teleport.c      |  3 +--
 src/kernel/unit.c          | 11 +++++-----
 src/laws.c                 | 38 ++++++++++++++++-----------------
 src/magic.c                | 13 ++++++------
 src/monster.c              |  2 +-
 src/monsters.c             |  2 +-
 src/move.c                 | 26 +++++++++++------------
 src/randenc.c              | 18 +++++-----------
 src/reports.c              |  2 +-
 src/study.c                |  6 +++---
 src/upkeep.c               |  6 +++---
 27 files changed, 127 insertions(+), 146 deletions(-)

diff --git a/src/battle.c b/src/battle.c
index a897a300e..80c3c0583 100644
--- a/src/battle.c
+++ b/src/battle.c
@@ -136,26 +136,26 @@ static int skill_formula = 0;
 static void static_rules(void)
 {
     loot_rules =
-        get_param_int(global.parameters, "rules.combat.loot",
+        config_get_int("rules.combat.loot",
         LOOT_MONSTERS | LOOT_OTHERS | LOOT_KEEPLOOT);
     /* new formula to calculate to-hit-chance */
     skill_formula =
-        get_param_int(global.parameters, "rules.combat.skill_formula",
+        config_get_int("rules.combat.skill_formula",
         FORMULA_ORIG);
     /* maximum number of combat turns */
     max_turns =
-        get_param_int(global.parameters, "rules.combat.turns", COMBAT_TURNS);
+        config_get_int("rules.combat.turns", COMBAT_TURNS);
     /* damage calculation */
-    if (get_param_int(global.parameters, "rules.combat.critical", 1)) {
+    if (config_get_int("rules.combat.critical", 1)) {
         damage_rules |= DAMAGE_CRITICAL;
     }
-    if (get_param_int(global.parameters, "rules.combat.melee_bonus", 1)) {
+    if (config_get_int("rules.combat.melee_bonus", 1)) {
         damage_rules |= DAMAGE_MELEE_BONUS;
     }
-    if (get_param_int(global.parameters, "rules.combat.missile_bonus", 1)) {
+    if (config_get_int("rules.combat.missile_bonus", 1)) {
         damage_rules |= DAMAGE_MISSILE_BONUS;
     }
-    if (get_param_int(global.parameters, "rules.combat.skill_bonus", 1)) {
+    if (config_get_int("rules.combat.skill_bonus", 1)) {
         damage_rules |= DAMAGE_SKILL_BONUS;
     }
 }
@@ -667,7 +667,7 @@ static int CavalrySkill(void)
     static int skill = -1;
 
     if (skill < 0) {
-        skill = get_param_int(global.parameters, "rules.cavalry.skill", 2);
+        skill = config_get_int("rules.cavalry.skill", 2);
     }
     return skill;
 }
@@ -679,7 +679,7 @@ static int CavalryBonus(const unit * u, troop enemy, int type)
     static int mode = -1;
 
     if (mode < 0) {
-        mode = get_param_int(global.parameters, "rules.cavalry.mode", 1);
+        mode = config_get_int("rules.cavalry.mode", 1);
     }
     if (mode == 0) {
         /* old rule, Eressea 1.0 compat */
@@ -1008,7 +1008,7 @@ static void vampirism(troop at, int damage)
 {
     static int vampire = -1;
     if (vampire < 0)
-        vampire = get_param_int(global.parameters, "rules.combat.demon_vampire", 0);
+        vampire = config_get_int("rules.combat.demon_vampire", 0);
     if (vampire > 0) {
         int gain = damage / vampire;
         int chance = damage - vampire * gain;
@@ -1108,7 +1108,7 @@ int calculate_armor(troop dt, const weapon_type *dwtype, const weapon_type *awty
     am = select_magicarmor(dt);
 
     if (rule_armor < 0) {
-        rule_armor = get_param_int(global.parameters, "rules.combat.nat_armor", 0);
+        rule_armor = config_get_int("rules.combat.nat_armor", 0);
     }
     if (rule_armor == 0) {
         /* nat�rliche R�stung ist halbkumulativ */
@@ -1616,7 +1616,7 @@ static troop select_opponent(battle * b, troop at, int mindist, int maxdist)
 
         if (tactics_formula < 0) {
             tactics_formula =
-                get_param_int(global.parameters, "rules.tactics.formula", 0);
+                config_get_int("rules.tactics.formula", 0);
         }
         if (tactics_formula == 1) {
             int tactics = get_tactics(at.fighter->side, dt.fighter->side);
@@ -1942,7 +1942,7 @@ int skilldiff(troop at, troop dt, int dist)
         static int goblin_bonus = -1;
         if (goblin_bonus < 0)
             goblin_bonus =
-            get_param_int(global.parameters, "rules.combat.goblinbonus", 10);
+            config_get_int("rules.combat.goblinbonus", 10);
         if (af->side->size[SUM_ROW] >= df->side->size[SUM_ROW] * goblin_bonus) {
             skdiff += 1;
         }
@@ -2142,7 +2142,7 @@ static void make_heroes(battle * b)
     side *s;
     static int hero_speed = 0;
     if (hero_speed == 0) {
-        hero_speed = get_param_int(global.parameters, "rules.combat.herospeed", 10);
+        hero_speed = config_get_int("rules.combat.herospeed", 10);
     }
     for (s = b->sides; s != b->sides + b->nsides; ++s) {
         fighter *fig;
@@ -2546,7 +2546,7 @@ static int loot_quota(const unit * src, const unit * dst,
     static double divisor = -1;
     if (dst && src && src->faction != dst->faction) {
         if (divisor < 0) {
-            divisor = get_param_flt(global.parameters, "rules.items.loot_divisor", 1);
+            divisor = config_get_flt("rules.items.loot_divisor", 1);
             assert(divisor == 0 || divisor >= 1);
         }
         if (divisor >= 1) {
@@ -2654,7 +2654,7 @@ static double PopulationDamage(void)
     static double value = -1.0;
     if (value < 0) {
         int damage =
-            get_param_int(global.parameters, "rules.combat.populationdamage",
+            config_get_int("rules.combat.populationdamage",
             BATTLE_KILLS_PEASANTS);
         value = damage / 100.0;
     }
@@ -2908,7 +2908,7 @@ static void aftermath(battle * b)
                     int n = b->turn - 2;
                     if (n > 0) {
                         double dmg =
-                            get_param_flt(global.parameters, "rules.ship.damage.battleround",
+                            config_get_flt("rules.ship.damage.battleround",
                             0.05F);
                         damage_ship(sh, dmg * n);
                         freset(sh, SF_DAMAGED);
@@ -3216,7 +3216,7 @@ side * find_side(battle * b, const faction * f, const group * g, unsigned int fl
     static int rule_anon_battle = -1;
 
     if (rule_anon_battle < 0) {
-        rule_anon_battle = get_param_int(global.parameters, "rules.stealth.anon_battle", 1);
+        rule_anon_battle = config_get_int("rules.stealth.anon_battle", 1);
     }
     for (s = b->sides; s != b->sides + b->nsides; ++s) {
         if (s->faction == f && s->group == g) {
diff --git a/src/bindings.c b/src/bindings.c
index 20a8192e1..156062869 100755
--- a/src/bindings.c
+++ b/src/bindings.c
@@ -1006,7 +1006,7 @@ static void parse_inifile(lua_State * L, dictionary * d, const char *section)
     lua_pushstring(L, "reportpath");
     lua_pushstring(L, reportpath());
     lua_rawset(L, -3);
-    arg = get_param(global.parameters, "config.rules");
+    arg = config_get("config.rules");
     if (arg) {
         lua_pushstring(L, "rules");
         lua_pushstring(L, arg);
diff --git a/src/chaos.c b/src/chaos.c
index 728048bf9..a84b26dfc 100644
--- a/src/chaos.c
+++ b/src/chaos.c
@@ -193,7 +193,7 @@ static void chaos(region * r)
                         while (sh) {
                             ship *nsh = sh->next;
                             double dmg =
-                                get_param_flt(global.parameters, "rules.ship.damage.atlantis",
+                                config_get_flt("rules.ship.damage.atlantis",
                                 0.50);
                             damage_ship(sh, dmg);
                             if (sh->damage >= sh->size * DAMAGE_SCALE) {
diff --git a/src/creport.c b/src/creport.c
index 8078c545c..80ce1ba91 100644
--- a/src/creport.c
+++ b/src/creport.c
@@ -1505,7 +1505,7 @@ report_computer(const char *filename, report_context * ctx, const char *charset)
     FILE *F = fopen(filename, "wt");
 
     if (era < 0) {
-        era = get_param_int(global.parameters, "world.era", 1);
+        era = config_get_int("world.era", 1);
     }
     if (F == NULL) {
         perror(filename);
diff --git a/src/economy.c b/src/economy.c
index ce5bc3f36..64a2a6771 100644
--- a/src/economy.c
+++ b/src/economy.c
@@ -104,7 +104,7 @@ static void recruit_init(void)
 {
     if (rules_recruit < 0) {
         rules_recruit = 0;
-        if (get_param_int(global.parameters, "recruit.allow_merge", 1)) {
+        if (config_get_int("recruit.allow_merge", 1)) {
             rules_recruit |= RECRUIT_MERGE;
         }
     }
@@ -2745,11 +2745,11 @@ void entertain_cmd(unit * u, struct order *ord)
     kwd = init_order(ord);
     assert(kwd == K_ENTERTAIN);
     if (!entertainbase) {
-        const char *str = get_param(global.parameters, "entertain.base");
+        const char *str = config_get("entertain.base");
         entertainbase = str ? atoi(str) : 0;
     }
     if (!entertainperlevel) {
-        const char *str = get_param(global.parameters, "entertain.perlevel");
+        const char *str = config_get("entertain.perlevel");
         entertainperlevel = str ? atoi(str) : 0;
     }
     if (fval(u, UFL_WERE)) {
@@ -3020,7 +3020,7 @@ void loot_cmd(unit * u, struct order *ord, request ** lootorders)
     kwd = init_order(ord);
     assert(kwd == K_LOOT);
 
-    if (get_param_int(global.parameters, "rules.enable_loot", 0) == 0 && !is_monsters(u->faction)) {
+    if (config_get_int("rules.enable_loot", 0) == 0 && !is_monsters(u->faction)) {
         return;
     }
 
@@ -3136,7 +3136,7 @@ static void peasant_taxes(region * r)
 
 static bool rule_auto_taxation(void)
 {
-    int rule = get_param_int(global.parameters, "rules.economy.taxation", 0);
+    int rule = config_get_int("rules.economy.taxation", 0);
     return rule != 0;
 }
 
@@ -3161,7 +3161,7 @@ void produce(struct region *r)
      * lehren vor lernen. */
 
     if (rule_autowork < 0) {
-        rule_autowork = get_param_int(global.parameters, "work.auto", 0);
+        rule_autowork = config_get_int("work.auto", 0);
     }
 
     assert(rmoney(r) >= 0);
diff --git a/src/give.c b/src/give.c
index 5dead1277..634a37be6 100644
--- a/src/give.c
+++ b/src/give.c
@@ -52,12 +52,12 @@
 #define RESERVE_GIVE            /* reserve anything that's given from one unit to another? */
 
 static int max_transfers(void) {
-    return get_param_int(global.parameters, "rules.give.max_men", 5);
+    return config_get_int("rules.give.max_men", 5);
 }
 
 static int GiveRestriction(void)
 {
-    return get_param_int(global.parameters, "GiveRestriction", 0);
+    return config_get_int("GiveRestriction", 0);
 }
 
 static void feedback_give_not_allowed(unit * u, order * ord)
@@ -132,7 +132,7 @@ int give_quota(const unit * src, const unit * dst, const item_type * type,
         return n;
     }
     if (dst && src && src->faction != dst->faction) {
-        divisor = get_param_flt(global.parameters, "rules.items.give_divisor", 1);
+        divisor = config_get_flt("rules.items.give_divisor", 1);
         assert(divisor == 0 || divisor >= 1);
         if (divisor >= 1) {
             /* predictable > correct: */
@@ -235,7 +235,7 @@ static bool can_give_men(const unit *u, order *ord, message **msg) {
 
 static bool rule_transfermen(void)
 {
-    int rule = get_param_int(global.parameters, "rules.transfermen", 1);
+    int rule = config_get_int("rules.transfermen", 1);
     return rule != 0;
 }
 
diff --git a/src/items/weapons.c b/src/items/weapons.c
index 9576ebd49..f5015e39a 100644
--- a/src/items/weapons.c
+++ b/src/items/weapons.c
@@ -141,13 +141,11 @@ int *casualties)
             d += terminate(dt, *at, AT_STANDARD, wp->type->damage[0], true);
 #ifdef CATAPULT_STRUCTURAL_DAMAGE
             if (dt.fighter->unit->building && rng_int() % 100 < 5) {
-                float dmg =
-                    get_param_flt(global.parameters, "rules.building.damage.catapult", 1);
+                double dmg = config_get_flt("rules.building.damage.catapult", 1);
                 damage_building(b, dt.fighter->unit->building, dmg);
             }
             else if (dt.fighter->unit->ship && rng_int() % 100 < 5) {
-                float dmg =
-                    get_param_flt(global.parameters, "rules.ship.damage.catapult", 0.01);
+                double dmg = config_get_flt("rules.ship.damage.catapult", 0.01);
                 damage_ship(dt.fighter->unit->ship, dmg)
             }
 #endif
diff --git a/src/jsreport.c b/src/jsreport.c
index a6be8b46b..4450d0165 100644
--- a/src/jsreport.c
+++ b/src/jsreport.c
@@ -25,7 +25,7 @@ static void coor_from_tiled(int *x, int *y) {
 
 static int report_json(const char *filename, report_context * ctx, const char *charset)
 {
-    if (get_param_int(global.parameters, "jsreport.enabled", 0) != 0) {
+    if (config_get_int("jsreport.enabled", 0) != 0) {
         FILE * F = fopen(filename, "w");
         if (F) {
             int x, y, minx = INT_MAX, maxx = INT_MIN, miny = INT_MAX, maxy = INT_MIN;
diff --git a/src/kernel/build.c b/src/kernel/build.c
index 76821a190..20f70800f 100644
--- a/src/kernel/build.c
+++ b/src/kernel/build.c
@@ -419,7 +419,7 @@ int roqf_factor(void)
 {
     int value = -1;
     if (value < 0) {
-        value = get_param_int(global.parameters, "rules.economy.roqf", 10);
+        value = config_get_int("rules.economy.roqf", 10);
     }
     return value;
 }
@@ -751,7 +751,7 @@ build_building(unit * u, const building_type * btype, int id, int want, order *
     if (b) {
         if (rule_other < 0) {
             rule_other =
-                get_param_int(global.parameters, "rules.build.other_buildings", 1);
+                config_get_int("rules.build.other_buildings", 1);
         }
         if (!rule_other) {
             unit *owner = building_owner(b);
diff --git a/src/kernel/building.c b/src/kernel/building.c
index 55005722e..4867b3687 100644
--- a/src/kernel/building.c
+++ b/src/kernel/building.c
@@ -531,7 +531,7 @@ int bt_effsize(const building_type * btype, const building * b, int bsize)
     const construction *cons = btype->construction;
 
     /* TECH DEBT: simplest thing that works for E3 dwarf/halfling faction rules */
-    if (b && get_param_int(global.parameters, "rules.dwarf_castles", 0)
+    if (b && config_get_int("rules.dwarf_castles", 0)
         && strcmp(btype->_name, "castle") == 0) {
         unit *u = building_owner(b);
         if (u && u->faction->race == get_race(RC_HALFLING)) {
diff --git a/src/kernel/config.c b/src/kernel/config.c
index 1f44530f9..1ba1f6c7f 100644
--- a/src/kernel/config.c
+++ b/src/kernel/config.c
@@ -110,7 +110,7 @@ int turn = -1;
 
 int NewbieImmunity(void)
 {
-    return get_param_int(global.parameters, "NewbieImmunity", 0);
+    return config_get_int("NewbieImmunity", 0);
 }
 
 bool IsImmune(const faction * f)
@@ -137,7 +137,7 @@ static int ally_flag(const char *s, int help_mask)
 
 bool ExpensiveMigrants(void)
 {
-    return get_param_int(global.parameters, "study.expensivemigrants", 0) != 0;
+    return config_get_int("study.expensivemigrants", 0) != 0;
 }
 
 /** Specifies automatic alliance modes.
@@ -147,7 +147,7 @@ bool ExpensiveMigrants(void)
 int AllianceAuto(void)
 {
     int value;
-    const char *str = get_param(global.parameters, "alliance.auto");
+    const char *str = config_get("alliance.auto");
     value = 0;
     if (str != NULL) {
         char *sstr = _strdup(str);
@@ -169,7 +169,7 @@ int AllianceAuto(void)
  */
 int HelpMask(void)
 {
-    const char *str = get_param(global.parameters, "rules.help.mask");
+    const char *str = config_get("rules.help.mask");
     int rule = 0;
     if (str != NULL) {
         char *sstr = _strdup(str);
@@ -188,7 +188,7 @@ int HelpMask(void)
 
 int AllianceRestricted(void)
 {
-    const char *str = get_param(global.parameters, "alliance.restricted");
+    const char *str = config_get("alliance.restricted");
     int rule = 0;
     if (str != NULL) {
         char *sstr = _strdup(str);
@@ -211,18 +211,18 @@ int LongHunger(const struct unit *u)
         if (u_race(u) == get_race(RC_DAEMON))
             return false;
     }
-    return get_param_int(global.parameters, "hunger.long", 0);
+    return config_get_int("hunger.long", 0);
 }
 
 int SkillCap(skill_t sk)
 {
     if (sk == SK_MAGIC) return 0; /* no caps on magic */
-    return get_param_int(global.parameters, "skill.maxlevel", 0);
+    return config_get_int("skill.maxlevel", 0);
 }
 
 int NMRTimeout(void)
 {
-    return get_param_int(global.parameters, "nmr.timeout", 0);
+    return config_get_int("nmr.timeout", 0);
 }
 
 race_t old_race(const struct race * rc)
@@ -371,8 +371,7 @@ static attrib_type at_maxmagicians = {
 
 int max_magicians(const faction * f)
 {
-    int m =
-        get_param_int(global.parameters, "rules.maxskills.magic", MAXMAGICIANS);
+    int m = config_get_int("rules.maxskills.magic", MAXMAGICIANS);
     attrib *a;
 
     if ((a = a_find(f->attribs, &at_maxmagicians)) != NULL) {
@@ -567,7 +566,7 @@ int count_maxmigrants(const faction * f)
     static int migrants = -1;
 
     if (migrants < 0) {
-        migrants = get_param_int(global.parameters, "rules.migrants.max", INT_MAX);
+        migrants = config_get_int("rules.migrants.max", INT_MAX);
     }
     if (migrants == INT_MAX) {
         int x = 0;
@@ -931,7 +930,7 @@ void init_locale(struct locale *lang)
 
     tokens = get_translations(lang, UT_MAGIC);
     if (tokens) {
-        const char *str = get_param(global.parameters, "rules.magic.playerschools");
+        const char *str = config_get("rules.magic.playerschools");
         char *sstr, *tok;
         if (str == NULL) {
             str = "gwyrrd illaun draig cerddor tybied";
@@ -1281,25 +1280,25 @@ int cmp_current_owner(const building * b, const building * a)
 
 bool rule_stealth_other(void)
 {
-    int rule = get_param_int(global.parameters, "stealth.faction.other", 1);
+    int rule = config_get_int("stealth.faction.other", 1);
     return rule != 0;
 }
 
 bool rule_stealth_anon(void)
 {
-    int rule = get_param_int(global.parameters, "stealth.faction.anon", 1);
+    int rule = config_get_int("stealth.faction.anon", 1);
     return rule != 0;
 }
 
 bool rule_region_owners(void)
 {
-    int rule = get_param_int(global.parameters, "rules.region_owners", 0);
+    int rule = config_get_int("rules.region_owners", 0);
     return rule != 0;
 }
 
 int rule_blessed_harvest(void)
 {
-    int rule = get_param_int(global.parameters, "rules.blessed_harvest.flags",
+    int rule = config_get_int("rules.blessed_harvest.flags",
         HARVEST_WORK);
     assert(rule >= 0);
     return rule;
@@ -1307,14 +1306,14 @@ int rule_blessed_harvest(void)
 
 int rule_alliance_limit(void)
 {
-    int rule = get_param_int(global.parameters, "rules.limit.alliance", 0);
+    int rule = config_get_int("rules.limit.alliance", 0);
     assert(rule >= 0);
     return rule;
 }
 
 int rule_faction_limit(void)
 {
-    int rule = get_param_int(global.parameters, "rules.limit.faction", 0);
+    int rule = config_get_int("rules.limit.faction", 0);
     assert(rule >= 0);
     return rule;
 }
@@ -1564,12 +1563,12 @@ int entertainmoney(const region * r)
 
 int rule_give(void)
 {
-    return get_param_int(global.parameters, "rules.give.flags", GIVE_DEFAULT);
+    return config_get_int("rules.give.flags", GIVE_DEFAULT);
 }
 
 bool markets_module(void)
 {
-    return get_param_int(global.parameters, "modules.markets", 0);
+    return config_get_int("modules.markets", 0);
 }
 
 void config_set(const char *key, const char *value) {
@@ -1629,11 +1628,11 @@ void free_gamedata(void)
 }
 
 const char * game_name(void) {
-    const char * param = get_param(global.parameters, "game.name");
+    const char * param = config_get("game.name");
     return param ? param : global.gamename;
 }
 
 int game_id(void) {
-    return get_param_int(global.parameters, "game.id", 0);
+    return config_get_int("game.id", 0);
 }
 
diff --git a/src/kernel/faction.c b/src/kernel/faction.c
index c5ecbcb43..71286cffe 100755
--- a/src/kernel/faction.c
+++ b/src/kernel/faction.c
@@ -568,7 +568,7 @@ static int allied_skilllimit(const faction * f, skill_t sk)
 {
     static int value = -1;
     if (value < 0) {
-        value = get_param_int(global.parameters, "alliance.skilllimit", 0);
+        value = config_get_int("alliance.skilllimit", 0);
     }
     return value;
 }
@@ -611,8 +611,7 @@ int skill_limit(faction * f, skill_t sk)
         m = max_magicians(f);
     }
     else if (sk == SK_ALCHEMY) {
-        m = get_param_int(global.parameters, "rules.maxskills.alchemy",
-            MAXALCHEMISTS);
+        m = config_get_int("rules.maxskills.alchemy", MAXALCHEMISTS);
     }
     return m;
 }
diff --git a/src/kernel/jsonconf.test.c b/src/kernel/jsonconf.test.c
index 6441ad424..5e7d3047e 100644
--- a/src/kernel/jsonconf.test.c
+++ b/src/kernel/jsonconf.test.c
@@ -74,11 +74,11 @@ static void test_settings(CuTest * tc)
 
     test_cleanup();
     json_config(json);
-    CuAssertStrEquals(tc, "1", get_param(global.parameters, "true"));
-    CuAssertStrEquals(tc, "0", get_param(global.parameters, "false"));
-    CuAssertStrEquals(tc, "1d4", get_param(global.parameters, "string"));
-    CuAssertIntEquals(tc, 14, get_param_int(global.parameters, "integer", 0));
-    CuAssertDblEquals(tc, 1.5f, get_param_flt(global.parameters, "float", 0), 0.01);
+    CuAssertStrEquals(tc, "1", config_get("true"));
+    CuAssertStrEquals(tc, "0", config_get("false"));
+    CuAssertStrEquals(tc, "1d4", config_get("string"));
+    CuAssertIntEquals(tc, 14, config_get_int("integer", 0));
+    CuAssertDblEquals(tc, 1.5f, config_get_flt("float", 0), 0.01);
     cJSON_Delete(json);
     test_cleanup();
 }
@@ -117,13 +117,13 @@ static void test_disable(CuTest * tc)
     CuAssertTrue(tc, !keyword_disabled(K_BANNER));
     CuAssertTrue(tc, !keyword_disabled(K_PAY));
     CuAssertTrue(tc, !keyword_disabled(K_BESIEGE));
-    CuAssertIntEquals(tc, 1, get_param_int(global.parameters, "module.enabled", 1));
+    CuAssertIntEquals(tc, 1, config_get_int("module.enabled", 1));
     json_config(json);
     CuAssertTrue(tc, !skill_enabled(SK_ALCHEMY));
     CuAssertTrue(tc, !keyword_disabled(K_BANNER));
     CuAssertTrue(tc, keyword_disabled(K_PAY));
     CuAssertTrue(tc, keyword_disabled(K_BESIEGE));
-    CuAssertIntEquals(tc, 0, get_param_int(global.parameters, "module.enabled", 1));
+    CuAssertIntEquals(tc, 0, config_get_int("module.enabled", 1));
     cJSON_Delete(json);
     test_cleanup();
 }
diff --git a/src/kernel/resources.c b/src/kernel/resources.c
index d9eff6597..9db74a99f 100644
--- a/src/kernel/resources.c
+++ b/src/kernel/resources.c
@@ -31,7 +31,7 @@ static double ResourceFactor(void)
 {
     static double value = -1.0;
     if (value < 0) {
-        const char *str = get_param(global.parameters, "resource.factor");
+        const char *str = config_get("resource.factor");
         value = str ? atof(str) : 1.0;
     }
     return value;
@@ -84,7 +84,7 @@ void terraform_resources(region * r)
     const terrain_type *terrain = r->terrain;
     static int terraform_all = -1;
     if (terraform_all < 0) {
-        terraform_all = get_param_int(global.parameters, "rules.terraform.all", 0);
+        terraform_all = config_get_int("rules.terraform.all", 0);
     }
 
     if (terrain->production == NULL)
diff --git a/src/kernel/ship.c b/src/kernel/ship.c
index c77a10bd4..f20c8ef59 100644
--- a/src/kernel/ship.c
+++ b/src/kernel/ship.c
@@ -271,7 +271,7 @@ const char *write_shipname(const ship * sh, char *ibuf, size_t size)
 
 static int ShipSpeedBonus(const unit * u)
 {
-    int level = get_param_int(global.parameters, "movement.shipspeed.skillbonus", 0);
+    int level = config_get_int("movement.shipspeed.skillbonus", 0);
     if (level > 0) {
         ship *sh = u->ship;
         int skl = effskill(u, SK_SAILING, 0);
diff --git a/src/kernel/skills.c b/src/kernel/skills.c
index d3e3f0ba8..7ba325dcc 100644
--- a/src/kernel/skills.c
+++ b/src/kernel/skills.c
@@ -212,7 +212,7 @@ void sk_set(skill * sv, int level)
 
 static int rule_random_progress(void)
 {
-    return get_param_int(global.parameters, "study.random_progress", 1);
+    return config_get_int("study.random_progress", 1);
 }
 
 int skill_weeks(int level)
diff --git a/src/kernel/teleport.c b/src/kernel/teleport.c
index 8d9b696a5..59b18ade8 100644
--- a/src/kernel/teleport.c
+++ b/src/kernel/teleport.c
@@ -182,8 +182,7 @@ bool is_astral(const region * r)
 plane *get_astralplane(void)
 {
     plane *astralspace = 0;
-    int rule_astralplane =
-        get_param_int(global.parameters, "modules.astralspace", 1);
+    int rule_astralplane = config_get_int("modules.astralspace", 1);
 
     if (!rule_astralplane) {
         return NULL;
diff --git a/src/kernel/unit.c b/src/kernel/unit.c
index c37bbb5a0..b328b748b 100644
--- a/src/kernel/unit.c
+++ b/src/kernel/unit.c
@@ -232,7 +232,7 @@ static buddy *get_friends(const unit * u, int *numfriends)
     for (u2 = r->units; u2; u2 = u2->next) {
         if (u2->faction != f && u2->number > 0) {
             int allied = 0;
-            if (get_param_int(global.parameters, "rules.alliances", 0) != 0) {
+            if (config_get_int("rules.alliances", 0) != 0) {
                 allied = (f->alliance && f->alliance == u2->faction->alliance);
             }
             else if (alliedunit(u, u2->faction, HELP_MONEY)
@@ -856,7 +856,7 @@ bool can_leave(unit * u)
         return true;
     }
 
-    rule_leave = get_param_int(global.parameters, "rules.move.owner_leave", 0);
+    rule_leave = config_get_int("rules.move.owner_leave", 0);
 
     if (rule_leave!=0 && u->building && u == building_owner(u->building)) {
         return false;
@@ -1343,7 +1343,7 @@ int get_modifier(const unit * u, skill_t sk, int level, const region * r, bool n
     skill = skillmod(u->attribs, u, r, sk, skill, SMF_ALWAYS);
 
     if (hunger_red_skill == -1) {
-        hunger_red_skill = get_param_int(global.parameters, "rules.hunger.reduces_skill", 2);
+        hunger_red_skill = config_get_int("rules.hunger.reduces_skill", 2);
     }
 
     if (fval(u, UFL_HUNGER) && hunger_red_skill) {
@@ -1727,8 +1727,7 @@ int unit_max_hp(const unit * u)
     static const curse_type *heal_ct = NULL;
 
     if (rules_stamina < 0) {
-        rules_stamina =
-            get_param_int(global.parameters, "rules.stamina", STAMINA_AFFECTS_HP);
+        rules_stamina = config_get_int("rules.stamina", STAMINA_AFFECTS_HP);
     }
     h = u_race(u)->hitpoints;
 
@@ -1931,7 +1930,7 @@ bool unit_can_study(const unit *u) {
 }
 
 static double produceexp_chance(void) {
-    return get_param_flt(global.parameters, "study.from_use", 1.0 / 3);
+    return config_get_flt("study.from_use", 1.0 / 3);
 }
 
 void produceexp_ex(struct unit *u, skill_t sk, int n, bool (*learn)(unit *, skill_t, double))
diff --git a/src/laws.c b/src/laws.c
index 2da0a1a51..175c12f6a 100755
--- a/src/laws.c
+++ b/src/laws.c
@@ -117,7 +117,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 static bool RemoveNMRNewbie(void)
 {
-    int value = get_param_int(global.parameters, "nmr.removenewbie", 0);
+    int value = config_get_int("nmr.removenewbie", 0);
     return value!=0;
 }
 
@@ -245,7 +245,7 @@ static void calculate_emigration(region * r)
 
 static double peasant_growth_factor(void)
 {
-    return get_param_flt(global.parameters, "rules.peasants.growth.factor", 0.0001F * PEASANTGROWTH);
+    return config_get_flt("rules.peasants.growth.factor", 0.0001F * PEASANTGROWTH);
 }
 
 #ifdef SLOWLUCK
@@ -275,7 +275,7 @@ int peasant_luck_effect(int peasants, int luck, int maxp, double variance) {
 #else
 static double peasant_luck_factor(void)
 {
-    return get_param_flt(global.parameters, "rules.peasants.peasantluck.factor", PEASANTLUCK);
+    return config_get_flt("rules.peasants.peasantluck.factor", PEASANTLUCK);
 }
 
 int peasant_luck_effect(int peasants, int luck, int maxp, double variance)
@@ -305,7 +305,7 @@ static void peasants(region * r)
     int n, satiated;
     int dead = 0;
 
-    if (peasants > 0 && get_param_int(global.parameters, "rules.peasants.growth", 1)) {
+    if (peasants > 0 && config_get_int("rules.peasants.growth", 1)) {
         int luck = 0;
         double fraction = peasants * peasant_growth_factor();
         int births = RAND_ROUND(fraction);
@@ -692,7 +692,7 @@ void immigration(void)
 {
     region *r;
     log_info(" - Einwanderung...");
-    int repopulate = get_param_int(global.parameters, "rules.economy.repopulate_maximum", 90);
+    int repopulate = config_get_int("rules.economy.repopulate_maximum", 90);
     for (r = regions; r; r = r->next) {
         if (r->land && r->land->newpeasants) {
             int rp = rpeasants(r) + r->land->newpeasants;
@@ -738,7 +738,7 @@ void nmr_warnings(void)
                 message *msg = NULL;
                 for (fa = factions; fa; fa = fa->next) {
                     int warn = 0;
-                    if (get_param_int(global.parameters, "rules.alliances", 0) != 0) {
+                    if (config_get_int("rules.alliances", 0) != 0) {
                         if (f->alliance && f->alliance == fa->alliance) {
                             warn = 1;
                         }
@@ -789,7 +789,7 @@ void demographics(void)
 
                 if (plant_rules < 0) {
                     plant_rules =
-                        get_param_int(global.parameters, "rules.grow.formula", 0);
+                        config_get_int("rules.grow.formula", 0);
                 }
                 for (dmd = r->land->demands; dmd; dmd = dmd->next) {
                     if (dmd->value > 0 && dmd->value < MAXDEMAND) {
@@ -990,7 +990,7 @@ static bool CheckOverload(void)
 {
     static int value = -1;
     if (value < 0) {
-        value = get_param_int(global.parameters, "rules.check_overload", 0);
+        value = config_get_int("rules.check_overload", 0);
     }
     return value != 0;
 }
@@ -1211,7 +1211,7 @@ static void nmr_death(faction * f)
 {
     static int rule = -1;
     if (rule < 0)
-        rule = get_param_int(global.parameters, "rules.nmr.destroy", 0);
+        rule = config_get_int("rules.nmr.destroy", 0);
     if (rule) {
         unit *u;
         for (u = f->units; u; u = u->nextF) {
@@ -2742,14 +2742,12 @@ void sinkships(struct region * r)
             if (fval(r->terrain, SEA_REGION)) {
                 if (!enoughsailors(sh, crew_skill(sh))) {
                     // ship is at sea, but not enough people to control it
-                    double dmg = get_param_flt(global.parameters,
-                        "rules.ship.damage.nocrewocean",
-                        0.30F);
+                    double dmg = config_get_flt("rules.ship.damage.nocrewocean", 0.3);
                     damage_ship(sh, dmg);
                 }
             } else if (!ship_owner(sh)) {
                 // any ship lying around without an owner slowly rots
-                double dmg = get_param_flt(global.parameters, "rules.ship.damage.nocrew", 0.05F);
+                double dmg = config_get_flt("rules.ship.damage.nocrew", 0.05);
                 damage_ship(sh, dmg);
             }
         }
@@ -4260,7 +4258,7 @@ static void do_force_leave(region *r) {
 }
 
 bool rule_force_leave(int flags) {
-    int rules = get_param_int(global.parameters, "rules.owners.force_leave", 0);
+    int rules = config_get_int("rules.owners.force_leave", 0);
     return (rules&flags) == flags;
 }
 
@@ -4331,7 +4329,7 @@ void init_processor(void)
     add_proc_order(p, K_GUARD, guard_off_cmd, 0, NULL);
     add_proc_order(p, K_RESHOW, reshow_cmd, 0, NULL);
 
-    if (get_param_int(global.parameters, "rules.alliances", 0) == 1) {
+    if (config_get_int("rules.alliances", 0) == 1) {
         p += 10;
         add_proc_global(p, alliance_cmd, NULL);
     }
@@ -4363,7 +4361,7 @@ void init_processor(void)
 
     p += 10;                      /* can't allow reserve before siege (weapons) */
     add_proc_region(p, enter_1, "Betreten (3. Versuch)");  /* to claim a castle after a victory and to be able to DESTROY it in the same turn */
-    if (get_param_int(global.parameters, "rules.reserve.twophase", 0)) {
+    if (config_get_int("rules.reserve.twophase", 0)) {
         add_proc_order(p, K_RESERVE, reserve_self, 0, "RESERVE (self)");
         p += 10;
     }
@@ -4415,7 +4413,7 @@ void init_processor(void)
     p += 10;
     add_proc_global(p, movement, "Bewegungen");
 
-    if (get_param_int(global.parameters, "work.auto", 0)) {
+    if (config_get_int("work.auto", 0)) {
         p += 10;
         add_proc_region(p, auto_work, "Arbeiten (auto)");
     }
@@ -4423,7 +4421,7 @@ void init_processor(void)
     p += 10;
     add_proc_order(p, K_GUARD, guard_on_cmd, 0, "Bewache (an)");
 
-    if (get_param_int(global.parameters, "rules.encounters", 0)) {
+    if (config_get_int("rules.encounters", 0)) {
         p += 10;
         add_proc_global(p, encounters, "Zufallsbegegnungen");
     }
@@ -4461,7 +4459,7 @@ void processorders(void)
     process();
     /*************************************************/
 
-    if (get_param_int(global.parameters, "modules.markets", 0)) {
+    if (config_get_int("modules.markets", 0)) {
         do_markets();
     }
 
@@ -4470,7 +4468,7 @@ void processorders(void)
     remove_empty_units();
 
     /* must happen AFTER age, because that would destroy them right away */
-    if (get_param_int(global.parameters, "modules.wormholes", 0)) {
+    if (config_get_int("modules.wormholes", 0)) {
         wormholes_update();
     }
 
diff --git a/src/magic.c b/src/magic.c
index 1873bb041..1c6acda94 100644
--- a/src/magic.c
+++ b/src/magic.c
@@ -112,7 +112,7 @@ static float MagicRegeneration(void)
 {
     static float value = -1.0;
     if (value < 0) {
-        const char *str = get_param(global.parameters, "magic.regeneration");
+        const char *str = config_get("magic.regeneration");
         value = str ? (float)atof(str) : 1.0F;
     }
     return value;
@@ -121,7 +121,7 @@ static float MagicRegeneration(void)
 static double MagicPower(double force)
 {
     if (force > 0) {
-        const char *str = get_param(global.parameters, "magic.power");
+        const char *str = config_get("magic.power");
         double value = str ? atof(str) : 1.0;
         return _max(value * force, 1.0f);
     }
@@ -217,8 +217,7 @@ bool FactionSpells(void)
 {
     static int rules_factionspells = -1;
     if (rules_factionspells < 0) {
-        rules_factionspells =
-            get_param_int(global.parameters, "rules.magic.factionlist", 0);
+        rules_factionspells = config_get_int("rules.magic.factionlist", 0);
     }
     return rules_factionspells!=0;
 }
@@ -1034,7 +1033,7 @@ spellpower(region * r, unit * u, const spell * sp, int cast_level, struct order
         if (btype && btype->flags & BTF_MAGIC) ++force;
     }
 
-    elf_power = get_param_int(global.parameters, "rules.magic.elfpower", 0);
+    elf_power = config_get_int("rules.magic.elfpower", 0);
 
     if (elf_power && u_race(u) == get_race(RC_ELF) && r_isforest(r)) {
         ++force;
@@ -1291,7 +1290,7 @@ bool fumble(region * r, unit * u, const spell * sp, int cast_grade)
     int effsk = effskill(u, SK_MAGIC, r);
     struct building *b = inside_building(u);
     const struct building_type *btype = building_is_active(b) ? b->type : NULL;
-    int fumble_enabled = get_param_int(global.parameters, "magic.fumble.enable", 1);
+    int fumble_enabled = config_get_int("magic.fumble.enable", 1);
     sc_mage * mage;
 
     if (effsk<=0 || !fumble_enabled) {
@@ -1463,7 +1462,7 @@ void regenerate_aura(void)
     double reg_aura;
     int regen;
     double mod;
-    int regen_enabled = get_param_int(global.parameters, "magic.regeneration.enable", 1);
+    int regen_enabled = config_get_int("magic.regeneration.enable", 1);
 
     if (!regen_enabled) return;
 
diff --git a/src/monster.c b/src/monster.c
index 47858fc5d..101377ef0 100644
--- a/src/monster.c
+++ b/src/monster.c
@@ -222,7 +222,7 @@ faction *get_or_create_monsters(void)
     faction *f = findfaction(MONSTER_ID);
     if (!f) {
         const race *rc = rc_get_or_create("dragon");
-        const char *email = get_param(global.parameters, "monster.email");
+        const char *email = config_get("monster.email");
         f = addfaction(email ? email : "noreply@eressea.de", NULL, rc, default_locale, 0);
         renumber_faction(f, MONSTER_ID);
         faction_setname(f, "Monster");
diff --git a/src/monsters.c b/src/monsters.c
index 541a71c3f..5ca357099 100644
--- a/src/monsters.c
+++ b/src/monsters.c
@@ -82,7 +82,7 @@ static void give_peasants(unit *u, const item_type *itype, int reduce) {
 }
 
 static double monster_attack_chance(void) {
-    return get_param_flt(global.parameters, "rules.monsters.attack_chance", 0.4f);
+    return config_get_flt("rules.monsters.attack_chance", 0.4);
 }
 
 static void reduce_weight(unit * u)
diff --git a/src/move.c b/src/move.c
index 2eded780d..517301828 100644
--- a/src/move.c
+++ b/src/move.c
@@ -319,7 +319,7 @@ int walkingcapacity(const struct unit *u)
     if (rbelt) {
         int belts = i_get(u->items, rbelt->itype);
         if (belts) {
-            int multi = get_param_int(global.parameters, "rules.trollbelt.multiplier", STRENGTHMULTIPLIER);
+            int multi = config_get_int("rules.trollbelt.multiplier", STRENGTHMULTIPLIER);
             n += _min(people, belts) * (multi - 1) * u_race(u)->capacity;
         }
     }
@@ -694,7 +694,7 @@ static float damage_drift(void)
 {
     static float value = -1.0F;
     if (value < 0) {
-        value = (float)get_param_flt(global.parameters, "rules.ship.damage_drift", 0.02F);
+        value = (float)config_get_flt("rules.ship.damage_drift", 0.02F);
     }
     return value;
 }
@@ -702,7 +702,7 @@ static float damage_drift(void)
 static void drifting_ships(region * r)
 {
     direction_t d;
-    bool drift = get_param_int(global.parameters, "rules.ship.drifting", 1) != 0;
+    bool drift = config_get_int("rules.ship.drifting", 1) != 0;
 
     if (fval(r->terrain, SEA_REGION)) {
         ship **shp = &r->ships;
@@ -839,12 +839,12 @@ static unit *bewegung_blockiert_von(unit * reisender, region * r)
     int stealth = eff_stealth(reisender, r);
     const struct resource_type *ramulet = get_resourcetype(R_AMULET_OF_TRUE_SEEING);
 
-    double base_prob = get_param_flt(global.parameters, "rules.guard.base_stop_prob", .3f);
-    double skill_prob = get_param_flt(global.parameters, "rules.guard.skill_stop_prob", .1f);
-    double amulet_prob = get_param_flt(global.parameters, "rules.guard.amulet_stop_prob", .1f);
-    double guard_number_prob = get_param_flt(global.parameters, "rules.guard.guard_number_stop_prob", .001f);
-    double castle_prob = get_param_flt(global.parameters, "rules.guard.castle_stop_prob", .1f);
-    double region_type_prob = get_param_flt(global.parameters, "rules.guard.region_type_stop_prob", .1f);
+    double base_prob = config_get_flt("rules.guard.base_stop_prob", .3);
+    double skill_prob = config_get_flt("rules.guard.skill_stop_prob", .1);
+    double amulet_prob = config_get_flt("rules.guard.amulet_stop_prob", .1);
+    double guard_number_prob = config_get_flt("rules.guard.guard_number_stop_prob", .001);
+    double castle_prob = config_get_flt("rules.guard.castle_stop_prob", .1);
+    double region_type_prob = config_get_flt("rules.guard.region_type_stop_prob", .1);
 
     if (fval(u_race(reisender), RCF_ILLUSIONARY))
         return NULL;
@@ -1785,7 +1785,7 @@ sail(unit * u, order * ord, bool move_on_land, region_list ** routep)
         if (!flying_ship(sh)) {
             int stormchance = 0;
             int reason;
-            bool storms_enabled = get_param_int(global.parameters, "rules.ship.storms", 1) != 0;
+            bool storms_enabled = config_get_int("rules.ship.storms", 1) != 0;
             if (storms_enabled) {
                 int stormyness;
                 gamedate date;
@@ -1795,7 +1795,7 @@ sail(unit * u, order * ord, bool move_on_land, region_list ** routep)
                 /* storms should be the first thing we do. */
                 stormchance = stormyness / shipspeed(sh, u);
                 if (check_leuchtturm(next_point, NULL)) {
-                    int param = get_param_int(global.parameters, "rules.lighthous.stormchancedevisor", 0);
+                    int param = config_get_int("rules.lighthous.stormchancedevisor", 0);
                     if (param > 0) {
                         stormchance /= param;
                     }
@@ -1885,9 +1885,7 @@ sail(unit * u, order * ord, bool move_on_land, region_list ** routep)
                     ADDMSG(&f->msgs, msg_message("sailnolandingstorm", "ship region", sh, next_point));
                 }
                 else {
-                    double dmg =
-                        get_param_flt(global.parameters, "rules.ship.damage.nolanding",
-                        0.10F);
+                    double dmg = config_get_flt("rules.ship.damage.nolanding", 0.1);
                     ADDMSG(&f->msgs, msg_message("sailnolanding", "ship region", sh,
                         next_point));
                     damage_ship(sh, dmg);
diff --git a/src/randenc.c b/src/randenc.c
index 55802ff2f..80ff498aa 100644
--- a/src/randenc.c
+++ b/src/randenc.c
@@ -738,9 +738,7 @@ static void move_iceberg(region * r)
 
             for (sh = r->ships; sh; sh = sh->next) {
                 /* Meldung an Kapit�n */
-                double dmg =
-                    get_param_flt(global.parameters, "rules.ship.damage.intoiceberg",
-                    0.10F);
+                double dmg = config_get_flt("rules.ship.damage.intoiceberg", 0.1);
                 damage_ship(sh, dmg);
                 fset(sh, SF_SELECT);
             }
@@ -751,9 +749,7 @@ static void move_iceberg(region * r)
                 translist(&rc->buildings, &r->buildings, rc->buildings);
             }
             while (rc->ships) {
-                double dmg =
-                    get_param_flt(global.parameters, "rules.ship.damage.withiceberg",
-                    0.10F);
+                double dmg = config_get_flt("rules.ship.damage.withiceberg", 0.1);
                 fset(rc->ships, SF_SELECT);
                 damage_ship(rc->ships, dmg);
                 move_ship(rc->ships, rc, r, NULL);
@@ -885,9 +881,7 @@ static void godcurse(void)
                 ship *sh;
                 for (sh = r->ships; sh;) {
                     ship *shn = sh->next;
-                    double dmg =
-                        get_param_flt(global.parameters, "rules.ship.damage.godcurse",
-                        0.10F);
+                    double dmg = config_get_flt("rules.ship.damage.godcurse", 0.1);
                     damage_ship(sh, dmg);
                     if (sh->damage >= sh->size * DAMAGE_SCALE) {
                         unit *u = ship_owner(sh);
@@ -970,8 +964,7 @@ static void demon_skillchanges(void)
                     /* hungry demons only go down, never up in skill */
                     static int rule_hunger = -1;
                     if (rule_hunger < 0) {
-                        rule_hunger =
-                            get_param_int(global.parameters, "hunger.demon.skill", 0);
+                        rule_hunger = config_get_int("hunger.demon.skill", 0);
                     }
                     if (rule_hunger) {
                         upchance = 0;
@@ -1023,8 +1016,7 @@ static void rotting_herbs(void)
     region *r;
 
     if (rule_rot < 0) {
-        rule_rot =
-            get_param_int(global.parameters, "rules.economy.herbrot", HERBROTCHANCE);
+        rule_rot = config_get_int("rules.economy.herbrot", HERBROTCHANCE);
     }
     if (rule_rot == 0) return;
 
diff --git a/src/reports.c b/src/reports.c
index d88769457..44e79324e 100644
--- a/src/reports.c
+++ b/src/reports.c
@@ -1678,7 +1678,7 @@ int reports(void)
     free_seen();
 #ifdef GLOBAL_REPORT
     {
-        const char *str = get_param(global.parameters, "globalreport");
+        const char *str = config_get("globalreport");
         if (str != NULL) {
             sprintf(path, "%s/%s.%u.cr", reportpath(), str, turn);
             global_report(path);
diff --git a/src/study.c b/src/study.c
index 32b9b5029..79adf2847 100644
--- a/src/study.c
+++ b/src/study.c
@@ -121,7 +121,7 @@ int study_cost(unit * u, skill_t sk)
     if (cost[sk] == 0) {
         char buffer[256];
         sprintf(buffer, "skills.cost.%s", skillnames[sk]);
-        cost[sk] = get_param_int(global.parameters, buffer, -1);
+        cost[sk] = config_get_int(buffer, -1);
     }
     if (cost[sk] >= 0) {
         return cost[sk];
@@ -545,13 +545,13 @@ int study_cmd(unit * u, order * ord)
     int money = 0;
     skill_t sk;
     int maxalchemy = 0;
-    int speed_rule = (study_rule_t)get_param_int(global.parameters, "study.speedup", 0);
+    int speed_rule = (study_rule_t)config_get_int("study.speedup", 0);
     static int learn_newskills = -1;
     struct building *b = inside_building(u);
     const struct building_type *btype = building_is_active(b) ? b->type : NULL;
 
     if (learn_newskills < 0) {
-        const char *str = get_param(global.parameters, "study.newskills");
+        const char *str = config_get("study.newskills");
         if (str && strcmp(str, "false") == 0)
             learn_newskills = 0;
         else
diff --git a/src/upkeep.c b/src/upkeep.c
index 3845c5e68..d83abbe86 100644
--- a/src/upkeep.c
+++ b/src/upkeep.c
@@ -67,7 +67,7 @@ static bool hunger(int number, unit * u)
     static const race *rc = 0;
 
     if (!damage) {
-        damage = get_param(global.parameters, "hunger.damage");
+        damage = config_get("hunger.damage");
         if (damage == NULL)
             damage = "1d12+12";
     }
@@ -112,7 +112,7 @@ void get_food(region * r)
     plane *pl = rplane(r);
     unit *u;
     int peasantfood = rpeasants(r) * 10;
-    int food_rules = get_param_int(global.parameters, "rules.food.flags", 0);
+    int food_rules = config_get_int("rules.food.flags", 0);
 
     if (food_rules & FOOD_IS_FREE) {
         return;
@@ -272,7 +272,7 @@ void get_food(region * r)
                 if (hungry > 0) {
                     static int demon_hunger = -1;
                     if (demon_hunger < 0) {
-                        demon_hunger = get_param_int(global.parameters, "hunger.demons", 0);
+                        demon_hunger = config_get_int("hunger.demons", 0);
                     }
                     if (demon_hunger == 0) {
                         /* demons who don't feed are hungry */