2022-06-01 19:50:36 +01:00
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
2021-10-13 09:21:53 +01:00
local Memory = require ' maps.pirates.memory '
local Math = require ' maps.pirates.math '
2022-03-19 21:20:55 +00:00
-- local Balance = require 'maps.pirates.balance'
2021-10-13 09:21:53 +01:00
local Boats = require ' maps.pirates.structures.boats.boats '
local Common = require ' maps.pirates.common '
local CoreData = require ' maps.pirates.coredata '
local Utils = require ' maps.pirates.utils_local '
2022-03-19 21:20:55 +00:00
local _inspect = require ' utils.inspect ' . inspect
2021-10-13 09:21:53 +01:00
local Public = { }
Public.StartingBoats = {
{
type = Boats.enum . SLOOP ,
position = { x = Boats [ Boats.enum . SLOOP ] . Data.width - 65 , y = - 1 - ( 23 + Boats [ Boats.enum . SLOOP ] . Data.height / 2 ) } ,
surface_name = CoreData.lobby_surface_name ,
force_name = ' crew-001 ' ,
} ,
{
type = Boats.enum . SLOOP ,
position = { x = Boats [ Boats.enum . SLOOP ] . Data.width - 65 , y = - 1 } ,
surface_name = CoreData.lobby_surface_name ,
force_name = ' crew-002 ' ,
} ,
{
type = Boats.enum . SLOOP ,
position = { x = Boats [ Boats.enum . SLOOP ] . Data.width - 65 , y = - 1 + ( 23 + Boats [ Boats.enum . SLOOP ] . Data.height / 2 ) } ,
surface_name = CoreData.lobby_surface_name ,
force_name = ' crew-003 ' ,
} ,
-- {
-- type = Boats.enum.CUTTER,
-- position = {x = Boats[Boats.enum.CUTTER].Data.width - 56, y = (70.5 + Boats[Boats.enum.CUTTER].Data.height/2)},
-- surface_name = CoreData.lobby_surface_name,
-- force_name = 'environment',
-- speedticker1 = 0,
-- speedticker2 = 1/3 * Common.boat_steps_at_a_time,
-- speedticker3 = 2/3 * Common.boat_steps_at_a_time,
-- },
}
Public.Data = { }
2022-05-29 12:36:27 +01:00
Public.Data . display_name = { ' pirates.location_displayname_lobby_1 ' }
2021-10-13 09:21:53 +01:00
Public.Data . width = 224
Public.Data . height = 128
-- Public.Data.noiseparams = {
-- land = {
-- type = 'simplex_2d',
-- normalised = false,
-- params = {
-- {wavelength = 128, amplitude = 10/100},
-- {wavelength = 64, amplitude = 10/100},
-- {wavelength = 32, amplitude = 5/100},
-- {wavelength = 12, amplitude = 5/100},
-- },
-- }
-- }
Public.Data . iconized_map_width = 4
Public.Data . iconized_map_height = 20
function Public . terrain ( args )
local x , y = args.p . x , args.p . y
2022-03-19 21:20:55 +00:00
2021-10-13 09:21:53 +01:00
if Math.distance ( args.p , { x = - 316 , y = 0 } ) < 230 then
args.tiles [ # args.tiles + 1 ] = { name = ' dirt-3 ' , position = args.p }
elseif Math.distance ( args.p , { x = - 264 , y = 0 } ) < 180 then
args.tiles [ # args.tiles + 1 ] = { name = ' water-shallow ' , position = args.p }
elseif Math.abs ( Common.lobby_spawnpoint . x - x ) < 3 and Math.abs ( Common.lobby_spawnpoint . y - y ) < 3 then
args.tiles [ # args.tiles + 1 ] = { name = CoreData.walkway_tile , position = args.p }
else
args.tiles [ # args.tiles + 1 ] = { name = ' water ' , position = args.p }
end
end
2022-03-19 21:20:55 +00:00
function Public . chunk_structures ( )
2022-02-28 16:36:46 +00:00
return nil
2021-10-13 09:21:53 +01:00
end
function Public . create_starting_dock_surface ( )
2022-03-19 21:20:55 +00:00
-- local memory = Memory.get_crew_memory()
2021-10-13 09:21:53 +01:00
local starting_dock_name = CoreData.lobby_surface_name
local width = Public.Data . width
local height = Public.Data . height
local map_gen_settings = Common.default_map_gen_settings ( width , height )
local surface = game.create_surface ( starting_dock_name , map_gen_settings )
surface.freeze_daytime = true
surface.daytime = 0
end
function Public . place_starting_dock_showboat ( id )
local global_memory = Memory.get_global_memory ( )
Memory.set_working_id ( id )
2022-03-19 21:20:55 +00:00
2021-10-13 09:21:53 +01:00
local boat = Utils.deepcopy ( Public.StartingBoats [ id ] )
global_memory.lobby_boats [ id ] = boat
2022-03-19 21:20:55 +00:00
Boats.place_boat ( boat , CoreData.static_boat_floor , true , true , false )
-- Boats.place_boat(boat, CoreData.static_boat_floor, true, true, false, true) --this final argument is to enable the comfy graphic to be placed on the boat, but that argument is disabled for now, so luacheck forbids this line
2021-10-13 09:21:53 +01:00
end
function Public . place_lobby_jetty_and_boats ( )
local surface = game.surfaces [ CoreData.lobby_surface_name ]
for id , _ in pairs ( Public.StartingBoats ) do
Public.place_starting_dock_showboat ( id )
end
2022-05-29 12:36:27 +01:00
local offset = { x = - 47 , y = - 1 }
2021-10-13 09:21:53 +01:00
local tiles = { }
for _ , p in pairs ( Common.tile_positions_from_blueprint ( Public.Data . jetty_bp , offset ) ) do
tiles [ # tiles + 1 ] = { name = CoreData.walkway_tile , position = p , force = ' environment ' }
end
2022-03-19 21:20:55 +00:00
2021-10-13 09:21:53 +01:00
surface.set_tiles ( tiles , true )
-- for y = -3.5, 3.5 do
-- local e = surface.create_entity{name = 'stone-wall', position = {x = -68.5, y = y}, force = 'environment'}
-- e.destructible = false
-- e.minable = false
-- e.rotatable = false
-- e.operable = false
-- end
end
Public.Data . jetty_bp = [ [ 0 eNqV3M2OUNeVBtB3qTGRvP + 5 vEorAycpRSXZGGHS6iji3dt2h1l3izUEHQp0PnHPN1h7 /+ vlLz / 94 / XT57ePX14 +/ Ovl148 / fvrTl1 /+ 9 PfPb3 / 7 / df / 9 fLh9t3LP18 + dH999 / L2118 +/ vry4T9 + O / j2948 // vT7kS /// PT68uHl7cvrzy / vXj7 ++ PPvv / rt3F8 / v355ffn9D3382 + tvPye +/ vndy5e3n17 / 5 wd8 + uXXty9vv3z899 / ywx9 / Sbz /+ r / 9 iP / r9COn8wc6HXQ66XTR6abT832ng + 476 L6D7jvovoPuO + i + g + 476 L6T7jvpvpPuO + m + k + 476 b6T7jvpvovuu + i + i + 676 L6L7rvovovuu + i + m + 676 b6b7rvpvpvuu + m + m + 676 b6H7nvovofue + i + h + 576 L6H7nvovpfue + m + l + 576 b6X7nvpvpfue + m + j + 776 L6P7vvovo / u ++ i + j + 776 L7f / 3 H6BzkccjjlcMnhlsN0GyuHTw6 / l8MPhWIRUoZBIQalGBRjUI5BQQYlGRRlUJZJWab9f6Qsk7JMytK + UElZJmWZlGVSlkVZFmVZ9nGlLIuyLMqyKMuiLIuyLMqyKcumLJuy7O / M8pHX / ZHX / ZHX / ZHX / ZHX / ZHX / ZHX / ZHX / ZHX / ZHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHX / aHXPX6Q5 / 3 fp4NOJ522f3fT6aHTS6ePTr + n04 + lg2FammFxhuUZFmhYomGRhmUaFmpYqmmpJv4ftVTTUk1LNS3VtFTTUk1LNS3VslTLUi389FqqZamWpVqWalmqZamWpdqWaluqbal + dxMIagJBTSCoCQQ1gaAmENQEgppAUBMIagJBTSCsCYQ1gbAmENYEwppAWBMIawJhTQBpFNooxFGoo5BHoY9CIGVC6ttxSzUt1bRU01ItS7Us1cJPr6ValmpZqmWplqValmpZqm2ptqXalup3N4GkJpDUBJKaQFITSGoCSU0gqQkkNYGkJpDUBNKaQFoTSGsCaU0grQmkNYG0JpDWBAzthqndMLYb5nbD4G6Y3A2ju2F299txSzUt1bRU01ItS7Us1cJPr6ValmpZqmWplqValmpZqm2ptqXalup3N4GiJlDUBIqaQFETKGoCRU2gqAkUNYGiJlDUBMqaQFkTKGsCZU2grAmUNYGyJlDWBGycJGyeJGygJGyiJGykJGymJGyoJGyq5NtxSzUt1bRU01ItS7Us1cJPr6ValmpZqmWplqValmpZqm2ptqXalup3N4GmJtDUBJqaQFMTaGoCTU2gqQk0NYGmJtDUBNqaQFsTaGsCbU2grQm0NYG2JtDWBGzQMWzSMWzUMWzWMWzYMWzaMWzcMWze8dtxSzUt1bRU01ItS7Us1cJPr6ValmpZqmWplqValmpZqm2ptqXalup3N4GhJjDUBIaawFATGGoCQ01gqAkMNYGhJjDUBMaawFgTGGsCY01grAmMNYGxJjDWBGwEP2wGP2wIP2wKP2wMP2wOP2wQP2wS / 9 txSzUt1bRU01ItS7Us1cJPr6ValmpZqmWplqValmpZqm2ptqXalup3N4GlJrDUBJaawFITWGoCS01gqQksNYGlJrDUBNaawFoTWGsCa01grQmsNYG1JrDWBGw5TNh2mLD1MGH7YcIWxIRtiAlbERO2I + bbcUs1LdW0VNNSLUu1LNXCT6 + lWpZqWaplqZalWpZqWaptqbal2pbqdzeBoyZw1ASOmsBREzhqAkdN4KgJHDWBoyZw1ATOmsBZEzhrAmdN4KwJnDWBsyZw1gRsbVnY3rKwxWVhm8vCVpeF7S4LW14Wtr3s23FLNS3VtFTTUi1LtSzVwk + vpVqWalmqZamWpVqWalmqbam2pdqW6nc3AVoGGLQNMGgdYNA + wKCFgEEbAYNWAgbtBAxaChi0FTBsLWDYXsCwxYBhmwHDVgOG7QYMWw4Yth0wbD1g2H7AsAWBYRsCw1YEhu0IDFsSGLYlMGxNYNiewLBFgWGbAsNWBYbtCgxbFhi2LTBsXWDYvsCwhYFhGwPDVgaG7QwMWxoYtjUwbG1g2N7AoMWBQZsDg1YHBu0ODFoeGLQ9MGh9YND + wKAFgmFrucL2coUt5grbzBW2mitsN1fYcq6w7Vxh67mS1nMlredKWs + VtJ4raT1X0nqupPVcSeu5ktZzpW22Sdtsk7bZJm2zTdpmm7TNNmmbbdI226RttknabJO02SZps03SZpukzTZJm22SNtskbbZJ2myTthQibSlE2lKItKUQaUsh0pZCpC2FSFsKkbYUImkpRNJSiKSlEElLIZKWQiQthUhaCpG0FCJpKUTaPHXaPHXaPHXaPHXaPHXaPHXaPHXaPHXaPHXSPHXSPHXSPHXSPHXSPHXSPHXSPHXSPHXSPHXaKGLaKGLaKGLaKGLaKGLaKGLaKGLaKGLaKGLSKGLSKGLSKGLSKGLSKGLSKGLSKGLSKGLSKGLaFE / aFE / aFE / aFE / aFE / aFE / aFE / aFE / aFE / SFE / SFE / SFE / SFE / SFE / SFE / SFE / SFE / SFE8agE8D8GkAPg3ApwH4NACfBuDTAHwagE8C8EkAPgnAJwH4JACfBOCTAHwSgE8C8Gl2NM2OptnRNDuaZkfT7GiaHU2zo2l2NMmOJtnRJDuaZEeT7GiSHU2yo0l2NMmOprGrNHaVxq7S2FUau0pjV2nsKo1dpbGrJHaVxK6S2FUSu0piV0nsKoldJbGrJHaVJhbSxEKaWEgTC2liIU0spImFNLGQJhaSxEKSWEgSC0liIUksJImFJLGQJBaSxEKaWEgTC2liIU0spImFNLGQJhbSxEKaWCgSC0VioUgsFImFIrFQJBaKxEKRWCgSC2VioUwslImFMrFQJhbKxEKZWCgTC2VioUgsFImFIrFQJBaKxEKRWCgSC0VioUgslImFMrFQJhbKxEKZWCgTC2VioUwslImFIrFQJBaKxEKRWCgSC0VioUgsFImFIrFQJhbKxEKZWCgTC2VioUwslImFMrFQJhaKxEKRWCgSC0VioUgsFImFIrFQJBaKxEKZWCgTC2VioUwslImFMrFQJhbKxEKZWCgSC0VioUgsFImFIrFQJBaKxEKRWCgSC2VioUwslImFMrFQJhbKxEKZWCgTC2VioUgsFImFIrFQJBaKxEKRWCgSC0VioUgslImFMrFQJhbKxEKZWCgTC2VioUwslImFIrFQJBaKxEKRWCgSC0VioUgsFImFIrFQJhbKxEKZWCgTC2VioUwslImFMrFQJhaKxEKRWCgSC0VioUgsFImFIrFQJBaKxEKZWCgTC2VioUwslImFMrFQJhbKxEKZWCgSC0VioUgsFImFIrFQJBaKxEKRWCgSC2VioUwslImFMrFQJhbKxEKZWCgTC2VioUgsFImFIrFQJBaKxEKRWCgSC0VioUgslImFMrFQJhbKxEKZWCgTC2VioUwslImFJrHQJBaaxEKTWGgSC01ioUksNImFJrHQJhbaxEKbWGgTC21ioU0stImFNrHQJhaaxEKTWGgSC01ioUksNImFJrHQJBaaxEKbWGgTC21ioU0stImFNrHQJhbaxEKbWGgSC01ioUksNImFJrHQJBaaxEKTWGgSC21ioU0stImFNrHQJhbaxEKbWGgTC21ioUksNImFJrHQJBaaxEKTWGgSC01ioUkstImFNrHQJhbaxEKbWGgTC21ioU0stImFJrHQJBaaxEKTWGgSC01ioUksNImFJrHQJhbaxEKbWGgTC21ioU0stImFNrHQJhaaxEKTWGgSC01ioUksNImFJrHQJBaaxEKbWGgTC21ioU0stImFNrHQJhbaxEKbWGgSC01ioUksNImFJrHQJBaaxEKTWGgSC21ioU0stImFNrHQJhbaxEKbWGgTC21ioUksNImFJrHQJBaaxEKTWGgSC01ioUkstImFNrHQJhbaxEKbWGgTC21ioU0stImFJrHQJBaax
return Public