diff --git a/locale/en/pirates.cfg b/locale/en/pirates.cfg index 376661af..44ab1837 100644 --- a/locale/en/pirates.cfg +++ b/locale/en/pirates.cfg @@ -7,7 +7,7 @@ softmod_info_game_description_1=Game Description softmod_info_game_description_2=Set sail in this multiplayer scenario. Collect resources and fuel the ship in order to survive as many leagues as possible. The ship moves with code magic. Doubloons can be spent at docks and other markets, to upgrade players, upgrade the ship, and buy rare items. Each crew has a captain, who can perform actions such as deciding when the boat leaves.\n\nGame progression is significantly slowed down the smaller the crew.\n\n[font=default-bold]Win condition:[/font] Travel 1000 leagues.\n[font=default-bold]Lose condition:[/font] The ship runs out of fuel, or a cannon is destroyed. softmod_info_bugs_1=Known issues -softmod_info_bugs_2=• N/A +softmod_info_bugs_2=• Very rarely (only observed once), the deck locomotive can disappear, and an admin needs to make a new one. softmod_info_new_players_1=For New Players softmod_info_new_players_2=Mine coal and other resources and bring them to the ship to keep things going, or try asking the captain for more specific tasks. diff --git a/maps/pirates/balance.lua b/maps/pirates/balance.lua index 913fc161..0c2a1286 100644 --- a/maps/pirates/balance.lua +++ b/maps/pirates/balance.lua @@ -28,7 +28,7 @@ Public.EEI_stages = { --multipliers function Public.scripted_biters_pollution_cost_multiplier() - return 1.25 --tuned + return 1.3 --tuned end function Public.cost_to_leave_multiplier() @@ -129,7 +129,7 @@ end function Public.silo_total_pollution() return ( - 350 * (Common.difficulty()^(1.2)) * Public.crew_scale()^(2/5) * (3.2 + 0.7 * (Common.overworldx()/40)^(1.6)) --shape of the curve with x is tuned + 365 * (Common.difficulty()^(1.2)) * Public.crew_scale()^(2/5) * (3.2 + 0.7 * (Common.overworldx()/40)^(1.6)) --shape of the curve with x is tuned ) end @@ -157,7 +157,7 @@ function Public.boat_passive_pollution_per_minute(time) end return boost * ( - 5.0 * Common.difficulty() * (Common.overworldx()/40)^(1.6) * (Public.crew_scale())^(55/100) + 5.2 * Common.difficulty() * (Common.overworldx()/40)^(1.6) * (Public.crew_scale())^(55/100) ) -- There is no _explicit_ T dependence, but it depends almost the same way on the crew_scale as T does. end @@ -520,7 +520,7 @@ Public.covered1_entry_price_data_raw = { --watch out that the raw_materials ches raw_materials = {{name = 'iron-plate', count = 552}, {name = 'copper-plate', count = 1518}}}, {}}, {1, 0.05, 1, false, { - price = {name = 'stone-furnace', count = 350}, + price = {name = 'stone-furnace', count = 250}, raw_materials = {}}, {}}, {1, 0.4, 1.6, true, { price = {name = 'advanced-circuit', count = 180}, diff --git a/maps/pirates/coredata.lua b/maps/pirates/coredata.lua index c70bf096..95506a4b 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' -Public.version_float = 1.114 +Public.version_string = '1.1.1.4.2' +Public.version_float = 1.1142 Public.blueprint_library_allowed = true Public.blueprint_importing_allowed = true diff --git a/maps/pirates/crew.lua b/maps/pirates/crew.lua index f6326300..939e923c 100644 --- a/maps/pirates/crew.lua +++ b/maps/pirates/crew.lua @@ -381,13 +381,13 @@ function Public.join_crew(player, crewid, rejoin) memory.crew_disband_tick = nil --to prevent disbanding the crew after saving the game (booting everyone) and loading it again (joining the crew as the only member) end - local personal_str = 'You have joined the crew ' .. memory.name + local personal_str = 'You have joined the crew \'' .. memory.name if memory.overworldx > 0 then local color = CoreData.difficulty_options[memory.difficulty_option].associated_color - personal_str = personal_str .. ' [Capacity ' .. CoreData.capacity_options[memory.capacity_option].text3 .. ', Difficulty [color=' .. color.r .. ',' .. color.g .. ',' .. color.b .. ']' .. CoreData.difficulty_options[memory.difficulty_option].text .. '[/color]].' + personal_str = personal_str .. '\' [Capacity ' .. CoreData.capacity_options[memory.capacity_option].text3 .. ', Difficulty [color=' .. color.r .. ',' .. color.g .. ',' .. color.b .. ']' .. CoreData.difficulty_options[memory.difficulty_option].text .. '[/color]].' else - personal_str = personal_str .. ' [Capacity ' .. CoreData.capacity_options[memory.capacity_option].text3 .. '].' + personal_str = personal_str .. '\' [Capacity ' .. CoreData.capacity_options[memory.capacity_option].text3 .. '].' end Common.notify_player_announce(player, personal_str) diff --git a/maps/pirates/gui/info.lua b/maps/pirates/gui/info.lua index 6242fe65..a913171a 100644 --- a/maps/pirates/gui/info.lua +++ b/maps/pirates/gui/info.lua @@ -223,7 +223,7 @@ function Public.full_update(player) if flow2.selected_tab_index == 1 then flow2.style.height = 400 elseif flow2.selected_tab_index == 2 then - flow2.style.height = 280 + flow2.style.height = 330 elseif flow2.selected_tab_index == 3 then flow2.style.height = 660 elseif flow2.selected_tab_index == 4 then diff --git a/maps/pirates/interface.lua b/maps/pirates/interface.lua index 99b8041a..8efeb2e5 100644 --- a/maps/pirates/interface.lua +++ b/maps/pirates/interface.lua @@ -165,7 +165,11 @@ local function damage_to_enemyboat_spawners(event) local damage = event.final_damage_amount local adjusted_damage = damage - adjusted_damage = adjusted_damage / 5 + adjusted_damage = adjusted_damage / 3 + + if event.cause.name == 'artillery-turret' then + adjusted_damage = adjusted_damage / 1.8 + end if Common.entity_damage_healthbar(event.entity, adjusted_damage) < 0 then event.entity.die() @@ -613,6 +617,11 @@ local function event_on_player_mined_entity(event) local entity = event.entity if not entity.valid then return end + + if player.surface.name == 'gulag' then + event.buffer.clear() + return + end if entity.type == 'tree' then if not event.buffer then return end diff --git a/maps/pirates/main.lua b/maps/pirates/main.lua index e2ab6640..6b7b86ac 100644 --- a/maps/pirates/main.lua +++ b/maps/pirates/main.lua @@ -91,7 +91,7 @@ local function on_init() game.surfaces['nauvis'].clear() game.create_surface('piratedev1', Common.default_map_gen_settings(100, 100)) - game.surfaces['nauvis'].clear() + game.surfaces['piratedev1'].clear() Common.init_game_settings(Balance.technology_price_multiplier) diff --git a/maps/pirates/progression.lua b/maps/pirates/progression.lua index 8a61981f..672b61c4 100644 --- a/maps/pirates/progression.lua +++ b/maps/pirates/progression.lua @@ -129,13 +129,36 @@ function Public.go_from_starting_dock_to_first_destination() local items = Balance.starting_items_crew_upstairs() -- Boats.deck_place_random_obstacle_boxes(boat, 6, items, 0) + -- Let's try just adding the items to nearby boxes local scope = Boats.get_scope(boat) - local boatwidth, boatheight = scope.Data.width, scope.Data.height - Common.surface_place_random_obstacle_boxes(game.surfaces[boat.surface_name], {x = boat.position.x - boatwidth*0.575, y = boat.position.y}, boatwidth*0.85, boatheight*0.8, 'oil-refinery', {[1] = 3, [2] = 3, [3] = 0, [4] = 0}, items) + local surface = game.surfaces[boat.surface_name] + local boxes = surface.find_entities_filtered{ + name = 'wooden-chest', + area = { + {x = boat.position.x - scope.Data.width/2, y = boat.position.y - scope.Data.height/2}, + {x = boat.position.x + scope.Data.width/2, y = boat.position.y + scope.Data.height/2} + }, + } + boxes = Math.shuffle(boxes) + for i = 1, #items do + if boxes[i] then + local inventory = boxes[i].get_inventory(defines.inventory.chest) + for name, count in pairs(items[i]) do + inventory.insert{name = name, count = count} + end + else + game.print('fail at ' .. boxes[i].position.x .. ' ' .. boxes[i].position.y) + end + end - -- go: Public.progress_to_destination(1) --index of first destination + -- local scope = Boats.get_scope(boat) + -- local boatwidth, boatheight = scope.Data.width, scope.Data.height + -- Common.surface_place_random_obstacle_boxes(game.surfaces[boat.surface_name], {x = boat.position.x - boatwidth*0.575, y = boat.position.y}, boatwidth*0.85, boatheight*0.8, 'oil-refinery', {[1] = 3, [2] = 3, [3] = 0, [4] = 0}, items) + -- go: + -- Public.progress_to_destination(1) --index of first destination + boat.EEI_stage = 1 Boats.update_EEIs(boat) diff --git a/maps/pirates/quest.lua b/maps/pirates/quest.lua index 4ceb5c6d..18e5c3b5 100644 --- a/maps/pirates/quest.lua +++ b/maps/pirates/quest.lua @@ -41,15 +41,15 @@ function Public.quest_reward() local rng = Math.random() if rng <= 0.3 then - ret = {name = 'iron-plate', count = Math.ceil(2000 * multiplier), display_sprite = '[item=iron-plate]', display_amount = string.format('%.1fk', 2 * multiplier)} + ret = {name = 'iron-plate', count = Math.ceil(2000 * multiplier), display_sprite = '[item=iron-plate]', display_amount = string.format('%.1fk', 2 * multiplier), chat_name = '[item=iron-plate]'} elseif rng <= 0.5 then - ret = {name = 'copper-plate', count = Math.ceil(2000 * multiplier), display_sprite = '[item=copper-plate]', display_amount = string.format('%.1fk', 2 * multiplier)} + ret = {name = 'copper-plate', count = Math.ceil(2000 * multiplier), display_sprite = '[item=copper-plate]', display_amount = string.format('%.1fk', 2 * multiplier), chat_name = '[item=copper-plate]'} elseif rng <= 0.7 then - ret = {name = 'solid-fuel', count = Math.ceil(450 * multiplier), display_sprite = '[item=solid-fuel]', display_amount = string.format('%.0f', Math.ceil(450 * multiplier))} + ret = {name = 'solid-fuel', count = Math.ceil(450 * multiplier), display_sprite = '[item=solid-fuel]', display_amount = string.format('%.0f', Math.ceil(450 * multiplier)), chat_name = '[item=solid-fuel]'} elseif rng <= 0.9 then - ret = {name = 'coin', count = Math.ceil(6000 * (multiplier^(1/2))), display_sprite = 'doubloons', display_amount = string.format('%.1fk', Math.ceil(6 * (multiplier^(1/2))))} + ret = {name = 'coin', count = Math.ceil(6000 * (multiplier^(1/2))), display_sprite = '[item=coin]', display_amount = string.format('%.1fk', Math.ceil(6 * (multiplier^(1/2)))), chat_name = 'doubloons'} else - ret = {name = 'piercing-rounds-magazine', count = Math.ceil(250 * multiplier), display_sprite = '[item=piercing-rounds-magazine]', display_amount = string.format('%.0f', Math.ceil(250 * multiplier))} + ret = {name = 'piercing-rounds-magazine', count = Math.ceil(250 * multiplier), display_sprite = '[item=piercing-rounds-magazine]', display_amount = string.format('%.0f', Math.ceil(250 * multiplier)), chat_name = '[item=piercing-rounds-magazine]'} end return ret @@ -239,7 +239,7 @@ function Public.try_resolve_quest() local force = memory.force if not (force and force.valid) then return end - Common.notify_force_light(force,'Granted ' .. destination.dynamic_data.quest_reward.display_amount .. ' ' .. destination.dynamic_data.quest_reward.display_sprite) + Common.notify_force_light(force,'Granted ' .. destination.dynamic_data.quest_reward.display_amount .. ' ' .. destination.dynamic_data.quest_reward.chat_name) local name = destination.dynamic_data.quest_reward.name local count = destination.dynamic_data.quest_reward.count diff --git a/maps/pirates/surfaces/hold.lua b/maps/pirates/surfaces/hold.lua index fab23b3c..37e36444 100644 --- a/maps/pirates/surfaces/hold.lua +++ b/maps/pirates/surfaces/hold.lua @@ -161,7 +161,7 @@ function Public.create_hold_surface(nth) Common.build_small_loco(surface, Public.Data.loco_offset, memory.force, {255, 106, 52}) local items = subtype == enum.INITIAL and Balance.starting_items_crew_downstairs() or {} - Common.surface_place_random_obstacle_boxes(Public.get_hold_surface(nth), {x=0,y=0}, Public.Data.width, Public.Data.height, 'rocket-silo', {[1] = 0, [2] = 8, [3] = 4, [4] = 1}, items) + Common.surface_place_random_obstacle_boxes(Public.get_hold_surface(nth), {x=0,y=0}, Public.Data.width, Public.Data.height, 'rocket-silo', {[1] = 0, [2] = 5, [3] = 3, [4] = 2}, items) -- Public.hold_place_random_obstacle_boxes(nth, {[1] = 0, [2] = 9, [3] = 3, [4] = 1}, items) if not boat.downstairs_poles then boat.downstairs_poles = {} end diff --git a/maps/pirates/surfaces/islands/islands.lua b/maps/pirates/surfaces/islands/islands.lua index dd833f44..731a1041 100644 --- a/maps/pirates/surfaces/islands/islands.lua +++ b/maps/pirates/surfaces/islands/islands.lua @@ -388,7 +388,7 @@ function Public.spawn_enemy_boat(type) -- e.destructible = false boat.spawner = e - Common.new_healthbar(false, e, 400, nil, 400, 0.3) + Common.new_healthbar(false, e, 350, nil, 350, 0.3) end return enemyboats[#enemyboats] diff --git a/maps/pirates/surfaces/islands/radioactive/radioactive.lua b/maps/pirates/surfaces/islands/radioactive/radioactive.lua index d2fc12f3..1afc4fc4 100644 --- a/maps/pirates/surfaces/islands/radioactive/radioactive.lua +++ b/maps/pirates/surfaces/islands/radioactive/radioactive.lua @@ -285,7 +285,7 @@ local function radioactive_tick() local pollution = 0 local timer = destination.dynamic_data.timer if timer and timer > 15 then - pollution = 4.7 * (6 * Common.difficulty()^(1.1) * (memory.overworldx/40)^(14/10) * (Balance.crew_scale())^(0.6)) / 3600 * tickinterval * (1 + (Common.difficulty()-1)*0.2 + 0.001 * timer) + pollution = 4.9 * (6 * Common.difficulty()^(1.1) * (memory.overworldx/40)^(14/10) * (Balance.crew_scale())^(0.6)) / 3600 * tickinterval * (1 + (Common.difficulty()-1)*0.2 + 0.001 * timer) end if pollution > 0 then