1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-07-03 00:26:58 +02:00

v1.1.1.4.2

This commit is contained in:
danielmartin0
2022-03-16 15:01:50 +00:00
parent e757c82661
commit b068529190
12 changed files with 57 additions and 25 deletions

View File

@ -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_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_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_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. 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.

View File

@ -28,7 +28,7 @@ Public.EEI_stages = { --multipliers
function Public.scripted_biters_pollution_cost_multiplier() function Public.scripted_biters_pollution_cost_multiplier()
return 1.25 --tuned return 1.3 --tuned
end end
function Public.cost_to_leave_multiplier() function Public.cost_to_leave_multiplier()
@ -129,7 +129,7 @@ end
function Public.silo_total_pollution() function Public.silo_total_pollution()
return ( 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 end
@ -157,7 +157,7 @@ function Public.boat_passive_pollution_per_minute(time)
end end
return boost * ( 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. ) -- There is no _explicit_ T dependence, but it depends almost the same way on the crew_scale as T does.
end 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}}}, {}}, raw_materials = {{name = 'iron-plate', count = 552}, {name = 'copper-plate', count = 1518}}}, {}},
{1, 0.05, 1, false, { {1, 0.05, 1, false, {
price = {name = 'stone-furnace', count = 350}, price = {name = 'stone-furnace', count = 250},
raw_materials = {}}, {}}, raw_materials = {}}, {}},
{1, 0.4, 1.6, true, { {1, 0.4, 1.6, true, {
price = {name = 'advanced-circuit', count = 180}, price = {name = 'advanced-circuit', count = 180},

View File

@ -5,8 +5,8 @@ local inspect = require 'utils.inspect'.inspect
local Public = {} local Public = {}
Public.scenario_id_name = 'pirates' Public.scenario_id_name = 'pirates'
Public.version_string = '1.1.1.4' Public.version_string = '1.1.1.4.2'
Public.version_float = 1.114 Public.version_float = 1.1142
Public.blueprint_library_allowed = true Public.blueprint_library_allowed = true
Public.blueprint_importing_allowed = true Public.blueprint_importing_allowed = true

View File

@ -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) 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 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 if memory.overworldx > 0 then
local color = CoreData.difficulty_options[memory.difficulty_option].associated_color 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 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 end
Common.notify_player_announce(player, personal_str) Common.notify_player_announce(player, personal_str)

View File

@ -223,7 +223,7 @@ function Public.full_update(player)
if flow2.selected_tab_index == 1 then if flow2.selected_tab_index == 1 then
flow2.style.height = 400 flow2.style.height = 400
elseif flow2.selected_tab_index == 2 then elseif flow2.selected_tab_index == 2 then
flow2.style.height = 280 flow2.style.height = 330
elseif flow2.selected_tab_index == 3 then elseif flow2.selected_tab_index == 3 then
flow2.style.height = 660 flow2.style.height = 660
elseif flow2.selected_tab_index == 4 then elseif flow2.selected_tab_index == 4 then

View File

@ -165,7 +165,11 @@ local function damage_to_enemyboat_spawners(event)
local damage = event.final_damage_amount local damage = event.final_damage_amount
local adjusted_damage = damage 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 if Common.entity_damage_healthbar(event.entity, adjusted_damage) < 0 then
event.entity.die() event.entity.die()
@ -614,6 +618,11 @@ local function event_on_player_mined_entity(event)
local entity = event.entity local entity = event.entity
if not entity.valid then return end if not entity.valid then return end
if player.surface.name == 'gulag' then
event.buffer.clear()
return
end
if entity.type == 'tree' then if entity.type == 'tree' then
if not event.buffer then return end if not event.buffer then return end
local available = destination.dynamic_data.wood_remaining local available = destination.dynamic_data.wood_remaining

View File

@ -91,7 +91,7 @@ local function on_init()
game.surfaces['nauvis'].clear() game.surfaces['nauvis'].clear()
game.create_surface('piratedev1', Common.default_map_gen_settings(100, 100)) 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) Common.init_game_settings(Balance.technology_price_multiplier)

View File

@ -129,13 +129,36 @@ function Public.go_from_starting_dock_to_first_destination()
local items = Balance.starting_items_crew_upstairs() local items = Balance.starting_items_crew_upstairs()
-- Boats.deck_place_random_obstacle_boxes(boat, 6, items, 0) -- 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 scope = Boats.get_scope(boat)
local boatwidth, boatheight = scope.Data.width, scope.Data.height local surface = game.surfaces[boat.surface_name]
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 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 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 boat.EEI_stage = 1
Boats.update_EEIs(boat) Boats.update_EEIs(boat)

View File

@ -41,15 +41,15 @@ function Public.quest_reward()
local rng = Math.random() local rng = Math.random()
if rng <= 0.3 then 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 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 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 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 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 end
return ret return ret
@ -239,7 +239,7 @@ function Public.try_resolve_quest()
local force = memory.force local force = memory.force
if not (force and force.valid) then return end 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 name = destination.dynamic_data.quest_reward.name
local count = destination.dynamic_data.quest_reward.count local count = destination.dynamic_data.quest_reward.count

View File

@ -161,7 +161,7 @@ function Public.create_hold_surface(nth)
Common.build_small_loco(surface, Public.Data.loco_offset, memory.force, {255, 106, 52}) 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 {} 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) -- 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 if not boat.downstairs_poles then boat.downstairs_poles = {} end

View File

@ -388,7 +388,7 @@ function Public.spawn_enemy_boat(type)
-- e.destructible = false -- e.destructible = false
boat.spawner = e boat.spawner = e
Common.new_healthbar(false, e, 400, nil, 400, 0.3) Common.new_healthbar(false, e, 350, nil, 350, 0.3)
end end
return enemyboats[#enemyboats] return enemyboats[#enemyboats]

View File

@ -285,7 +285,7 @@ local function radioactive_tick()
local pollution = 0 local pollution = 0
local timer = destination.dynamic_data.timer local timer = destination.dynamic_data.timer
if timer and timer > 15 then 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 end
if pollution > 0 then if pollution > 0 then