diff --git a/locale/en/pirates.cfg b/locale/en/pirates.cfg index 44ab1837..e5da0210 100644 --- a/locale/en/pirates.cfg +++ b/locale/en/pirates.cfg @@ -43,6 +43,6 @@ resources_needed_tooltip_1=At the next destination, resources will be needed in resources_needed_tooltip_2=The captain can undock early by clicking this button, but only if enough resources have been stored in the captain's cabin.\n\nCost on arrival: __1__\nLeaving now will spend: __2__ resources_needed_tooltip_3=The captain can undock by clicking this button, but only if enough resources are stored in the captain's cabin. resources_needed_tooltip_1_rocketvariant=At the next destination, these resources will be needed in order to undock early.\n\nFewer resources will be needed the longer you stay, eventually dropping to zero..\n\nThe silo represents a rocket launch. -resources_needed_tooltip_2_rocketvariant=The captain can undock early by clicking this button, but only if enough resources have been stored in the captain's cabin.\n\nThe silo represents a rocket launch.\n\nnCost on arrival: __1__\nLeaving now will spend: __2__ -resources_needed_tooltip_3_rocketvariant=The captain can undock by clicking this button, but only if enough resources are stored in the captain's cabin.\n\nThe silo represents a rocket launch. +resources_needed_tooltip_2_rocketvariant=The captain can undock early by clicking this button, but only if enough resources have been stored in the captain's cabin.\n\nThe silo represents a rocket launch rather than a resource.\n\nnCost on arrival: __1__\nLeaving now will spend: __2__ +resources_needed_tooltip_3_rocketvariant=The captain can undock by clicking this button, but only if enough resources are stored in the captain's cabin.\n\nThe silo represents a rocket launch rather than a resource. fuel_tooltip=__1__ stored fuel.\n\nTo store more, send it to the captain's cabin. If the ship runs out of fuel, the crew loses.\n\n*Click* to open the Captain's Store, which only the captain and their officers are authorised to use. \ No newline at end of file diff --git a/maps/pirates/balance.lua b/maps/pirates/balance.lua index 0c2a1286..cb9605f4 100644 --- a/maps/pirates/balance.lua +++ b/maps/pirates/balance.lua @@ -36,7 +36,7 @@ function Public.cost_to_leave_multiplier() -- return Math.sloped(Common.difficulty(), 9/10) -- extra factor now that the cost scales with time: - return Math.sloped(Common.difficulty(), 9/10) * 1.5 + return Math.sloped(Common.difficulty(), 9/10) end Public.rocket_launch_coin_reward = 5000 @@ -139,7 +139,9 @@ function Public.boat_passive_pollution_per_minute(time) if (Common.overworldx()/40) > 25 then T = T * 0.9 end if time then - if time >= 95/100 * T then + if time >= 100/100 * T then --will still happen regularly, on islands without an auto-undock timer + boost = 20 + elseif time >= 95/100 * T then boost = 16 elseif time >= 90/100 * T then boost = 12 @@ -162,9 +164,9 @@ function Public.boat_passive_pollution_per_minute(time) end -function Public.base_evolution() +function Public.base_evolution_leagues(leagues) local evo - local overworldx = Common.overworldx() + local overworldx = leagues if overworldx == 0 then evo = 0 @@ -238,10 +240,10 @@ function Public.evolution_per_full_silo_charge() end function Public.bonus_damage_to_humans() - local ret = 0.050 + local ret = 0.025 local diff = Common.difficulty() - if diff <= 0.7 then ret = 0.025 end - if diff >= 1.3 then ret = 0.075 end + if diff <= 0.7 then ret = 0 end + if diff >= 1.3 then ret = 0.050 end return ret end @@ -290,7 +292,7 @@ end function Public.island_richness_avg_multiplier() local ret -- local base = 0.7 + 0.1 * (Common.overworldx()/40)^(7/10) --tuned tbh - local base = 0.73 + 0.105 * (Common.overworldx()/40)^(7/10) --tuned tbh + local base = 0.73 + 0.110 * (Common.overworldx()/40)^(7/10) --tuned tbh ret = base * Math.sloped(Public.crew_scale(), 1/20) --we don't really have resources scaling by player count in this resource-constrained scenario, but we scale a little, to accommodate each player filling their inventory with useful tools. also, I would do 1/14, but we go even slightly lower because we're applying this somewhat sooner than players actually get there. @@ -326,8 +328,16 @@ function Public.kraken_evo_increase_per_shot() return 1/100 * 0.07 end +function Public.sandworm_evo_increase_per_spawn() + if _DEBUG then + return 1/100 + else + return 1/100 * 1/15 * Math.sloped(Common.difficulty(), 1) + end +end + function Public.kraken_kill_reward() - return {{name = 'sulfuric-acid-barrel', count = 5}} + return {{name = 'sulfuric-acid-barrel', count = 10}} end function Public.kraken_health() diff --git a/maps/pirates/coredata.lua b/maps/pirates/coredata.lua index 95506a4b..80800c05 100644 --- a/maps/pirates/coredata.lua +++ b/maps/pirates/coredata.lua @@ -5,8 +5,8 @@ local inspect = require 'utils.inspect'.inspect local Public = {} Public.scenario_id_name = 'pirates' -Public.version_string = '1.1.1.4.2' -Public.version_float = 1.1142 +Public.version_string = '1.1.1.5.0' +Public.version_float = 1.1150 Public.blueprint_library_allowed = true Public.blueprint_importing_allowed = true diff --git a/maps/pirates/gui/evo.lua b/maps/pirates/gui/evo.lua index c0432af0..257483c6 100644 --- a/maps/pirates/gui/evo.lua +++ b/maps/pirates/gui/evo.lua @@ -68,13 +68,21 @@ function Public.full_update(player) -- else local destination = Common.current_destination() - local evolution_base = 0 - local evolution_time = 0 - local evolution_silo = 0 - local evolution_nests = 0 + + local evolution_leagues = nil + local evolution_kraken = nil + local evolution_time = nil + local evolution_silo = nil + local evolution_nests = nil + local evolution_sandwurms = nil + local evolution_total = nil + + local types = {'leagues', 'kraken', 'time', 'silo', 'nests', 'sandwurms'} + + local str = 'Local biter evolution\n\n' + if memory.boat and memory.boat.state and (memory.boat.state == Boats.enum_state.ATSEA_SAILING or memory.boat.state == Boats.enum_state.ATSEA_LOADING_MAP) then - evolution_base = evo - (memory.kraken_evo or 0) - -- here Kraken.kraken_slots + evolution_leagues = evo - (memory.kraken_evo or 0) local krakens = false if memory.active_sea_enemies and memory.active_sea_enemies.krakens then for i = 1, Kraken.kraken_slots do @@ -82,26 +90,53 @@ function Public.full_update(player) end end if krakens then - button.tooltip = string.format('Local biter evolution\n\nLeagues: %.2f\nKraken: %.2f\nTotal: %.2f', evolution_base, Balance.kraken_spawns_base_extra_evo + (memory.kraken_evo or 0), Balance.kraken_spawns_base_extra_evo + evo) - button.number = Balance.kraken_spawns_base_extra_evo + evo + evolution_kraken = Balance.kraken_spawns_base_extra_evo + (memory.kraken_evo or 0) + evolution_total = evolution_leagues + Balance.kraken_spawns_base_extra_evo else - button.tooltip = string.format('Local biter evolution\n\nLeagues: %.2f\nTotal: %.2f', evolution_base, evo) - button.number = evo + evolution_total = evolution_leagues end else if destination and destination.dynamic_data then - evolution_base = destination.dynamic_data.evolution_accrued_leagues or 0 - evolution_time = destination.dynamic_data.evolution_accrued_time or 0 - evolution_nests = destination.dynamic_data.evolution_accrued_nests or 0 - evolution_silo = destination.dynamic_data.evolution_accrued_silo or 0 + evolution_leagues = destination.dynamic_data.evolution_accrued_leagues + evolution_time = destination.dynamic_data.evolution_accrued_time + evolution_nests = destination.dynamic_data.evolution_accrued_nests + evolution_silo = destination.dynamic_data.evolution_accrued_silo + evolution_sandwurms = destination.dynamic_data.evolution_accrued_sandwurms end - button.tooltip = string.format('Local biter evolution\n\nLeagues: %.2f\nTime: %.2f\nNests: %.2f\nSilo: %.2f\nTotal: %.2f', evolution_base, evolution_time, evolution_nests, evolution_silo, evo) - button.number = evo + evolution_total = (evolution_leagues or 0) + (evolution_time or 0) + (evolution_nests or 0) + (evolution_silo or 0) + (evolution_sandwurms or 0) end - -- end - -- if sprite then - -- button.sprite = spritem - -- end + + for _, type in ipairs(types) do + if type == 'leagues' then + if evolution_leagues then + str = str .. string.format('Leagues: %.2f\n', evolution_leagues) + end + elseif type == 'kraken' then + if evolution_kraken then + str = str .. string.format('Kraken: %.2f\n', evolution_kraken) + end + elseif type == 'time' then + if evolution_time then + str = str .. string.format('Time: %.2f\n', evolution_time) + end + elseif type == 'silo' then + if evolution_silo then + str = str .. string.format('Silo: %.2f\n', evolution_silo) + end + elseif type == 'nests' then + if evolution_nests then + str = str .. string.format('Nests: %.2f\n', evolution_nests) + end + elseif type == 'sandwurms' then + if evolution_sandwurms then + str = str .. string.format('Sandwurms: %.2f\n', evolution_sandwurms) + end + end + end + str = str .. string.format('Total: %.2f', evolution_total) + + button.number = evolution_total + button.tooltip = str end end diff --git a/maps/pirates/gui/gui.lua b/maps/pirates/gui/gui.lua index 073c2545..680bc037 100644 --- a/maps/pirates/gui/gui.lua +++ b/maps/pirates/gui/gui.lua @@ -549,7 +549,7 @@ function Public.update_gui(player) flow2.fuel_label_1.caption = Utils.bignumber_abbrevform(memory.stored_fuel or 0) .. '[item=coal]' flow2.fuel_label_2.caption = Utils.negative_rate_abbrevform(memory.fuel_depletion_rate_memoized or 0) - local color_scale = Math.max(Math.min((- (memory.fuel_depletion_rate_memoized or 0))/50, 1),0) + local color_scale = Math.max(Math.min((- (memory.fuel_depletion_rate_memoized or 0))/30, 1),0) flow2.fuel_label_2.style.font_color = { r = GuiCommon.fuel_color_1.r * (1-color_scale) + GuiCommon.fuel_color_2.r * color_scale, g = GuiCommon.fuel_color_1.g * (1-color_scale) + GuiCommon.fuel_color_2.g * color_scale, @@ -886,7 +886,7 @@ function Public.update_gui(player) flow1.silo_label_3.caption = Math.floor(dynamic_data.rocketcoalreward/100)/10 .. 'k[item=coal], ' .. Math.floor(Balance.rocket_launch_coin_reward/100)/10 .. 'k[item=coin]' - local tooltip = 'The rocket has launched, and this is the reward.' + local tooltip = 'This island\'s rocket has launched, and this is the reward.' flow1.tooltip = tooltip flow1.silo_label_1.tooltip = tooltip flow1.silo_label_3.tooltip = tooltip @@ -961,7 +961,7 @@ function Public.update_gui(player) local tooltip = '' if quest_complete then - tooltip = 'The quest is complete, and this is the reward.' + tooltip = 'This island\'s quest is complete, and this is the reward.' flow1.quest_label_1.caption = 'Quest:' flow1.quest_label_1.style.font_color = GuiCommon.achieved_font_color flow1.quest_label_2.visible = true diff --git a/maps/pirates/interface.lua b/maps/pirates/interface.lua index 8efeb2e5..1f9a80b4 100644 --- a/maps/pirates/interface.lua +++ b/maps/pirates/interface.lua @@ -259,28 +259,28 @@ local function damage_to_players_changes(event) local class = memory.classes_table and memory.classes_table[player_index] local damage_multiplier = 1 - - if class and class == Classes.enum.MERCHANT then - damage_multiplier = damage_multiplier * 1.5 - elseif class and class == Classes.enum.SCOUT then - damage_multiplier = damage_multiplier * 1.25 - elseif class and class == Classes.enum.SAMURAI then - damage_multiplier = damage_multiplier * 0.25 - elseif class and class == Classes.enum.HATAMOTO then --lethal damage needs to be unaffected - damage_multiplier = damage_multiplier * 0.15 - elseif class and class == Classes.enum.IRON_LEG then --lethal damage needs to be unaffected - local inv = event.entity.get_inventory(defines.inventory.character_main) - if not (inv and inv.valid) then return end - local count = inv.get_item_count('iron-ore') - if count and count >= 3500 then - damage_multiplier = damage_multiplier * 0.15 - end - else - damage_multiplier = damage_multiplier * (1 + Balance.bonus_damage_to_humans()) - end if event.damage_type.name == 'poison' then --make all poison damage stronger - damage_multiplier = damage_multiplier * 1.25 + damage_multiplier = damage_multiplier * 1.5 + else + if class and class == Classes.enum.SCOUT then + damage_multiplier = damage_multiplier * 1.25 + -- elseif class and class == Classes.enum.MERCHANT then + -- damage_multiplier = damage_multiplier * 1.10 + elseif class and class == Classes.enum.SAMURAI then + damage_multiplier = damage_multiplier * 0.25 + elseif class and class == Classes.enum.HATAMOTO then --lethal damage needs to be unaffected + damage_multiplier = damage_multiplier * 0.16 + elseif class and class == Classes.enum.IRON_LEG then --lethal damage needs to be unaffected + local inv = event.entity.get_inventory(defines.inventory.character_main) + if not (inv and inv.valid) then return end + local count = inv.get_item_count('iron-ore') + if count and count >= 3500 then + damage_multiplier = damage_multiplier * 0.14 + end + else + damage_multiplier = damage_multiplier * (1 + Balance.bonus_damage_to_humans()) + end end @@ -872,16 +872,31 @@ local function spawner_died(event) local destination = Common.current_destination() if (destination and destination.type and destination.type == Surfaces.enum.ISLAND) then - local extra_evo = Balance.evolution_per_nest_kill() - Common.increment_evo(extra_evo) - - if destination.dynamic_data then - destination.dynamic_data.evolution_accrued_nests = destination.dynamic_data.evolution_accrued_nests + extra_evo + + local not_boat = true + if memory.enemyboats and #memory.enemyboats > 0 then + for i = 1, #memory.enemyboats do + local eb = memory.enemyboats[i] + if eb.spawner and eb.spawner.valid and event.entity and event.entity.valid and event.entity == eb.spawner then + not_boat = false + break + end + end + end + + if not_boat then + local extra_evo = Balance.evolution_per_nest_kill() + Common.increment_evo(extra_evo) + + if destination.dynamic_data then + destination.dynamic_data.evolution_accrued_nests = destination.dynamic_data.evolution_accrued_nests + extra_evo + end end end end local function event_on_entity_died(event) + --== MODDING NOTE: event.cause is not always provided. local entity = event.entity if not (entity and entity.valid) then return end if not (event.force and event.force.valid) then return end @@ -918,6 +933,7 @@ local function event_on_entity_died(event) if entity and entity.valid and entity.force and entity.force.name == memory.enemy_force_name then if (entity.name == 'biter-spawner' or entity.name == 'spitter-spawner') then spawner_died(event) + -- I think the only reason krakens don't trigger this right now is that they are destroyed rather than .die() else local destination = Common.current_destination() if not (destination and destination.dynamic_data and destination.dynamic_data.quest_type and (not destination.dynamic_data.quest_complete)) then return end diff --git a/maps/pirates/loot.lua b/maps/pirates/loot.lua index 483a52ef..beead3a0 100644 --- a/maps/pirates/loot.lua +++ b/maps/pirates/loot.lua @@ -145,7 +145,9 @@ Public.chest_loot_data_raw = { {6, 0, 2, true, 'utility-science-pack', 3, 3}, {0.5, 0.2, 1.4, true, 'construction-robot', 5, 15}, - {2, 0.6, 1.4, true, 'roboport', 1, 1}, + {2, 0.5, 1.5, true, 'roboport', 1, 1}, + {2, 0.5, 1.5, false, 'logistic-chest-passive-provider', 2, 2}, + {2, 0.5, 1.5, false, 'logistic-robot', 5, 15}, {4, 0.2, 1.2, true, 'lubricant-barrel', 1, 4}, @@ -353,7 +355,8 @@ Public.maze_treasure_data_raw = { {2, 0, 1.5, true, 'coin', 3000, 6500}, {3, 0, 0.9, false, 'beacon', 1, 1}, - {3, 0, 1, false, 'construction-robot', 30, 40}, + {1, 0, 1, false, 'construction-robot', 30, 40}, + {3, 0, 1, false, 'logistic-chest-passive-provider', 2, 2}, {1, 0.2, 1.8, true, 'explosive-rocket', 6, 8}, @@ -402,7 +405,7 @@ Public.dredger_loot_raw = { {8, 0, 1, false, 'iron-plate', 1, 1}, {8, 0, 1, false, 'copper-plate', 1, 1}, {8, 0, 1, false, 'coal', 1, 1}, - {8, 0, 1, false, 'coin', 1, 1}, + {10, 0, 1, false, 'coin', 1, 1}, {2, 0, 1, false, 'small-electric-pole', 1, 1}, {1, 0, 1, false, 'medium-electric-pole', 1, 1}, @@ -425,9 +428,9 @@ Public.dredger_loot_raw = { {4, 0, 1, false, 'automation-science-pack', 1, 1}, {4, 0, 1, false, 'logistic-science-pack', 1, 1}, {2, 0, 1, false, 'military-science-pack', 1, 1}, - {2, 0, 1, false, 'chemical-science-pack', 1, 1}, - {2, 0, 1, false, 'production-science-pack', 1, 1}, - {1, 0, 1, false, 'utility-science-pack', 1, 1}, + {1, 0, 1, false, 'chemical-science-pack', 1, 1}, + {1, 0, 1, false, 'production-science-pack', 1, 1}, + {0.5, 0, 1, false, 'utility-science-pack', 1, 1}, {0.012, 0, 0.8, false, 'night-vision-equipment', 1, 1}, {0.01, 0, 1, false, 'exoskeleton-equipment', 1, 1}, diff --git a/maps/pirates/ores.lua b/maps/pirates/ores.lua index 1e35004e..c48f5129 100644 --- a/maps/pirates/ores.lua +++ b/maps/pirates/ores.lua @@ -47,7 +47,7 @@ function Public.try_ore_spawn(surface, realp, source_name, density_bonus) local placed if choice == 'crude-oil' then - placed = Common.oil_abstract_to_real(choices[choice]/2 + 10) * (0.6 + Math.random()) + placed = Common.oil_abstract_to_real(6 + 0.7*choices[choice]/(Math.max(1, Math.ceil((choices[choice]/4)^(1/2))))) * (0.8 + 0.4 * Math.random()) --thesixthroc's magic function, just plot this to see that it makes sense placed = Math.min(placed, Common.oil_abstract_to_real(choices[choice])) diff --git a/maps/pirates/overworld.lua b/maps/pirates/overworld.lua index b375ee64..820af496 100644 --- a/maps/pirates/overworld.lua +++ b/maps/pirates/overworld.lua @@ -101,20 +101,19 @@ function Public.generate_overworld_destination(p) elseif macrop.x == 2 then type = Surfaces.enum.ISLAND subtype = Surfaces.Island.enum.STANDARD_VARIANT --aesthetically different to first map - elseif (macrop.x > 25 and (macrop.x - 22) % 18 == 0) then --we want this to overwrite dock, so putting it here + elseif (macrop.x > 25 and (macrop.x - 22) % 20 == 0) then --we want this to overwrite dock, so putting it here type = Surfaces.enum.ISLAND subtype = Surfaces.Island.enum.RADIOACTIVE - elseif (macrop.x > 25 and (macrop.x - 22) % 18 == 10) then --we want this to overwrite dock, so putting it here + elseif (macrop.x > 25 and (macrop.x - 22) % 20 == 18) then --we want this to overwrite dock, so putting it here type = Surfaces.enum.ISLAND subtype = Surfaces.Island.enum.MAZE - elseif (macrop.x > 25 and (macrop.x - 22) % 18 == 14) then --we want this to overwrite dock, so putting it here - type = Surfaces.enum.ISLAND - subtype = Surfaces.Island.enum.WALKWAYS elseif macrop.x == 23 then --overwrite dock. rocket launch cost type = Surfaces.enum.ISLAND subtype = Surfaces.Island.enum.WALKWAYS elseif macrop.y == -1 and (((macrop.x % 4) == 3 and macrop.x ~= 15) or macrop.x == 14) then --avoid x=15 because radioactive is there type = Surfaces.enum.DOCK + elseif macrop.x == 3 then + type = nil elseif macrop.x == 5 then --biter boats appear. large island works well so players run off type = Surfaces.enum.ISLAND subtype = Surfaces.Island.enum.STANDARD @@ -175,7 +174,7 @@ function Public.generate_overworld_destination(p) if _DEBUG and type == Surfaces.enum.ISLAND then -- warning: the first map is unique in that it isn't all loaded by the time you arrive, which can cause issues. For example, structures might get placed after ore, thereby deleting the ore underneath them. - subtype = Surfaces.Island.enum.WALKWAYS + subtype = Surfaces.Island.enum.MAZE -- subtype = nil -- type = Surfaces.enum.DOCK end @@ -192,43 +191,37 @@ function Public.generate_overworld_destination(p) local static_params = Utils.deepcopy(scope.Data.static_params_default) local base_cost_to_undock - -- These need to scale up slower than the static fuel depletion rate: local normal_costitems = {'electronic-circuit', 'advanced-circuit'} - -- local normal_costitems = {'electronic-circuit', 'engine-unit', 'advanced-circuit'} - local base_cost_0 = { - ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*80), - } + + -- These need to scale up slightly slower than the static fuel depletion rate, so you're increasingly incentivised to leave: local base_cost_1 = { - ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*80), - -- ['engine-unit'] = Math.ceil(((macrop.x-7)^(2/3))*12), + ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*120), } local base_cost_2 = { - ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*80), - -- ['engine-unit'] = Math.ceil(((macrop.x-7)^(2/3))*12), - ['advanced-circuit'] = Math.ceil(((macrop.x-14)^(2/3))*12), + ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*180), + ['advanced-circuit'] = Math.ceil(((macrop.x-14)^(2/3))*18), + -- the below got this response from a new player: "This feels... underwhelming." + -- ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*120), + -- ['advanced-circuit'] = Math.ceil(((macrop.x-14)^(2/3))*18), } local base_cost_2b = { - ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*80), - -- ['engine-unit'] = Math.ceil(((macrop.x-7)^(2/3))*12), + ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*180), ['flying-robot-frame'] = 2, } - local base_cost_2c = { - ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*80), - -- ['engine-unit'] = Math.ceil(((macrop.x-7)^(2/3))*12), - ['advanced-circuit'] = Math.ceil(((macrop.x-14)^(2/3))*12), - ['launch_rocket'] = true, - } local base_cost_3 = { - ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*80), - -- ['engine-unit'] = Math.ceil(((macrop.x-7)^(2/3))*12), - ['advanced-circuit'] = Math.ceil(((macrop.x-14)^(2/3))*12), - ['flying-robot-frame'] = Math.ceil(((macrop.x-18)^(2/3))*10), + ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*140), + ['advanced-circuit'] = Math.ceil(((macrop.x-14)^(2/3))*20), ['launch_rocket'] = true, } local base_cost_4 = { - ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*80), - -- ['engine-unit'] = Math.ceil(((macrop.x-7)^(2/3))*12), - ['advanced-circuit'] = Math.ceil(((macrop.x-14)^(2/3))*12), + ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*140), + ['advanced-circuit'] = Math.ceil(((macrop.x-14)^(2/3))*20), + ['flying-robot-frame'] = Math.ceil(((macrop.x-18)^(2/3))*10), + ['launch_rocket'] = true, + } + local base_cost_5 = { + ['electronic-circuit'] = Math.ceil(((macrop.x-2)^(2/3))*140), + ['advanced-circuit'] = Math.ceil(((macrop.x-14)^(2/3))*20), ['flying-robot-frame'] = Math.ceil(((macrop.x-18)^(2/3))*10), } if macrop.x == 0 then @@ -245,7 +238,7 @@ function Public.generate_overworld_destination(p) -- base_cost_to_undock = {['electronic-circuit'] = 5} base_cost_to_undock = nil elseif macrop.x <= 9 then - base_cost_to_undock = base_cost_0 + base_cost_to_undock = base_cost_1 elseif macrop.x <= 15 then if macrop.x % 3 > 0 then base_cost_to_undock = base_cost_1 @@ -260,12 +253,13 @@ function Public.generate_overworld_destination(p) else base_cost_to_undock = nil end + -- after this point, mandatory elseif macrop.x <= 23 then - base_cost_to_undock = base_cost_2c - elseif macrop.x <= 24 then base_cost_to_undock = base_cost_3 + elseif macrop.x <= 24 then + base_cost_to_undock = base_cost_4 else - base_cost_to_undock = Utils.deepcopy(base_cost_4) + base_cost_to_undock = Utils.deepcopy(base_cost_5) local delete = normal_costitems[Math.random(#normal_costitems)] base_cost_to_undock[delete] = nil if macrop.x % 2 == 0 then @@ -461,7 +455,7 @@ function Public.generate_overworld_destination(p) end if _DEBUG then - kraken_count = 1 + -- kraken_count = 1 end if position_candidates then @@ -640,6 +634,9 @@ function Public.try_overworld_move_v2(vector) --islands stay, crowsnest moves Balance.apply_crew_buffs_per_x(memory.force) end + -- add some evo: (this will get reset upon arriving at a destination anyway, so this is just relevant for sea monsters and the like:) + local extra_evo = Balance.base_evolution_leagues(memory.overworldx) - Balance.base_evolution_leagues(memory.overworldx - vector.x) + Common.increment_evo(extra_evo) end if memory.overworldx >= CoreData.victory_x then diff --git a/maps/pirates/parrot.lua b/maps/pirates/parrot.lua index ec75c62e..83da1adf 100644 --- a/maps/pirates/parrot.lua +++ b/maps/pirates/parrot.lua @@ -75,7 +75,7 @@ function Public.parrot_radioactive_tip_1() end function Public.parrot_radioactive_tip_2() local memory = Memory.get_crew_memory() - Common.parrot_speak(memory.force, 'The biters don\'t care if we pollute here, they only care how long we stay...') + Common.parrot_speak(memory.force, 'The biters don\'t care if we pollute here, but they evolve fast...') end function Public.parrot_maze_tip_1() local memory = Memory.get_crew_memory() diff --git a/maps/pirates/progression.lua b/maps/pirates/progression.lua index 672b61c4..a25b3d84 100644 --- a/maps/pirates/progression.lua +++ b/maps/pirates/progression.lua @@ -562,7 +562,7 @@ function Public.go_from_currentdestination_to_sea() memory.enemy_force.reset_evolution() --@FIX: This doesn't change the evo during sea travel, which is relevant now that krakens are in the game: - local base_evo = Balance.base_evolution() + local base_evo = Balance.base_evolution_leagues(memory.overworldx) Common.set_evo(base_evo) memory.kraken_evo = 0 diff --git a/maps/pirates/roles/classes.lua b/maps/pirates/roles/classes.lua index 6339cde5..73c115ca 100644 --- a/maps/pirates/roles/classes.lua +++ b/maps/pirates/roles/classes.lua @@ -77,7 +77,7 @@ Public.explanation = { [enum.FISHERMAN] = 'They fish at greater distance.', [enum.SCOUT] = 'They are faster, but frail and deal less damage.', [enum.SAMURAI] = 'They are tough, and *with no weapon equipped* fight well by melee, but poorly otherwise.', - [enum.MERCHANT] = 'They generate 40 doubloons per league, but are frail.', + [enum.MERCHANT] = 'They generate 40 doubloons per league.', [enum.SHORESMAN] = 'They move slightly faster and generate ore for the cabin whilst offboard, but move slower onboard.', [enum.BOATSWAIN] = 'They move faster and generate ore for the cabin whilst below deck, but move slower offboard.', [enum.PROSPECTOR] = 'They find more resources when handmining ore.', diff --git a/maps/pirates/roles/roles.lua b/maps/pirates/roles/roles.lua index 17e96e12..a7dcc3f7 100644 --- a/maps/pirates/roles/roles.lua +++ b/maps/pirates/roles/roles.lua @@ -80,10 +80,10 @@ function Public.revoke_class(captain, player) local force = memory.force if force and force.valid and player.index and memory.classes_table[player.index] then - Common.notify_force_light(force, string.format('%s revoked %s from %s.', captain.name, Public.display_form[memory.classes_table[player.index]]), player.name) - memory.spare_classes[#memory.spare_classes + 1] = memory.classes_table[player.index] memory.classes_table[player.index] = nil + + Common.notify_force_light(force, string.format('%s revoked %s from %s.', captain.name, Classes.display_form[memory.classes_table[player.index]]), player.name) end end diff --git a/maps/pirates/shop/captains.lua b/maps/pirates/shop/captains.lua index 8dd4c00e..9c5bda64 100644 --- a/maps/pirates/shop/captains.lua +++ b/maps/pirates/shop/captains.lua @@ -66,7 +66,7 @@ Public.main_shop_data_1 = { [Upgrades.enum.MORE_POWER] = { tooltip = 'Upgrade the ship\'s power.', what_you_get_sprite_buttons = {['utility/status_working'] = false}, - base_cost = {coins = 5000, fuel = 800}, + base_cost = {coins = 5000, fuel = 500}, }, [Upgrades.enum.EXTRA_HOLD] = { tooltip = 'Upgrade the ship\'s hold.', diff --git a/maps/pirates/shop/covered.lua b/maps/pirates/shop/covered.lua index 25b16c45..d3080e15 100644 --- a/maps/pirates/shop/covered.lua +++ b/maps/pirates/shop/covered.lua @@ -34,24 +34,24 @@ Public.offers_rockets = { } Public.offers_default = { - {price = {{'coin', 750}}, offer = {type = 'give-item', item = 'copper-plate', count = 150}}, - {price = {{'coin', 750}}, offer = {type = 'give-item', item = 'iron-plate', count = 150}}, + {price = {{'coin', 600}}, offer = {type = 'give-item', item = 'copper-plate', count = 150}}, + {price = {{'coin', 600}}, offer = {type = 'give-item', item = 'iron-plate', count = 150}}, {price = {{'coin', 450}}, offer = {type = 'give-item', item = 'piercing-rounds-magazine', count = 14}}, {price = {{'coin', 700}}, offer = {type = 'give-item', item = 'heavy-armor', count = 1}}, - {price = {{'coin', 200}}, offer = {type = 'give-item', item = 'gun-turret', count = 2}}, {price = {{'coin', 400}}, offer = {type = 'give-item', item = 'grenade', count = 10}}, {price = {{'coin', 300}}, offer = {type = 'give-item', item = 'defender-capsule', count = 3}}, {price = {{'coin', 400}}, offer = {type = 'give-item', item = 'distractor-capsule', count = 3}}, - {price = {{'coin', 400}}, offer = {type = 'give-item', item = 'destroyer-capsule', count = 1}}, {price = {{'coin', 500}}, offer = {type = 'give-item', item = 'slowdown-capsule', count = 5}}, {price = {{'coin', 500}}, offer = {type = 'give-item', item = 'poison-capsule', count = 5}}, - {price = {{'coin', 500}}, offer = {type = 'give-item', item = 'gate', count = 12}}, + {price = {{'coin', 500}}, offer = {type = 'give-item', item = 'gate', count = 10}}, {price = {{'coin', 100}}, offer = {type = 'give-item', item = 'storage-tank', count = 4}}, {price = {{'coin', 200}}, offer = {type = 'give-item', item = 'big-electric-pole', count = 8}}, - {price = {{'coin', 200}}, offer = {type = 'give-item', item = 'steel-furnace', count = 2}}, - {price = {{'coin', 300}}, offer = {type = 'give-item', item = 'stack-inserter', count = 1}}, - {price = {{'coin', 400}}, offer = {type = 'give-item', item = 'piercing-shotgun-shell', count = 6}}, - {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'flying-robot-frame', count = 2}}, + {price = {{'coin', 200}}, offer = {type = 'give-item', item = 'steel-furnace', count = 4}}, + {price = {{'coin', 300}}, offer = {type = 'give-item', item = 'stack-inserter', count = 3}}, + {price = {{'coin', 750}}, offer = {type = 'give-item', item = 'piercing-shotgun-shell', count = 9}}, + {price = {{'coin', 800}}, offer = {type = 'give-item', item = 'flamethrower', count = 1}}, + {price = {{'coin', 1500}}, offer = {type = 'give-item', item = 'flamethrower-ammo', count = 4}}, + {price = {{'coin', 1500}}, offer = {type = 'give-item', item = 'flying-robot-frame', count = 1}}, } diff --git a/maps/pirates/shop/dock.lua b/maps/pirates/shop/dock.lua index 568de2a1..94701422 100644 --- a/maps/pirates/shop/dock.lua +++ b/maps/pirates/shop/dock.lua @@ -37,8 +37,8 @@ Public.market_barters = { } Public.market_permanent_offers = { - {price = {{'coin', 3000}}, offer = {type = 'give-item', item = 'iron-ore', count = 800}}, - {price = {{'coin', 3000}}, offer = {type = 'give-item', item = 'copper-ore', count = 800}}, + {price = {{'coin', 2400}}, offer = {type = 'give-item', item = 'iron-ore', count = 800}}, + {price = {{'coin', 2400}}, offer = {type = 'give-item', item = 'copper-ore', count = 800}}, {price = {{'coin', 3000}}, offer = {type = 'give-item', item = 'crude-oil-barrel', count = 100}}, {price = {{'coin', 2500}}, offer = {type = 'give-item', item = 'fast-loader', count = 1}}, {price = {{'coin', 5000}}, offer = {type = 'give-item', item = 'beacon', count = 2}}, @@ -48,14 +48,12 @@ Public.market_permanent_offers = { -- cheap but one-off Public.market_sales = { {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'coal', count = 900}}, - {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'firearm-magazine', count = 500}}, {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'piercing-rounds-magazine', count = 75}}, {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'uranium-rounds-magazine', count = 30}}, {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'piercing-shotgun-shell', count = 50}}, {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'raw-fish', count = 300}}, {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'laser-turret', count = 1}}, {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'vehicle-machine-gun', count = 3}}, - {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'substation', count = 5}}, {price = {{'coin', 3000}}, offer = {type = 'give-item', item = 'modular-armor', count = 1}}, {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'distractor-capsule', count = 20}}, {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'poison-capsule', count = 20}}, @@ -63,48 +61,50 @@ Public.market_sales = { {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'coin', count = 4000}}, {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'roboport', count = 1}}, {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'construction-robot', count = 10}}, + {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'logistic-chest-passive-provider', count = 2}}, + {price = {{'coin', 2000}}, offer = {type = 'give-item', item = 'logistic-robot', count = 2}}, } -function Public.dock_generate_offers(how_many_barters, how_many_sales) - local ret = {} +-- function Public.dock_generate_offers(how_many_barters, how_many_sales) +-- local ret = {} - local toaddcount +-- local toaddcount - local barterscopy = Utils.deepcopy(Public.market_barters) - toaddcount = how_many_barters - while toaddcount>0 and #barterscopy > 0 do - local index = Math.random(#barterscopy) - local toadd = barterscopy[index] - ret[#ret + 1] = toadd - for i = index, #barterscopy - 1 do - barterscopy[i] = barterscopy[i+1] - end - barterscopy[#barterscopy] = nil - toaddcount = toaddcount - 1 - end +-- local barterscopy = Utils.deepcopy(Public.market_barters) +-- toaddcount = how_many_barters +-- while toaddcount>0 and #barterscopy > 0 do +-- local index = Math.random(#barterscopy) +-- local toadd = barterscopy[index] +-- ret[#ret + 1] = toadd +-- for i = index, #barterscopy - 1 do +-- barterscopy[i] = barterscopy[i+1] +-- end +-- barterscopy[#barterscopy] = nil +-- toaddcount = toaddcount - 1 +-- end - for _, offer in pairs(Public.market_permanent_offers) do - ret[#ret + 1] = offer - end +-- for _, offer in pairs(Public.market_permanent_offers) do +-- ret[#ret + 1] = offer +-- end - local salescopy = Utils.deepcopy(Public.market_sales) - toaddcount = how_many_sales - while toaddcount>0 and #salescopy > 0 do - local index = Math.random(#salescopy) - local toadd = salescopy[index] - ret[#ret + 1] = toadd - for i = index, #salescopy - 1 do - salescopy[i] = salescopy[i+1] - end - salescopy[#salescopy] = nil - toaddcount = toaddcount - 1 - end +-- local salescopy = Utils.deepcopy(Public.market_sales) +-- toaddcount = how_many_sales +-- while toaddcount>0 and #salescopy > 0 do +-- local index = Math.random(#salescopy) +-- local toadd = salescopy[index] +-- ret[#ret + 1] = toadd +-- for i = index, #salescopy - 1 do +-- salescopy[i] = salescopy[i+1] +-- end +-- salescopy[#salescopy] = nil +-- toaddcount = toaddcount - 1 +-- end - return ret -end +-- return ret +-- end function Public.create_dock_markets(surface, p) diff --git a/maps/pirates/structures/island_structures/roc/data.lua b/maps/pirates/structures/island_structures/roc/data.lua index b8f4c016..ab96a8ab 100644 --- a/maps/pirates/structures/island_structures/roc/data.lua +++ b/maps/pirates/structures/island_structures/roc/data.lua @@ -208,6 +208,23 @@ Public.maze_undefended_camp = { }, } +Public.maze_mines = { + name = 'maze_mines', + width = 24, + height = 24, + doNotDestroyExistingEntities = true, + components = { + { + type = 'entities_randomlyplaced', + name = 'land-mine', + force = 'ancient-hostile', + offset = {x = 0, y = 0}, + count = 20, + r = 12, + }, + }, +} + Public.maze_labs = { name = 'maze_labs', width = 12, diff --git a/maps/pirates/structures/island_structures/roc/roc.lua b/maps/pirates/structures/island_structures/roc/roc.lua index 0759a3eb..2de0f8c2 100644 --- a/maps/pirates/structures/island_structures/roc/roc.lua +++ b/maps/pirates/structures/island_structures/roc/roc.lua @@ -20,6 +20,8 @@ Public.maze_defended_camp = {} Public.maze_defended_camp.Data = Data.maze_defended_camp Public.maze_undefended_camp = {} Public.maze_undefended_camp.Data = Data.maze_undefended_camp +Public.maze_mines = {} +Public.maze_mines.Data = Data.maze_mines Public.maze_worms = {} Public.maze_worms.Data = Data.maze_worms Public.maze_belts_1 = {} diff --git a/maps/pirates/surfaces/islands/islands.lua b/maps/pirates/surfaces/islands/islands.lua index 731a1041..b652c250 100644 --- a/maps/pirates/surfaces/islands/islands.lua +++ b/maps/pirates/surfaces/islands/islands.lua @@ -215,10 +215,20 @@ function Public.spawn_ores_on_arrival(destination, points_to_avoid) if p then points_to_avoid[#points_to_avoid + 1] = {x=p.x, y=p.y, r=11} end if ore == 'crude-oil' then - local amount = Common.oil_abstract_to_real(destination.static_params.abstract_ore_amounts[ore]) - surface.create_entity{name = 'crude-oil', amount = amount, position = p} - --@TODO: Make this into a collection of multiple oil patches + local count = Math.max(1, Math.ceil((destination.static_params.abstract_ore_amounts[ore]/3)^(1/2))) + local amount = Common.oil_abstract_to_real(destination.static_params.abstract_ore_amounts[ore]) / count + + for i = 1, count do + local p2 = {p.x + Math.random(-7, 7), p.y + Math.random(-7, 7)} + local whilesafety = 0 + while (not surface.can_place_entity{name = 'crude-oil', position = p2}) and whilesafety < 30 do + p2 = {p.x + Math.random(-7, 7), p.y + Math.random(-7, 7)} + whilesafety = whilesafety + 1 + end + + surface.create_entity{name = 'crude-oil', position = p2, amount = amount} + end destination.dynamic_data.ore_types_spawned[ore] = true else diff --git a/maps/pirates/surfaces/islands/maze/data.lua b/maps/pirates/surfaces/islands/maze/data.lua index 4a4dd9f4..faeed7e1 100644 --- a/maps/pirates/surfaces/islands/maze/data.lua +++ b/maps/pirates/surfaces/islands/maze/data.lua @@ -25,7 +25,7 @@ function Public.base_ores() ['iron-ore'] = 6.5, ['coal'] = 4.0, ['stone'] = 2.0, - ['crude-oil'] = 15, + ['crude-oil'] = 25, } end diff --git a/maps/pirates/surfaces/islands/maze/maze.lua b/maps/pirates/surfaces/islands/maze/maze.lua index cbde7ca2..87d62687 100644 --- a/maps/pirates/surfaces/islands/maze/maze.lua +++ b/maps/pirates/surfaces/islands/maze/maze.lua @@ -134,7 +134,7 @@ local function terrain_entity_at_relative_position(args, entity) end local free_labyrinth_cell_raffle = { - empty = 17, + empty = 16.5, maze_labs = 0.6, maze_defended_camp = 1, maze_undefended_camp = 0.25, @@ -145,6 +145,7 @@ local free_labyrinth_cell_raffle = { maze_belts_2 = 0.2, maze_belts_3 = 0.2, maze_belts_4 = 0.2, + maze_mines = 0.2, maze_treasure = 0.7, } diff --git a/maps/pirates/surfaces/islands/radioactive/data.lua b/maps/pirates/surfaces/islands/radioactive/data.lua index 08a754f0..94ac6c32 100644 --- a/maps/pirates/surfaces/islands/radioactive/data.lua +++ b/maps/pirates/surfaces/islands/radioactive/data.lua @@ -13,7 +13,7 @@ Public.static_params_default = { starting_time_of_day = 0.45, brightness_visual_weights = {0.8, 0.8, 0.8}, daynightcycletype = 4, - min_brightness = 0, + min_brightness = 0.05, base_starting_treasure = 1000, base_starting_rock_material = 1200, base_starting_wood = 800, diff --git a/maps/pirates/surfaces/islands/red_desert/data.lua b/maps/pirates/surfaces/islands/red_desert/data.lua index 3b46c40a..8b904a27 100644 --- a/maps/pirates/surfaces/islands/red_desert/data.lua +++ b/maps/pirates/surfaces/islands/red_desert/data.lua @@ -15,7 +15,6 @@ Public.terraingen_frame_height = 700 Public.static_params_default = { starting_time_of_day = 0, daynightcycletype = 1, - solar_power_multiplier = 1, default_decoratives = true, base_starting_treasure = 0, base_starting_rock_material = 8600, @@ -30,7 +29,7 @@ function Public.base_ores() --here, just for the visualisation: } end -local rscale = 180 +local rscale = 175 local hscale = 0.16 Public.noiseparams = { radius = { diff --git a/maps/pirates/surfaces/islands/red_desert/red_desert.lua b/maps/pirates/surfaces/islands/red_desert/red_desert.lua index c311decf..bc650d6a 100644 --- a/maps/pirates/surfaces/islands/red_desert/red_desert.lua +++ b/maps/pirates/surfaces/islands/red_desert/red_desert.lua @@ -313,6 +313,13 @@ function Public.underground_worms_ai() Effects.worm_emerge_effect(surface, emerge_position) indices_to_remove[#indices_to_remove + 1] = i if w.chart_tag then w.chart_tag.destroy() end + + local extra_evo = Balance.sandworm_evo_increase_per_spawn() + Common.increment_evo(extra_evo) + + if destination.dynamic_data then + destination.dynamic_data.evolution_accrued_sandwurms = destination.dynamic_data.evolution_accrued_sandwurms + extra_evo + end end end diff --git a/maps/pirates/surfaces/islands/swamp/data.lua b/maps/pirates/surfaces/islands/swamp/data.lua index b99381bd..ec2f69a9 100644 --- a/maps/pirates/surfaces/islands/swamp/data.lua +++ b/maps/pirates/surfaces/islands/swamp/data.lua @@ -26,7 +26,7 @@ function Public.base_ores() ['iron-ore'] = 3.6, ['coal'] = 4.8, ['stone'] = 0.5, - ['crude-oil'] = 50, + ['crude-oil'] = 80, } end diff --git a/maps/pirates/surfaces/islands/walkways/data.lua b/maps/pirates/surfaces/islands/walkways/data.lua index e0ff6b49..8bc4c966 100644 --- a/maps/pirates/surfaces/islands/walkways/data.lua +++ b/maps/pirates/surfaces/islands/walkways/data.lua @@ -12,7 +12,7 @@ Public.terraingen_frame_height = 896 Public.static_params_default = { starting_time_of_day = 0, daynightcycletype = 4, - min_brightness = 0.1, + min_brightness = 0.05, brightness_visual_weights = {1, 1, 1}, --almost pitch black default_decoratives = false, base_starting_rock_material = 800, @@ -23,7 +23,7 @@ function Public.base_ores() ['copper-ore'] = 2.6, ['iron-ore'] = 2.8, ['coal'] = 4, - ['crude-oil'] = 100, + ['crude-oil'] = 120, } end diff --git a/maps/pirates/surfaces/surfaces.lua b/maps/pirates/surfaces/surfaces.lua index 55432e2a..1bacba05 100644 --- a/maps/pirates/surfaces/surfaces.lua +++ b/maps/pirates/surfaces/surfaces.lua @@ -268,12 +268,18 @@ function Public.destination_on_arrival(destination) end memory.enemy_force.reset_evolution() - local base_evo = Balance.base_evolution() + local base_evo = Balance.base_evolution_leagues(memory.overworldx) Common.set_evo(base_evo) destination.dynamic_data.evolution_accrued_leagues = base_evo destination.dynamic_data.evolution_accrued_time = 0 - destination.dynamic_data.evolution_accrued_nests = 0 - destination.dynamic_data.evolution_accrued_silo = 0 + if destination.subtype == Islands.enum.RED_DESERT then + destination.dynamic_data.evolution_accrued_sandwurms = 0 + else + destination.dynamic_data.evolution_accrued_nests = 0 + end + if destination.subtype ~= Islands.enum.RADIOACTIVE then + destination.dynamic_data.evolution_accrued_silo = 0 + end memory.scripted_biters = {} memory.scripted_unit_groups = {} @@ -635,7 +641,7 @@ function Public.create_surface(destination) surface.solar_power_multiplier = destination.static_params.solar_power_multiplier or 1 surface.show_clouds = destination.static_params.clouds or false - surface.min_brightness = destination.static_params.min_brightness or 0 + surface.min_brightness = destination.static_params.min_brightness or 0.15 surface.brightness_visual_weights = destination.static_params.brightness_visual_weights or {1, 1, 1} surface.daytime = destination.static_params.starting_time_of_day or 0 @@ -698,7 +704,7 @@ function Public.clean_up(destination) local ef = memory.enemy_force if ef and ef.valid then memory.enemy_force.reset_evolution() - local base_evo = Balance.base_evolution() + local base_evo = Balance.base_evolution_leagues(memory.overworldx) Common.set_evo(base_evo) end end diff --git a/maps/pirates/tick_functions.lua b/maps/pirates/tick_functions.lua index a93e8d50..1c0791de 100644 --- a/maps/pirates/tick_functions.lua +++ b/maps/pirates/tick_functions.lua @@ -279,7 +279,7 @@ function Public.periodic_free_resources(tickinterval) Common.give_items_to_crew(Balance.periodic_free_resources_per_destination_5_seconds()) - if game.tick % (300*28) == 0 and (destination and destination.subtype and destination.subtype == Islands.enum.RADIOACTIVE) then -- every 140 seconds + if game.tick % (300*30) == 0 and (destination and destination.subtype and destination.subtype == Islands.enum.RADIOACTIVE) then -- every 150 seconds local count = 2 Common.give_items_to_crew{{name = 'sulfuric-acid-barrel', count = count}} local force = memory.force