diff --git a/src/crafting/craft_barricade.nvgt b/src/crafting/craft_barricade.nvgt index a3fb180..f1f3632 100644 --- a/src/crafting/craft_barricade.nvgt +++ b/src/crafting/craft_barricade.nvgt @@ -155,7 +155,7 @@ void reinforce_barricade_max_with_sticks() { int to_do = (max_reinforcements < can_afford) ? max_reinforcements : can_afford; int total_cost = to_do * BARRICADE_STICK_COST; - simulate_crafting(to_do); + simulate_crafting(total_cost); add_personal_count(ITEM_STICKS, -total_cost); barricade_health += (to_do * BARRICADE_STICK_HEALTH); if (barricade_health > BARRICADE_MAX_HEALTH) barricade_health = BARRICADE_MAX_HEALTH; @@ -181,7 +181,7 @@ void reinforce_barricade_max_with_vines() { int to_do = (max_reinforcements < can_afford) ? max_reinforcements : can_afford; int total_cost = to_do * BARRICADE_VINE_COST; - simulate_crafting(to_do); + simulate_crafting(total_cost); add_personal_count(ITEM_VINES, -total_cost); barricade_health += (to_do * BARRICADE_VINE_HEALTH); if (barricade_health > BARRICADE_MAX_HEALTH) barricade_health = BARRICADE_MAX_HEALTH; @@ -207,7 +207,7 @@ void reinforce_barricade_max_with_log() { int to_do = (max_reinforcements < can_afford) ? max_reinforcements : can_afford; int total_cost = to_do * BARRICADE_LOG_COST; - simulate_crafting(to_do); + simulate_crafting(total_cost); add_personal_count(ITEM_LOGS, -total_cost); barricade_health += (to_do * BARRICADE_LOG_HEALTH); if (barricade_health > BARRICADE_MAX_HEALTH) barricade_health = BARRICADE_MAX_HEALTH; @@ -233,7 +233,7 @@ void reinforce_barricade_max_with_stones() { int to_do = (max_reinforcements < can_afford) ? max_reinforcements : can_afford; int total_cost = to_do * BARRICADE_STONE_COST; - simulate_crafting(to_do); + simulate_crafting(total_cost); add_personal_count(ITEM_STONES, -total_cost); barricade_health += (to_do * BARRICADE_STONE_HEALTH); if (barricade_health > BARRICADE_MAX_HEALTH) barricade_health = BARRICADE_MAX_HEALTH; diff --git a/src/environment.nvgt b/src/environment.nvgt index 6de4993..a0218c2 100644 --- a/src/environment.nvgt +++ b/src/environment.nvgt @@ -754,6 +754,22 @@ void perform_search(int current_x) } } + if (!near_stream_bank && !is_mountain_stream_at(current_x)) { + for (uint i = 0; i < world_mountains.length(); i++) { + for (uint j = 0; j < world_mountains[i].stream_positions.length(); j++) { + int stream_world_x = world_mountains[i].start_position + world_mountains[i].stream_positions[j]; + if (stream_world_x == current_x) { + continue; + } + if (abs(stream_world_x - current_x) <= 3) { + near_stream_bank = true; + break; + } + } + if (near_stream_bank) break; + } + } + if (near_stream_bank) { try_search_for_terrain("stream_bank"); return; diff --git a/src/time_system.nvgt b/src/time_system.nvgt index 4907811..6998d4e 100644 --- a/src/time_system.nvgt +++ b/src/time_system.nvgt @@ -177,6 +177,36 @@ void expand_mountain() { expanded_terrain_types.insert_last("mountain:" + mountain.terrain_types[i]); } + // Spawn trees in mountain forest/deep_forest segments + int segment_start = -1; + string segment_terrain = ""; + for (int i = 0; i < size; i++) { + string terrain = mountain.terrain_types[i]; + if (terrain == "forest" || terrain == "deep_forest") { + if (segment_start == -1) { + segment_start = i; + segment_terrain = terrain; + } else if (terrain != segment_terrain) { + int area_start = new_start + segment_start; + int area_end = new_start + i - 1; + spawn_trees(area_start, area_end); + segment_start = i; + segment_terrain = terrain; + } + } else if (segment_start != -1) { + int area_start = new_start + segment_start; + int area_end = new_start + i - 1; + spawn_trees(area_start, area_end); + segment_start = -1; + segment_terrain = ""; + } + } + if (segment_start != -1) { + int area_start = new_start + segment_start; + int area_end = new_start + size - 1; + spawn_trees(area_start, area_end); + } + area_expanded_today = true; notify("A mountain range has been discovered to the east!"); }