diff --git a/scripts/tests/e2/trees.lua b/scripts/tests/e2/trees.lua index 7aa6fd6d8..85f3f64ca 100644 --- a/scripts/tests/e2/trees.lua +++ b/scripts/tests/e2/trees.lua @@ -71,14 +71,14 @@ function test_plant_spring_saplings() r:set_resource('sapling', 0) r:set_resource('tree', 0) local u = unit.create(f, r) - u:set_skill('herbalism', 20) - u:add_item('seed', 40) - u:add_order("PFLANZE 20 Samen") + u:set_skill('herbalism', 12) + u:add_item('seed', 20) + u:add_order("PFLANZE 20 Samen") -- limited by herbalism process_orders() - assert_equal(2, r:get_resource('sapling')) - assert_equal(0, r:get_resource('seed')) + assert_equal(1, r:get_resource('sapling')) + assert_equal(2, r:get_resource('seed')) assert_equal(0, r:get_resource('tree')) - assert_equal(20, u:get_item('seed')) + assert_equal(8, u:get_item('seed')) end -- herbalism < T12 means we are still planting seeds at 1:1 diff --git a/src/economy.c b/src/economy.c index 15266647b..7c91d08ee 100644 --- a/src/economy.c +++ b/src/economy.c @@ -1684,13 +1684,15 @@ static void plant(unit * u, int raw) static void planttrees(region * r, int type, int n) { - rsettrees(r, type, rtrees(r, type) + n); + if (n > 0) { + rsettrees(r, type, rtrees(r, type) + n); + } } /* zuechte baeume */ static void breedtrees(unit * u, int raw) { - int n, i, skill, planted; + int n, i, skill; const resource_type *rtype; season_t current_season = calendar_season(turn); region *r = u->region; @@ -1731,17 +1733,12 @@ static void breedtrees(unit * u, int raw) if (n > raw) n = raw; if (skill >= 12 && current_season == SEASON_SPRING) { - // Plant saplings at a rate of 10:1 - int remain = n % 10; - planted = n / 10; - if ((remain > 0) && (rng_int() % 10) < remain) { - ++planted; - } - planttrees(r, 1, planted); + // Plant saplings for every 10 seeds + planttrees(r, 0, n % 10); + planttrees(r, 1, n / 10); } else { - planted = n; - planttrees(r, 0, planted); + planttrees(r, 0, n); } /* Alles ok. Samen abziehen. */ @@ -1749,7 +1746,7 @@ static void breedtrees(unit * u, int raw) use_pooled(u, rtype, GET_DEFAULT, n); ADDMSG(&u->faction->msgs, msg_message("plant", - "unit region amount herb", u, r, planted, rtype)); + "unit region amount herb", u, r, n, rtype)); } /* zuechte pferde */