mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-14 02:34:09 +02:00
Move folders to utils
This commit is contained in:
parent
4de16c2bab
commit
a8538ebd67
16
control.lua
16
control.lua
@ -251,14 +251,14 @@ require 'utils.remote_chunks'
|
||||
---------------------------------------------------------------
|
||||
|
||||
---------------- MOSTLY TERRAIN LAYOUTS HERE ----------------
|
||||
--require 'terrain_layouts.winter'
|
||||
--require 'terrain_layouts.caves'
|
||||
--require 'terrain_layouts.cone_to_east'
|
||||
--require 'terrain_layouts.biters_and_resources_east'
|
||||
--require 'terrain_layouts.scrap_01'
|
||||
--require 'terrain_layouts.scrap_02'
|
||||
--require 'terrain_layouts.watery_world'
|
||||
--require 'terrain_layouts.tree_01'
|
||||
--require 'utils.terrain_layouts.winter'
|
||||
--require 'utils.terrain_layouts.caves'
|
||||
--require 'utils.terrain_layouts.cone_to_east'
|
||||
--require 'utils.terrain_layouts.biters_and_resources_east'
|
||||
--require 'utils.terrain_layouts.scrap_01'
|
||||
--require 'utils.terrain_layouts.scrap_02'
|
||||
--require 'utils.terrain_layouts.watery_world'
|
||||
--require 'utils.terrain_layouts.tree_01'
|
||||
---------------------------------------------------------------
|
||||
|
||||
--- this file exists only for the panel to sync and start from within the panel
|
||||
|
@ -6,7 +6,7 @@ require 'modules.dynamic_player_spawn'
|
||||
|
||||
local Event = require 'utils.event'
|
||||
local math_random = math.random
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
|
||||
local function on_player_joined_game(event)
|
||||
local player = game.players[event.player_index]
|
||||
|
@ -1,5 +1,5 @@
|
||||
--luacheck:ignore
|
||||
local simplex_noise = require 'tools.simplex_noise'
|
||||
local simplex_noise = require 'utils.tools.simplex_noise'
|
||||
local Event = require 'utils.event'
|
||||
biter_battles_terrain = {}
|
||||
|
||||
@ -471,10 +471,7 @@ function biter_battles_terrain.generate_spawn_ores(ore_layout)
|
||||
end
|
||||
end
|
||||
surface.set_tiles(tiles, true)
|
||||
local entities =
|
||||
surface.find_entities(
|
||||
{{(rocket_silo.position.x - 4) - size / 2, (rocket_silo.position.y - 5) - size / 2}, {rocket_silo.position.x + 4 + size / 2, rocket_silo.position.y + 5 + size / 2}}
|
||||
)
|
||||
local entities = surface.find_entities({{(rocket_silo.position.x - 4) - size / 2, (rocket_silo.position.y - 5) - size / 2}, {rocket_silo.position.x + 4 + size / 2, rocket_silo.position.y + 5 + size / 2}})
|
||||
for _, entity in pairs(entities) do
|
||||
if entity.type == 'simple-entity' or entity.type == 'tree' or entity.type == 'resource' then
|
||||
entity.destroy()
|
||||
|
@ -1,7 +1,7 @@
|
||||
--luacheck: ignore
|
||||
local Public = {}
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local BiterRaffle = require 'functions.biter_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
local BiterRaffle = require 'utils.functions.biter_raffle'
|
||||
local bb_config = require 'maps.biter_battles_v2.config'
|
||||
|
||||
local table_insert = table.insert
|
||||
@ -646,9 +646,7 @@ function Public.generate_silo(surface)
|
||||
for _, t in pairs(surface.find_tiles_filtered({area = {{pos.x - 6, pos.y - 6}, {pos.x + 6, pos.y + 6}}, name = {'water', 'deepwater'}})) do
|
||||
surface.set_tiles({{name = get_replacement_tile(surface, t.position), position = t.position}})
|
||||
end
|
||||
for _, t in pairs(
|
||||
surface.find_tiles_filtered({area = {{mirror_position.x - 6, mirror_position.y - 6}, {mirror_position.x + 6, mirror_position.y + 6}}, name = {'water', 'deepwater'}})
|
||||
) do
|
||||
for _, t in pairs(surface.find_tiles_filtered({area = {{mirror_position.x - 6, mirror_position.y - 6}, {mirror_position.x + 6, mirror_position.y + 6}}, name = {'water', 'deepwater'}})) do
|
||||
surface.set_tiles({{name = get_replacement_tile(surface, t.position), position = t.position}})
|
||||
end
|
||||
|
||||
|
@ -4,12 +4,12 @@
|
||||
require 'modules.dynamic_landfill'
|
||||
require 'modules.satellite_score'
|
||||
require 'modules.spawners_contain_biters'
|
||||
require 'functions.create_entity_chain'
|
||||
require 'functions.create_tile_chain'
|
||||
require 'utils.functions.create_entity_chain'
|
||||
require 'utils.functions.create_tile_chain'
|
||||
|
||||
local unearthing_worm = require 'functions.unearthing_worm'
|
||||
local unearthing_biters = require 'functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'functions.tick_tack_trap'
|
||||
local unearthing_worm = require 'utils.functions.unearthing_worm'
|
||||
local unearthing_biters = require 'utils.functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'utils.functions.tick_tack_trap'
|
||||
local Module = require 'infinity_chest'
|
||||
local Simplex = require 'utils.simplex_noise'.d2
|
||||
local Event = require 'utils.event'
|
||||
|
@ -3,8 +3,8 @@ local Public = {}
|
||||
|
||||
local GetNoise = require 'utils.get_noise'
|
||||
local Constants = require 'maps.cave_miner_v2.constants'
|
||||
local BiterRaffle = require 'functions.biter_raffle'
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local BiterRaffle = require 'utils.functions.biter_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
local Esq = require 'modules.entity_spawn_queue'
|
||||
local Pets = require 'modules.biter_pets'
|
||||
|
||||
|
@ -3,7 +3,7 @@ local Public = {}
|
||||
|
||||
local Constants = require 'maps.cave_miner_v2.constants'
|
||||
local Functions = require 'maps.cave_miner_v2.functions'
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
local math_floor = math.floor
|
||||
local math_random = math.random
|
||||
|
||||
|
@ -5,17 +5,17 @@ require 'modules.dynamic_landfill'
|
||||
require 'modules.satellite_score'
|
||||
require 'modules.spawners_contain_biters'
|
||||
local Map = require 'modules.map_info'
|
||||
local unearthing_worm = require 'functions.unearthing_worm'
|
||||
local unearthing_biters = require 'functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'functions.tick_tack_trap'
|
||||
local create_entity_chain = require 'functions.create_entity_chain'
|
||||
local create_tile_chain = require 'functions.create_tile_chain'
|
||||
local unearthing_worm = require 'utils.functions.unearthing_worm'
|
||||
local unearthing_biters = require 'utils.functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'utils.functions.tick_tack_trap'
|
||||
local create_entity_chain = require 'utils.functions.create_entity_chain'
|
||||
local create_tile_chain = require 'utils.functions.create_tile_chain'
|
||||
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local event = require 'utils.event'
|
||||
local table_insert = table.insert
|
||||
local math_random = math.random
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
|
||||
local disabled_for_deconstruction = {
|
||||
['fish'] = true,
|
||||
@ -164,9 +164,7 @@ local function process_tile(surface, pos, tile, seed)
|
||||
surface.create_entity({name = 'tree-01', position = pos})
|
||||
end
|
||||
end
|
||||
surface.create_decoratives(
|
||||
{check_collision = false, decoratives = {{name = decos_inside_forest[math_random(1, #decos_inside_forest)], position = pos, amount = math_random(1, 2)}}}
|
||||
)
|
||||
surface.create_decoratives({check_collision = false, decoratives = {{name = decos_inside_forest[math_random(1, #decos_inside_forest)], position = pos, amount = math_random(1, 2)}}})
|
||||
return
|
||||
end
|
||||
|
||||
@ -180,9 +178,7 @@ local function process_tile(surface, pos, tile, seed)
|
||||
surface.create_entity({name = 'tree-02-red', position = pos})
|
||||
end
|
||||
end
|
||||
surface.create_decoratives(
|
||||
{check_collision = false, decoratives = {{name = decos_inside_forest[math_random(1, #decos_inside_forest)], position = pos, amount = math_random(1, 2)}}}
|
||||
)
|
||||
surface.create_decoratives({check_collision = false, decoratives = {{name = decos_inside_forest[math_random(1, #decos_inside_forest)], position = pos, amount = math_random(1, 2)}}})
|
||||
return
|
||||
end
|
||||
|
||||
@ -387,11 +383,7 @@ local function on_entity_died(event)
|
||||
return
|
||||
end
|
||||
if event.entity.type == 'tree' then
|
||||
for _, entity in pairs(
|
||||
event.entity.surface.find_entities_filtered(
|
||||
{area = {{event.entity.position.x - 4, event.entity.position.y - 4}, {event.entity.position.x + 4, event.entity.position.y + 4}}, name = 'fire-flame-on-tree'}
|
||||
)
|
||||
) do
|
||||
for _, entity in pairs(event.entity.surface.find_entities_filtered({area = {{event.entity.position.x - 4, event.entity.position.y - 4}, {event.entity.position.x + 4, event.entity.position.y + 4}}, name = 'fire-flame-on-tree'})) do
|
||||
if entity.valid then
|
||||
entity.destroy()
|
||||
end
|
||||
|
@ -4,17 +4,17 @@
|
||||
|
||||
require 'modules.satellite_score'
|
||||
require 'modules.spawners_contain_biters'
|
||||
require 'functions.create_entity_chain'
|
||||
require 'functions.create_tile_chain'
|
||||
require 'tools.map_functions'
|
||||
require 'utils.functions.create_entity_chain'
|
||||
require 'utils.functions.create_tile_chain'
|
||||
require 'utils.tools.map_functions'
|
||||
|
||||
require 'modules.surrounded_by_worms'
|
||||
require 'modules.biter_noms_you'
|
||||
|
||||
local Map = require 'modules.map_info'
|
||||
local unearthing_worm = require 'functions.unearthing_worm'
|
||||
local unearthing_biters = require 'functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'functions.tick_tack_trap'
|
||||
local unearthing_worm = require 'utils.functions.unearthing_worm'
|
||||
local unearthing_biters = require 'utils.functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'utils.functions.tick_tack_trap'
|
||||
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local Event = require 'utils.event'
|
||||
|
@ -5,9 +5,9 @@ local Chrono = require 'maps.chronosphere.chrono'
|
||||
local Upgrades = require 'maps.chronosphere.upgrades'
|
||||
local Public = {}
|
||||
|
||||
local tick_tack_trap = require 'functions.tick_tack_trap'
|
||||
local unearthing_worm = require 'functions.unearthing_worm'
|
||||
local unearthing_biters = require 'functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'utils.functions.tick_tack_trap'
|
||||
local unearthing_worm = require 'utils.functions.unearthing_worm'
|
||||
local unearthing_biters = require 'utils.functions.unearthing_biters'
|
||||
|
||||
local math_random = math.random
|
||||
local math_floor = math.floor
|
||||
@ -162,10 +162,7 @@ function Public.shred_simple_entities(entity)
|
||||
if game.forces.enemy.evolution_factor < 0.25 then
|
||||
return
|
||||
end
|
||||
local simple_entities =
|
||||
entity.surface.find_entities_filtered(
|
||||
{type = {'simple-entity', 'tree'}, area = {{entity.position.x - 3, entity.position.y - 3}, {entity.position.x + 3, entity.position.y + 3}}}
|
||||
)
|
||||
local simple_entities = entity.surface.find_entities_filtered({type = {'simple-entity', 'tree'}, area = {{entity.position.x - 3, entity.position.y - 3}, {entity.position.x + 3, entity.position.y + 3}}})
|
||||
for _, simple_entity in pairs(simple_entities) do
|
||||
if simple_entity.valid then
|
||||
simple_entity.destroy()
|
||||
@ -447,10 +444,7 @@ end
|
||||
|
||||
function Public.check_if_overstayed()
|
||||
local objective = Chrono_table.get_table()
|
||||
if
|
||||
objective.passivetimer * objective.passive_chronocharge_rate > (objective.chronochargesneeded * 0.75) and
|
||||
objective.chronojumps >= Balance.jumps_until_overstay_is_on(Difficulty.get().difficulty_vote_value)
|
||||
then
|
||||
if objective.passivetimer * objective.passive_chronocharge_rate > (objective.chronochargesneeded * 0.75) and objective.chronojumps >= Balance.jumps_until_overstay_is_on(Difficulty.get().difficulty_vote_value) then
|
||||
objective.overstaycount = objective.overstaycount + 1
|
||||
end
|
||||
end
|
||||
|
@ -19,7 +19,7 @@ local Locomotive = require 'maps.chronosphere.locomotive'
|
||||
local Map = require 'modules.map_info'
|
||||
local Minimap = require 'maps.chronosphere.minimap'
|
||||
local On_Event = require 'maps.chronosphere.on_event'
|
||||
local Reset = require 'functions.soft_reset'
|
||||
local Reset = require 'utils.functions.soft_reset'
|
||||
local Tick_functions = require 'maps.chronosphere.tick_functions'
|
||||
local Upgrades = require 'maps.chronosphere.upgrades'
|
||||
local Worlds = require 'maps.chronosphere.world_list'
|
||||
@ -92,12 +92,7 @@ local function chronojump(choice)
|
||||
end
|
||||
|
||||
if objective.chronojumps <= 24 then
|
||||
Locomotive.award_coins(
|
||||
Balance.coin_reward_per_second_jumped_early(
|
||||
objective.chronochargesneeded / objective.passive_chronocharge_rate + 180 - objective.passivetimer,
|
||||
Difficulty.get().difficulty_vote_value
|
||||
)
|
||||
)
|
||||
Locomotive.award_coins(Balance.coin_reward_per_second_jumped_early(objective.chronochargesneeded / objective.passive_chronocharge_rate + 180 - objective.passivetimer, Difficulty.get().difficulty_vote_value))
|
||||
end
|
||||
|
||||
Chrono.process_jump()
|
||||
|
@ -14,7 +14,7 @@ local Session = require 'utils.datastore.session_data'
|
||||
local Difficulty = require 'modules.difficulty_vote'
|
||||
local Map = require 'modules.map_info'
|
||||
local Event = require 'utils.event'
|
||||
local Reset = require 'functions.soft_reset'
|
||||
local Reset = require 'utils.functions.soft_reset'
|
||||
local Server = require 'utils.server'
|
||||
local Poll = require 'utils.gui.poll'
|
||||
local boss_biter = require 'maps.crab_defender.boss_biters'
|
||||
|
@ -1,6 +1,6 @@
|
||||
local Event = require 'utils.event'
|
||||
local Builder = require 'maps.crab_defender.b'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local FDT = require 'maps.crab_defender.table'
|
||||
local math_random = math.random
|
||||
|
@ -12,7 +12,7 @@ local math_floor = math.floor
|
||||
local math_abs = math.abs
|
||||
local math_sqrt = math.sqrt
|
||||
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
|
||||
local function get_noise(name, pos)
|
||||
local seed = game.surfaces[1].map_gen_settings.seed
|
||||
|
@ -1,7 +1,7 @@
|
||||
-- crossing -- by mewmew --
|
||||
|
||||
local Event = require 'utils.event'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
|
||||
local function on_player_joined_game(event)
|
||||
|
@ -6,7 +6,7 @@ require 'modules.flashlight_toggle_button'
|
||||
require 'maps.deep_jungle.generate'
|
||||
|
||||
local Event = require 'utils.event'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local Task = require 'utils.task'
|
||||
local DPT = require 'maps.deep_jungle.table'
|
||||
local random = math.random
|
||||
|
@ -1,5 +1,5 @@
|
||||
local Functions = require 'maps.dungeons.functions'
|
||||
local BiterRaffle = require 'functions.biter_raffle'
|
||||
local BiterRaffle = require 'utils.functions.biter_raffle'
|
||||
local DungeonsTable = require 'maps.dungeons.table'
|
||||
|
||||
local table_shuffle_table = table.shuffle_table
|
||||
|
@ -1,5 +1,5 @@
|
||||
local Functions = require 'maps.dungeons.functions'
|
||||
local BiterRaffle = require 'functions.biter_raffle'
|
||||
local BiterRaffle = require 'utils.functions.biter_raffle'
|
||||
local DungeonsTable = require 'maps.dungeons.table'
|
||||
|
||||
local table_shuffle_table = table.shuffle_table
|
||||
|
@ -7,8 +7,8 @@ local LOOT_EVOLUTION_SCALE_FACTOR = 0.9
|
||||
local LOOT_MULTIPLIER = 3000
|
||||
local EVOLUTION_PER_FLOOR = 0.06
|
||||
|
||||
local BiterRaffle = require 'functions.biter_raffle'
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local BiterRaffle = require 'utils.functions.biter_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
local Get_noise = require 'utils.get_noise'
|
||||
local DungeonsTable = require 'maps.dungeons.table'
|
||||
|
||||
@ -22,7 +22,8 @@ local math_floor = math.floor
|
||||
-- floor 4 = 8512 .. 9024
|
||||
-- floor 9 = 16512 .. 17024
|
||||
-- floor 19 = 32512 .. 33024
|
||||
LootRaffle.TweakItemWorth({
|
||||
LootRaffle.TweakItemWorth(
|
||||
{
|
||||
['modular-armor'] = 512, -- floors 1-5 from research.lua
|
||||
['power-armor'] = 4096, -- floors 8-13 from research.lua
|
||||
['personal-laser-defense-equipment'] = 1536, -- floors 10-14 from research.lua
|
||||
@ -42,8 +43,9 @@ LootRaffle.TweakItemWorth({
|
||||
['slowdown-capsule'] = 32,
|
||||
['defender-capsule'] = 96,
|
||||
['distractor-capsule'] = 512,
|
||||
['destroyer-capsule'] = 2048,
|
||||
})
|
||||
['destroyer-capsule'] = 2048
|
||||
}
|
||||
)
|
||||
|
||||
function Public.get_dungeon_evolution_factor(surface_index)
|
||||
local dungeontable = DungeonsTable.get_dungeontable()
|
||||
@ -470,7 +472,7 @@ function Public.rocky_loot(event)
|
||||
local player = game.players[event.player_index]
|
||||
local amount = math.ceil(get_ore_amount(player.surface.index))
|
||||
local rock_mining
|
||||
local floor = player.surface.index - DungeonsTable.get_dungeontable().original_surface_index;
|
||||
local floor = player.surface.index - DungeonsTable.get_dungeontable().original_surface_index
|
||||
if floor < 10 then
|
||||
-- early game science uses less copper and more iron/stone
|
||||
rock_mining = {'iron-ore', 'iron-ore', 'iron-ore', 'iron-ore', 'copper-ore', 'copper-ore', 'stone', 'stone', 'coal', 'coal', 'coal'}
|
||||
|
@ -4,10 +4,10 @@ require 'modules.mineable_wreckage_yields_scrap'
|
||||
require 'modules.satellite_score'
|
||||
|
||||
local MapInfo = require 'modules.map_info'
|
||||
local Room_generator = require 'functions.room_generator'
|
||||
local Room_generator = require 'utils.functions.room_generator'
|
||||
require 'modules.rpg'
|
||||
local BiterHealthBooster = require 'modules.biter_health_booster'
|
||||
local BiterRaffle = require 'functions.biter_raffle'
|
||||
local BiterRaffle = require 'utils.functions.biter_raffle'
|
||||
local Functions = require 'maps.dungeons.functions'
|
||||
local Get_noise = require 'utils.get_noise'
|
||||
local DungeonsTable = require 'maps.dungeons.table'
|
||||
|
@ -8,10 +8,10 @@ require 'modules.charging_station'
|
||||
local MIN_ROOMS_TO_DESCEND = 100
|
||||
|
||||
local MapInfo = require 'modules.map_info'
|
||||
local Room_generator = require 'functions.room_generator'
|
||||
local Room_generator = require 'utils.functions.room_generator'
|
||||
local RPG = require 'modules.rpg.main'
|
||||
local BiterHealthBooster = require 'modules.biter_health_booster_v2'
|
||||
local BiterRaffle = require 'functions.biter_raffle'
|
||||
local BiterRaffle = require 'utils.functions.biter_raffle'
|
||||
local Functions = require 'maps.dungeons.functions'
|
||||
local Get_noise = require 'utils.get_noise'
|
||||
local Alert = require 'utils.alert'
|
||||
@ -850,9 +850,13 @@ Event.add(defines.events.on_gui_click, on_gui_click)
|
||||
Event.add(defines.events.on_player_changed_surface, on_player_changed_surface)
|
||||
Event.add(defines.events.on_player_respawned, on_player_respawned)
|
||||
|
||||
Changelog.SetVersions({
|
||||
Changelog.SetVersions(
|
||||
{
|
||||
{ver = 'next', date = 'the future', desc = 'Make suggestions in the comfy #dungeons discord channel'},
|
||||
{ ver = '1.1.1', date = '2022-04-10', desc = [[
|
||||
{
|
||||
ver = '1.1.1',
|
||||
date = '2022-04-10',
|
||||
desc = [[
|
||||
Balancing patch
|
||||
* Evolution goes up faster with floor level 0.05/level -> 0.06/level; e.g. floor 20 now like floor 24 before
|
||||
* Now require 100 open rooms to descend
|
||||
@ -869,8 +873,12 @@ Balancing patch
|
||||
* Require getting to room 100 before you can descend
|
||||
* Science from rooms 40-160+2.5*floor to 60-300+2.5*floor
|
||||
* Atomic bomb research moved to 40-50
|
||||
]]},
|
||||
{ ver = '1.1', date = '2022-03-13', desc = [[
|
||||
]]
|
||||
},
|
||||
{
|
||||
ver = '1.1',
|
||||
date = '2022-03-13',
|
||||
desc = [[
|
||||
* All research is now found at random.
|
||||
* Red science floors 0-1
|
||||
* Green on floors 1-5
|
||||
@ -891,6 +899,8 @@ Balancing patch
|
||||
* Autostash and corpse clearing from Mountain Fortress enabled
|
||||
* Harder rooms will occur somewhat farther out on the early floors.
|
||||
* Spawners and worm counts bounded in early rooms.
|
||||
]]},
|
||||
{ ver = '1.0', date = 'past', desc = "Pre-changelog version of multi-floor dungeons" },
|
||||
})
|
||||
]]
|
||||
},
|
||||
{ver = '1.0', date = 'past', desc = 'Pre-changelog version of multi-floor dungeons'}
|
||||
}
|
||||
)
|
||||
|
@ -1,5 +1,5 @@
|
||||
local Price_raffle = require 'maps.expanse.price_raffle'
|
||||
local BiterRaffle = require 'functions.biter_raffle'
|
||||
local BiterRaffle = require 'utils.functions.biter_raffle'
|
||||
local Task = require 'utils.task'
|
||||
local Token = require 'utils.token'
|
||||
local Public = {}
|
||||
@ -142,7 +142,8 @@ local function is_container_position_valid(expanse, position)
|
||||
end
|
||||
|
||||
local function create_costs_render(entity, name, offset)
|
||||
local id = rendering.draw_sprite{
|
||||
local id =
|
||||
rendering.draw_sprite {
|
||||
sprite = 'virtual-signal/signal-grey',
|
||||
surface = entity.surface,
|
||||
target = entity,
|
||||
@ -152,7 +153,8 @@ local function create_costs_render(entity, name, offset)
|
||||
target_offset = {offset, -1.5},
|
||||
only_in_alt_mode = true
|
||||
}
|
||||
local id2 = rendering.draw_sprite{
|
||||
local id2 =
|
||||
rendering.draw_sprite {
|
||||
sprite = 'item/' .. name,
|
||||
surface = entity.surface,
|
||||
target = entity,
|
||||
|
@ -19,7 +19,7 @@ local Session = require 'utils.datastore.session_data'
|
||||
local Difficulty = require 'modules.difficulty_vote'
|
||||
local Map = require 'modules.map_info'
|
||||
local Event = require 'utils.event'
|
||||
local Reset = require 'functions.soft_reset'
|
||||
local Reset = require 'utils.functions.soft_reset'
|
||||
local Server = require 'utils.server'
|
||||
local Poll = require 'utils.gui.poll'
|
||||
local boss_biter = require 'maps.fish_defender.boss_biters'
|
||||
|
@ -1,6 +1,6 @@
|
||||
--luacheck: ignore
|
||||
local Event = require 'utils.event'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local FDT = require 'maps.fish_defender.table'
|
||||
local math_random = math.random
|
||||
|
@ -18,8 +18,8 @@ local event = require 'utils.event'
|
||||
local Server = require 'utils.server'
|
||||
local boss_biter = require 'maps.fish_defender.boss_biters'
|
||||
local Score = require 'utils.gui.score'
|
||||
require 'functions.boss_unit'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
require 'utils.functions.boss_unit'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local Difficulty = require 'modules.difficulty_vote'
|
||||
local math_random = math.random
|
||||
local insert = table.insert
|
||||
|
@ -12,7 +12,7 @@ local Unit_health_booster = require 'modules.biter_health_booster_v2'
|
||||
local Difficulty = require 'modules.difficulty_vote'
|
||||
local Map = require 'modules.map_info'
|
||||
local Event = require 'utils.event'
|
||||
local Reset = require 'functions.soft_reset'
|
||||
local Reset = require 'utils.functions.soft_reset'
|
||||
local Server = require 'utils.server'
|
||||
local Session = require 'utils.datastore.session_data'
|
||||
local Poll = require 'utils.gui.poll'
|
||||
|
@ -1,5 +1,5 @@
|
||||
local Event = require 'utils.event'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local Public = require 'maps.fish_defender_v2.table'
|
||||
local Task = require 'utils.task'
|
||||
|
@ -7,7 +7,7 @@ require 'modules.no_deconstruction_of_neutral_entities'
|
||||
require 'modules.spawners_contain_biters'
|
||||
|
||||
local event = require 'utils.event'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local math_random = math.random
|
||||
|
||||
@ -358,12 +358,7 @@ local function draw_ores(surface, position)
|
||||
end
|
||||
|
||||
local function draw_water(surface, position)
|
||||
map_functions.draw_noise_tile_circle(
|
||||
{x = position.x + labyrinth_cell_size * 0.5, y = position.y + labyrinth_cell_size * 0.5},
|
||||
'water',
|
||||
surface,
|
||||
math.floor(labyrinth_cell_size * 0.3)
|
||||
)
|
||||
map_functions.draw_noise_tile_circle({x = position.x + labyrinth_cell_size * 0.5, y = position.y + labyrinth_cell_size * 0.5}, 'water', surface, math.floor(labyrinth_cell_size * 0.3))
|
||||
for _, tile in pairs(surface.find_tiles_filtered({name = 'water', area = {{position.x, position.y}, {position.x + labyrinth_cell_size, position.y + labyrinth_cell_size}}})) do
|
||||
if math_random(1, 12) == 1 then
|
||||
surface.create_entity({name = 'fish', position = tile.position})
|
||||
@ -406,21 +401,13 @@ end
|
||||
local function draw_rocks(surface, position)
|
||||
local r = math_random(0, 100)
|
||||
if r < 50 then
|
||||
surface.create_entity(
|
||||
{name = rock_raffle[math_random(1, #rock_raffle)], position = {x = position.x + labyrinth_cell_size * 0.5, y = position.y + labyrinth_cell_size * 0.5}}
|
||||
)
|
||||
surface.create_entity({name = rock_raffle[math_random(1, #rock_raffle)], position = {x = position.x + labyrinth_cell_size * 0.5, y = position.y + labyrinth_cell_size * 0.5}})
|
||||
return
|
||||
end
|
||||
if r <= 100 then
|
||||
surface.create_entity(
|
||||
{name = rock_raffle[math_random(1, #rock_raffle)], position = {x = position.x + labyrinth_cell_size * 0.5, y = position.y + labyrinth_cell_size * 0.25}}
|
||||
)
|
||||
surface.create_entity(
|
||||
{name = rock_raffle[math_random(1, #rock_raffle)], position = {x = position.x + labyrinth_cell_size * 0.75, y = position.y + labyrinth_cell_size * 0.75}}
|
||||
)
|
||||
surface.create_entity(
|
||||
{name = rock_raffle[math_random(1, #rock_raffle)], position = {x = position.x + labyrinth_cell_size * 0.25, y = position.y + labyrinth_cell_size * 0.75}}
|
||||
)
|
||||
surface.create_entity({name = rock_raffle[math_random(1, #rock_raffle)], position = {x = position.x + labyrinth_cell_size * 0.5, y = position.y + labyrinth_cell_size * 0.25}})
|
||||
surface.create_entity({name = rock_raffle[math_random(1, #rock_raffle)], position = {x = position.x + labyrinth_cell_size * 0.75, y = position.y + labyrinth_cell_size * 0.75}})
|
||||
surface.create_entity({name = rock_raffle[math_random(1, #rock_raffle)], position = {x = position.x + labyrinth_cell_size * 0.25, y = position.y + labyrinth_cell_size * 0.75}})
|
||||
return
|
||||
end
|
||||
end
|
||||
@ -545,11 +532,7 @@ local function on_entity_died(event)
|
||||
return
|
||||
end
|
||||
if event.entity.type == 'tree' then
|
||||
for _, entity in pairs(
|
||||
event.entity.surface.find_entities_filtered(
|
||||
{area = {{event.entity.position.x - 4, event.entity.position.y - 4}, {event.entity.position.x + 4, event.entity.position.y + 4}}, name = 'fire-flame-on-tree'}
|
||||
)
|
||||
) do
|
||||
for _, entity in pairs(event.entity.surface.find_entities_filtered({area = {{event.entity.position.x - 4, event.entity.position.y - 4}, {event.entity.position.x + 4, event.entity.position.y + 4}}, name = 'fire-flame-on-tree'})) do
|
||||
if entity.valid then
|
||||
entity.destroy()
|
||||
end
|
||||
|
@ -2,7 +2,7 @@
|
||||
--map by mewmew and kyte
|
||||
|
||||
require 'maps.island_troopers.map_intro'
|
||||
require 'functions.noise_vector_path'
|
||||
require 'utils.functions.noise_vector_path'
|
||||
require 'modules.shopping_chests'
|
||||
require 'modules.no_turrets'
|
||||
require 'modules.dangerous_goods'
|
||||
@ -327,4 +327,4 @@ event.add(defines.events.on_tick, on_tick)
|
||||
event.add(defines.events.on_entity_died, on_entity_died)
|
||||
event.add(defines.events.on_player_joined_game, on_player_joined_game)
|
||||
|
||||
require 'functions.boss_unit'
|
||||
require 'utils.functions.boss_unit'
|
||||
|
@ -1,5 +1,5 @@
|
||||
--luacheck: ignore
|
||||
local Map_functions = require 'tools.map_functions'
|
||||
local Map_functions = require 'utils.tools.map_functions'
|
||||
local Server = require 'utils.server'
|
||||
local Get_noise = require 'utils.get_noise'
|
||||
local Autostash = require 'modules.autostash'
|
||||
@ -38,7 +38,9 @@ local function protect(entity, operable)
|
||||
end
|
||||
|
||||
function Public.place_mixed_ore(event, journey)
|
||||
if math_random(1, 192) ~= 1 then return end
|
||||
if math_random(1, 192) ~= 1 then
|
||||
return
|
||||
end
|
||||
local surface = event.surface
|
||||
local x = event.area.left_top.x + math_random(0, 31)
|
||||
local y = event.area.left_top.y + math_random(0, 31)
|
||||
@ -78,7 +80,8 @@ local function place_teleporter(journey, surface, position, build_beacon)
|
||||
alignment = 'center',
|
||||
scale_with_zoom = false
|
||||
}
|
||||
local hp = rendering.draw_text {
|
||||
local hp =
|
||||
rendering.draw_text {
|
||||
text = {'journey.beacon_hp', journey.beacon_objective_health},
|
||||
surface = surface,
|
||||
target = beacon,
|
||||
@ -110,8 +113,12 @@ end
|
||||
|
||||
local function drop_player_items(journey, player)
|
||||
local character = player.character
|
||||
if not character then return end
|
||||
if not character.valid then return end
|
||||
if not character then
|
||||
return
|
||||
end
|
||||
if not character.valid then
|
||||
return
|
||||
end
|
||||
|
||||
player.clear_cursor()
|
||||
|
||||
@ -142,8 +149,12 @@ end
|
||||
|
||||
function Public.clear_player(player)
|
||||
local character = player.character
|
||||
if not character then return end
|
||||
if not character.valid then return end
|
||||
if not character then
|
||||
return
|
||||
end
|
||||
if not character.valid then
|
||||
return
|
||||
end
|
||||
player.character.destroy()
|
||||
player.set_controller({type = defines.controllers.god})
|
||||
player.create_character()
|
||||
@ -153,7 +164,9 @@ end
|
||||
local function remove_offline_players(maximum_age_in_hours)
|
||||
local maximum_age_in_ticks = maximum_age_in_hours * 216000
|
||||
local t = game.tick - maximum_age_in_ticks
|
||||
if t < 0 then return end
|
||||
if t < 0 then
|
||||
return
|
||||
end
|
||||
local players_to_remove = {}
|
||||
for _, player in pairs(game.players) do
|
||||
if player.last_online < t then
|
||||
@ -216,9 +229,13 @@ local function delete_nauvis_chunks(journey)
|
||||
local surface = game.surfaces.nauvis
|
||||
if not journey.nauvis_chunk_positions then
|
||||
journey.nauvis_chunk_positions = {}
|
||||
for chunk in surface.get_chunks() do table.insert(journey.nauvis_chunk_positions, {chunk.x, chunk.y}) end
|
||||
for chunk in surface.get_chunks() do
|
||||
table.insert(journey.nauvis_chunk_positions, {chunk.x, chunk.y})
|
||||
end
|
||||
journey.size_of_nauvis_chunk_positions = #journey.nauvis_chunk_positions
|
||||
for _, e in pairs(surface.find_entities_filtered{type = 'radar'}) do e.destroy() end
|
||||
for _, e in pairs(surface.find_entities_filtered {type = 'radar'}) do
|
||||
e.destroy()
|
||||
end
|
||||
for _, player in pairs(game.players) do
|
||||
local button = player.gui.top.add({type = 'sprite-button', name = 'chunk_progress', caption = ''})
|
||||
button.style.font = 'heading-1'
|
||||
@ -230,7 +247,9 @@ local function delete_nauvis_chunks(journey)
|
||||
end
|
||||
end
|
||||
|
||||
if journey.size_of_nauvis_chunk_positions == 0 then return end
|
||||
if journey.size_of_nauvis_chunk_positions == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
for c = 1, 12, 1 do
|
||||
local chunk_position = journey.nauvis_chunk_positions[journey.size_of_nauvis_chunk_positions]
|
||||
@ -244,14 +263,18 @@ local function delete_nauvis_chunks(journey)
|
||||
|
||||
local caption = {'journey.chunks_delete', journey.size_of_nauvis_chunk_positions}
|
||||
for _, player in pairs(game.connected_players) do
|
||||
if player.gui.top.chunk_progress then player.gui.top.chunk_progress.caption = caption end
|
||||
if player.gui.top.chunk_progress then
|
||||
player.gui.top.chunk_progress.caption = caption
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function Public.mothership_message_queue(journey)
|
||||
local text = journey.mothership_messages[1]
|
||||
if not text then return end
|
||||
if not text then
|
||||
return
|
||||
end
|
||||
if text ~= '' then
|
||||
game.print({'journey.mothership_format', text})
|
||||
end
|
||||
@ -260,8 +283,12 @@ end
|
||||
|
||||
function Public.deny_building(event)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.name ~= 'mothership' then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.name ~= 'mothership' then
|
||||
return
|
||||
end
|
||||
if Constants.build_type_whitelist[entity.type] then
|
||||
entity.destructible = false
|
||||
return
|
||||
@ -271,9 +298,15 @@ end
|
||||
|
||||
function Public.register_built_silo(event, journey)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if entity.type ~= 'rocket-silo' then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type ~= 'rocket-silo' then
|
||||
return
|
||||
end
|
||||
entity.auto_launch = false
|
||||
table.insert(journey.rocket_silos, entity)
|
||||
end
|
||||
@ -387,11 +420,19 @@ function Public.draw_gui(journey)
|
||||
end
|
||||
|
||||
local function is_mothership(position)
|
||||
if math.abs(position.x) > Constants.mothership_radius then return false end
|
||||
if math.abs(position.y) > Constants.mothership_radius then return false end
|
||||
if math.abs(position.x) > Constants.mothership_radius then
|
||||
return false
|
||||
end
|
||||
if math.abs(position.y) > Constants.mothership_radius then
|
||||
return false
|
||||
end
|
||||
local p = {x = position.x, y = position.y}
|
||||
if p.x > 0 then p.x = p.x + 1 end
|
||||
if p.y > 0 then p.y = p.y + 1 end
|
||||
if p.x > 0 then
|
||||
p.x = p.x + 1
|
||||
end
|
||||
if p.y > 0 then
|
||||
p.y = p.y + 1
|
||||
end
|
||||
local d = math.sqrt(p.x ^ 2 + p.y ^ 2)
|
||||
if d < Constants.mothership_radius then
|
||||
return true
|
||||
@ -423,7 +464,7 @@ function Public.export_journey(journey, import_flag)
|
||||
bonus_goods = journey.bonus_goods,
|
||||
world_selectors = journey.world_selectors,
|
||||
mothership_cargo = journey.mothership_cargo,
|
||||
mothership_cargo_space = journey.mothership_cargo_space,
|
||||
mothership_cargo_space = journey.mothership_cargo_space
|
||||
}
|
||||
local secs = Server.get_current_time()
|
||||
if not secs then
|
||||
@ -522,7 +563,9 @@ function Public.hard_reset(journey)
|
||||
|
||||
journey.world_selectors = {}
|
||||
journey.reroll_selector = {activation_level = 0}
|
||||
for i = 1, 3, 1 do journey.world_selectors[i] = {activation_level = 0, texts = {}} end
|
||||
for i = 1, 3, 1 do
|
||||
journey.world_selectors[i] = {activation_level = 0, texts = {}}
|
||||
end
|
||||
journey.mothership_speed = 0.5
|
||||
journey.characters_in_mothership = 0
|
||||
journey.world_color_filters = {}
|
||||
@ -575,7 +618,9 @@ function Public.draw_mothership(journey)
|
||||
for x = Constants.mothership_radius * -1, Constants.mothership_radius, 1 do
|
||||
for y = Constants.mothership_radius * -1, Constants.mothership_radius, 1 do
|
||||
local position = {x = x, y = y}
|
||||
if is_mothership(position) then table.insert(positions, position) end
|
||||
if is_mothership(position) then
|
||||
table.insert(positions, position)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -591,14 +636,17 @@ function Public.draw_mothership(journey)
|
||||
end
|
||||
end
|
||||
|
||||
for _, tile in pairs(surface.find_tiles_filtered({area = {{Constants.mothership_teleporter_position.x - 2, Constants.mothership_teleporter_position.y - 2}, {Constants.mothership_teleporter_position.x + 2, Constants.mothership_teleporter_position.y + 2}}})) do
|
||||
for _, tile in pairs(
|
||||
surface.find_tiles_filtered({area = {{Constants.mothership_teleporter_position.x - 2, Constants.mothership_teleporter_position.y - 2}, {Constants.mothership_teleporter_position.x + 2, Constants.mothership_teleporter_position.y + 2}}})
|
||||
) do
|
||||
surface.set_tiles({{name = 'lab-dark-1', position = tile.position}}, true)
|
||||
end
|
||||
|
||||
for k, area in pairs(Constants.world_selector_areas) do
|
||||
journey.world_selectors[k].rectangles = {}
|
||||
local position = area.left_top
|
||||
local rectangle = rendering.draw_rectangle {
|
||||
local rectangle =
|
||||
rendering.draw_rectangle {
|
||||
width = 1,
|
||||
filled = true,
|
||||
surface = surface,
|
||||
@ -609,7 +657,8 @@ function Public.draw_mothership(journey)
|
||||
only_in_alt_mode = false
|
||||
}
|
||||
table.insert(journey.world_selectors[k].rectangles, rectangle)
|
||||
journey.world_selectors[k].border = rendering.draw_rectangle {
|
||||
journey.world_selectors[k].border =
|
||||
rendering.draw_rectangle {
|
||||
width = 8,
|
||||
filled = false,
|
||||
surface = surface,
|
||||
@ -621,7 +670,8 @@ function Public.draw_mothership(journey)
|
||||
}
|
||||
end
|
||||
|
||||
journey.reroll_selector.rectangle = rendering.draw_rectangle {
|
||||
journey.reroll_selector.rectangle =
|
||||
rendering.draw_rectangle {
|
||||
width = 8,
|
||||
filled = true,
|
||||
surface = surface,
|
||||
@ -631,7 +681,8 @@ function Public.draw_mothership(journey)
|
||||
draw_on_ground = true,
|
||||
only_in_alt_mode = false
|
||||
}
|
||||
journey.reroll_selector.border = rendering.draw_rectangle {
|
||||
journey.reroll_selector.border =
|
||||
rendering.draw_rectangle {
|
||||
width = 8,
|
||||
filled = false,
|
||||
surface = surface,
|
||||
@ -660,7 +711,9 @@ function Public.draw_mothership(journey)
|
||||
|
||||
for m = -1, 1, 2 do
|
||||
local x = Constants.mothership_radius - 3
|
||||
if m > 0 then x = x - 1 end
|
||||
if m > 0 then
|
||||
x = x - 1
|
||||
end
|
||||
local y = Constants.mothership_radius * 0.5 - 7
|
||||
local turret = surface.create_entity({name = 'artillery-turret', position = {x * m, y}, force = 'player'})
|
||||
turret.direction = 4
|
||||
@ -729,22 +782,32 @@ end
|
||||
local function animate_selectors(journey)
|
||||
for k, world_selector in pairs(journey.world_selectors) do
|
||||
local activation_level = journey.world_selectors[k].activation_level
|
||||
if activation_level < 0.2 then activation_level = 0.2 end
|
||||
if activation_level > 1 then activation_level = 1 end
|
||||
if activation_level < 0.2 then
|
||||
activation_level = 0.2
|
||||
end
|
||||
if activation_level > 1 then
|
||||
activation_level = 1
|
||||
end
|
||||
for _, rectangle in pairs(world_selector.rectangles) do
|
||||
local color = Constants.world_selector_colors[k]
|
||||
rendering.set_color(rectangle, {r = color.r * activation_level, g = color.g * activation_level, b = color.b * activation_level, a = 255})
|
||||
end
|
||||
end
|
||||
local activation_level = journey.reroll_selector.activation_level
|
||||
if activation_level < 0.2 then activation_level = 0.2 end
|
||||
if activation_level > 1 then activation_level = 1 end
|
||||
if activation_level < 0.2 then
|
||||
activation_level = 0.2
|
||||
end
|
||||
if activation_level > 1 then
|
||||
activation_level = 1
|
||||
end
|
||||
local color = Constants.reroll_selector_area_color
|
||||
rendering.set_color(journey.reroll_selector.rectangle, {r = color.r * activation_level, g = color.g * activation_level, b = color.b * activation_level, a = 255})
|
||||
end
|
||||
|
||||
local function draw_background(journey, surface)
|
||||
if journey.characters_in_mothership == 0 then return end
|
||||
if journey.characters_in_mothership == 0 then
|
||||
return
|
||||
end
|
||||
local speed = journey.mothership_speed
|
||||
for c = 1, 16 * speed, 1 do
|
||||
local position = Constants.particle_spawn_vectors[math.random(1, Constants.size_of_particle_spawn_vectors)]
|
||||
@ -769,8 +832,12 @@ local function draw_background(journey, surface)
|
||||
if math.random(1, 90) == 1 then
|
||||
local position_x = math.random(64, 160)
|
||||
local position_y = math.random(64, 160)
|
||||
if math.random(1, 2) == 1 then position_x = position_x * -1 end
|
||||
if math.random(1, 2) == 1 then position_y = position_y * -1 end
|
||||
if math.random(1, 2) == 1 then
|
||||
position_x = position_x * -1
|
||||
end
|
||||
if math.random(1, 2) == 1 then
|
||||
position_y = position_y * -1
|
||||
end
|
||||
surface.create_entity({name = 'big-worm-turret', position = {position_x, position_y}, force = 'enemy'})
|
||||
end
|
||||
end
|
||||
@ -782,7 +849,6 @@ local function roll_bonus_goods(journey, trait, amount)
|
||||
for key, numbers in pairs(loot) do
|
||||
local loot_table = Constants.starter_goods_pool[key]
|
||||
if #bonus_goods < (amount or 3) and math.random(numbers[1], numbers[2]) >= 1 then
|
||||
|
||||
local item = loot_table[math.random(1, #loot_table)]
|
||||
bonus_goods[#bonus_goods + 1] = {item[1], math.random(item[2], item[3])}
|
||||
end
|
||||
@ -803,15 +869,15 @@ function Public.set_world_selectors(journey)
|
||||
scale = 1.5,
|
||||
font = 'default-large-bold',
|
||||
alignment = 'center',
|
||||
scale_with_zoom = false,
|
||||
scale_with_zoom = false
|
||||
},
|
||||
rendering.draw_sprite {
|
||||
sprite = 'item/satellite',
|
||||
surface = surface,
|
||||
y_scale = 1.5,
|
||||
x_scale = 1.5,
|
||||
target = {x + 1.6, Constants.reroll_selector_area.left_top.y - 1},
|
||||
},
|
||||
target = {x + 1.6, Constants.reroll_selector_area.left_top.y - 1}
|
||||
}
|
||||
}
|
||||
|
||||
local modifier_names = {}
|
||||
@ -842,7 +908,9 @@ function Public.set_world_selectors(journey)
|
||||
local limits = {6, Constants.unique_world_traits[world_selector.world_trait].mods}
|
||||
local counts = {0, 0}
|
||||
local i = 1
|
||||
if journey.importing then goto skip_reroll end
|
||||
if journey.importing then
|
||||
goto skip_reroll
|
||||
end
|
||||
while (limits[1] + limits[2] > counts[1] + counts[2]) and i < #modifier_names do
|
||||
local modifier = modifier_names[i]
|
||||
local data = Constants.modifiers[modifier]
|
||||
@ -888,7 +956,9 @@ function Public.set_world_selectors(journey)
|
||||
world_selector.bonus_goods = roll_bonus_goods(journey, world_selector.world_trait)
|
||||
::skip_reroll::
|
||||
|
||||
table.insert(texts, rendering.draw_text{
|
||||
table.insert(
|
||||
texts,
|
||||
rendering.draw_text {
|
||||
text = Constants.unique_world_traits[world_selector.world_trait].name,
|
||||
surface = surface,
|
||||
target = {position.x + Constants.world_selector_width * 0.5, position.y + y_modifier},
|
||||
@ -897,12 +967,15 @@ function Public.set_world_selectors(journey)
|
||||
font = 'default-large-bold',
|
||||
alignment = 'center',
|
||||
scale_with_zoom = false
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
for k2, modifier in pairs(modifiers) do
|
||||
y_modifier = y_modifier + 0.8
|
||||
local text = ''
|
||||
if modifier.value > 0 then text = text .. '+' end
|
||||
if modifier.value > 0 then
|
||||
text = text .. '+'
|
||||
end
|
||||
text = text .. modifier.value .. '% '
|
||||
text = text .. Constants.modifiers[modifier.name].name
|
||||
|
||||
@ -913,7 +986,9 @@ function Public.set_world_selectors(journey)
|
||||
color = {0, 200, 0, 255}
|
||||
end
|
||||
|
||||
table.insert(texts, rendering.draw_text{
|
||||
table.insert(
|
||||
texts,
|
||||
rendering.draw_text {
|
||||
text = text,
|
||||
surface = surface,
|
||||
target = {position.x + Constants.world_selector_width * 0.5, position.y + y_modifier},
|
||||
@ -922,11 +997,14 @@ function Public.set_world_selectors(journey)
|
||||
font = 'default-large',
|
||||
alignment = 'center',
|
||||
scale_with_zoom = false
|
||||
})
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
y_modifier = y_modifier + 0.85
|
||||
table.insert(texts, rendering.draw_text{
|
||||
table.insert(
|
||||
texts,
|
||||
rendering.draw_text {
|
||||
text = 'Fuel requirement +' .. world_selector.fuel_requirement,
|
||||
surface = surface,
|
||||
target = {position.x + Constants.world_selector_width * 0.5, position.y + y_modifier},
|
||||
@ -935,18 +1013,23 @@ function Public.set_world_selectors(journey)
|
||||
font = 'default-large',
|
||||
alignment = 'center',
|
||||
scale_with_zoom = false
|
||||
})
|
||||
table.insert(texts, rendering.draw_sprite{
|
||||
}
|
||||
)
|
||||
table.insert(
|
||||
texts,
|
||||
rendering.draw_sprite {
|
||||
sprite = 'item/uranium-fuel-cell',
|
||||
surface = surface,
|
||||
target = {position.x + Constants.world_selector_width * 0.5 + 3.7, position.y + y_modifier + 0.5},
|
||||
})
|
||||
target = {position.x + Constants.world_selector_width * 0.5 + 3.7, position.y + y_modifier + 0.5}
|
||||
}
|
||||
)
|
||||
|
||||
y_modifier = y_modifier + 1.1
|
||||
local x_modifier = -0.5
|
||||
|
||||
for k2, good in pairs(world_selector.bonus_goods) do
|
||||
local render_id = rendering.draw_text{
|
||||
local render_id =
|
||||
rendering.draw_text {
|
||||
text = '+' .. good[2],
|
||||
surface = surface,
|
||||
target = {position.x + x_modifier, position.y + y_modifier},
|
||||
@ -959,13 +1042,18 @@ function Public.set_world_selectors(journey)
|
||||
table.insert(texts, render_id)
|
||||
|
||||
x_modifier = x_modifier + 0.95
|
||||
if good[2] >= 10 then x_modifier = x_modifier + 0.18 end
|
||||
if good[2] >= 100 then x_modifier = x_modifier + 0.18 end
|
||||
if good[2] >= 10 then
|
||||
x_modifier = x_modifier + 0.18
|
||||
end
|
||||
if good[2] >= 100 then
|
||||
x_modifier = x_modifier + 0.18
|
||||
end
|
||||
|
||||
local render_id = rendering.draw_sprite{
|
||||
local render_id =
|
||||
rendering.draw_sprite {
|
||||
sprite = 'item/' .. good[1],
|
||||
surface = surface,
|
||||
target = {position.x + x_modifier, position.y + 0.5 + y_modifier},
|
||||
target = {position.x + x_modifier, position.y + 0.5 + y_modifier}
|
||||
}
|
||||
table.insert(texts, render_id)
|
||||
|
||||
@ -990,9 +1078,13 @@ function Public.delete_nauvis_chunks(journey)
|
||||
local surface = game.surfaces.mothership
|
||||
Public.teleport_players_to_mothership(journey)
|
||||
draw_background(journey, surface)
|
||||
if delete_nauvis_chunks(journey) then return end
|
||||
if delete_nauvis_chunks(journey) then
|
||||
return
|
||||
end
|
||||
for _, player in pairs(game.players) do
|
||||
if player.gui.top.chunk_progress then player.gui.top.chunk_progress.destroy() end
|
||||
if player.gui.top.chunk_progress then
|
||||
player.gui.top.chunk_progress.destroy()
|
||||
end
|
||||
end
|
||||
|
||||
journey.game_state = 'mothership_world_selection'
|
||||
@ -1047,7 +1139,9 @@ function Public.mothership_world_selection(journey)
|
||||
local surface = game.surfaces.mothership
|
||||
local daytime = surface.daytime
|
||||
daytime = daytime - 0.025
|
||||
if daytime < 0 then daytime = 0 end
|
||||
if daytime < 0 then
|
||||
daytime = 0
|
||||
end
|
||||
surface.daytime = daytime
|
||||
|
||||
local reroll_selector_activation_level = get_activation_level(journey, surface, Constants.reroll_selector_area)
|
||||
@ -1087,18 +1181,24 @@ function Public.mothership_world_selection(journey)
|
||||
journey.game_state = 'mothership_arrives_at_world'
|
||||
return
|
||||
end
|
||||
if seconds_left % 15 == 0 then table.insert(journey.mothership_messages, 'Estimated arrival in ' .. seconds_left .. ' seconds.') end
|
||||
if seconds_left % 15 == 0 then
|
||||
table.insert(journey.mothership_messages, 'Estimated arrival in ' .. seconds_left .. ' seconds.')
|
||||
end
|
||||
end
|
||||
|
||||
journey.mothership_speed = journey.mothership_speed + 0.1
|
||||
if journey.mothership_speed > 4 then journey.mothership_speed = 4 end
|
||||
if journey.mothership_speed > 4 then
|
||||
journey.mothership_speed = 4
|
||||
end
|
||||
else
|
||||
if journey.mothership_advancing_to_world then
|
||||
table.insert(journey.mothership_messages, 'Aborting travelling sequence.')
|
||||
journey.mothership_advancing_to_world = false
|
||||
end
|
||||
journey.mothership_speed = journey.mothership_speed - 0.25
|
||||
if journey.mothership_speed < 0.35 then journey.mothership_speed = 0.35 end
|
||||
if journey.mothership_speed < 0.35 then
|
||||
journey.mothership_speed = 0.35
|
||||
end
|
||||
end
|
||||
|
||||
draw_background(journey, surface)
|
||||
@ -1112,9 +1212,13 @@ function Public.mothership_arrives_at_world(journey)
|
||||
Public.teleport_players_to_mothership(journey)
|
||||
|
||||
if journey.mothership_speed == 0.15 then
|
||||
for _ = 1, 16, 1 do table.insert(journey.mothership_messages, '') end
|
||||
for _ = 1, 16, 1 do
|
||||
table.insert(journey.mothership_messages, '')
|
||||
end
|
||||
table.insert(journey.mothership_messages, '[img=item/uranium-fuel-cell] Fuel cells depleted ;_;')
|
||||
for _ = 1, 16, 1 do table.insert(journey.mothership_messages, '') end
|
||||
for _ = 1, 16, 1 do
|
||||
table.insert(journey.mothership_messages, '')
|
||||
end
|
||||
table.insert(journey.mothership_messages, 'Refuel via supply rocket required!')
|
||||
|
||||
for i = 1, 3, 1 do
|
||||
@ -1141,13 +1245,17 @@ end
|
||||
function Public.clear_modifiers(journey)
|
||||
local unique_modifier = Unique_modifiers[journey.world_trait]
|
||||
local clear = unique_modifier.clear
|
||||
if clear then clear(journey) end
|
||||
if clear then
|
||||
clear(journey)
|
||||
end
|
||||
journey.world_specials = {}
|
||||
local force = game.forces.player
|
||||
force.reset()
|
||||
force.reset_technologies()
|
||||
force.reset_technology_effects()
|
||||
for a = 1, 7, 1 do force.technologies['refined-flammables-' .. a].enabled = false end
|
||||
for a = 1, 7, 1 do
|
||||
force.technologies['refined-flammables-' .. a].enabled = false
|
||||
end
|
||||
journey.game_state = 'create_the_world'
|
||||
Public.update_tooltips(journey)
|
||||
end
|
||||
@ -1171,11 +1279,12 @@ function Public.create_the_world(journey)
|
||||
|
||||
local unique_modifier = Unique_modifiers[journey.world_trait]
|
||||
local set_specials = unique_modifier.set_specials
|
||||
if set_specials then set_specials(journey) end
|
||||
if set_specials then
|
||||
set_specials(journey)
|
||||
end
|
||||
set_map_modifiers(journey)
|
||||
surface.clear(false)
|
||||
|
||||
|
||||
journey.nauvis_chunk_positions = nil
|
||||
journey.rocket_silos = {}
|
||||
journey.mothership_cargo['uranium-fuel-cell'] = 0
|
||||
@ -1197,7 +1306,9 @@ function Public.create_the_world(journey)
|
||||
end
|
||||
end
|
||||
journey.goods_to_dispatch = {}
|
||||
for k, v in pairs(journey.bonus_goods) do table.insert(journey.goods_to_dispatch, {k, v}) end
|
||||
for k, v in pairs(journey.bonus_goods) do
|
||||
table.insert(journey.goods_to_dispatch, {k, v})
|
||||
end
|
||||
table.shuffle_table(journey.goods_to_dispatch)
|
||||
Public.update_tooltips(journey)
|
||||
journey.game_state = 'wipe_offline_players'
|
||||
@ -1221,7 +1332,9 @@ function Public.notify_discord(journey)
|
||||
local modifier_message = ''
|
||||
for _, mod in pairs(journey.world_selectors[journey.selected_world].modifiers) do
|
||||
local sign = ''
|
||||
if mod.value > 0 then sign = '+' end
|
||||
if mod.value > 0 then
|
||||
sign = '+'
|
||||
end
|
||||
modifier_message = modifier_message .. sign .. mod.value .. '% ' .. mod.name .. '\n'
|
||||
end
|
||||
local capsules = ''
|
||||
@ -1261,11 +1374,12 @@ function Public.notify_discord(journey)
|
||||
Server.to_discord_embed_parsed(message)
|
||||
end
|
||||
|
||||
|
||||
function Public.set_unique_modifiers(journey)
|
||||
local unique_modifier = Unique_modifiers[journey.world_trait]
|
||||
local on_world_start = unique_modifier.on_world_start
|
||||
if on_world_start then on_world_start(journey) end
|
||||
if on_world_start then
|
||||
on_world_start(journey)
|
||||
end
|
||||
Public.update_tooltips(journey)
|
||||
Public.draw_gui(journey)
|
||||
Public.notify_discord(journey)
|
||||
@ -1298,20 +1412,28 @@ end
|
||||
function Public.dispatch_goods(journey)
|
||||
draw_background(journey, game.surfaces.mothership)
|
||||
|
||||
if journey.characters_in_mothership == #game.connected_players then return end
|
||||
if journey.characters_in_mothership == #game.connected_players then
|
||||
return
|
||||
end
|
||||
|
||||
local goods_to_dispatch = journey.goods_to_dispatch
|
||||
local size_of_goods_to_dispatch = #goods_to_dispatch
|
||||
if size_of_goods_to_dispatch == 0 then
|
||||
for _ = 1, 30, 1 do table.insert(journey.mothership_messages, '') end
|
||||
for _ = 1, 30, 1 do
|
||||
table.insert(journey.mothership_messages, '')
|
||||
end
|
||||
table.insert(journey.mothership_messages, 'Capsule storage depleted.')
|
||||
for _ = 1, 30, 1 do table.insert(journey.mothership_messages, '') end
|
||||
for _ = 1, 30, 1 do
|
||||
table.insert(journey.mothership_messages, '')
|
||||
end
|
||||
table.insert(journey.mothership_messages, 'Good luck on your adventure! ^.^')
|
||||
journey.game_state = 'world'
|
||||
return
|
||||
end
|
||||
|
||||
if journey.dispatch_beacon and journey.dispatch_beacon.valid then return end
|
||||
if journey.dispatch_beacon and journey.dispatch_beacon.valid then
|
||||
return
|
||||
end
|
||||
|
||||
local surface = game.surfaces.nauvis
|
||||
|
||||
@ -1326,11 +1448,15 @@ function Public.dispatch_goods(journey)
|
||||
end
|
||||
|
||||
local chunk = surface.get_random_chunk()
|
||||
if math.abs(chunk.x) > 4 or math.abs(chunk.y) > 4 then return end
|
||||
if math.abs(chunk.x) > 4 or math.abs(chunk.y) > 4 then
|
||||
return
|
||||
end
|
||||
|
||||
local position = {x = chunk.x * 32 + math.random(0, 31), y = chunk.y * 32 + math.random(0, 31)}
|
||||
position = surface.find_non_colliding_position('rocket-silo', position, 32, 1)
|
||||
if not position then return end
|
||||
if not position then
|
||||
return
|
||||
end
|
||||
|
||||
journey.dispatch_beacon = surface.create_entity({name = 'stone-wall', position = position, force = 'neutral'})
|
||||
journey.dispatch_beacon.minable = false
|
||||
@ -1393,7 +1519,9 @@ function Public.world(journey)
|
||||
end
|
||||
end
|
||||
|
||||
if game.tick % 1800 ~= 0 then return end
|
||||
if game.tick % 1800 ~= 0 then
|
||||
return
|
||||
end
|
||||
for k, silo in pairs(journey.rocket_silos) do
|
||||
if not silo or not silo.valid then
|
||||
table.remove(journey.rocket_silos, k)
|
||||
@ -1421,7 +1549,9 @@ function Public.mothership_waiting_for_players(journey)
|
||||
return
|
||||
end
|
||||
|
||||
if math.random(1, 2) == 1 then return end
|
||||
if math.random(1, 2) == 1 then
|
||||
return
|
||||
end
|
||||
local tick = game.tick % 3600
|
||||
if tick == 0 then
|
||||
local messages = Constants.mothership_messages.waiting
|
||||
@ -1430,11 +1560,17 @@ function Public.mothership_waiting_for_players(journey)
|
||||
end
|
||||
|
||||
function Public.teleporters(journey, player)
|
||||
if not player.character then return end
|
||||
if not player.character.valid then return end
|
||||
if not player.character then
|
||||
return
|
||||
end
|
||||
if not player.character.valid then
|
||||
return
|
||||
end
|
||||
local surface = player.surface
|
||||
local tile = surface.get_tile(player.position)
|
||||
if tile.name ~= Constants.teleporter_tile and tile.hidden_tile ~= Constants.teleporter_tile then return end
|
||||
if tile.name ~= Constants.teleporter_tile and tile.hidden_tile ~= Constants.teleporter_tile then
|
||||
return
|
||||
end
|
||||
local base_position = {0, 0}
|
||||
if surface.index == 1 then
|
||||
drop_player_items(journey, player)
|
||||
@ -1462,7 +1598,9 @@ function Public.teleporters(journey, player)
|
||||
end
|
||||
|
||||
function Public.deal_damage_to_beacon(journey, incoming_damage)
|
||||
if journey.game_state ~= 'world' then return end
|
||||
if journey.game_state ~= 'world' then
|
||||
return
|
||||
end
|
||||
local resistance = journey.beacon_objective_resistance
|
||||
journey.beacon_objective_health = math.floor(journey.beacon_objective_health - (incoming_damage * (1 - resistance)))
|
||||
rendering.set_text(journey.beacon_objective_hp_label, {'journey.beacon_hp', journey.beacon_objective_health})
|
||||
@ -1490,7 +1628,9 @@ function Public.deal_damage_to_beacon(journey, incoming_damage)
|
||||
end
|
||||
|
||||
function Public.lure_biters(journey, position)
|
||||
if journey.game_state ~= 'world' or not journey.beacon_objective.valid then return end
|
||||
if journey.game_state ~= 'world' or not journey.beacon_objective.valid then
|
||||
return
|
||||
end
|
||||
local beacon = journey.beacon_objective
|
||||
local surface = beacon.surface
|
||||
local biters = surface.find_entities_filtered {position = position or beacon.position, radius = 80, force = 'enemy', type = 'unit'}
|
||||
|
@ -1,7 +1,7 @@
|
||||
--luacheck: ignore 212/journey
|
||||
local Get_noise = require 'utils.get_noise'
|
||||
local BiterRaffle = require 'functions.biter_raffle'
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local BiterRaffle = require 'utils.functions.biter_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
local math_random = math.random
|
||||
local math_abs = math.abs
|
||||
local math_floor = math.floor
|
||||
@ -9,15 +9,29 @@ local math_sqrt = math.sqrt
|
||||
local rock_raffle = {'sand-rock-big', 'sand-rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-huge'}
|
||||
local size_of_rock_raffle = #rock_raffle
|
||||
local ore_raffle = {}
|
||||
for i = 1, 25, 1 do table.insert(ore_raffle, 'iron-ore') end
|
||||
for i = 1, 17, 1 do table.insert(ore_raffle, 'copper-ore') end
|
||||
for i = 1, 15, 1 do table.insert(ore_raffle, 'coal') end
|
||||
for i = 1, 25, 1 do
|
||||
table.insert(ore_raffle, 'iron-ore')
|
||||
end
|
||||
for i = 1, 17, 1 do
|
||||
table.insert(ore_raffle, 'copper-ore')
|
||||
end
|
||||
for i = 1, 15, 1 do
|
||||
table.insert(ore_raffle, 'coal')
|
||||
end
|
||||
local size_of_ore_raffle = #ore_raffle
|
||||
local ore_raffle_2 = {}
|
||||
for i = 1, 15, 1 do table.insert(ore_raffle_2, 'iron-ore') end
|
||||
for i = 1, 9, 1 do table.insert(ore_raffle_2, 'copper-ore') end
|
||||
for i = 1, 7, 1 do table.insert(ore_raffle_2, 'coal') end
|
||||
for i = 1, 5, 1 do table.insert(ore_raffle_2, 'stone') end
|
||||
for i = 1, 15, 1 do
|
||||
table.insert(ore_raffle_2, 'iron-ore')
|
||||
end
|
||||
for i = 1, 9, 1 do
|
||||
table.insert(ore_raffle_2, 'copper-ore')
|
||||
end
|
||||
for i = 1, 7, 1 do
|
||||
table.insert(ore_raffle_2, 'coal')
|
||||
end
|
||||
for i = 1, 5, 1 do
|
||||
table.insert(ore_raffle_2, 'stone')
|
||||
end
|
||||
local size_of_ore_raffle_2 = #ore_raffle_2
|
||||
local rock_yield = {
|
||||
['rock-big'] = 1,
|
||||
@ -33,14 +47,14 @@ local solid_tiles = {
|
||||
['refined-hazard-concrete-right'] = true,
|
||||
['stone-path'] = true,
|
||||
['lab-dark-1'] = true,
|
||||
['lab-dark-2'] = true,
|
||||
['lab-dark-2'] = true
|
||||
}
|
||||
local wrecks = {
|
||||
'crash-site-spaceship-wreck-big-1',
|
||||
'crash-site-spaceship-wreck-big-2',
|
||||
'crash-site-spaceship-wreck-medium-1',
|
||||
'crash-site-spaceship-wreck-medium-2',
|
||||
'crash-site-spaceship-wreck-medium-3',
|
||||
'crash-site-spaceship-wreck-medium-3'
|
||||
}
|
||||
local size_of_wrecks = #wrecks
|
||||
|
||||
@ -66,7 +80,7 @@ Public.eternal_day = {
|
||||
clear = function(journey)
|
||||
local surface = game.surfaces.nauvis
|
||||
surface.freeze_daytime = false
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.eternal_night = {
|
||||
@ -80,7 +94,7 @@ Public.eternal_night = {
|
||||
local surface = game.surfaces.nauvis
|
||||
surface.freeze_daytime = false
|
||||
surface.solar_power_multiplier = 1
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.pitch_black = {
|
||||
@ -98,35 +112,53 @@ Public.pitch_black = {
|
||||
surface.solar_power_multiplier = 1
|
||||
surface.min_brightness = 0.15
|
||||
surface.brightness_visual_weights = {0, 0, 0, 1}
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.matter_anomaly = {
|
||||
on_world_start = function(journey)
|
||||
local force = game.forces.player
|
||||
for i = 1, 4, 1 do force.technologies['mining-productivity-' .. i].researched = true end
|
||||
for i = 1, 6, 1 do force.technologies['mining-productivity-4'].researched = true end
|
||||
for i = 1, 4, 1 do
|
||||
force.technologies['mining-productivity-' .. i].researched = true
|
||||
end
|
||||
for i = 1, 6, 1 do
|
||||
force.technologies['mining-productivity-4'].researched = true
|
||||
end
|
||||
end,
|
||||
on_robot_built_entity = function(event)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if entity.type == 'electric-turret' then entity.die() end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type == 'electric-turret' then
|
||||
entity.die()
|
||||
end
|
||||
end,
|
||||
on_built_entity = function(event)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if entity.type == 'electric-turret' then entity.die() end
|
||||
end,
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type == 'electric-turret' then
|
||||
entity.die()
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
Public.quantum_anomaly = {
|
||||
on_world_start = function(journey)
|
||||
local force = game.forces.player
|
||||
for i = 1, 6, 1 do force.technologies['research-speed-' .. i].researched = true end
|
||||
for i = 1, 6, 1 do
|
||||
force.technologies['research-speed-' .. i].researched = true
|
||||
end
|
||||
journey.world_specials['technology_price_multiplier'] = 0.5
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.mountainous = {
|
||||
@ -136,8 +168,12 @@ Public.mountainous = {
|
||||
end,
|
||||
on_player_mined_entity = function(event)
|
||||
local entity = event.entity
|
||||
if not entity.valid then return end
|
||||
if not rock_yield[entity.name] then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if not rock_yield[entity.name] then
|
||||
return
|
||||
end
|
||||
local surface = entity.surface
|
||||
event.buffer.clear()
|
||||
local ore = ore_raffle[math_random(1, size_of_ore_raffle)]
|
||||
@ -167,37 +203,59 @@ Public.mountainous = {
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.replicant_fauna = {
|
||||
on_entity_died = function(event)
|
||||
local entity = event.entity
|
||||
if not entity.valid then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
local cause = event.cause
|
||||
if not cause then return end
|
||||
if not cause.valid then return end
|
||||
if cause.force.index == 2 then cause.surface.create_entity({name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor), position = entity.position, force = 'enemy'}) end
|
||||
end,
|
||||
if not cause then
|
||||
return
|
||||
end
|
||||
if not cause.valid then
|
||||
return
|
||||
end
|
||||
if cause.force.index == 2 then
|
||||
cause.surface.create_entity({name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor), position = entity.position, force = 'enemy'})
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
Public.tarball = {
|
||||
on_robot_built_entity = function(event)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if tarball_minable[entity.type] then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if tarball_minable[entity.type] then
|
||||
return
|
||||
end
|
||||
entity.minable = false
|
||||
end,
|
||||
on_built_entity = function(event)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if tarball_minable[entity.type] then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if tarball_minable[entity.type] then
|
||||
return
|
||||
end
|
||||
entity.minable = false
|
||||
end,
|
||||
on_chunk_generated = function(event, journey)
|
||||
table.insert(journey.world_color_filters, rendering.draw_sprite(
|
||||
table.insert(
|
||||
journey.world_color_filters,
|
||||
rendering.draw_sprite(
|
||||
{
|
||||
sprite = 'tile/lab-dark-1',
|
||||
x_scale = 32,
|
||||
@ -207,12 +265,15 @@ Public.tarball = {
|
||||
tint = {r = 0.0, g = 0.0, b = 0.0, a = 0.45},
|
||||
render_layer = 'ground'
|
||||
}
|
||||
))
|
||||
)
|
||||
)
|
||||
end,
|
||||
clear = function(journey)
|
||||
for _, id in pairs(journey.world_color_filters) do rendering.destroy(id) end
|
||||
for _, id in pairs(journey.world_color_filters) do
|
||||
rendering.destroy(id)
|
||||
end
|
||||
journey.world_color_filters = {}
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.swamps = {
|
||||
@ -234,7 +295,9 @@ Public.swamps = {
|
||||
for y = 0, 31, 1 do
|
||||
local position = {x = left_top_x + x, y = left_top_y + y}
|
||||
local noise = Get_noise('journey_swamps', position, seed)
|
||||
if noise > 0.45 or noise < -0.65 then table.insert(tiles, {name = 'water-shallow', position = {x = position.x, y = position.y}}) end
|
||||
if noise > 0.45 or noise < -0.65 then
|
||||
table.insert(tiles, {name = 'water-shallow', position = {x = position.x, y = position.y}})
|
||||
end
|
||||
end
|
||||
end
|
||||
surface.set_tiles(tiles, true, false, false, false)
|
||||
@ -244,7 +307,7 @@ Public.swamps = {
|
||||
surface.create_entity({name = 'fish', position = tile.position})
|
||||
end
|
||||
end
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.wasteland = {
|
||||
@ -260,7 +323,9 @@ Public.wasteland = {
|
||||
table.insert(tiles, {name = 'deepwater-green', position = tile.position})
|
||||
end
|
||||
surface.set_tiles(tiles, true, false, false, false)
|
||||
if math_random(1, 3) ~= 1 then return end
|
||||
if math_random(1, 3) ~= 1 then
|
||||
return
|
||||
end
|
||||
for _ = 1, math_random(0, 5), 1 do
|
||||
local name = wrecks[math_random(1, size_of_wrecks)]
|
||||
local position = surface.find_non_colliding_position(name, {left_top_x + math_random(0, 31), left_top_y + math_random(0, 31)}, 16, 1)
|
||||
@ -270,7 +335,9 @@ Public.wasteland = {
|
||||
local slots = game.entity_prototypes[e.name].get_inventory_size(defines.inventory.chest)
|
||||
local blacklist = LootRaffle.get_tech_blacklist(0.2)
|
||||
local item_stacks = LootRaffle.roll(math_random(16, 64), slots, blacklist)
|
||||
for _, item_stack in pairs(item_stacks) do e.insert(item_stack) end
|
||||
for _, item_stack in pairs(item_stacks) do
|
||||
e.insert(item_stack)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -288,7 +355,7 @@ Public.wasteland = {
|
||||
local mgs = surface.map_gen_settings
|
||||
mgs.water = mgs.water - 1
|
||||
surface.map_gen_settings = mgs
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.oceanic = {
|
||||
@ -302,27 +369,42 @@ Public.oceanic = {
|
||||
end,
|
||||
on_robot_built_entity = function(event)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if entity.type == 'fluid-turret' then entity.die() end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type == 'fluid-turret' then
|
||||
entity.die()
|
||||
end
|
||||
end,
|
||||
on_built_entity = function(event)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if entity.type == 'fluid-turret' then entity.die() end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type == 'fluid-turret' then
|
||||
entity.die()
|
||||
end
|
||||
end,
|
||||
clear = function(journey)
|
||||
local surface = game.surfaces.nauvis
|
||||
local mgs = surface.map_gen_settings
|
||||
mgs.water = mgs.water - 6
|
||||
surface.map_gen_settings = mgs
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.volcanic = {
|
||||
on_chunk_generated = function(event, journey)
|
||||
table.insert(journey.world_color_filters, rendering.draw_sprite({
|
||||
table.insert(
|
||||
journey.world_color_filters,
|
||||
rendering.draw_sprite(
|
||||
{
|
||||
sprite = 'tile/lab-dark-2',
|
||||
x_scale = 32,
|
||||
y_scale = 32,
|
||||
@ -330,14 +412,22 @@ Public.volcanic = {
|
||||
surface = event.surface,
|
||||
tint = {r = 0.55, g = 0.0, b = 0.0, a = 0.25},
|
||||
render_layer = 'ground'
|
||||
}))
|
||||
}
|
||||
)
|
||||
)
|
||||
end,
|
||||
on_player_changed_position = function(event)
|
||||
local player = game.players[event.player_index]
|
||||
if player.driving then return end
|
||||
if player.driving then
|
||||
return
|
||||
end
|
||||
local surface = player.surface
|
||||
if surface.index ~= 1 then return end
|
||||
if solid_tiles[surface.get_tile(player.position).name] then return end
|
||||
if surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if solid_tiles[surface.get_tile(player.position).name] then
|
||||
return
|
||||
end
|
||||
surface.create_entity({name = 'fire-flame', position = player.position})
|
||||
end,
|
||||
on_world_start = function(journey)
|
||||
@ -354,9 +444,11 @@ Public.volcanic = {
|
||||
end
|
||||
end,
|
||||
clear = function(journey)
|
||||
for _, id in pairs(journey.world_color_filters) do rendering.destroy(id) end
|
||||
for _, id in pairs(journey.world_color_filters) do
|
||||
rendering.destroy(id)
|
||||
end
|
||||
journey.world_color_filters = {}
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.chaotic_resources = {
|
||||
@ -366,12 +458,15 @@ Public.chaotic_resources = {
|
||||
surface.create_entity({name = ore_raffle_2[math_random(1, size_of_ore_raffle_2)], position = ore.position, amount = ore.amount})
|
||||
ore.destroy()
|
||||
end
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.infested = {
|
||||
on_chunk_generated = function(event, journey)
|
||||
table.insert(journey.world_color_filters, rendering.draw_sprite({
|
||||
table.insert(
|
||||
journey.world_color_filters,
|
||||
rendering.draw_sprite(
|
||||
{
|
||||
sprite = 'tile/lab-dark-2',
|
||||
x_scale = 32,
|
||||
y_scale = 32,
|
||||
@ -379,7 +474,9 @@ Public.infested = {
|
||||
surface = event.surface,
|
||||
tint = {r = 0.8, g = 0.0, b = 0.8, a = 0.25},
|
||||
render_layer = 'ground'
|
||||
}))
|
||||
}
|
||||
)
|
||||
)
|
||||
end,
|
||||
set_specials = function(journey)
|
||||
journey.world_specials['trees_size'] = 4
|
||||
@ -387,111 +484,177 @@ Public.infested = {
|
||||
journey.world_specials['trees_frequency'] = 2
|
||||
end,
|
||||
clear = function(journey)
|
||||
for _, id in pairs(journey.world_color_filters) do rendering.destroy(id) end
|
||||
for _, id in pairs(journey.world_color_filters) do
|
||||
rendering.destroy(id)
|
||||
end
|
||||
journey.world_color_filters = {}
|
||||
end,
|
||||
on_entity_died = function(event)
|
||||
local entity = event.entity
|
||||
if not entity.valid then return end
|
||||
if entity.force.index ~= 3 then return end
|
||||
if entity.type ~= 'simple-entity' and entity.type ~= 'tree' then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.force.index ~= 3 then
|
||||
return
|
||||
end
|
||||
if entity.type ~= 'simple-entity' and entity.type ~= 'tree' then
|
||||
return
|
||||
end
|
||||
entity.surface.create_entity({name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor + 0.1), position = entity.position, force = 'enemy'})
|
||||
end,
|
||||
on_player_mined_entity = function(event)
|
||||
if math_random(1,2) == 1 then return end
|
||||
if math_random(1, 2) == 1 then
|
||||
return
|
||||
end
|
||||
local entity = event.entity
|
||||
if not entity.valid then return end
|
||||
if entity.force.index ~= 3 then return end
|
||||
if entity.type ~= 'simple-entity' and entity.type ~= 'tree' then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.force.index ~= 3 then
|
||||
return
|
||||
end
|
||||
if entity.type ~= 'simple-entity' and entity.type ~= 'tree' then
|
||||
return
|
||||
end
|
||||
entity.surface.create_entity({name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor + 0.1), position = entity.position, force = 'enemy'})
|
||||
end,
|
||||
on_robot_mined_entity = function(event)
|
||||
local entity = event.entity
|
||||
if not entity.valid then return end
|
||||
if entity.force.index ~= 3 then return end
|
||||
if entity.type ~= 'simple-entity' and entity.type ~= 'tree' then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.force.index ~= 3 then
|
||||
return
|
||||
end
|
||||
if entity.type ~= 'simple-entity' and entity.type ~= 'tree' then
|
||||
return
|
||||
end
|
||||
entity.surface.create_entity({name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor + 0.1), position = entity.position, force = 'enemy'})
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.undead_plague = {
|
||||
on_entity_died = function(event)
|
||||
local entity = event.entity
|
||||
if not entity.valid then return end
|
||||
if entity.force.index ~= 2 then return end
|
||||
if math_random(1,2) == 1 then return end
|
||||
if entity.type ~= 'unit' then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.force.index ~= 2 then
|
||||
return
|
||||
end
|
||||
if math_random(1, 2) == 1 then
|
||||
return
|
||||
end
|
||||
if entity.type ~= 'unit' then
|
||||
return
|
||||
end
|
||||
entity.surface.create_entity({name = entity.name, position = entity.position, force = 'enemy'})
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.low_mass = {
|
||||
on_world_start = function(journey)
|
||||
local force = game.forces.player
|
||||
force.character_running_speed_modifier = 0.5
|
||||
for i = 1, 6, 1 do force.technologies['worker-robots-speed-' .. i].researched = true end
|
||||
end,
|
||||
for i = 1, 6, 1 do
|
||||
force.technologies['worker-robots-speed-' .. i].researched = true
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
Public.dense_atmosphere = {
|
||||
on_robot_built_entity = function(event)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if entity.type == 'roboport' then entity.die() end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type == 'roboport' then
|
||||
entity.die()
|
||||
end
|
||||
end,
|
||||
on_built_entity = function(event)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if entity.type == 'roboport' then entity.die() end
|
||||
end,
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type == 'roboport' then
|
||||
entity.die()
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
local function update_lazy_bastard(journey, count)
|
||||
journey.lazy_bastard_machines = journey.lazy_bastard_machines + count
|
||||
local speed = journey.lazy_bastard_machines * -0.1
|
||||
if speed < -1 then speed = -1 end
|
||||
if speed < -1 then
|
||||
speed = -1
|
||||
end
|
||||
game.forces.player.manual_crafting_speed_modifier = speed
|
||||
end
|
||||
|
||||
Public.lazy_bastard = {
|
||||
on_robot_built_entity = function(event, journey)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type == 'assembling-machine' then
|
||||
update_lazy_bastard(journey, 1)
|
||||
end
|
||||
end,
|
||||
on_built_entity = function(event, journey)
|
||||
local entity = event.created_entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type == 'assembling-machine' then
|
||||
update_lazy_bastard(journey, 1)
|
||||
end
|
||||
end,
|
||||
on_entity_died = function(event, journey)
|
||||
local entity = event.entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type == 'assembling-machine' then
|
||||
update_lazy_bastard(journey, -1)
|
||||
end
|
||||
end,
|
||||
on_player_mined_entity = function(event, journey)
|
||||
local entity = event.entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type == 'assembling-machine' then
|
||||
update_lazy_bastard(journey, -1)
|
||||
end
|
||||
end,
|
||||
on_robot_mined_entity = function(event, journey)
|
||||
local entity = event.entity
|
||||
if not entity.valid then return end
|
||||
if entity.surface.index ~= 1 then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
if entity.surface.index ~= 1 then
|
||||
return
|
||||
end
|
||||
if entity.type == 'assembling-machine' then
|
||||
update_lazy_bastard(journey, -1)
|
||||
end
|
||||
@ -501,7 +664,7 @@ Public.lazy_bastard = {
|
||||
end,
|
||||
clear = function(journey)
|
||||
game.forces.player.manual_crafting_speed_modifier = 0
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.ribbon = {
|
||||
@ -531,7 +694,7 @@ Public.ribbon = {
|
||||
local mgs = surface.map_gen_settings
|
||||
mgs.height = nil
|
||||
surface.map_gen_settings = mgs
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.abandoned_library = {
|
||||
@ -542,7 +705,7 @@ Public.abandoned_library = {
|
||||
clear = function(journey)
|
||||
game.permissions.get_group('Default').set_allows_action(defines.input_action.open_blueprint_library_gui, true)
|
||||
game.permissions.get_group('Default').set_allows_action(defines.input_action.import_blueprint_string, true)
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.railworld = {
|
||||
@ -560,7 +723,7 @@ Public.railworld = {
|
||||
journey.world_specials['enemy_base_richness'] = 2
|
||||
journey.world_specials['water'] = 1.5
|
||||
journey.world_specials['starting_area'] = 3
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
local delivery_options = {
|
||||
@ -584,7 +747,7 @@ Public.resupply_station = {
|
||||
journey.mothership_cargo_space[journey.speedrun.item] = nil
|
||||
journey.mothership_cargo[journey.speedrun.item] = 0
|
||||
journey.speedrun.enabled = false
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
Public.crazy_science = {
|
||||
@ -604,8 +767,7 @@ Public.crazy_science = {
|
||||
journey.world_specials[name] = math.max(0.1, journey.world_specials[name] * 0.95)
|
||||
game.difficulty_settings.technology_price_multiplier = journey.world_modifiers[name] * (journey.world_specials[name] or 1)
|
||||
force.laboratory_productivity_bonus = math.max(0.1, force.laboratory_productivity_bonus * 0.95)
|
||||
end,
|
||||
end
|
||||
}
|
||||
|
||||
|
||||
return Public
|
||||
|
@ -1,107 +1,106 @@
|
||||
--luacheck: ignore
|
||||
--junkyard-- mewmew made this --
|
||||
|
||||
require "modules.dynamic_landfill"
|
||||
require "modules.satellite_score"
|
||||
require "modules.mineable_wreckage_yields_scrap"
|
||||
require "modules.rocks_heal_over_time"
|
||||
require "modules.spawners_contain_biters"
|
||||
require "modules.biters_yield_coins"
|
||||
require 'modules.dynamic_landfill'
|
||||
require 'modules.satellite_score'
|
||||
require 'modules.mineable_wreckage_yields_scrap'
|
||||
require 'modules.rocks_heal_over_time'
|
||||
require 'modules.spawners_contain_biters'
|
||||
require 'modules.biters_yield_coins'
|
||||
--require "maps.modules.fluids_are_explosive"
|
||||
--require "maps.modules.explosives_are_explosive"
|
||||
require "modules.dangerous_nights"
|
||||
require "modules.dangerous_goods"
|
||||
require 'modules.dangerous_nights'
|
||||
require 'modules.dangerous_goods'
|
||||
|
||||
local Map = require 'modules.map_info'
|
||||
local unearthing_worm = require "functions.unearthing_worm"
|
||||
local unearthing_biters = require "functions.unearthing_biters"
|
||||
local tick_tack_trap = require "functions.tick_tack_trap"
|
||||
local create_entity_chain = require "functions.create_entity_chain"
|
||||
local create_tile_chain = require "functions.create_tile_chain"
|
||||
local unearthing_worm = require 'utils.functions.unearthing_worm'
|
||||
local unearthing_biters = require 'utils.functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'utils.functions.tick_tack_trap'
|
||||
local create_entity_chain = require 'utils.functions.create_entity_chain'
|
||||
local create_tile_chain = require 'utils.functions.create_tile_chain'
|
||||
|
||||
local simplex_noise = require 'utils.simplex_noise'
|
||||
simplex_noise = simplex_noise.d2
|
||||
local event = require 'utils.event'
|
||||
local table_insert = table.insert
|
||||
local math_random = math.random
|
||||
local map_functions = require "tools.map_functions"
|
||||
local scrap = require "tools.scrap"
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local scrap = require 'utils.tools.scrap'
|
||||
|
||||
local disabled_for_deconstruction = {
|
||||
["fish"] = true,
|
||||
["rock-huge"] = true,
|
||||
["rock-big"] = true,
|
||||
["sand-rock-big"] = true,
|
||||
|
||||
["crash-site-spaceship-wreck-small-1"] = true,
|
||||
["crash-site-spaceship-wreck-small-2"] = true,
|
||||
["crash-site-spaceship-wreck-small-3"] = true,
|
||||
["crash-site-spaceship-wreck-small-4"] = true,
|
||||
["crash-site-spaceship-wreck-small-5"] = true,
|
||||
["crash-site-spaceship-wreck-small-6"] = true,
|
||||
['fish'] = true,
|
||||
['rock-huge'] = true,
|
||||
['rock-big'] = true,
|
||||
['sand-rock-big'] = true,
|
||||
['crash-site-spaceship-wreck-small-1'] = true,
|
||||
['crash-site-spaceship-wreck-small-2'] = true,
|
||||
['crash-site-spaceship-wreck-small-3'] = true,
|
||||
['crash-site-spaceship-wreck-small-4'] = true,
|
||||
['crash-site-spaceship-wreck-small-5'] = true,
|
||||
['crash-site-spaceship-wreck-small-6'] = true
|
||||
}
|
||||
|
||||
local tile_replacements = {
|
||||
["grass-1"] = "dirt-7",
|
||||
["grass-2"] = "dirt-6",
|
||||
["grass-3"] = "dirt-5",
|
||||
["grass-4"] = "dirt-4" ,
|
||||
["water"] = "water-green",
|
||||
["deepwater"] = "deepwater-green",
|
||||
["sand-1"] = "dirt-7",
|
||||
["sand-2"] = "dirt-6",
|
||||
["sand-3"] = "dirt-5"
|
||||
['grass-1'] = 'dirt-7',
|
||||
['grass-2'] = 'dirt-6',
|
||||
['grass-3'] = 'dirt-5',
|
||||
['grass-4'] = 'dirt-4',
|
||||
['water'] = 'water-green',
|
||||
['deepwater'] = 'deepwater-green',
|
||||
['sand-1'] = 'dirt-7',
|
||||
['sand-2'] = 'dirt-6',
|
||||
['sand-3'] = 'dirt-5'
|
||||
}
|
||||
|
||||
local entity_replacements = {
|
||||
["tree-01"] = "dead-grey-trunk",
|
||||
["tree-02"] = "tree-06-brown",
|
||||
["tree-03"] = "dead-grey-trunk",
|
||||
["tree-04"] = "dry-hairy-tree",
|
||||
["tree-05"] = "dead-grey-trunk",
|
||||
["tree-06"] = "tree-06-brown",
|
||||
["tree-07"] = "dry-hairy-tree",
|
||||
["tree-08"] = "dead-grey-trunk",
|
||||
["tree-09"] = "tree-06-brown",
|
||||
["tree-02-red"] = "dry-tree",
|
||||
['tree-01'] = 'dead-grey-trunk',
|
||||
['tree-02'] = 'tree-06-brown',
|
||||
['tree-03'] = 'dead-grey-trunk',
|
||||
['tree-04'] = 'dry-hairy-tree',
|
||||
['tree-05'] = 'dead-grey-trunk',
|
||||
['tree-06'] = 'tree-06-brown',
|
||||
['tree-07'] = 'dry-hairy-tree',
|
||||
['tree-08'] = 'dead-grey-trunk',
|
||||
['tree-09'] = 'tree-06-brown',
|
||||
['tree-02-red'] = 'dry-tree',
|
||||
--["tree-06-brown"] = "dirt",
|
||||
["tree-08-brown"] = "tree-06-brown",
|
||||
["tree-09-brown"] = "tree-06-brown",
|
||||
["tree-09-red"] = "tree-06-brown",
|
||||
["iron-ore"] = scrap.get_scrap_name(1),
|
||||
["copper-ore"] = scrap.get_scrap_name(2),
|
||||
["coal"] = scrap.get_scrap_name(3),
|
||||
["stone"] = scrap.get_scrap_name(4)
|
||||
['tree-08-brown'] = 'tree-06-brown',
|
||||
['tree-09-brown'] = 'tree-06-brown',
|
||||
['tree-09-red'] = 'tree-06-brown',
|
||||
['iron-ore'] = scrap.get_scrap_name(1),
|
||||
['copper-ore'] = scrap.get_scrap_name(2),
|
||||
['coal'] = scrap.get_scrap_name(3),
|
||||
['stone'] = scrap.get_scrap_name(4)
|
||||
}
|
||||
|
||||
local wrecks = {"big-ship-wreck-1", "big-ship-wreck-2", "big-ship-wreck-3"}
|
||||
local wrecks = {'big-ship-wreck-1', 'big-ship-wreck-2', 'big-ship-wreck-3'}
|
||||
|
||||
local scrap_buildings = {
|
||||
"nuclear-reactor",
|
||||
"centrifuge",
|
||||
"beacon",
|
||||
"chemical-plant",
|
||||
"assembling-machine-1",
|
||||
"assembling-machine-2",
|
||||
"assembling-machine-3",
|
||||
"oil-refinery",
|
||||
"arithmetic-combinator",
|
||||
"constant-combinator",
|
||||
"decider-combinator",
|
||||
"programmable-speaker",
|
||||
"steam-turbine",
|
||||
"steam-engine",
|
||||
"chemical-plant",
|
||||
"assembling-machine-1",
|
||||
"assembling-machine-2",
|
||||
"assembling-machine-3",
|
||||
"oil-refinery",
|
||||
"arithmetic-combinator",
|
||||
"constant-combinator",
|
||||
"decider-combinator",
|
||||
"programmable-speaker",
|
||||
"steam-turbine",
|
||||
"steam-engine"
|
||||
'nuclear-reactor',
|
||||
'centrifuge',
|
||||
'beacon',
|
||||
'chemical-plant',
|
||||
'assembling-machine-1',
|
||||
'assembling-machine-2',
|
||||
'assembling-machine-3',
|
||||
'oil-refinery',
|
||||
'arithmetic-combinator',
|
||||
'constant-combinator',
|
||||
'decider-combinator',
|
||||
'programmable-speaker',
|
||||
'steam-turbine',
|
||||
'steam-engine',
|
||||
'chemical-plant',
|
||||
'assembling-machine-1',
|
||||
'assembling-machine-2',
|
||||
'assembling-machine-3',
|
||||
'oil-refinery',
|
||||
'arithmetic-combinator',
|
||||
'constant-combinator',
|
||||
'decider-combinator',
|
||||
'programmable-speaker',
|
||||
'steam-turbine',
|
||||
'steam-engine'
|
||||
}
|
||||
|
||||
local function shuffle(tbl)
|
||||
@ -134,81 +133,79 @@ end
|
||||
local function create_shipwreck(surface, position)
|
||||
local raffle = {}
|
||||
local loot = {
|
||||
|
||||
{{name = "iron-gear-wheel", count = math_random(80,100)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3},
|
||||
{{name = "copper-cable", count = math_random(100,200)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3},
|
||||
{{name = "engine-unit", count = math_random(16,32)}, weight = 2, evolution_min = 0.1, evolution_max = 0.5},
|
||||
{{name = "electric-engine-unit", count = math_random(16,32)}, weight = 2, evolution_min = 0.4, evolution_max = 0.8},
|
||||
{{name = "battery", count = math_random(40,80)}, weight = 2, evolution_min = 0.3, evolution_max = 0.8},
|
||||
{{name = "advanced-circuit", count = math_random(40,80)}, weight = 3, evolution_min = 0.4, evolution_max = 1},
|
||||
{{name = "electronic-circuit", count = math_random(100,200)}, weight = 3, evolution_min = 0.0, evolution_max = 0.4},
|
||||
{{name = "processing-unit", count = math_random(30,60)}, weight = 3, evolution_min = 0.7, evolution_max = 1},
|
||||
{{name = "explosives", count = math_random(25,50)}, weight = 1, evolution_min = 0.2, evolution_max = 0.6},
|
||||
{{name = "lubricant-barrel", count = math_random(4,10)}, weight = 1, evolution_min = 0.3, evolution_max = 0.5},
|
||||
{{name = "rocket-fuel", count = math_random(4,10)}, weight = 2, evolution_min = 0.3, evolution_max = 0.7},
|
||||
{{name = "steel-plate", count = math_random(50,100)}, weight = 2, evolution_min = 0.1, evolution_max = 0.3},
|
||||
{{name = "nuclear-fuel", count = 1}, weight = 2, evolution_min = 0.7, evolution_max = 1},
|
||||
|
||||
{{name = "burner-inserter", count = math_random(4,8)}, weight = 3, evolution_min = 0.0, evolution_max = 0.1},
|
||||
{{name = "inserter", count = math_random(4,8)}, weight = 3, evolution_min = 0.0, evolution_max = 0.4},
|
||||
{{name = "long-handed-inserter", count = math_random(4,8)}, weight = 3, evolution_min = 0.0, evolution_max = 0.4},
|
||||
{{name = "fast-inserter", count = math_random(4,8)}, weight = 3, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = "filter-inserter", count = math_random(4,8)}, weight = 1, evolution_min = 0.2, evolution_max = 1},
|
||||
{{name = "stack-filter-inserter", count = math_random(2,4)}, weight = 1, evolution_min = 0.4, evolution_max = 1},
|
||||
{{name = "stack-inserter", count = math_random(2,4)}, weight = 3, evolution_min = 0.3, evolution_max = 1},
|
||||
{{name = "small-electric-pole", count = math_random(8,16)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3},
|
||||
{{name = "medium-electric-pole", count = math_random(4,8)}, weight = 3, evolution_min = 0.2, evolution_max = 1},
|
||||
{{name = "wooden-chest", count = math_random(16,24)}, weight = 3, evolution_min = 0.0, evolution_max = 0.2},
|
||||
{{name = "iron-chest", count = math_random(4,8)}, weight = 3, evolution_min = 0.1, evolution_max = 0.4},
|
||||
{{name = "steel-chest", count = math_random(4,8)}, weight = 3, evolution_min = 0.3, evolution_max = 1},
|
||||
{{name = "small-lamp", count = math_random(8,16)}, weight = 3, evolution_min = 0.1, evolution_max = 0.3},
|
||||
{{name = "rail", count = math_random(50,75)}, weight = 3, evolution_min = 0.1, evolution_max = 0.6},
|
||||
{{name = "assembling-machine-1", count = math_random(1,2)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3},
|
||||
{{name = "assembling-machine-2", count = math_random(1,2)}, weight = 3, evolution_min = 0.2, evolution_max = 0.8},
|
||||
{{name = "offshore-pump", count = 1}, weight = 2, evolution_min = 0.0, evolution_max = 0.1},
|
||||
{{name = 'iron-gear-wheel', count = math_random(80, 100)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3},
|
||||
{{name = 'copper-cable', count = math_random(100, 200)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3},
|
||||
{{name = 'engine-unit', count = math_random(16, 32)}, weight = 2, evolution_min = 0.1, evolution_max = 0.5},
|
||||
{{name = 'electric-engine-unit', count = math_random(16, 32)}, weight = 2, evolution_min = 0.4, evolution_max = 0.8},
|
||||
{{name = 'battery', count = math_random(40, 80)}, weight = 2, evolution_min = 0.3, evolution_max = 0.8},
|
||||
{{name = 'advanced-circuit', count = math_random(40, 80)}, weight = 3, evolution_min = 0.4, evolution_max = 1},
|
||||
{{name = 'electronic-circuit', count = math_random(100, 200)}, weight = 3, evolution_min = 0.0, evolution_max = 0.4},
|
||||
{{name = 'processing-unit', count = math_random(30, 60)}, weight = 3, evolution_min = 0.7, evolution_max = 1},
|
||||
{{name = 'explosives', count = math_random(25, 50)}, weight = 1, evolution_min = 0.2, evolution_max = 0.6},
|
||||
{{name = 'lubricant-barrel', count = math_random(4, 10)}, weight = 1, evolution_min = 0.3, evolution_max = 0.5},
|
||||
{{name = 'rocket-fuel', count = math_random(4, 10)}, weight = 2, evolution_min = 0.3, evolution_max = 0.7},
|
||||
{{name = 'steel-plate', count = math_random(50, 100)}, weight = 2, evolution_min = 0.1, evolution_max = 0.3},
|
||||
{{name = 'nuclear-fuel', count = 1}, weight = 2, evolution_min = 0.7, evolution_max = 1},
|
||||
{{name = 'burner-inserter', count = math_random(4, 8)}, weight = 3, evolution_min = 0.0, evolution_max = 0.1},
|
||||
{{name = 'inserter', count = math_random(4, 8)}, weight = 3, evolution_min = 0.0, evolution_max = 0.4},
|
||||
{{name = 'long-handed-inserter', count = math_random(4, 8)}, weight = 3, evolution_min = 0.0, evolution_max = 0.4},
|
||||
{{name = 'fast-inserter', count = math_random(4, 8)}, weight = 3, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = 'filter-inserter', count = math_random(4, 8)}, weight = 1, evolution_min = 0.2, evolution_max = 1},
|
||||
{{name = 'stack-filter-inserter', count = math_random(2, 4)}, weight = 1, evolution_min = 0.4, evolution_max = 1},
|
||||
{{name = 'stack-inserter', count = math_random(2, 4)}, weight = 3, evolution_min = 0.3, evolution_max = 1},
|
||||
{{name = 'small-electric-pole', count = math_random(8, 16)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3},
|
||||
{{name = 'medium-electric-pole', count = math_random(4, 8)}, weight = 3, evolution_min = 0.2, evolution_max = 1},
|
||||
{{name = 'wooden-chest', count = math_random(16, 24)}, weight = 3, evolution_min = 0.0, evolution_max = 0.2},
|
||||
{{name = 'iron-chest', count = math_random(4, 8)}, weight = 3, evolution_min = 0.1, evolution_max = 0.4},
|
||||
{{name = 'steel-chest', count = math_random(4, 8)}, weight = 3, evolution_min = 0.3, evolution_max = 1},
|
||||
{{name = 'small-lamp', count = math_random(8, 16)}, weight = 3, evolution_min = 0.1, evolution_max = 0.3},
|
||||
{{name = 'rail', count = math_random(50, 75)}, weight = 3, evolution_min = 0.1, evolution_max = 0.6},
|
||||
{{name = 'assembling-machine-1', count = math_random(1, 2)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3},
|
||||
{{name = 'assembling-machine-2', count = math_random(1, 2)}, weight = 3, evolution_min = 0.2, evolution_max = 0.8},
|
||||
{{name = 'offshore-pump', count = 1}, weight = 2, evolution_min = 0.0, evolution_max = 0.1},
|
||||
--{{name = "beacon", count = 1}, weight = 3, evolution_min = 0.7, evolution_max = 1},
|
||||
--{{name = "boiler", count = math_random(2,4)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3},
|
||||
--{{name = "steam-engine", count = math_random(1,2)}, weight = 3, evolution_min = 0.0, evolution_max = 0.5},
|
||||
--{{name = "steam-turbine", count = math_random(1,2)}, weight = 2, evolution_min = 0.5, evolution_max = 1},
|
||||
--{{name = "nuclear-reactor", count = 1}, weight = 2, evolution_min = 0.5, evolution_max = 1},
|
||||
--{{name = "centrifuge", count = math_random(1,2)}, weight = 2, evolution_min = 0.5, evolution_max = 1},
|
||||
{{name = "heat-pipe", count = math_random(8,12)}, weight = 2, evolution_min = 0.5, evolution_max = 1},
|
||||
{{name = 'heat-pipe', count = math_random(8, 12)}, weight = 2, evolution_min = 0.5, evolution_max = 1},
|
||||
--{{name = "heat-exchanger", count = math_random(2,4)}, weight = 2, evolution_min = 0.5, evolution_max = 1},
|
||||
{{name = "arithmetic-combinator", count = math_random(8,16)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = "constant-combinator", count = math_random(8,16)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = "decider-combinator", count = math_random(8,16)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = "power-switch", count = math_random(2,4)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = "programmable-speaker", count = math_random(2,4)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = "green-wire", count = math_random(50,100)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = "red-wire", count = math_random(50,100)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = 'arithmetic-combinator', count = math_random(8, 16)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = 'constant-combinator', count = math_random(8, 16)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = 'decider-combinator', count = math_random(8, 16)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = 'power-switch', count = math_random(2, 4)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = 'programmable-speaker', count = math_random(2, 4)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = 'green-wire', count = math_random(50, 100)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
{{name = 'red-wire', count = math_random(50, 100)}, weight = 1, evolution_min = 0.1, evolution_max = 1},
|
||||
--{{name = "chemical-plant", count = math_random(2,4)}, weight = 3, evolution_min = 0.3, evolution_max = 1},
|
||||
{{name = "burner-mining-drill", count = math_random(2,4)}, weight = 3, evolution_min = 0.0, evolution_max = 0.2},
|
||||
{{name = "electric-mining-drill", count = math_random(2,4)}, weight = 3, evolution_min = 0.2, evolution_max = 0.6},
|
||||
{{name = "express-transport-belt", count = math_random(25,75)}, weight = 3, evolution_min = 0.5, evolution_max = 1},
|
||||
{{name = "express-underground-belt", count = math_random(4,8)}, weight = 3, evolution_min = 0.5, evolution_max = 1},
|
||||
{{name = "express-splitter", count = math_random(2,4)}, weight = 3, evolution_min = 0.5, evolution_max = 1},
|
||||
{{name = "fast-transport-belt", count = math_random(25,75)}, weight = 3, evolution_min = 0.2, evolution_max = 0.7},
|
||||
{{name = "fast-underground-belt", count = math_random(4,8)}, weight = 3, evolution_min = 0.2, evolution_max = 0.7},
|
||||
{{name = "fast-splitter", count = math_random(2,4)}, weight = 3, evolution_min = 0.2, evolution_max = 0.3},
|
||||
{{name = "transport-belt", count = math_random(25,75)}, weight = 3, evolution_min = 0, evolution_max = 0.3},
|
||||
{{name = "underground-belt", count = math_random(4,8)}, weight = 3, evolution_min = 0, evolution_max = 0.3},
|
||||
{{name = "splitter", count = math_random(2,4)}, weight = 3, evolution_min = 0, evolution_max = 0.3},
|
||||
{{name = "pipe", count = math_random(40,50)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3},
|
||||
{{name = "pipe-to-ground", count = math_random(8,16)}, weight = 1, evolution_min = 0.2, evolution_max = 0.5},
|
||||
{{name = 'burner-mining-drill', count = math_random(2, 4)}, weight = 3, evolution_min = 0.0, evolution_max = 0.2},
|
||||
{{name = 'electric-mining-drill', count = math_random(2, 4)}, weight = 3, evolution_min = 0.2, evolution_max = 0.6},
|
||||
{{name = 'express-transport-belt', count = math_random(25, 75)}, weight = 3, evolution_min = 0.5, evolution_max = 1},
|
||||
{{name = 'express-underground-belt', count = math_random(4, 8)}, weight = 3, evolution_min = 0.5, evolution_max = 1},
|
||||
{{name = 'express-splitter', count = math_random(2, 4)}, weight = 3, evolution_min = 0.5, evolution_max = 1},
|
||||
{{name = 'fast-transport-belt', count = math_random(25, 75)}, weight = 3, evolution_min = 0.2, evolution_max = 0.7},
|
||||
{{name = 'fast-underground-belt', count = math_random(4, 8)}, weight = 3, evolution_min = 0.2, evolution_max = 0.7},
|
||||
{{name = 'fast-splitter', count = math_random(2, 4)}, weight = 3, evolution_min = 0.2, evolution_max = 0.3},
|
||||
{{name = 'transport-belt', count = math_random(25, 75)}, weight = 3, evolution_min = 0, evolution_max = 0.3},
|
||||
{{name = 'underground-belt', count = math_random(4, 8)}, weight = 3, evolution_min = 0, evolution_max = 0.3},
|
||||
{{name = 'splitter', count = math_random(2, 4)}, weight = 3, evolution_min = 0, evolution_max = 0.3},
|
||||
{{name = 'pipe', count = math_random(40, 50)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3},
|
||||
{{name = 'pipe-to-ground', count = math_random(8, 16)}, weight = 1, evolution_min = 0.2, evolution_max = 0.5},
|
||||
--{{name = "pumpjack", count = math_random(1,2)}, weight = 1, evolution_min = 0.3, evolution_max = 0.8},
|
||||
{{name = "pump", count = math_random(1,4)}, weight = 1, evolution_min = 0.3, evolution_max = 0.8},
|
||||
{{name = 'pump', count = math_random(1, 4)}, weight = 1, evolution_min = 0.3, evolution_max = 0.8},
|
||||
--{{name = "steel-furnace", count = math_random(4,8)}, weight = 3, evolution_min = 0.2, evolution_max = 0.7},
|
||||
--{{name = "stone-furnace", count = math_random(8,16)}, weight = 3, evolution_min = 0.0, evolution_max = 0.1},
|
||||
--{{name = "radar", count = math_random(1,2)}, weight = 1, evolution_min = 0.1, evolution_max = 0.3},
|
||||
{{name = "rail-signal", count = math_random(8,16)}, weight = 2, evolution_min = 0.2, evolution_max = 0.8},
|
||||
{{name = "rail-chain-signal", count = math_random(8,16)}, weight = 2, evolution_min = 0.2, evolution_max = 0.8},
|
||||
{{name = "stone-wall", count = math_random(25,75)}, weight = 1, evolution_min = 0.1, evolution_max = 0.5},
|
||||
{{name = "gate", count = math_random(4,8)}, weight = 1, evolution_min = 0.1, evolution_max = 0.5},
|
||||
{{name = 'rail-signal', count = math_random(8, 16)}, weight = 2, evolution_min = 0.2, evolution_max = 0.8},
|
||||
{{name = 'rail-chain-signal', count = math_random(8, 16)}, weight = 2, evolution_min = 0.2, evolution_max = 0.8},
|
||||
{{name = 'stone-wall', count = math_random(25, 75)}, weight = 1, evolution_min = 0.1, evolution_max = 0.5},
|
||||
{{name = 'gate', count = math_random(4, 8)}, weight = 1, evolution_min = 0.1, evolution_max = 0.5},
|
||||
--{{name = "storage-tank", count = math_random(2,4)}, weight = 3, evolution_min = 0.3, evolution_max = 0.6},
|
||||
{{name = "train-stop", count = math_random(1,2)}, weight = 1, evolution_min = 0.2, evolution_max = 0.7},
|
||||
{{name = "express-loader", count = math_random(1,2)}, weight = 1, evolution_min = 0.5, evolution_max = 1},
|
||||
{{name = "fast-loader", count = math_random(1,2)}, weight = 1, evolution_min = 0.2, evolution_max = 0.7},
|
||||
{{name = "loader", count = math_random(1,2)}, weight = 1, evolution_min = 0.0, evolution_max = 0.5}
|
||||
{{name = 'train-stop', count = math_random(1, 2)}, weight = 1, evolution_min = 0.2, evolution_max = 0.7},
|
||||
{{name = 'express-loader', count = math_random(1, 2)}, weight = 1, evolution_min = 0.5, evolution_max = 1},
|
||||
{{name = 'fast-loader', count = math_random(1, 2)}, weight = 1, evolution_min = 0.2, evolution_max = 0.7},
|
||||
{{name = 'loader', count = math_random(1, 2)}, weight = 1, evolution_min = 0.0, evolution_max = 0.5}
|
||||
--{{name = "lab", count = math_random(2,4)}, weight = 2, evolution_min = 0.0, evolution_max = 0.1}
|
||||
}
|
||||
|
||||
@ -218,7 +215,9 @@ local function create_shipwreck(surface, position)
|
||||
else
|
||||
distance_to_center = distance_to_center / 2500
|
||||
end
|
||||
if distance_to_center > 1 then distance_to_center = 1 end
|
||||
if distance_to_center > 1 then
|
||||
distance_to_center = 1
|
||||
end
|
||||
|
||||
for _, t in pairs(loot) do
|
||||
for x = 1, t.weight, 1 do
|
||||
@ -227,7 +226,7 @@ local function create_shipwreck(surface, position)
|
||||
end
|
||||
end
|
||||
end
|
||||
local e = surface.create_entity{name = wrecks[math_random(1,#wrecks)], position = position, force = "scrap"}
|
||||
local e = surface.create_entity {name = wrecks[math_random(1, #wrecks)], position = position, force = 'scrap'}
|
||||
for x = 1, math_random(2, 3), 1 do
|
||||
local loot = raffle[math_random(1, #raffle)]
|
||||
e.insert(loot)
|
||||
@ -236,37 +235,35 @@ end
|
||||
|
||||
local function secret_shop(pos, surface)
|
||||
local secret_market_items = {
|
||||
{price = {{"coin", math_random(30,60)}}, offer = {type = 'give-item', item = 'construction-robot'}},
|
||||
{price = {{"coin", math_random(100,200)}}, offer = {type = 'give-item', item = 'loader'}},
|
||||
{price = {{"coin", math_random(200,300)}}, offer = {type = 'give-item', item = 'fast-loader'}},
|
||||
{price = {{"coin", math_random(300,500)}}, offer = {type = 'give-item', item = 'express-loader'}},
|
||||
{price = {{"coin", math_random(100,200)}}, offer = {type = 'give-item', item = 'locomotive'}},
|
||||
{price = {{"coin", math_random(75,150)}}, offer = {type = 'give-item', item = 'cargo-wagon'}},
|
||||
{price = {{"coin", math_random(2,3)}}, offer = {type = 'give-item', item = 'rail'}},
|
||||
{price = {{"coin", math_random(4,12)}}, offer = {type = 'give-item', item = 'small-lamp'}},
|
||||
{price = {{"coin", math_random(80,160)}}, offer = {type = 'give-item', item = 'car'}},
|
||||
{price = {{"coin", math_random(300,600)}}, offer = {type = 'give-item', item = 'electric-furnace'}},
|
||||
{price = {{"coin", math_random(80,160)}}, offer = {type = 'give-item', item = 'effectivity-module'}},
|
||||
{price = {{"coin", math_random(80,160)}}, offer = {type = 'give-item', item = 'productivity-module'}},
|
||||
{price = {{"coin", math_random(80,160)}}, offer = {type = 'give-item', item = 'speed-module'}},
|
||||
|
||||
{price = {{"coin", math_random(5,10)}}, offer = {type = 'give-item', item = 'wood', count = 50}},
|
||||
{price = {{"coin", math_random(5,10)}}, offer = {type = 'give-item', item = 'iron-ore', count = 50}},
|
||||
{price = {{"coin", math_random(5,10)}}, offer = {type = 'give-item', item = 'copper-ore', count = 50}},
|
||||
{price = {{"coin", math_random(5,10)}}, offer = {type = 'give-item', item = 'stone', count = 50}},
|
||||
{price = {{"coin", math_random(5,10)}}, offer = {type = 'give-item', item = 'coal', count = 50}},
|
||||
{price = {{"coin", math_random(8,16)}}, offer = {type = 'give-item', item = 'uranium-ore', count = 50}},
|
||||
|
||||
{price = {{'wood', math_random(10,12)}}, offer = {type = 'give-item', item = "coin"}},
|
||||
{price = {{'iron-ore', math_random(10,12)}}, offer = {type = 'give-item', item = "coin"}},
|
||||
{price = {{'copper-ore', math_random(10,12)}}, offer = {type = 'give-item', item = "coin"}},
|
||||
{price = {{'stone', math_random(10,12)}}, offer = {type = 'give-item', item = "coin"}},
|
||||
{price = {{'coal', math_random(10,12)}}, offer = {type = 'give-item', item = "coin"}},
|
||||
{price = {{'uranium-ore', math_random(8,10)}}, offer = {type = 'give-item', item = "coin"}}
|
||||
{price = {{'coin', math_random(30, 60)}}, offer = {type = 'give-item', item = 'construction-robot'}},
|
||||
{price = {{'coin', math_random(100, 200)}}, offer = {type = 'give-item', item = 'loader'}},
|
||||
{price = {{'coin', math_random(200, 300)}}, offer = {type = 'give-item', item = 'fast-loader'}},
|
||||
{price = {{'coin', math_random(300, 500)}}, offer = {type = 'give-item', item = 'express-loader'}},
|
||||
{price = {{'coin', math_random(100, 200)}}, offer = {type = 'give-item', item = 'locomotive'}},
|
||||
{price = {{'coin', math_random(75, 150)}}, offer = {type = 'give-item', item = 'cargo-wagon'}},
|
||||
{price = {{'coin', math_random(2, 3)}}, offer = {type = 'give-item', item = 'rail'}},
|
||||
{price = {{'coin', math_random(4, 12)}}, offer = {type = 'give-item', item = 'small-lamp'}},
|
||||
{price = {{'coin', math_random(80, 160)}}, offer = {type = 'give-item', item = 'car'}},
|
||||
{price = {{'coin', math_random(300, 600)}}, offer = {type = 'give-item', item = 'electric-furnace'}},
|
||||
{price = {{'coin', math_random(80, 160)}}, offer = {type = 'give-item', item = 'effectivity-module'}},
|
||||
{price = {{'coin', math_random(80, 160)}}, offer = {type = 'give-item', item = 'productivity-module'}},
|
||||
{price = {{'coin', math_random(80, 160)}}, offer = {type = 'give-item', item = 'speed-module'}},
|
||||
{price = {{'coin', math_random(5, 10)}}, offer = {type = 'give-item', item = 'wood', count = 50}},
|
||||
{price = {{'coin', math_random(5, 10)}}, offer = {type = 'give-item', item = 'iron-ore', count = 50}},
|
||||
{price = {{'coin', math_random(5, 10)}}, offer = {type = 'give-item', item = 'copper-ore', count = 50}},
|
||||
{price = {{'coin', math_random(5, 10)}}, offer = {type = 'give-item', item = 'stone', count = 50}},
|
||||
{price = {{'coin', math_random(5, 10)}}, offer = {type = 'give-item', item = 'coal', count = 50}},
|
||||
{price = {{'coin', math_random(8, 16)}}, offer = {type = 'give-item', item = 'uranium-ore', count = 50}},
|
||||
{price = {{'wood', math_random(10, 12)}}, offer = {type = 'give-item', item = 'coin'}},
|
||||
{price = {{'iron-ore', math_random(10, 12)}}, offer = {type = 'give-item', item = 'coin'}},
|
||||
{price = {{'copper-ore', math_random(10, 12)}}, offer = {type = 'give-item', item = 'coin'}},
|
||||
{price = {{'stone', math_random(10, 12)}}, offer = {type = 'give-item', item = 'coin'}},
|
||||
{price = {{'coal', math_random(10, 12)}}, offer = {type = 'give-item', item = 'coin'}},
|
||||
{price = {{'uranium-ore', math_random(8, 10)}}, offer = {type = 'give-item', item = 'coin'}}
|
||||
}
|
||||
secret_market_items = shuffle(secret_market_items)
|
||||
|
||||
local market = surface.create_entity {name = "market", position = pos, force = "neutral"}
|
||||
local market = surface.create_entity {name = 'market', position = pos, force = 'neutral'}
|
||||
market.destructible = false
|
||||
|
||||
for i = 1, math.random(6, 8), 1 do
|
||||
@ -277,12 +274,12 @@ end
|
||||
local function place_random_scrap_entity(surface, position)
|
||||
local r = math.random(1, 100)
|
||||
if r < 15 then
|
||||
local e = surface.create_entity({name = scrap_buildings[math.random(1, #scrap_buildings)], position = position, force = "scrap"})
|
||||
if e.name == "nuclear-reactor" then
|
||||
create_entity_chain(surface, {name = "heat-pipe", position = position, force = "player"}, math_random(16,32), 25)
|
||||
local e = surface.create_entity({name = scrap_buildings[math.random(1, #scrap_buildings)], position = position, force = 'scrap'})
|
||||
if e.name == 'nuclear-reactor' then
|
||||
create_entity_chain(surface, {name = 'heat-pipe', position = position, force = 'player'}, math_random(16, 32), 25)
|
||||
end
|
||||
if e.name == "chemical-plant" or e.name == "steam-turbine" or e.name == "steam-engine" or e.name == "oil-refinery" then
|
||||
create_entity_chain(surface, {name = "pipe", position = position, force = "player"}, math_random(8,16), 25)
|
||||
if e.name == 'chemical-plant' or e.name == 'steam-turbine' or e.name == 'steam-engine' or e.name == 'oil-refinery' then
|
||||
create_entity_chain(surface, {name = 'pipe', position = position, force = 'player'}, math_random(8, 16), 25)
|
||||
end
|
||||
e.active = false
|
||||
return
|
||||
@ -298,33 +295,36 @@ local function place_random_scrap_entity(surface, position)
|
||||
-- return
|
||||
--end
|
||||
if r < 100 then
|
||||
local e = surface.create_entity({name = "gun-turret", position = position, force = "scrap_defense"})
|
||||
e.insert({name = "piercing-rounds-magazine", count = math.random(8, 128)})
|
||||
local e = surface.create_entity({name = 'gun-turret', position = position, force = 'scrap_defense'})
|
||||
e.insert({name = 'piercing-rounds-magazine', count = math.random(8, 128)})
|
||||
return
|
||||
end
|
||||
|
||||
local e = surface.create_entity({name = "storage-tank", position = position, force = "scrap", direction = math.random(0, 3)})
|
||||
local fluids = {"crude-oil", "lubricant", "heavy-oil", "light-oil", "petroleum-gas", "sulfuric-acid", "water"}
|
||||
local e = surface.create_entity({name = 'storage-tank', position = position, force = 'scrap', direction = math.random(0, 3)})
|
||||
local fluids = {'crude-oil', 'lubricant', 'heavy-oil', 'light-oil', 'petroleum-gas', 'sulfuric-acid', 'water'}
|
||||
e.fluidbox[1] = {name = fluids[math.random(1, #fluids)], amount = math.random(15000, 25000)}
|
||||
create_entity_chain(surface, {name = "pipe", position = position, force = "player"}, math_random(6,8), 1)
|
||||
create_entity_chain(surface, {name = "pipe", position = position, force = "player"}, math_random(6,8), 1)
|
||||
create_entity_chain(surface, {name = "pipe", position = position, force = "player"}, math_random(15,30), 80)
|
||||
create_entity_chain(surface, {name = 'pipe', position = position, force = 'player'}, math_random(6, 8), 1)
|
||||
create_entity_chain(surface, {name = 'pipe', position = position, force = 'player'}, math_random(6, 8), 1)
|
||||
create_entity_chain(surface, {name = 'pipe', position = position, force = 'player'}, math_random(15, 30), 80)
|
||||
end
|
||||
|
||||
local function create_inner_content(surface, pos, noise)
|
||||
if math_random(1, 90000) == 1 then secret_shop(pos, surface) return end
|
||||
if math_random(1, 90000) == 1 then
|
||||
secret_shop(pos, surface)
|
||||
return
|
||||
end
|
||||
if math_random(1, 102400) == 1 then
|
||||
if noise < 0.3 or noise > -0.3 then
|
||||
map_functions.draw_noise_entity_ring(surface, pos, "laser-turret", "scrap_defense", 0, 2)
|
||||
map_functions.draw_noise_entity_ring(surface, pos, "accumulator", "scrap_defense", 2, 3)
|
||||
map_functions.draw_noise_entity_ring(surface, pos, "substation", "scrap_defense", 3, 4)
|
||||
map_functions.draw_noise_entity_ring(surface, pos, "solar-panel", "scrap_defense", 4, 6)
|
||||
map_functions.draw_noise_entity_ring(surface, pos, "stone-wall", "scrap_defense", 6, 7)
|
||||
map_functions.draw_noise_entity_ring(surface, pos, 'laser-turret', 'scrap_defense', 0, 2)
|
||||
map_functions.draw_noise_entity_ring(surface, pos, 'accumulator', 'scrap_defense', 2, 3)
|
||||
map_functions.draw_noise_entity_ring(surface, pos, 'substation', 'scrap_defense', 3, 4)
|
||||
map_functions.draw_noise_entity_ring(surface, pos, 'solar-panel', 'scrap_defense', 4, 6)
|
||||
map_functions.draw_noise_entity_ring(surface, pos, 'stone-wall', 'scrap_defense', 6, 7)
|
||||
|
||||
create_tile_chain(surface, {name = "concrete", position = pos}, math_random(16, 32), 50)
|
||||
create_tile_chain(surface, {name = "concrete", position = pos}, math_random(16, 32), 50)
|
||||
create_tile_chain(surface, {name = "stone-path", position = pos}, math_random(16, 32), 50)
|
||||
create_tile_chain(surface, {name = "stone-path", position = pos}, math_random(16, 32), 50)
|
||||
create_tile_chain(surface, {name = 'concrete', position = pos}, math_random(16, 32), 50)
|
||||
create_tile_chain(surface, {name = 'concrete', position = pos}, math_random(16, 32), 50)
|
||||
create_tile_chain(surface, {name = 'stone-path', position = pos}, math_random(16, 32), 50)
|
||||
create_tile_chain(surface, {name = 'stone-path', position = pos}, math_random(16, 32), 50)
|
||||
--create_entity_chain(surface, {name = "laser-turret", position = pos, force = "scrap_defense"}, 1, 25)
|
||||
--create_entity_chain(surface, {name = "accumulator", position = pos, force = "scrap_defense"}, math_random(2, 4), 1)
|
||||
--create_entity_chain(surface, {name = "substation", position = pos, force = "scrap_defense"}, math_random(6, 8), 1)
|
||||
@ -333,10 +333,10 @@ local function create_inner_content(surface, pos, noise)
|
||||
return
|
||||
end
|
||||
if math_random(1, 650) == 1 then
|
||||
if surface.can_place_entity({name = "biter-spawner", position = pos}) then
|
||||
if surface.can_place_entity({name = 'biter-spawner', position = pos}) then
|
||||
local distance_to_center = pos.x ^ 2 + pos.y ^ 2
|
||||
if distance_to_center > 35000 then
|
||||
surface.create_entity({name = "biter-spawner", position = pos})
|
||||
surface.create_entity({name = 'biter-spawner', position = pos})
|
||||
end
|
||||
end
|
||||
return
|
||||
@ -344,23 +344,27 @@ local function create_inner_content(surface, pos, noise)
|
||||
end
|
||||
|
||||
local function process_entity(e)
|
||||
if not e.valid then return end
|
||||
if not e.valid then
|
||||
return
|
||||
end
|
||||
if entity_replacements[e.name] then
|
||||
if e.type == "tree" then
|
||||
if e.type == 'tree' then
|
||||
if math_random(1, 2) == 1 then
|
||||
e.surface.create_entity({name = entity_replacements[e.name], position = e.position})
|
||||
end
|
||||
else
|
||||
e.surface.create_entity({name = entity_replacements[e.name], position = e.position, force = "scrap"})
|
||||
e.surface.create_entity({name = entity_replacements[e.name], position = e.position, force = 'scrap'})
|
||||
end
|
||||
e.destroy()
|
||||
return
|
||||
end
|
||||
|
||||
if e.type == "unit-spawner" then
|
||||
if e.type == 'unit-spawner' then
|
||||
local scraps = scrap.get_scraps()
|
||||
for _, wreck in pairs(e.surface.find_entities_filtered({area = {{e.position.x - 4, e.position.y - 4}, {e.position.x + 4, e.position.y + 4}}, name = scraps})) do
|
||||
if wreck.valid then wreck.destroy() end
|
||||
if wreck.valid then
|
||||
wreck.destroy()
|
||||
end
|
||||
end
|
||||
return
|
||||
end
|
||||
@ -382,7 +386,7 @@ local function on_chunk_generated(event)
|
||||
table_insert(tiles, {name = tile_replacements[tile.name], position = pos})
|
||||
end
|
||||
|
||||
if not tile.collides_with("player-layer") then
|
||||
if not tile.collides_with('player-layer') then
|
||||
local noise = get_noise(1, pos)
|
||||
if noise > 0.43 or noise < -0.43 then
|
||||
if math_random(1, 3) ~= 1 then
|
||||
@ -400,7 +404,6 @@ local function on_chunk_generated(event)
|
||||
create_inner_content(surface, pos, noise)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
surface.set_tiles(tiles, true)
|
||||
@ -409,11 +412,15 @@ local function on_chunk_generated(event)
|
||||
process_entity(e)
|
||||
end
|
||||
|
||||
if global.spawn_generated then return end
|
||||
if left_top.x < 96 then return end
|
||||
if global.spawn_generated then
|
||||
return
|
||||
end
|
||||
if left_top.x < 96 then
|
||||
return
|
||||
end
|
||||
map_functions.draw_rainbow_patch_v2({x = 0, y = 0}, surface, 12, 2500)
|
||||
local p = surface.find_non_colliding_position("character-corpse", {2,-2}, 32, 2)
|
||||
local e = surface.create_entity({name = "character-corpse", position = p})
|
||||
local p = surface.find_non_colliding_position('character-corpse', {2, -2}, 32, 2)
|
||||
local e = surface.create_entity({name = 'character-corpse', position = p})
|
||||
local scraps = scrap.get_scrap_true_array()
|
||||
|
||||
for _, e in pairs(surface.find_entities_filtered({area = {{-50, -50}, {50, 50}}})) do
|
||||
@ -424,7 +431,7 @@ local function on_chunk_generated(event)
|
||||
end
|
||||
end
|
||||
if e.valid then
|
||||
if distance_to_center < 30 and e.name == "gun-turret" then
|
||||
if distance_to_center < 30 and e.name == 'gun-turret' then
|
||||
e.destroy()
|
||||
end
|
||||
end
|
||||
@ -433,10 +440,14 @@ local function on_chunk_generated(event)
|
||||
end
|
||||
|
||||
local function on_chunk_charted(event)
|
||||
if not global.chunks_charted then global.chunks_charted = {} end
|
||||
if not global.chunks_charted then
|
||||
global.chunks_charted = {}
|
||||
end
|
||||
local surface = game.surfaces[event.surface_index]
|
||||
local position = event.position
|
||||
if global.chunks_charted[tostring(position.x) .. tostring(position.y)] then return end
|
||||
if global.chunks_charted[tostring(position.x) .. tostring(position.y)] then
|
||||
return
|
||||
end
|
||||
global.chunks_charted[tostring(position.x) .. tostring(position.y)] = true
|
||||
|
||||
local decorative_names = {}
|
||||
@ -473,28 +484,30 @@ end
|
||||
local function on_player_joined_game(event)
|
||||
local player = game.players[event.player_index]
|
||||
if player.online_time == 0 then
|
||||
player.insert({name = "pistol", count = 1})
|
||||
player.insert({name = "firearm-magazine", count = 16})
|
||||
player.insert({name = 'pistol', count = 1})
|
||||
player.insert({name = 'firearm-magazine', count = 16})
|
||||
end
|
||||
|
||||
if global.map_init_done then return end
|
||||
if global.map_init_done then
|
||||
return
|
||||
end
|
||||
|
||||
game.forces["player"].technologies["optics"].researched = true
|
||||
game.forces['player'].technologies['optics'].researched = true
|
||||
|
||||
game.surfaces["nauvis"].ticks_per_day = game.surfaces["nauvis"].ticks_per_day * 2
|
||||
game.surfaces["nauvis"].min_brightness = 0.08
|
||||
game.surfaces["nauvis"].daytime = 0.7
|
||||
game.surfaces['nauvis'].ticks_per_day = game.surfaces['nauvis'].ticks_per_day * 2
|
||||
game.surfaces['nauvis'].min_brightness = 0.08
|
||||
game.surfaces['nauvis'].daytime = 0.7
|
||||
|
||||
game.create_force("scrap")
|
||||
game.create_force("scrap_defense")
|
||||
game.create_force('scrap')
|
||||
game.create_force('scrap_defense')
|
||||
game.forces.player.set_friend('scrap', true)
|
||||
game.forces.enemy.set_friend('scrap', true)
|
||||
game.forces.scrap.set_friend('player', true)
|
||||
game.forces.scrap.set_friend('enemy', true)
|
||||
game.forces.scrap.share_chart = false
|
||||
|
||||
game.forces.scrap_defense.set_friend("enemy",true)
|
||||
game.forces.enemy.set_friend("scrap_defense", true)
|
||||
game.forces.scrap_defense.set_friend('enemy', true)
|
||||
game.forces.enemy.set_friend('scrap_defense', true)
|
||||
|
||||
global.map_init_done = true
|
||||
end
|
||||
@ -502,29 +515,39 @@ end
|
||||
local function on_force_created(event)
|
||||
event.force.set_friend(game.forces.scrap, true)
|
||||
game.forces.scrap.set_friend(event.force, true)
|
||||
event.force.technologies["optics"].researched = true
|
||||
event.force.technologies['optics'].researched = true
|
||||
end
|
||||
|
||||
local function on_player_mined_entity(event)
|
||||
local entity = event.entity
|
||||
if not entity.valid then return end
|
||||
if not entity.valid then
|
||||
return
|
||||
end
|
||||
|
||||
local scraps = {
|
||||
["crash-site-spaceship-wreck-small-1"] = true,
|
||||
["crash-site-spaceship-wreck-small-2"] = true,
|
||||
["crash-site-spaceship-wreck-small-3"] = true,
|
||||
["crash-site-spaceship-wreck-small-4"] = true,
|
||||
["crash-site-spaceship-wreck-small-5"] = true,
|
||||
["crash-site-spaceship-wreck-small-6"] = true
|
||||
['crash-site-spaceship-wreck-small-1'] = true,
|
||||
['crash-site-spaceship-wreck-small-2'] = true,
|
||||
['crash-site-spaceship-wreck-small-3'] = true,
|
||||
['crash-site-spaceship-wreck-small-4'] = true,
|
||||
['crash-site-spaceship-wreck-small-5'] = true,
|
||||
['crash-site-spaceship-wreck-small-6'] = true
|
||||
}
|
||||
|
||||
if scraps[entity.name] then
|
||||
if math_random(1,40) == 1 then unearthing_biters(entity.surface, entity.position, math_random(4,12)) end
|
||||
if math_random(1,80) == 1 then unearthing_worm(entity.surface, entity.position) end
|
||||
if math_random(1,160) == 1 then tick_tack_trap(entity.surface, entity.position) end
|
||||
if math_random(1, 40) == 1 then
|
||||
unearthing_biters(entity.surface, entity.position, math_random(4, 12))
|
||||
end
|
||||
if math_random(1, 80) == 1 then
|
||||
unearthing_worm(entity.surface, entity.position)
|
||||
end
|
||||
if math_random(1, 160) == 1 then
|
||||
tick_tack_trap(entity.surface, entity.position)
|
||||
end
|
||||
end
|
||||
|
||||
if entity.force.name ~= "scrap" then return end
|
||||
if entity.force.name ~= 'scrap' then
|
||||
return
|
||||
end
|
||||
local positions = {}
|
||||
local r = math.ceil(entity.prototype.max_health / 32)
|
||||
for x = r * -1, r, 1 do
|
||||
@ -555,31 +578,34 @@ end
|
||||
|
||||
local on_init = function()
|
||||
local T = Map.Pop_info()
|
||||
T.main_caption = "J u n k y a r d"
|
||||
T.sub_caption = " ..the scrap is your friend.."
|
||||
T.text = table.concat({
|
||||
"Citizen Log #468-2A-3287, Freelancer Cole\n",
|
||||
"\n",
|
||||
"To whoever is reading this message,\n",
|
||||
"i have most likely already left this doomed place, or... well..\n",
|
||||
"\n",
|
||||
"I am stranded on this foreign world since months and i have given up on fixing my ships transceiver.\n",
|
||||
T.main_caption = 'J u n k y a r d'
|
||||
T.sub_caption = ' ..the scrap is your friend..'
|
||||
T.text =
|
||||
table.concat(
|
||||
{
|
||||
'Citizen Log #468-2A-3287, Freelancer Cole\n',
|
||||
'\n',
|
||||
'To whoever is reading this message,\n',
|
||||
'i have most likely already left this doomed place, or... well..\n',
|
||||
'\n',
|
||||
'I am stranded on this foreign world since months and i have given up on fixing my ships transceiver.\n',
|
||||
"Things aren't looking too good, i must admit.\n",
|
||||
"The rust and devastation tells a story of an advanced civilization,\n",
|
||||
"which seems to have evacuated their home long time ago.\n",
|
||||
"\n",
|
||||
"Any natural resources are rare and the ones worth while are too hard for me to reach.\n",
|
||||
"Luckily, the wrecks yield all kinds of useful scraps, but also various dangers.\n",
|
||||
"Almost lost half a leg some days ago while digging out a crate.\n",
|
||||
"\n",
|
||||
"The wildlife is extremely aggressive, especially at the time of night.\n",
|
||||
"Most of these insect appearing like creatures seem to live underground.\n",
|
||||
"Stay near your light sources, if you want to have a chance of surviving here!!\n",
|
||||
"\n",
|
||||
"I must make a move now, hopefully will find those missing parts.\n",
|
||||
"\n",
|
||||
"###Log End###"
|
||||
})
|
||||
'The rust and devastation tells a story of an advanced civilization,\n',
|
||||
'which seems to have evacuated their home long time ago.\n',
|
||||
'\n',
|
||||
'Any natural resources are rare and the ones worth while are too hard for me to reach.\n',
|
||||
'Luckily, the wrecks yield all kinds of useful scraps, but also various dangers.\n',
|
||||
'Almost lost half a leg some days ago while digging out a crate.\n',
|
||||
'\n',
|
||||
'The wildlife is extremely aggressive, especially at the time of night.\n',
|
||||
'Most of these insect appearing like creatures seem to live underground.\n',
|
||||
'Stay near your light sources, if you want to have a chance of surviving here!!\n',
|
||||
'\n',
|
||||
'I must make a move now, hopefully will find those missing parts.\n',
|
||||
'\n',
|
||||
'###Log End###'
|
||||
}
|
||||
)
|
||||
T.main_caption_color = {r = 150, g = 150, b = 0}
|
||||
T.sub_caption_color = {r = 0, g = 150, b = 0}
|
||||
end
|
||||
|
@ -9,7 +9,7 @@ require 'modules.rocks_heal_over_time'
|
||||
require 'maps.junkyard_pvp.share_chat'
|
||||
require 'modules.mineable_wreckage_yields_scrap'
|
||||
local Team = require 'maps.junkyard_pvp.team'
|
||||
local Reset = require 'functions.soft_reset'
|
||||
local Reset = require 'utils.functions.soft_reset'
|
||||
local Map = require 'modules.map_info'
|
||||
local math_random = math.random
|
||||
local Public = {}
|
||||
|
@ -3,7 +3,7 @@ local math_abs = math.abs
|
||||
local math_random = math.random
|
||||
local math_floor = math.floor
|
||||
local Treasure = require 'maps.junkyard_pvp.treasure'
|
||||
local Map_functions = require 'tools.map_functions'
|
||||
local Map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local rock_raffle = {'sand-rock-big', 'sand-rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-huge'}
|
||||
local spawner_raffle = {'biter-spawner', 'biter-spawner', 'biter-spawner', 'spitter-spawner'}
|
||||
@ -96,11 +96,7 @@ function Public.create_mirror_surface()
|
||||
end
|
||||
end
|
||||
end
|
||||
for _, e in pairs(
|
||||
surface.find_entities_filtered(
|
||||
{area = {{cargo_wagon_position.x - r, cargo_wagon_position.y - r}, {cargo_wagon_position.x + r, cargo_wagon_position.y + r}}, force = {'neutral', 'enemy'}}
|
||||
)
|
||||
) do
|
||||
for _, e in pairs(surface.find_entities_filtered({area = {{cargo_wagon_position.x - r, cargo_wagon_position.y - r}, {cargo_wagon_position.x + r, cargo_wagon_position.y + r}}, force = {'neutral', 'enemy'}})) do
|
||||
if math.sqrt(e.position.x ^ 2 + e.position.y ^ 2) < r then
|
||||
e.destroy()
|
||||
end
|
||||
|
@ -8,11 +8,11 @@ require 'modules.satellite_score'
|
||||
local Event = require 'utils.event'
|
||||
local Server = require 'utils.server'
|
||||
local Global = require 'utils.global'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local Score = require 'utils.gui.score'
|
||||
local unique_rooms = require 'maps.labyrinth_unique_rooms'
|
||||
local SoftReset = require 'functions.soft_reset'
|
||||
local SoftReset = require 'utils.functions.soft_reset'
|
||||
local Autostash = require 'modules.autostash'
|
||||
local BottomFrame = require 'utils.gui.bottom_frame'
|
||||
local this = {
|
||||
@ -1022,7 +1022,9 @@ end
|
||||
|
||||
local function on_entity_died(event)
|
||||
local entity = event.entity
|
||||
if not entity or not entity.valid then return end
|
||||
if not entity or not entity.valid then
|
||||
return
|
||||
end
|
||||
local name = entity.name
|
||||
local position = entity.position
|
||||
local evolution = game.forces.enemy.evolution_factor
|
||||
@ -1235,7 +1237,9 @@ local loaders = {
|
||||
['express-loader'] = true
|
||||
}
|
||||
local function on_built_entity(event)
|
||||
if not event.created_entity or not event.created_entity.valid then return end
|
||||
if not event.created_entity or not event.created_entity.valid then
|
||||
return
|
||||
end
|
||||
local get_score = Score.get_table().score_table
|
||||
local name = event.created_entity.name
|
||||
if inserters[name] then
|
||||
|
@ -12,7 +12,7 @@ require 'modules.flashlight_toggle_button'
|
||||
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local event = require 'utils.event'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local math_random = math.random
|
||||
require 'utils.table'
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
--luacheck: ignore
|
||||
require 'functions.maze'
|
||||
require 'utils.functions.maze'
|
||||
|
||||
local event = require 'utils.event'
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
--luacheck: ignore
|
||||
|
||||
local Public = {}
|
||||
local LootRaffle = require "functions.loot_raffle"
|
||||
local LootRaffle = require "utils.functions.loot_raffle"
|
||||
local Get_noise = require "utils.get_noise"
|
||||
|
||||
local safe_zone_radius = 16
|
||||
|
@ -18,7 +18,7 @@ local difficulty_factor = 4
|
||||
local event = require 'utils.event'
|
||||
local math_random = math.random
|
||||
local insert = table.insert
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'
|
||||
local simplex_noise = simplex_noise.d2
|
||||
|
||||
|
@ -4,8 +4,8 @@
|
||||
global.offline_loot = true
|
||||
local darkness = false
|
||||
|
||||
require 'functions.soft_reset'
|
||||
require 'functions.basic_markets'
|
||||
require 'utils.functions.soft_reset'
|
||||
require 'utils.functions.basic_markets'
|
||||
|
||||
local Gui = require 'utils.gui'
|
||||
local Map_score = require 'utils.gui.map_score'
|
||||
@ -25,7 +25,7 @@ local Immersive_cargo_wagons = require 'modules.immersive_cargo_wagons.main'
|
||||
require 'maps.mountain_fortress_v2.flamethrower_nerf'
|
||||
local BiterRolls = require 'modules.wave_defense.biter_rolls'
|
||||
local BiterHealthBooster = require 'modules.biter_health_booster'
|
||||
local Reset = require 'functions.soft_reset'
|
||||
local Reset = require 'utils.functions.soft_reset'
|
||||
local Pets = require 'modules.biter_pets'
|
||||
local Map = require 'modules.map_info'
|
||||
local WD = require 'modules.wave_defense.table'
|
||||
|
@ -2,7 +2,7 @@
|
||||
local Biters = require 'modules.wave_defense.biter_rolls'
|
||||
local Immersive_cargo_wagons = require 'modules.immersive_cargo_wagons.main'
|
||||
local Treasure = require 'maps.mountain_fortress_v2.treasure'
|
||||
local Market = require 'functions.basic_markets'
|
||||
local Market = require 'utils.functions.basic_markets'
|
||||
local math_random = math.random
|
||||
local math_floor = math.floor
|
||||
local math_abs = math.abs
|
||||
|
@ -5,7 +5,7 @@ local math_random = math.random
|
||||
local math_floor = math.floor
|
||||
local math_abs = math.abs
|
||||
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
|
||||
local blacklist = {
|
||||
['cargo-wagon'] = true,
|
||||
|
@ -1,7 +1,7 @@
|
||||
local Public = require 'maps.mountain_fortress_v3.table'
|
||||
local ICW = require 'maps.mountain_fortress_v3.icw.main'
|
||||
local Task = require 'utils.task_token'
|
||||
local MapFunctions = require 'tools.map_functions'
|
||||
local MapFunctions = require 'utils.tools.map_functions'
|
||||
|
||||
local random = math.random
|
||||
local floor = math.floor
|
||||
|
@ -1,4 +1,4 @@
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
local Public = require 'maps.mountain_fortress_v3.table'
|
||||
local random = math.random
|
||||
local abs = math.abs
|
||||
|
@ -3,7 +3,7 @@ local Public = {}
|
||||
local math_random = math.random
|
||||
local Immersive_cargo_wagons = require 'modules.immersive_cargo_wagons.main'
|
||||
local GetNoise = require 'utils.get_noise'
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
|
||||
local wagon_raffle = {'cargo-wagon', 'cargo-wagon', 'cargo-wagon', 'locomotive', 'fluid-wagon'}
|
||||
local rock_raffle = {'sand-rock-big', 'sand-rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-huge'}
|
||||
|
@ -10,7 +10,7 @@ local Team = require 'maps.native_war.team'
|
||||
local Terrain = require 'maps.native_war.terrain'
|
||||
local Init = require 'maps.native_war.init'
|
||||
local Settings = require 'maps.native_war.settings'
|
||||
local Reset = require 'functions.soft_reset'
|
||||
local Reset = require 'utils.functions.soft_reset'
|
||||
local Map = require 'maps.native_war.map_info'
|
||||
local Team_manager = require 'maps.native_war.team_manager'
|
||||
local math_random = math.random
|
||||
|
@ -1,7 +1,7 @@
|
||||
--luacheck: ignore
|
||||
local math_abs = math.abs
|
||||
local math_random = math.random
|
||||
local Map_functions = require 'tools.map_functions'
|
||||
local Map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local Public = {}
|
||||
|
||||
@ -86,8 +86,7 @@ local function create_markets(surface)
|
||||
global.market1 = e
|
||||
|
||||
local energy_source = {type = 'electric', buffer_capacity = '10GJ', usage_priority = 'tertiary', input_flow_limit = '1GW', output_flow_limit = '0W', drain = '0W'}
|
||||
local eei =
|
||||
surface.create_entity({type = 'electric-energy-interface', name = 'electric-energy-interface', energy_source = energy_source, position = {-200, -2}, force = 'west'})
|
||||
local eei = surface.create_entity({type = 'electric-energy-interface', name = 'electric-energy-interface', energy_source = energy_source, position = {-200, -2}, force = 'west'})
|
||||
local ep = surface.create_entity({name = 'small-electric-pole', position = {-200, -5}, force = 'west'})
|
||||
|
||||
ep.destructible = false
|
||||
@ -109,8 +108,7 @@ local function create_markets(surface)
|
||||
global.market = f
|
||||
|
||||
local energy_source = {type = 'electric', buffer_capacity = '10GJ', usage_priority = 'tertiary', input_flow_limit = '1GW', output_flow_limit = '0W', drain = '0W'}
|
||||
local eei2 =
|
||||
surface.create_entity({type = 'electric-energy-interface', name = 'electric-energy-interface', energy_source = energy_source, position = {201, -2}, force = 'east'})
|
||||
local eei2 = surface.create_entity({type = 'electric-energy-interface', name = 'electric-energy-interface', energy_source = energy_source, position = {201, -2}, force = 'east'})
|
||||
local ep2 = surface.create_entity({name = 'small-electric-pole', position = {200, -5}, force = 'east'})
|
||||
|
||||
ep2.destructible = false
|
||||
@ -346,12 +344,7 @@ local function out_of_map_area(event)
|
||||
local p = {x = left_top.x + x, y = left_top.y + y}
|
||||
if is_out_of_map(p) then
|
||||
if
|
||||
(p.x == -137 or p.x == -138 or p.x == -102 or p.x == -103 or p.x == -78 or p.x == -77 or p.x == -42 or p.x == -43 or p.x == -17 or p.x == -18 or p.x == 17 or
|
||||
p.x == 18 or
|
||||
p.x == 42 or
|
||||
p.x == 43 or
|
||||
p.x == 77 or
|
||||
p.x == 78) and
|
||||
(p.x == -137 or p.x == -138 or p.x == -102 or p.x == -103 or p.x == -78 or p.x == -77 or p.x == -42 or p.x == -43 or p.x == -17 or p.x == -18 or p.x == 17 or p.x == 18 or p.x == 42 or p.x == 43 or p.x == 77 or p.x == 78) and
|
||||
(p.y == -32 or p.y == -33 or p.y == -95 or p.y == -96)
|
||||
then
|
||||
surface.set_tiles({{name = 'hazard-concrete-right', position = p}}, true)
|
||||
@ -436,11 +429,7 @@ local function out_of_map_area(event)
|
||||
e.minable = false
|
||||
end
|
||||
elseif
|
||||
(p.x == 137 or p.x == 138 or p.x == 102 or p.x == 103 or p.x == 78 or p.x == 77 or p.x == 42 or p.x == 43 or p.x == 17 or p.x == 18 or p.x == -17 or p.x == -18 or
|
||||
p.x == -42 or
|
||||
p.x == -43 or
|
||||
p.x == -77 or
|
||||
p.x == -78) and
|
||||
(p.x == 137 or p.x == 138 or p.x == 102 or p.x == 103 or p.x == 78 or p.x == 77 or p.x == 42 or p.x == 43 or p.x == 17 or p.x == 18 or p.x == -17 or p.x == -18 or p.x == -42 or p.x == -43 or p.x == -77 or p.x == -78) and
|
||||
(p.y == 32 or p.y == 33 or p.y == 95 or p.y == 96)
|
||||
then
|
||||
surface.set_tiles({{name = 'hazard-concrete-right', position = p}}, true)
|
||||
|
@ -4,7 +4,7 @@
|
||||
local event = require 'utils.event'
|
||||
local math_random = math.random
|
||||
local insert = table.insert
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'
|
||||
local simplex_noise = simplex_noise.d2
|
||||
require 'maps.nightfall_map_intro'
|
||||
@ -420,14 +420,8 @@ local function generate_spawn_area(surface)
|
||||
for y = -160, 160, 1 do
|
||||
local pos = {x = x, y = y}
|
||||
if pos.x > fort_size * -1 and pos.x < fort_size and pos.y > fort_size * -1 and pos.y < fort_size then
|
||||
if
|
||||
pos.x > (fort_size - fort_wall_width) * -1 and pos.x < fort_size - fort_wall_width and pos.y > (fort_size - fort_wall_width) * -1 and
|
||||
pos.y < fort_size - fort_wall_width
|
||||
then
|
||||
if
|
||||
pos.x <= (fort_size - fort_wall_width * 2) * -1 or pos.x >= (fort_size - fort_wall_width * 2) or pos.y <= (fort_size - fort_wall_width * 2) * -1 or
|
||||
pos.y >= (fort_size - fort_wall_width * 2)
|
||||
then
|
||||
if pos.x > (fort_size - fort_wall_width) * -1 and pos.x < fort_size - fort_wall_width and pos.y > (fort_size - fort_wall_width) * -1 and pos.y < fort_size - fort_wall_width then
|
||||
if pos.x <= (fort_size - fort_wall_width * 2) * -1 or pos.x >= (fort_size - fort_wall_width * 2) or pos.y <= (fort_size - fort_wall_width * 2) * -1 or pos.y >= (fort_size - fort_wall_width * 2) then
|
||||
table.insert(turrets, {name = 'gun-turret', position = {x = pos.x, y = pos.y}, force = 'player'})
|
||||
end
|
||||
end
|
||||
@ -440,10 +434,7 @@ local function generate_spawn_area(surface)
|
||||
|
||||
table.insert(tiles, {name = 'stone-path', position = {x = pos.x, y = pos.y}})
|
||||
|
||||
if
|
||||
pos.x <= (fort_size - fort_wall_width) * -1 or pos.x >= (fort_size - fort_wall_width) or pos.y <= (fort_size - fort_wall_width) * -1 or
|
||||
pos.y >= (fort_size - fort_wall_width)
|
||||
then
|
||||
if pos.x <= (fort_size - fort_wall_width) * -1 or pos.x >= (fort_size - fort_wall_width) or pos.y <= (fort_size - fort_wall_width) * -1 or pos.y >= (fort_size - fort_wall_width) then
|
||||
if math_random(1, 3) ~= 1 then
|
||||
table.insert(entities, {name = 'stone-wall', position = {x = pos.x, y = pos.y}, force = 'player'})
|
||||
end
|
||||
|
@ -16,11 +16,11 @@ require 'modules.trees_randomly_die'
|
||||
|
||||
require 'maps.overgrowth_map_info'
|
||||
|
||||
local Reset = require 'functions.soft_reset'
|
||||
local kaboom = require 'functions.omegakaboom'
|
||||
local Reset = require 'utils.functions.soft_reset'
|
||||
local kaboom = require 'utils.functions.omegakaboom'
|
||||
local Difficulty = require 'modules.difficulty_vote'
|
||||
|
||||
local unearthing_biters = require 'functions.unearthing_biters'
|
||||
local unearthing_biters = require 'utils.functions.unearthing_biters'
|
||||
|
||||
local event = require 'utils.event'
|
||||
local math_random = math.random
|
||||
|
@ -13,7 +13,7 @@ local Session = require 'utils.datastore.session_data'
|
||||
local Difficulty = require 'modules.difficulty_vote'
|
||||
local Map = require 'modules.map_info'
|
||||
local Event = require 'utils.event'
|
||||
local Reset = require 'functions.soft_reset'
|
||||
local Reset = require 'utils.functions.soft_reset'
|
||||
local Server = require 'utils.server'
|
||||
local Poll = require 'utils.gui.poll'
|
||||
local boss_biter = require 'maps.pidgeotto.boss_biters'
|
||||
|
@ -1,6 +1,6 @@
|
||||
local Event = require 'utils.event'
|
||||
local Builder = require 'maps.pidgeotto.b'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local FDT = require 'maps.pidgeotto.table'
|
||||
local math_random = math.random
|
||||
|
@ -1,6 +1,5 @@
|
||||
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/danielmartin0/ComfyFactorio-Pirates.
|
||||
|
||||
|
||||
local Math = require 'maps.pirates.math'
|
||||
local Raffle = require 'maps.pirates.raffle'
|
||||
local Server = require 'utils.server'
|
||||
@ -11,14 +10,13 @@ local _inspect = require 'utils.inspect'.inspect
|
||||
|
||||
-- local IslandEnum = require 'maps.pirates.surfaces.islands.island_enum'
|
||||
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
-- local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
-- local perlin_noise = require 'utils.perlin_noise'
|
||||
-- local Force_health_booster = require 'modules.force_health_booster'
|
||||
|
||||
-- == Common variables and functions used throughout pirate ship files
|
||||
|
||||
|
||||
local Public = {}
|
||||
|
||||
Public.activeCrewsCap = 3
|
||||
@ -70,7 +68,6 @@ Public.lobby_force_name = 'player'
|
||||
|
||||
-- Public.mainshop_rate_limit_ticks = 11
|
||||
|
||||
|
||||
function Public.ore_real_to_abstract(amount)
|
||||
return amount / 1800
|
||||
end
|
||||
@ -94,11 +91,19 @@ function Public.difficulty_scale()
|
||||
return 0.75
|
||||
end
|
||||
end
|
||||
function Public.capacity() return Memory.get_crew_memory().capacity end
|
||||
function Public.capacity()
|
||||
return Memory.get_crew_memory().capacity
|
||||
end
|
||||
-- function Public.mode() return Memory.get_crew_memory().mode end
|
||||
function Public.overworldx() return Memory.get_crew_memory().overworldx end
|
||||
function Public.game_completion_progress() return Public.overworldx()/CoreData.victory_x end
|
||||
function Public.game_completion_progress_capped() return Math.clamp(0, 1, Public.overworldx()/CoreData.victory_x) end
|
||||
function Public.overworldx()
|
||||
return Memory.get_crew_memory().overworldx
|
||||
end
|
||||
function Public.game_completion_progress()
|
||||
return Public.overworldx() / CoreData.victory_x
|
||||
end
|
||||
function Public.game_completion_progress_capped()
|
||||
return Math.clamp(0, 1, Public.overworldx() / CoreData.victory_x)
|
||||
end
|
||||
function Public.capacity_scale()
|
||||
local capacity = Public.capacity()
|
||||
if not capacity then --e.g. for EE wattage on boats not owned by a crew
|
||||
@ -119,7 +124,9 @@ end
|
||||
function Public.activecrewcount()
|
||||
local global_memory = Memory.get_global_memory()
|
||||
local memory = Memory.get_crew_memory()
|
||||
if not Public.is_id_valid(memory.id) then return 0 end
|
||||
if not Public.is_id_valid(memory.id) then
|
||||
return 0
|
||||
end
|
||||
|
||||
local count = 0
|
||||
for _, id in pairs(memory.crewplayerindices) do
|
||||
@ -132,81 +139,76 @@ function Public.activecrewcount()
|
||||
return count
|
||||
end
|
||||
|
||||
|
||||
function Public.notify_game(message, color_override)
|
||||
color_override = color_override or CoreData.colors.notify_game
|
||||
game.print({"", '>> ', message}, color_override)
|
||||
game.print({'', '>> ', message}, color_override)
|
||||
end
|
||||
|
||||
function Public.notify_lobby(message, color_override)
|
||||
color_override = color_override or CoreData.colors.notify_lobby
|
||||
game.forces[Public.lobby_force_name].print({"", '>> ', message}, color_override)
|
||||
game.forces[Public.lobby_force_name].print({'', '>> ', message}, color_override)
|
||||
end
|
||||
|
||||
function Public.notify_force(force, message, color_override)
|
||||
color_override = color_override or CoreData.colors.notify_force
|
||||
force.print({"", '>> ', message}, color_override)
|
||||
force.print({'', '>> ', message}, color_override)
|
||||
end
|
||||
|
||||
function Public.notify_force_light(force, message, color_override)
|
||||
color_override = color_override or CoreData.colors.notify_force_light
|
||||
force.print({"", '>> ', message}, color_override)
|
||||
force.print({'', '>> ', message}, color_override)
|
||||
end
|
||||
|
||||
function Public.notify_force_error(force, message, color_override)
|
||||
color_override = color_override or CoreData.colors.notify_error
|
||||
force.print({"", '>> ', message}, color_override)
|
||||
force.play_sound{path = "utility/cannot_build"}
|
||||
force.print({'', '>> ', message}, color_override)
|
||||
force.play_sound {path = 'utility/cannot_build'}
|
||||
end
|
||||
|
||||
function Public.notify_player_error(player, message, color_override)
|
||||
color_override = color_override or CoreData.colors.notify_error
|
||||
player.print({"", '## ', {'pirates.notify_whisper'}, ' ', message}, color_override)
|
||||
player.play_sound{path = "utility/cannot_build"}
|
||||
player.print({'', '## ', {'pirates.notify_whisper'}, ' ', message}, color_override)
|
||||
player.play_sound {path = 'utility/cannot_build'}
|
||||
end
|
||||
|
||||
function Public.notify_player_expected(player, message, color_override)
|
||||
color_override = color_override or CoreData.colors.notify_player_expected
|
||||
player.print({"", '## ', {'pirates.notify_whisper'}, ' ', message}, color_override)
|
||||
player.print({'', '## ', {'pirates.notify_whisper'}, ' ', message}, color_override)
|
||||
end
|
||||
|
||||
function Public.notify_player_announce(player, message, color_override)
|
||||
color_override = color_override or CoreData.colors.notify_player_announce
|
||||
player.print({"", '## ', {'pirates.notify_whisper'}, ' ', message}, color_override)
|
||||
player.print({'', '## ', {'pirates.notify_whisper'}, ' ', message}, color_override)
|
||||
end
|
||||
|
||||
function Public.parrot_speak(force, message)
|
||||
force.print({"", {'pirates.notify_parrot'}, ' ', message}, CoreData.colors.parrot)
|
||||
force.print({'', {'pirates.notify_parrot'}, ' ', message}, CoreData.colors.parrot)
|
||||
|
||||
local memory = Memory.get_crew_memory()
|
||||
Server.to_discord_embed_raw({"", '[' .. memory.name .. '] ', {'pirates.notify_parrot'}, ' ', message}, true)
|
||||
Server.to_discord_embed_raw({'', '[' .. memory.name .. '] ', {'pirates.notify_parrot'}, ' ', message}, true)
|
||||
end
|
||||
|
||||
|
||||
function Public.flying_text(surface, position, text)
|
||||
surface.create_entity(
|
||||
{
|
||||
name = 'flying-text',
|
||||
position = {position.x - 0.7, position.y - 3.05},
|
||||
text = text,
|
||||
text = text
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
function Public.flying_text_small(surface, position, text) --differs just in the location of the text, more suitable for small things like '+'
|
||||
surface.create_entity(
|
||||
{
|
||||
name = 'flying-text',
|
||||
position = {position.x - 0.08, position.y - 1.5},
|
||||
-- position = {position.x - 0.06, position.y - 1.5},
|
||||
text = text,
|
||||
text = text
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
|
||||
function Public.processed_loot_data(raw_data)
|
||||
local ret = {}
|
||||
for i = 1, #raw_data do
|
||||
@ -232,8 +234,6 @@ end
|
||||
-- {20, 0, 1, false, 'flying-robot-frame', 20, 35},
|
||||
-- }
|
||||
|
||||
|
||||
|
||||
--@TODO: Replace this old function with the newer code in raffle.lua
|
||||
function Public.raffle_from_processed_loot_data(processed_loot_data, how_many, game_completion_progress)
|
||||
local ret = {}
|
||||
@ -279,10 +279,6 @@ function Public.raffle_from_processed_loot_data(processed_loot_data, how_many, g
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function Public.give(player, stacks, spill_position, short_form, spill_surface, flying_text_position)
|
||||
-- stack elements of form {name = '', count = '', color = {r = , g = , b = }}
|
||||
-- to just spill on the ground, pass player and nill and give a position and surface directly
|
||||
@ -294,14 +290,23 @@ function Public.give(player, stacks, spill_position, short_form, spill_surface,
|
||||
local text2 = ''
|
||||
|
||||
local stacks2 = stacks
|
||||
table.sort(stacks2, function(a,b) return a.name < b.name end)
|
||||
table.sort(
|
||||
stacks2,
|
||||
function(a, b)
|
||||
return a.name < b.name
|
||||
end
|
||||
)
|
||||
|
||||
if not (spill_surface and spill_surface.valid) then return end
|
||||
if not (spill_surface and spill_surface.valid) then
|
||||
return
|
||||
end
|
||||
local inv
|
||||
|
||||
if player then
|
||||
inv = player.get_inventory(defines.inventory.character_main)
|
||||
if not (inv and inv.valid) then return end
|
||||
if not (inv and inv.valid) then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
for j = 1, #stacks2 do
|
||||
@ -309,7 +314,9 @@ function Public.give(player, stacks, spill_position, short_form, spill_surface,
|
||||
local itemname, itemcount, flying_text_color = stack.name, stack.count or 1, stack.color or (CoreData.colors[stack.name] or {r = 1, g = 1, b = 1})
|
||||
local itemcount_remember = itemcount
|
||||
|
||||
if not itemname then return end
|
||||
if not itemname then
|
||||
return
|
||||
end
|
||||
|
||||
if itemcount > 0 then
|
||||
if player then
|
||||
@ -362,7 +369,6 @@ function Public.give(player, stacks, spill_position, short_form, spill_surface,
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if player and (not short_form) then
|
||||
-- count total of that item they have:
|
||||
local new_total_count = 0
|
||||
@ -400,8 +406,6 @@ function Public.give(player, stacks, spill_position, short_form, spill_surface,
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function Public.is_captain(player)
|
||||
local memory = Memory.get_crew_memory()
|
||||
|
||||
@ -412,7 +416,6 @@ function Public.is_captain(player)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function Public.is_officer(player_index)
|
||||
local memory = Memory.get_crew_memory()
|
||||
|
||||
@ -432,7 +435,6 @@ end
|
||||
-- -- return Math.floor(surplus_evo*3*1000)/1000
|
||||
-- end
|
||||
|
||||
|
||||
function Public.set_biter_surplus_evo_modifiers()
|
||||
local memory = Memory.get_crew_memory()
|
||||
local enemy_force = memory.enemy_force
|
||||
@ -446,11 +448,11 @@ function Public.set_biter_surplus_evo_modifiers()
|
||||
-- local health_fractional_mod
|
||||
|
||||
if surplus > 0 then
|
||||
damage_fractional_mod = Public.surplus_evo_biter_damage_modifier(surplus)
|
||||
-- health_fractional_mod = Public.surplus_evo_biter_health_fractional_modifier(surplus)
|
||||
damage_fractional_mod = Public.surplus_evo_biter_damage_modifier(surplus)
|
||||
else
|
||||
damage_fractional_mod = 0
|
||||
-- health_fractional_mod = 0
|
||||
damage_fractional_mod = 0
|
||||
end
|
||||
enemy_force.set_ammo_damage_modifier('melee', damage_fractional_mod)
|
||||
enemy_force.set_ammo_damage_modifier('biological', damage_fractional_mod)
|
||||
@ -485,8 +487,6 @@ function Public.increment_evo(evolution)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function Public.current_destination()
|
||||
local memory = Memory.get_crew_memory()
|
||||
|
||||
@ -497,7 +497,6 @@ function Public.current_destination()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function Public.time_adjusted_departure_cost(cost)
|
||||
local memory = Memory.get_crew_memory()
|
||||
|
||||
@ -517,9 +516,9 @@ function Public.time_adjusted_departure_cost(cost)
|
||||
|
||||
local new_cost = {}
|
||||
for name, count in pairs(cost) do
|
||||
if type(count) == "number" then
|
||||
new_cost[name] = Math.floor(count * cost_fraction)
|
||||
if type(count) == 'number' then
|
||||
-- new_cost[name] = Math.ceil(count * cost_fraction)
|
||||
new_cost[name] = Math.floor(count * cost_fraction)
|
||||
else
|
||||
new_cost[name] = count
|
||||
end
|
||||
@ -565,22 +564,24 @@ function Public.time_adjusted_departure_cost(cost)
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
function Public.time_adjusted_departure_cost_resources_strings(memory)
|
||||
-- written to be efficient... only called in the gui after Public.time_adjusted_departure_cost()
|
||||
|
||||
return memory.time_adjusted_departure_cost_memoized.resources_strings
|
||||
end
|
||||
|
||||
|
||||
function Public.query_can_pay_cost_to_leave()
|
||||
local memory = Memory.get_crew_memory()
|
||||
local boat = memory.boat
|
||||
local destination = Public.current_destination()
|
||||
if not (boat and destination) then return end
|
||||
if not (boat and destination) then
|
||||
return
|
||||
end
|
||||
|
||||
local cost = destination.static_params.base_cost_to_undock
|
||||
if not cost then return true end
|
||||
if not cost then
|
||||
return true
|
||||
end
|
||||
|
||||
local adjusted_cost = Public.time_adjusted_departure_cost(cost)
|
||||
|
||||
@ -601,14 +602,14 @@ function Public.query_can_pay_cost_to_leave()
|
||||
return can_leave
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- This function assumes you're placing obstacle boxes in the hold
|
||||
function Public.surface_place_random_obstacle_boxes(surface, center, width, height, spacing_entity, box_size_table, contents)
|
||||
contents = contents or {}
|
||||
|
||||
local memory = Memory.get_crew_memory()
|
||||
if not surface then return end
|
||||
if not surface then
|
||||
return
|
||||
end
|
||||
|
||||
local function boxposition()
|
||||
local p1 = {x = center.x - width / 2 + Math.random(Math.ceil(width)), y = center.y - height / 2 + Math.random(Math.ceil(height))}
|
||||
@ -641,15 +642,17 @@ function Public.surface_place_random_obstacle_boxes(surface, center, width, heig
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function Public.update_boat_stored_resources()
|
||||
local memory = Memory.get_crew_memory()
|
||||
local boat = memory.boat
|
||||
if not boat.stored_resources then return end
|
||||
if not boat.stored_resources then
|
||||
return
|
||||
end
|
||||
local input_chests = boat.input_chests
|
||||
|
||||
if not input_chests then return end
|
||||
if not input_chests then
|
||||
return
|
||||
end
|
||||
|
||||
for i, chest in ipairs(input_chests) do
|
||||
if i > 1 and CoreData.cost_items[i - 1] then
|
||||
@ -664,16 +667,18 @@ function Public.update_boat_stored_resources()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function Public.spend_stored_resources(to_spend)
|
||||
to_spend = to_spend or {}
|
||||
local memory = Memory.get_crew_memory()
|
||||
local boat = memory.boat
|
||||
if not memory.boat.stored_resources then return end
|
||||
if not memory.boat.stored_resources then
|
||||
return
|
||||
end
|
||||
local input_chests = boat.input_chests
|
||||
|
||||
if not input_chests then return end
|
||||
if not input_chests then
|
||||
return
|
||||
end
|
||||
|
||||
for i, chest in ipairs(input_chests) do
|
||||
if i > 1 then
|
||||
@ -708,7 +713,8 @@ function Public.new_healthbar(text, target_entity, max_health, optional_id, heal
|
||||
extra_offset = extra_offset or 0
|
||||
location_override = location_override or Memory.get_crew_memory()
|
||||
|
||||
local render1 = rendering.draw_sprite(
|
||||
local render1 =
|
||||
rendering.draw_sprite(
|
||||
{
|
||||
sprite = 'virtual-signal/signal-white',
|
||||
tint = {0, 200, 0},
|
||||
@ -717,12 +723,13 @@ function Public.new_healthbar(text, target_entity, max_health, optional_id, heal
|
||||
render_layer = 'light-effect',
|
||||
target = target_entity,
|
||||
target_offset = {0, -2.5 + extra_offset},
|
||||
surface = target_entity.surface,
|
||||
surface = target_entity.surface
|
||||
}
|
||||
)
|
||||
local render2
|
||||
if text then
|
||||
render2 = rendering.draw_text(
|
||||
render2 =
|
||||
rendering.draw_text(
|
||||
{
|
||||
color = {255, 255, 255},
|
||||
scale = 1.2 + size * 2,
|
||||
@ -730,7 +737,7 @@ function Public.new_healthbar(text, target_entity, max_health, optional_id, heal
|
||||
target = target_entity,
|
||||
target_offset = {0, -3.6 - size * 0.6 + extra_offset},
|
||||
surface = target_entity.surface,
|
||||
alignment = 'center',
|
||||
alignment = 'center'
|
||||
}
|
||||
)
|
||||
end
|
||||
@ -742,10 +749,12 @@ function Public.new_healthbar(text, target_entity, max_health, optional_id, heal
|
||||
extra_offset = extra_offset,
|
||||
render1 = render1,
|
||||
render2 = render2,
|
||||
id = optional_id,
|
||||
id = optional_id
|
||||
}
|
||||
|
||||
if not location_override.healthbars then location_override.healthbars = {} end
|
||||
if not location_override.healthbars then
|
||||
location_override.healthbars = {}
|
||||
end
|
||||
location_override.healthbars[target_entity.unit_number] = new_healthbar
|
||||
|
||||
Public.update_healthbar_rendering(new_healthbar, health)
|
||||
@ -755,7 +764,9 @@ end
|
||||
|
||||
function Public.transfer_healthbar(old_unit_number, new_entity, location_override)
|
||||
location_override = location_override or Memory.get_crew_memory()
|
||||
if not location_override.healthbars then return end
|
||||
if not location_override.healthbars then
|
||||
return
|
||||
end
|
||||
|
||||
local old_healthbar = location_override.healthbars[old_unit_number]
|
||||
-- local new_unit_number = new_entity.unit_number
|
||||
@ -785,11 +796,15 @@ end
|
||||
function Public.entity_damage_healthbar(entity, damage, location_override)
|
||||
location_override = location_override or Memory.get_crew_memory()
|
||||
|
||||
if not (location_override.healthbars) then return nil end
|
||||
if not (location_override.healthbars) then
|
||||
return nil
|
||||
end
|
||||
|
||||
local unit_number = entity.unit_number
|
||||
local healthbar = location_override.healthbars[unit_number]
|
||||
if not healthbar then return nil end
|
||||
if not healthbar then
|
||||
return nil
|
||||
end
|
||||
|
||||
local new_health = healthbar.health - damage
|
||||
healthbar.health = new_health
|
||||
@ -841,10 +856,7 @@ function Public.spawner_count(surface)
|
||||
return #spawners or 0
|
||||
end
|
||||
|
||||
|
||||
|
||||
function Public.create_poison_clouds(surface, position)
|
||||
|
||||
local random_angles = {Math.rad(Math.random(359)), Math.rad(Math.random(359))}
|
||||
|
||||
surface.create_entity({name = 'poison-cloud', position = {x = position.x, y = position.y}})
|
||||
@ -852,20 +864,22 @@ function Public.create_poison_clouds(surface, position)
|
||||
surface.create_entity({name = 'poison-cloud', position = {x = position.x + 12 * Math.cos(random_angles[2]), y = position.y + 12 * Math.sin(random_angles[2])}})
|
||||
end
|
||||
|
||||
|
||||
function Public.crew_get_crew_members()
|
||||
local memory = Memory.get_crew_memory()
|
||||
if not Public.is_id_valid(memory.id) then return {} end
|
||||
if not Public.is_id_valid(memory.id) then
|
||||
return {}
|
||||
end
|
||||
|
||||
local playerlist = {}
|
||||
for _, id in pairs(memory.crewplayerindices) do
|
||||
local player = game.players[id]
|
||||
if player and player.valid then playerlist[#playerlist + 1] = player end
|
||||
if player and player.valid then
|
||||
playerlist[#playerlist + 1] = player
|
||||
end
|
||||
end
|
||||
return playerlist
|
||||
end
|
||||
|
||||
|
||||
function Public.crew_get_crew_members_and_spectators()
|
||||
local memory = Memory.get_crew_memory()
|
||||
if not Public.is_id_valid(memory.id) then
|
||||
@ -875,11 +889,15 @@ function Public.crew_get_crew_members_and_spectators()
|
||||
local playerlist = {}
|
||||
for _, id in pairs(memory.crewplayerindices) do
|
||||
local player = game.players[id]
|
||||
if player and player.valid then playerlist[#playerlist + 1] = player end
|
||||
if player and player.valid then
|
||||
playerlist[#playerlist + 1] = player
|
||||
end
|
||||
end
|
||||
for _, id in pairs(memory.spectatorplayerindices) do
|
||||
local player = game.players[id]
|
||||
if player and player.valid then playerlist[#playerlist + 1] = player end
|
||||
if player and player.valid then
|
||||
playerlist[#playerlist + 1] = player
|
||||
end
|
||||
end
|
||||
return playerlist
|
||||
end
|
||||
@ -908,13 +926,12 @@ function Public.is_spectator(player)
|
||||
return spectating
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
function Public.crew_get_nonafk_crew_members()
|
||||
local global_memory = Memory.get_global_memory()
|
||||
local memory = Memory.get_crew_memory()
|
||||
if not Public.is_id_valid(memory.id) then return {} end
|
||||
if not Public.is_id_valid(memory.id) then
|
||||
return {}
|
||||
end
|
||||
|
||||
local playerlist = {}
|
||||
for _, id in pairs(memory.crewplayerindices) do
|
||||
@ -940,7 +957,6 @@ function Public.crew_get_non_afk_officers()
|
||||
return officers
|
||||
end
|
||||
|
||||
|
||||
function Public.destroy_decoratives_in_area(surface, area, offset)
|
||||
local area2 = {{area[1][1] + offset.x, area[1][2] + offset.y}, {area[2][1] + offset.x, area[2][2] + offset.y}}
|
||||
|
||||
@ -948,7 +964,6 @@ function Public.destroy_decoratives_in_area(surface, area, offset)
|
||||
end
|
||||
|
||||
function Public.can_place_silo_setup(surface, p, points_to_avoid, silo_count, generous, build_check_type_name)
|
||||
|
||||
-- game.print('checking silo pos: ' .. p.x .. ', ' .. p.y)
|
||||
|
||||
points_to_avoid = points_to_avoid or {}
|
||||
@ -980,11 +995,8 @@ function Public.ensure_chunks_at(surface, pos, radius) --WARNING: THIS DOES NOT
|
||||
surface.request_to_generate_chunks(pos, radius)
|
||||
surface.force_generate_chunk_requests() --WARNING: THIS DOES NOT PLAY NICELY WITH DELAYED TASKS. log(_inspect{global_memory.working_id}) was observed to vary before and after this function.
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
function Public.default_map_gen_settings(width, height, seed)
|
||||
width = width or 512
|
||||
height = height or 512
|
||||
@ -1002,15 +1014,14 @@ function Public.default_map_gen_settings(width, height, seed)
|
||||
['autoplace_settings'] = {
|
||||
['entity'] = {treat_missing_as_default = false},
|
||||
['tile'] = {treat_missing_as_default = true},
|
||||
['decorative'] = {treat_missing_as_default = true},
|
||||
['decorative'] = {treat_missing_as_default = true}
|
||||
},
|
||||
['property_expression_names'] = {},
|
||||
['property_expression_names'] = {}
|
||||
}
|
||||
|
||||
return map_gen_settings
|
||||
end
|
||||
|
||||
|
||||
function Public.build_from_blueprint(bp_string, surface, pos, force, flipped)
|
||||
flipped = flipped or false
|
||||
|
||||
@ -1072,7 +1083,6 @@ function Public.build_small_loco(surface, pos, force, color)
|
||||
end
|
||||
|
||||
function Public.add_tiles_from_blueprint(tilesTable, bp_string, tile_name, offset)
|
||||
|
||||
local bp_entity = game.surfaces['nauvis'].create_entity {name = 'item-on-ground', position = {x = 158.5, y = 158.5}, stack = 'blueprint'}
|
||||
bp_entity.stack.import_stack(bp_string)
|
||||
|
||||
@ -1097,7 +1107,6 @@ function Public.tile_positions_from_blueprint(bp_string, offset)
|
||||
|
||||
local bp_tiles = bp_entity.stack.get_blueprint_tiles()
|
||||
|
||||
|
||||
local min_x
|
||||
local min_y
|
||||
local max_x
|
||||
@ -1147,7 +1156,9 @@ function Public.tile_positions_from_blueprint_arrayform(bp_string, offset)
|
||||
for _, tile in pairs(bp_tiles) do
|
||||
local x = tile.position.x + offset.x
|
||||
local y = tile.position.y + offset.y
|
||||
if not positions[x] then positions[x] = {} end
|
||||
if not positions[x] then
|
||||
positions[x] = {}
|
||||
end
|
||||
positions[x][y] = true
|
||||
end
|
||||
end
|
||||
@ -1158,7 +1169,6 @@ function Public.tile_positions_from_blueprint_arrayform(bp_string, offset)
|
||||
end
|
||||
|
||||
function Public.entity_positions_from_blueprint(bp_string, offset)
|
||||
|
||||
local bp_entity = game.surfaces['nauvis'].create_entity {name = 'item-on-ground', position = {x = 158.5, y = 158.5}, stack = 'blueprint'}
|
||||
bp_entity.stack.import_stack(bp_string)
|
||||
|
||||
@ -1251,15 +1261,18 @@ function Public.get_random_worm_type(evolution)
|
||||
end
|
||||
|
||||
function Public.maximumUnitPollutionCost(evolution)
|
||||
if evolution < 0.2 then return 4
|
||||
elseif evolution < 0.5 then return 20
|
||||
elseif evolution < 0.9 then return 80
|
||||
else return 400
|
||||
if evolution < 0.2 then
|
||||
return 4
|
||||
elseif evolution < 0.5 then
|
||||
return 20
|
||||
elseif evolution < 0.9 then
|
||||
return 80
|
||||
else
|
||||
return 400
|
||||
end
|
||||
end
|
||||
|
||||
function Public.averageUnitPollutionCost(evolution)
|
||||
|
||||
local sum_biters = 0
|
||||
local f1 = Math.slopefromto(1 - 1 / 0.4 * (evolution - 0.2), 0, 1)
|
||||
local f2 = Math.slopefromto(1 - 0.8 / 0.5 * (evolution - 0.5), 0, 1)
|
||||
@ -1329,7 +1342,6 @@ function Public.tiles_horizontally_flipped(tiles, x_to_flip_about)
|
||||
return tiles2
|
||||
end
|
||||
|
||||
|
||||
function Public.validate_player(player)
|
||||
if player and player.valid and player.connected and game.players[player.name] then
|
||||
return true
|
||||
@ -1341,14 +1353,12 @@ function Public.validate_player(player)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function Public.validate_player_and_character(player)
|
||||
local ret = Public.validate_player(player)
|
||||
ret = ret and player.character and player.character.valid
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
-- Players complained that when "all_items" is false, the items dissapear (perhaps code sending items from dead character to cabin is wrong?).
|
||||
function Public.send_important_items_from_player_to_crew(player, all_items)
|
||||
local player_inv = {}
|
||||
@ -1440,29 +1450,45 @@ function Public.give_items_to_crew(items)
|
||||
local memory = Memory.get_crew_memory()
|
||||
|
||||
local boat = memory.boat
|
||||
if not boat then return end
|
||||
if not boat then
|
||||
return
|
||||
end
|
||||
local surface_name = boat.surface_name
|
||||
if not surface_name then return end
|
||||
if not surface_name then
|
||||
return
|
||||
end
|
||||
local surface = game.surfaces[surface_name]
|
||||
if not (surface and surface.valid) then return end
|
||||
if not (surface and surface.valid) then
|
||||
return
|
||||
end
|
||||
local chest, chest2
|
||||
|
||||
if items.name and items.name == 'coin' then
|
||||
chest = boat.backup_output_chest
|
||||
if not (chest and chest.valid) then return end
|
||||
if not (chest and chest.valid) then
|
||||
return
|
||||
end
|
||||
chest2 = boat.output_chest
|
||||
if not (chest2 and chest2.valid) then return end
|
||||
if not (chest2 and chest2.valid) then
|
||||
return
|
||||
end
|
||||
else
|
||||
chest = boat.output_chest
|
||||
if not (chest and chest.valid) then return end
|
||||
if not (chest and chest.valid) then
|
||||
return
|
||||
end
|
||||
chest2 = boat.backup_output_chest
|
||||
if not (chest2 and chest2.valid) then return end
|
||||
if not (chest2 and chest2.valid) then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local inventory = chest.get_inventory(defines.inventory.chest)
|
||||
|
||||
if items.name then --1 item
|
||||
if not (items.count and items.count>0) then return end
|
||||
if not (items.count and items.count > 0) then
|
||||
return
|
||||
end
|
||||
local inserted = inventory.insert(items)
|
||||
if items.count - inserted > 0 then
|
||||
local inventory2 = chest2.get_inventory(defines.inventory.chest)
|
||||
@ -1472,8 +1498,10 @@ function Public.give_items_to_crew(items)
|
||||
local inserted2 = inventory2.insert(i2)
|
||||
if items.count - inserted - inserted2 > 0 then
|
||||
local force = memory.force
|
||||
if not (force and force.valid) then return end
|
||||
Public.notify_force(force, 'Warning: captain\'s cabin chests are full!')
|
||||
if not (force and force.valid) then
|
||||
return
|
||||
end
|
||||
Public.notify_force(force, "Warning: captain's cabin chests are full!")
|
||||
end
|
||||
else
|
||||
if _DEBUG then
|
||||
@ -1485,7 +1513,9 @@ function Public.give_items_to_crew(items)
|
||||
end
|
||||
else
|
||||
for _, i in pairs(items) do
|
||||
if not (i.count and i.count>0) then return end
|
||||
if not (i.count and i.count > 0) then
|
||||
return
|
||||
end
|
||||
local inserted = inventory.insert(i)
|
||||
if i.count - inserted > 0 then
|
||||
local inventory2 = chest2.get_inventory(defines.inventory.chest)
|
||||
@ -1494,15 +1524,16 @@ function Public.give_items_to_crew(items)
|
||||
local inserted2 = inventory2.insert(i2)
|
||||
if i.count - inserted - inserted2 > 0 then
|
||||
local force = memory.force
|
||||
if not (force and force.valid) then return end
|
||||
Public.notify_force(force, 'Warning: captain\'s cabin chests are full!')
|
||||
if not (force and force.valid) then
|
||||
return
|
||||
end
|
||||
Public.notify_force(force, "Warning: captain's cabin chests are full!")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function Public.version_to_array(v)
|
||||
local vArray = {}
|
||||
if type(v) == 'number' then --this is a legacy form
|
||||
@ -1525,7 +1556,6 @@ function Public.version_to_array(v)
|
||||
return vArray
|
||||
end
|
||||
|
||||
|
||||
function Public.version_greater_than(v1, v2)
|
||||
local v1Array = Public.version_to_array(v1)
|
||||
local v2Array = Public.version_to_array(v2)
|
||||
@ -1547,10 +1577,7 @@ function Public.version_greater_than(v1, v2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function Public.init_game_settings(technology_price_multiplier)
|
||||
|
||||
--== Tuned for Pirate Ship ==--
|
||||
|
||||
global.friendly_fire_history = {}
|
||||
@ -1578,7 +1605,6 @@ function Public.init_game_settings(technology_price_multiplier)
|
||||
game.map_settings.path_finder.short_cache_min_algo_steps_to_cache = 100
|
||||
game.map_settings.path_finder.cache_accept_path_start_distance_ratio = 0.1
|
||||
|
||||
|
||||
game.map_settings.enemy_expansion.enabled = true
|
||||
-- faster expansion:
|
||||
-- game.map_settings.enemy_expansion.min_expansion_cooldown = 4 * 3600
|
||||
@ -1688,7 +1714,9 @@ end
|
||||
-- scale: final result of formula with tier scaled
|
||||
-- tech_tier: float in range [0; 1]; 1 = everything unlocked
|
||||
function Public.pick_random_price(tier, scale, tech_tier)
|
||||
if tier < 0 or scale < 0 then return end
|
||||
if tier < 0 or scale < 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local item_stacks = LootRaffle.roll(math.floor(scale * (tier ^ 2 + 10 * tier)), 20, Public.get_item_blacklist(tech_tier))
|
||||
local price = {}
|
||||
@ -1717,10 +1745,18 @@ end
|
||||
|
||||
-- Used to connect multi-surface poles
|
||||
function Public.force_connect_poles(pole1, pole2)
|
||||
if not pole1 then return end
|
||||
if not pole1.valid then return end
|
||||
if not pole2 then return end
|
||||
if not pole2.valid then return end
|
||||
if not pole1 then
|
||||
return
|
||||
end
|
||||
if not pole1.valid then
|
||||
return
|
||||
end
|
||||
if not pole2 then
|
||||
return
|
||||
end
|
||||
if not pole2.valid then
|
||||
return
|
||||
end
|
||||
|
||||
-- force connections for testing (by placing many poles around the substations)
|
||||
-- for _, e in pairs(pole1.surface.find_entities_filtered{type="electric-pole", position = pole1.position, radius = 10}) do
|
||||
@ -1734,7 +1770,9 @@ function Public.force_connect_poles(pole1, pole2)
|
||||
-- NOTE: "connect_neighbour" returns false when the entities are already connected as well
|
||||
pole1.disconnect_neighbour(pole2)
|
||||
local success = pole1.connect_neighbour(pole2)
|
||||
if success then return end
|
||||
if success then
|
||||
return
|
||||
end
|
||||
|
||||
local pole1_neighbours = pole1.neighbours['copper']
|
||||
local pole2_neighbours = pole2.neighbours['copper']
|
||||
@ -1782,13 +1820,14 @@ function Public.force_connect_poles(pole1, pole2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- position here refers to middle position
|
||||
function Public.delete_entities(surface, position, width, height)
|
||||
local area = {left_top = {position.x - width / 2, position.y - height / 2}, right_bottom = {position.x + width / 2 + 0.5, position.y + height / 2 + 0.5}}
|
||||
surface.destroy_decoratives {area = area}
|
||||
local existing = surface.find_entities_filtered {area = area}
|
||||
if not existing then return end
|
||||
if not existing then
|
||||
return
|
||||
end
|
||||
|
||||
for _, e in pairs(existing) do
|
||||
if not (e.name == 'iron-ore' or e.name == 'copper-ore' or e.name == 'stone' or e.name == 'uranium-ore' or e.name == 'crude-oil') then
|
||||
@ -1801,13 +1840,15 @@ end
|
||||
|
||||
function Public.replace_unwalkable_tiles(surface, position, width, height)
|
||||
local area = {left_top = {position.x - width / 2, position.y - height / 2}, right_bottom = {position.x + width / 2 + 0.5, position.y + height / 2 + 0.5}}
|
||||
local existing = surface.find_tiles_filtered{area = area, collision_mask = "water-tile"}
|
||||
if not existing then return end
|
||||
local existing = surface.find_tiles_filtered {area = area, collision_mask = 'water-tile'}
|
||||
if not existing then
|
||||
return
|
||||
end
|
||||
|
||||
local tiles = {}
|
||||
|
||||
for _, t in pairs(existing) do
|
||||
tiles[#tiles + 1] = {name = "landfill", position = t.position}
|
||||
tiles[#tiles + 1] = {name = 'landfill', position = t.position}
|
||||
end
|
||||
|
||||
if #tiles > 0 then
|
||||
@ -1852,27 +1893,36 @@ function Public.get_valid_spawners(surface)
|
||||
end
|
||||
|
||||
function Public.get_random_valid_spawner(surface)
|
||||
|
||||
local spawners = Public.get_valid_spawners(surface)
|
||||
|
||||
if #spawners == 0 then return end
|
||||
if #spawners == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
return spawners[Math.random(#spawners)]
|
||||
end
|
||||
|
||||
-- @TODO move this somewhere else, so that health multiplier formula can be put to balance
|
||||
function Public.try_make_biter_elite(entity)
|
||||
if not (entity and entity.valid) then return end
|
||||
if not (entity and entity.valid) then
|
||||
return
|
||||
end
|
||||
|
||||
local memory = Memory.get_crew_memory()
|
||||
|
||||
local difficulty_index = CoreData.get_difficulty_option_from_value(memory.difficulty)
|
||||
if difficulty_index < 3 and Public.overworldx() < 800 then return end
|
||||
if difficulty_index < 3 and Public.overworldx() < 800 then
|
||||
return
|
||||
end
|
||||
|
||||
if Public.overworldx() == 0 then return end
|
||||
if Public.overworldx() == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
-- chance to turn biter elite
|
||||
if Math.random(1, 8) ~= 1 then return end
|
||||
if Math.random(1, 8) ~= 1 then
|
||||
return
|
||||
end
|
||||
|
||||
local health_multiplier
|
||||
|
||||
@ -1903,7 +1953,9 @@ end
|
||||
-- NOTE: This is only meant for hostile entities (for now at least), as friendly units with healthbars are more difficult to handle
|
||||
-- NOTE: "damage" can also be negative, which will heal the entity (but not past maximum health)
|
||||
function Public.damage_hostile_entity(entity, damage)
|
||||
if not (entity and entity.valid) then return end
|
||||
if not (entity and entity.valid) then
|
||||
return
|
||||
end
|
||||
|
||||
local remaining_health = Public.entity_damage_healthbar(entity, damage)
|
||||
|
||||
|
@ -6,7 +6,7 @@ local Session = require 'utils.datastore.session_data'
|
||||
local Event = require 'utils.event'
|
||||
local Freeplay = require 'utils.freeplay'
|
||||
local Server = require 'utils.server'
|
||||
local MapFuntions = require 'tools.map_functions'
|
||||
local MapFuntions = require 'utils.tools.map_functions'
|
||||
local CommonFunctions = require 'utils.common'
|
||||
local LayersFunctions = require 'maps.planet_prison.mod.layers'
|
||||
local AIFunctions = require 'maps.planet_prison.ai'
|
||||
|
@ -14,7 +14,7 @@ local difficulties_votes = {
|
||||
|
||||
local Get_noise = require 'utils.get_noise'
|
||||
local Immersive_cargo_wagons = require 'modules.immersive_cargo_wagons.main'
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
|
||||
local map_height = 64
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
--luacheck: ignore
|
||||
local event = require 'utils.event'
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local rainbow_colors = require 'tools.rainbow_colors'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local rainbow_colors = require 'utils.tools.rainbow_colors'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
require 'modules.satellite_score'
|
||||
|
||||
local ore_spawn_raffle = {'iron-ore', 'iron-ore', 'iron-ore', 'iron-ore', 'copper-ore', 'copper-ore', 'copper-ore', 'coal', 'coal', 'coal', 'stone', 'uranium-ore', 'crude-oil'}
|
||||
|
@ -10,7 +10,7 @@ local event = require 'utils.event'
|
||||
local table_insert = table.insert
|
||||
local math_random = math.random
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
|
||||
local disabled_for_deconstruction = {
|
||||
['fish'] = true
|
||||
|
@ -163,8 +163,8 @@ local function on_player_joined_game(event)
|
||||
end
|
||||
end
|
||||
|
||||
local unearthing_worm = require 'functions.unearthing_worm'
|
||||
local unearthing_biters = require 'functions.unearthing_biters'
|
||||
local unearthing_worm = require 'utils.functions.unearthing_worm'
|
||||
local unearthing_biters = require 'utils.functions.unearthing_biters'
|
||||
|
||||
local function on_player_mined_entity(event)
|
||||
local entity = event.entity
|
||||
|
@ -2,7 +2,7 @@ require 'modules.no_deconstruction_of_neutral_entities'
|
||||
require 'modules.satellite_score'
|
||||
require 'modules.mineable_wreckage_yields_scrap'
|
||||
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local LootRaffle = require 'utils.functions.loot_raffle'
|
||||
local Get_noise = require 'utils.get_noise'
|
||||
local math_random = math.random
|
||||
local math_floor = math.floor
|
||||
|
@ -1,7 +1,7 @@
|
||||
local Event = require 'utils.event'
|
||||
local Server = require 'utils.server'
|
||||
local ScenarioTable = require 'maps.scrap_towny_ffa.table'
|
||||
local SoftReset = require 'functions.soft_reset'
|
||||
local SoftReset = require 'utils.functions.soft_reset'
|
||||
local Token = require 'utils.token'
|
||||
|
||||
local math_random = math.random
|
||||
|
@ -2,9 +2,9 @@ local Event = require 'utils.event'
|
||||
local Evolution = require 'maps.scrap_towny_ffa.evolution'
|
||||
local Town_center = require 'maps.scrap_towny_ffa.town_center'
|
||||
local Scrap = require 'maps.scrap_towny_ffa.scrap'
|
||||
local unearthing_worm = require 'functions.unearthing_worm'
|
||||
local unearthing_biters = require 'functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'functions.tick_tack_trap'
|
||||
local unearthing_worm = require 'utils.functions.unearthing_worm'
|
||||
local unearthing_biters = require 'utils.functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'utils.functions.tick_tack_trap'
|
||||
|
||||
local math_random = math.random
|
||||
|
||||
|
@ -6,7 +6,7 @@ require 'modules.dynamic_landfill'
|
||||
require 'modules.spawners_contain_biters'
|
||||
require 'modules.satellite_score'
|
||||
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
--require "rewards"
|
||||
|
||||
local function shuffle(tbl)
|
||||
@ -627,8 +627,7 @@ local function on_entity_died(event)
|
||||
end
|
||||
if entity_drop_amount[event.entity.name] then
|
||||
if game.forces.enemy.evolution_factor < 0.5 then
|
||||
local amount =
|
||||
math.ceil(math.random(entity_drop_amount[event.entity.name].low, entity_drop_amount[event.entity.name].high) * (0.5 - game.forces.enemy.evolution_factor) * 2, 0)
|
||||
local amount = math.ceil(math.random(entity_drop_amount[event.entity.name].low, entity_drop_amount[event.entity.name].high) * (0.5 - game.forces.enemy.evolution_factor) * 2, 0)
|
||||
event.entity.surface.spill_item_stack(event.entity.position, {name = ore_spill_raffle[math.random(1, #ore_spill_raffle)], count = amount}, true)
|
||||
end
|
||||
end
|
||||
|
@ -18,9 +18,9 @@ require 'modules.rocks_broken_paint_tiles'
|
||||
require 'modules.rpg'
|
||||
require 'modules.hunger'
|
||||
|
||||
local shapes = require 'tools.shapes'
|
||||
local shapes = require 'utils.tools.shapes'
|
||||
local event = require 'utils.event'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'
|
||||
simplex_noise = simplex_noise.d2
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
--luacheck: ignore
|
||||
local Basic_markets = require 'functions.basic_markets'
|
||||
local Basic_markets = require 'utils.functions.basic_markets'
|
||||
local Biter_pets = require 'modules.biter_pets'
|
||||
local get_noise = require 'maps.stone_maze.noise'
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
--luacheck: ignore
|
||||
local Basic_markets = require 'functions.basic_markets'
|
||||
local Basic_markets = require 'utils.functions.basic_markets'
|
||||
local get_noise = require 'maps.stone_maze.noise'
|
||||
|
||||
local room = {}
|
||||
|
@ -9,7 +9,7 @@ require 'modules.hunger'
|
||||
require 'modules.no_turrets'
|
||||
|
||||
--essentials
|
||||
require 'functions.maze'
|
||||
require 'utils.functions.maze'
|
||||
require 'modules.biters_yield_coins'
|
||||
require 'modules.rocks_yield_ore'
|
||||
require 'modules.mineable_wreckage_yields_scrap'
|
||||
@ -35,7 +35,7 @@ local multirooms = {}
|
||||
multirooms['2x2'] = require 'maps.stone_maze.2x2_rooms'
|
||||
multirooms['3x3'] = require 'maps.stone_maze.3x3_rooms'
|
||||
|
||||
map_functions = require 'tools.map_functions'
|
||||
map_functions = require 'utils.tools.map_functions'
|
||||
grid_size = 24
|
||||
--manual_mining_speed_modifier = 1
|
||||
main_ground_tile = 'dirt-3'
|
||||
@ -76,8 +76,7 @@ local function draw_depth_gui()
|
||||
if player.gui.top.evolution_gui then
|
||||
player.gui.top.evolution_gui.destroy()
|
||||
end
|
||||
local element =
|
||||
player.gui.top.add({type = 'sprite-button', name = 'evolution_gui', caption = 'Depth: ' .. global.maze_depth, tooltip = 'Delve deep and face increased dangers.'})
|
||||
local element = player.gui.top.add({type = 'sprite-button', name = 'evolution_gui', caption = 'Depth: ' .. global.maze_depth, tooltip = 'Delve deep and face increased dangers.'})
|
||||
local style = element.style
|
||||
style.minimal_height = 38
|
||||
style.maximal_height = 38
|
||||
|
@ -20,7 +20,7 @@ require 'modules.evolution_extended'
|
||||
local event = require 'utils.event'
|
||||
local math_random = math.random
|
||||
local insert = table.insert
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'
|
||||
local simplex_noise = simplex_noise.d2
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
local event = require 'utils.event'
|
||||
local table_insert = table.insert
|
||||
local math_random = math.random
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local arena_size = 160
|
||||
|
||||
local function shuffle(tbl)
|
||||
|
@ -118,7 +118,7 @@ local table_of_slots = {
|
||||
|
||||
local table_of_ores = {'iron-ore', 'copper-ore', 'stone', 'coal'}
|
||||
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
|
||||
local event = require 'utils.event'
|
||||
|
||||
@ -457,8 +457,7 @@ function draw_gui_status(player)
|
||||
|
||||
element_label.style.font_color = table_of_colors.white
|
||||
|
||||
local element_label =
|
||||
element_frame.add({type = 'label', caption = math.floor(global.table_of_properties[global.table_of_properties[player.force.name].enemy].available_tickets)})
|
||||
local element_label = element_frame.add({type = 'label', caption = math.floor(global.table_of_properties[global.table_of_properties[player.force.name].enemy].available_tickets)})
|
||||
|
||||
element_label.style.left_padding = 20
|
||||
|
||||
@ -836,10 +835,7 @@ function create_a_base(force_name, base_position)
|
||||
end
|
||||
|
||||
if
|
||||
object.name == 'infinity-chest' or object.name == 'substation' or object.name == 'big-electric-pole' or object.name == 'medium-electric-pole' or
|
||||
object.name == 'inserter' or
|
||||
object.name == 'accumulator' or
|
||||
object.name == 'solar-panel' or
|
||||
object.name == 'infinity-chest' or object.name == 'substation' or object.name == 'big-electric-pole' or object.name == 'medium-electric-pole' or object.name == 'inserter' or object.name == 'accumulator' or object.name == 'solar-panel' or
|
||||
object.name == 'gun-turret'
|
||||
then
|
||||
entity.destructible = false
|
||||
@ -896,14 +892,11 @@ function create_a_spot(spot_name, spot_position, spot_blueprint)
|
||||
}
|
||||
)
|
||||
|
||||
local draw_spot_force =
|
||||
rendering.draw_text({text = spot.force.name, surface = surface, target = {spot.position.x, spot.position.y + 0.5}, color = spot.color, scale = 5, alignment = 'center'})
|
||||
local draw_spot_force = rendering.draw_text({text = spot.force.name, surface = surface, target = {spot.position.x, spot.position.y + 0.5}, color = spot.color, scale = 5, alignment = 'center'})
|
||||
|
||||
local draw_spot_value =
|
||||
rendering.draw_text({text = spot.value, surface = surface, target = {spot.position.x, spot.position.y - 4}, color = spot.color, scale = 5, alignment = 'center'})
|
||||
local draw_spot_value = rendering.draw_text({text = spot.value, surface = surface, target = {spot.position.x, spot.position.y - 4}, color = spot.color, scale = 5, alignment = 'center'})
|
||||
|
||||
local draw_spot_name =
|
||||
rendering.draw_text({text = spot.name, surface = surface, target = {spot.position.x, spot.position.y - 2}, color = spot.color, scale = 5, alignment = 'center'})
|
||||
local draw_spot_name = rendering.draw_text({text = spot.name, surface = surface, target = {spot.position.x, spot.position.y - 2}, color = spot.color, scale = 5, alignment = 'center'})
|
||||
|
||||
local table_of_drawings = {name = draw_spot_name, value = draw_spot_value, force = draw_spot_force, border = draw_spot_border}
|
||||
|
||||
@ -957,10 +950,7 @@ function create_a_spot(spot_name, spot_position, spot_blueprint)
|
||||
table.insert(table_of_entities, entity)
|
||||
end
|
||||
|
||||
table.insert(
|
||||
global.table_of_spots,
|
||||
{properties = table_of_properties, drawings = table_of_drawings, players = table_of_players, positions = table_of_positions, entities = table_of_entities}
|
||||
)
|
||||
table.insert(global.table_of_spots, {properties = table_of_properties, drawings = table_of_drawings, players = table_of_players, positions = table_of_positions, entities = table_of_entities})
|
||||
end
|
||||
|
||||
function create_a_point_of_interest(poi_blueprint, poi_position)
|
||||
@ -1139,10 +1129,7 @@ function event_on_click_join(player)
|
||||
-- draw_gui_spawn( player ) -- only for tests
|
||||
|
||||
for _, spot in pairs(global.table_of_spots) do
|
||||
player.force.chart(
|
||||
game.surfaces.tank_conquest,
|
||||
{{x = spot.properties.position.x - 10, y = spot.properties.position.y - 10}, {x = spot.properties.position.x + 10, y = spot.properties.position.y + 10}}
|
||||
)
|
||||
player.force.chart(game.surfaces.tank_conquest, {{x = spot.properties.position.x - 10, y = spot.properties.position.y - 10}, {x = spot.properties.position.x + 10, y = spot.properties.position.y + 10}})
|
||||
end
|
||||
|
||||
game.print(player.name .. ' joined ' .. global.table_of_properties[player.force.name].icon)
|
||||
@ -1240,10 +1227,7 @@ local function on_tick(event)
|
||||
|
||||
for _, player in pairs(game.connected_players) do
|
||||
if player.force.name == spot.properties.force.name and spot.properties.value > 0 then
|
||||
player.force.chart(
|
||||
game.surfaces.tank_conquest,
|
||||
{{x = spot.properties.position.x - 10, y = spot.properties.position.y - 10}, {x = spot.properties.position.x + 10, y = spot.properties.position.y + 10}}
|
||||
)
|
||||
player.force.chart(game.surfaces.tank_conquest, {{x = spot.properties.position.x - 10, y = spot.properties.position.y - 10}, {x = spot.properties.position.x + 10, y = spot.properties.position.y + 10}})
|
||||
end
|
||||
end
|
||||
|
||||
@ -1294,10 +1278,7 @@ local function on_tick(event)
|
||||
global.table_of_properties.countdown_in_seconds = global.table_of_properties.countdown_in_seconds - 1
|
||||
end
|
||||
|
||||
if
|
||||
global.table_of_properties.countdown_in_seconds < 0 or global.table_of_properties.force_player_one.available_tickets < 0 or
|
||||
global.table_of_properties.force_player_two.available_tickets < 0
|
||||
then
|
||||
if global.table_of_properties.countdown_in_seconds < 0 or global.table_of_properties.force_player_one.available_tickets < 0 or global.table_of_properties.force_player_two.available_tickets < 0 then
|
||||
if global.table_of_properties.force_player_one.available_tickets == global.table_of_properties.force_player_two.available_tickets then
|
||||
game.print('The battle is over. The round ended in a draw.')
|
||||
elseif global.table_of_properties.force_player_one.available_tickets > global.table_of_properties.force_player_two.available_tickets then
|
||||
@ -1493,23 +1474,11 @@ local function on_tick(event)
|
||||
if game.surfaces.tank_conquest ~= nil and #game.connected_players and #global.table_of_spots then
|
||||
for _, player in pairs(game.connected_players) do
|
||||
for _, spot in pairs(global.table_of_spots) do
|
||||
if
|
||||
player.force.is_chunk_charted(
|
||||
game.surfaces.tank_conquest,
|
||||
{x = math.floor(spot.properties.position.x / 32), y = math.floor(spot.properties.position.y / 32)}
|
||||
)
|
||||
then
|
||||
local chart_tags =
|
||||
player.force.find_chart_tags(
|
||||
game.surfaces.tank_conquest,
|
||||
{{spot.properties.position.x - 1, spot.properties.position.y - 1}, {spot.properties.position.x + 1, spot.properties.position.y + 1}}
|
||||
)
|
||||
if player.force.is_chunk_charted(game.surfaces.tank_conquest, {x = math.floor(spot.properties.position.x / 32), y = math.floor(spot.properties.position.y / 32)}) then
|
||||
local chart_tags = player.force.find_chart_tags(game.surfaces.tank_conquest, {{spot.properties.position.x - 1, spot.properties.position.y - 1}, {spot.properties.position.x + 1, spot.properties.position.y + 1}})
|
||||
|
||||
if #chart_tags == 0 then
|
||||
player.force.add_chart_tag(
|
||||
game.surfaces.tank_conquest,
|
||||
{icon = {type = 'virtual', name = 'signal-' .. spot.properties.name}, position = spot.properties.position}
|
||||
)
|
||||
player.force.add_chart_tag(game.surfaces.tank_conquest, {icon = {type = 'virtual', name = 'signal-' .. spot.properties.name}, position = spot.properties.position})
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -1712,10 +1681,7 @@ local function on_player_changed_position(event)
|
||||
end
|
||||
|
||||
for _, position in pairs(spot_item.positions) do
|
||||
if
|
||||
math.floor(player.position.x) == position.x and math.floor(player.position.y) == position.y or
|
||||
math.ceil(player.position.x) == position.x and math.ceil(player.position.y) == position.y
|
||||
then
|
||||
if math.floor(player.position.x) == position.x and math.floor(player.position.y) == position.y or math.ceil(player.position.x) == position.x and math.ceil(player.position.y) == position.y then
|
||||
if global.table_of_spots[spot_index].players[player.index] == nil then
|
||||
global.table_of_spots[spot_index].players[player.index] = player
|
||||
|
||||
@ -1805,16 +1771,12 @@ local function on_player_died(event)
|
||||
|
||||
if event.cause and event.cause.valid then
|
||||
if event.cause.name == 'character' then
|
||||
player_death_message =
|
||||
global.table_of_properties[player.force.name].icon ..
|
||||
' ' .. player.name .. ' was killed by ' .. global.table_of_properties[event.cause.player.force.name].icon .. ' ' .. event.cause.player.name .. '.'
|
||||
player_death_message = global.table_of_properties[player.force.name].icon .. ' ' .. player.name .. ' was killed by ' .. global.table_of_properties[event.cause.player.force.name].icon .. ' ' .. event.cause.player.name .. '.'
|
||||
elseif event.cause.name == 'car' or event.cause.name == 'tank' or event.cause.name == 'train' then
|
||||
local driver = event.cause.get_driver()
|
||||
|
||||
if driver.player then
|
||||
player_death_message =
|
||||
global.table_of_properties[player.force.name].icon ..
|
||||
' ' .. player.name .. ' was killed with a vehicle by ' .. global.table_of_properties[driver.player.force.name].icon .. ' ' .. driver.player.name .. '.'
|
||||
player_death_message = global.table_of_properties[player.force.name].icon .. ' ' .. player.name .. ' was killed with a vehicle by ' .. global.table_of_properties[driver.player.force.name].icon .. ' ' .. driver.player.name .. '.'
|
||||
else
|
||||
player_death_message = global.table_of_properties[player.force.name].icon .. ' ' .. player.name .. ' was killed by run over.'
|
||||
end
|
||||
|
@ -15,12 +15,12 @@ require 'modules.rocks_yield_ore'
|
||||
require 'modules.biters_yield_coins'
|
||||
require 'modules.mineable_wreckage_yields_scrap'
|
||||
|
||||
local shapes = require 'tools.shapes'
|
||||
local shapes = require 'utils.tools.shapes'
|
||||
local Event = require 'utils.event'
|
||||
local unearthing_worm = require 'functions.unearthing_worm'
|
||||
local unearthing_biters = require 'functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'functions.tick_tack_trap'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local unearthing_worm = require 'utils.functions.unearthing_worm'
|
||||
local unearthing_biters = require 'utils.functions.unearthing_biters'
|
||||
local tick_tack_trap = require 'utils.functions.tick_tack_trap'
|
||||
local map_functions = require 'utils.tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'
|
||||
simplex_noise = simplex_noise.d2
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
local event = require 'utils.event'
|
||||
local bricks = require 'maps.tetris.bricks'
|
||||
local connect_belts = require 'functions.connect_belts'
|
||||
local connect_belts = require 'utils.functions.connect_belts'
|
||||
|
||||
local playfield_left_top = {x = -17, y = -18}
|
||||
local playfield_width = 12
|
||||
@ -219,10 +219,7 @@ local function add_score_points(amount)
|
||||
end
|
||||
|
||||
local function move_lines_down(surface, y)
|
||||
local entities =
|
||||
surface.find_entities_filtered(
|
||||
{area = {{playfield_area.left_top.x, playfield_area.left_top.y}, {playfield_area.left_top.x + playfield_width + 1, playfield_area.left_top.y + y + 1}}, force = 'enemy'}
|
||||
)
|
||||
local entities = surface.find_entities_filtered({area = {{playfield_area.left_top.x, playfield_area.left_top.y}, {playfield_area.left_top.x + playfield_width + 1, playfield_area.left_top.y + y + 1}}, force = 'enemy'})
|
||||
for _, e in pairs(entities) do
|
||||
if e.valid then
|
||||
e.clone {position = {e.position.x, e.position.y + 1}, surface = surface, force = 'enemy'}
|
||||
@ -419,14 +416,7 @@ local function move(surface, item)
|
||||
return
|
||||
end
|
||||
for k, p in pairs(global.active_brick.positions) do
|
||||
if
|
||||
not global.tetris_grid[
|
||||
coord_string(
|
||||
math.floor(global.active_brick.positions[k].x + move_translations[item][1]),
|
||||
math.floor(global.active_brick.positions[k].y + move_translations[item][2])
|
||||
)
|
||||
]
|
||||
then
|
||||
if not global.tetris_grid[coord_string(math.floor(global.active_brick.positions[k].x + move_translations[item][1]), math.floor(global.active_brick.positions[k].y + move_translations[item][2]))] then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
local Event = require 'utils.event'
|
||||
|
||||
local unearthing_worm = require 'functions.unearthing_worm'
|
||||
local unearthing_biters = require 'functions.unearthing_biters'
|
||||
local unearthing_worm = require 'utils.functions.unearthing_worm'
|
||||
local unearthing_biters = require 'utils.functions.unearthing_biters'
|
||||
|
||||
local immune_tiles = {
|
||||
['concrete'] = true,
|
||||
@ -33,9 +33,7 @@ local function on_player_changed_position(event)
|
||||
return
|
||||
end
|
||||
|
||||
for _, lamp in pairs(
|
||||
player.surface.find_entities_filtered({area = {{player.position.x - 18, player.position.y - 18}, {player.position.x + 18, player.position.y + 18}}, name = 'small-lamp'})
|
||||
) do
|
||||
for _, lamp in pairs(player.surface.find_entities_filtered({area = {{player.position.x - 18, player.position.y - 18}, {player.position.x + 18, player.position.y + 18}}, name = 'small-lamp'})) do
|
||||
local circuit = lamp.get_or_create_control_behavior()
|
||||
if circuit then
|
||||
if lamp.energy > 25 and circuit.disabled == false then
|
||||
|
@ -2,7 +2,7 @@
|
||||
--[[
|
||||
Exchange Strings:
|
||||
|
||||
for "terrain_layouts.scrap_01"
|
||||
for "utils.terrain_layouts.scrap_01"
|
||||
>>>eNpjYBBiEGQAgwYHBgYHBw6W5PzEHAaGA0Begz2I5krOLyhIL
|
||||
dLNL0pFFuZMLipNSdXNz0RVnJqXmlupm5RYnAoRgmCOzKL8PHQTW
|
||||
ItL8vNQRUqKUlOLQazVq1bZgUS5S4sS8zJLc9H1MjCeOHC8uKFFj
|
||||
|
@ -9,7 +9,7 @@ local Utils = require 'utils.core'
|
||||
local Color = require 'utils.color_presets'
|
||||
local Server = require 'utils.server'
|
||||
local Jail = require 'utils.datastore.jail_data'
|
||||
local FancyTime = require 'tools.fancy_time'
|
||||
local FancyTime = require 'utils.tools.fancy_time'
|
||||
local Task = require 'utils.task'
|
||||
local Token = require 'utils.token'
|
||||
local Discord = require 'utils.discord_handler'
|
||||
|
@ -498,6 +498,7 @@ local function create_admin_panel(data)
|
||||
end
|
||||
end
|
||||
|
||||
local listable_players = frame.add({type = 'checkbox', name = 'admin_listable_players', caption = 'Toggle between all players or connected players.', state = false})
|
||||
local drop_down = frame.add({type = 'drop-down', name = 'admin_player_select', items = player_names, selected_index = selected_index})
|
||||
drop_down.style.minimal_width = 326
|
||||
drop_down.style.right_padding = 12
|
||||
|
@ -3,7 +3,7 @@ local math_random = math.random
|
||||
local table_insert = table.insert
|
||||
local table_remove = table.remove
|
||||
|
||||
local NoiseVector = require 'functions.noise_vector_path'
|
||||
local NoiseVector = require 'utils.functions.noise_vector_path'
|
||||
|
||||
local function get_vector()
|
||||
local x = 1000 - math_random(0, 2000)
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user