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

added spawners; shops now spawn randomly south;

This commit is contained in:
MewMew 2019-09-23 13:36:34 +02:00
parent 451957eff9
commit 98c79d31a7
4 changed files with 70 additions and 10 deletions

View File

@ -108,6 +108,24 @@ function add_enemies(surface, tiles)
end
end
if global.current_level > 2 then
if math.random(1, 5) == 1 or is_boss_stage() then
local evolution = (global.current_level * 2 * difficulties_votes[global.difficulty_vote_index].strength_modifier) * 0.01
if evolution > 1 then evolution = 1 end
game.forces.enemy.evolution_factor = evolution
local count = math.random(1, math.ceil(global.current_level * 0.05))
if count > 3 then count = 3 end
for k, tile in pairs(tiles) do
if surface.can_place_entity({name = "biter-spawner", position = tile.position, force = "enemy"}) then
surface.create_entity({name = "biter-spawner", position = tile.position, force = "enemy"})
global.alive_enemies = global.alive_enemies + 1
count = count - 1
if count == 0 then break end
end
end
end
end
if math.random(1, 4) == 1 or is_boss_stage() then
set_worm_chances(global.current_level)
local worm_count = math.random(1, math.ceil(global.current_level * 0.5))

View File

@ -224,11 +224,16 @@ local function on_entity_died(event)
if not entity.valid then return end
if entity.force.name ~= "enemy" then return end
if entity.type == "unit" then
if entity.spawner then return end
end
global.alive_enemies = global.alive_enemies - 1
update_stage_gui()
if entity.type ~= "unit" then return end
if not global.alive_boss_enemy_entities[entity.unit_number] then return end
global.alive_boss_enemy_entities[entity.unit_number] = nil
global.alive_boss_enemy_count = global.alive_boss_enemy_count - 1
if global.alive_boss_enemy_count == 0 then
@ -254,7 +259,7 @@ local gamestate_functions = {
local function on_tick()
gamestate_functions[global.gamestate]()
if game.tick % 180 == 0 then drift_corpses_toward_beach() end
if game.tick % 120 == 0 then drift_corpses_toward_beach() end
end
local event = require 'utils.event'

View File

@ -268,18 +268,31 @@ local function process_tile(surface, position)
if position.x < -128 then surface.set_tiles({{name = "out-of-map", position = position}}, true) return end
if position.x > 8192 then surface.set_tiles({{name = "out-of-map", position = position}}, true) return end
if position.y < 0 then surface.set_tiles({{name = "deepwater", position = position}}, true) return end
if position.y > 32 then surface.set_tiles({{name = "water-green", position = position}}, true) return end
if position.y > 32 then surface.set_tiles({{name = "water-green", position = position}}, true)
if math.random(1, 4096) == 1 then
if math.random(1, 4) == 1 then
create_dump_chest(surface, position, false)
else
create_shopping_chest(surface, position, false)
end
end
return
end
if position.y > 10 + simplex_noise(position.x * 0.010, 0, game.surfaces[1].map_gen_settings.seed) * 4 then surface.set_tiles({{name = "water-green", position = position}}, true) return end
local index = math.floor((simplex_noise(position.x * 0.01, position.y * 0.01, game.surfaces[1].map_gen_settings.seed) * 10) % 3) + 1
surface.set_tiles({{name = "sand-" .. index, position = position}}, true)
if position.x > 32 then return true end
if position.y == 6 then
if position.x % 60 == 30 then
create_dump_chest(surface, {x = position.x, y = position.y - 1}, false)
if position.x == -16 then
create_shopping_chest(surface, position, false)
end
if position.x == 16 then
create_dump_chest(surface, position, false)
end
end
return true

View File

@ -12,15 +12,15 @@ local shop_list = {
}
function create_shopping_chest(surface, position, destructible)
global.shopping_chests[#global.shopping_chests + 1] = surface.create_entity({name = "logistic-chest-requester", position = position, force = "shopping_chests"})
global.shopping_chests[#global.shopping_chests].minable = false
if not destructible then global.shopping_chests[#global.shopping_chests].destructible = false end
local entity = surface.create_entity({name = "logistic-chest-requester", position = position, force = "shopping_chests"})
entity.minable = false
if not destructible then entity.destructible = false end
end
function create_dump_chest(surface, position, destructible)
global.dump_chests[#global.dump_chests + 1] = surface.create_entity({name = "logistic-chest-passive-provider", position = position, force = "shopping_chests"})
global.dump_chests[#global.dump_chests].minable = false
if not destructible then global.dump_chests[#global.dump_chests].destructible = false end
local entity = surface.create_entity({name = "logistic-chest-passive-provider", position = position, force = "shopping_chests"})
entity.minable = false
if not destructible then entity.destructible = false end
end
local function get_affordable_item_count(name, count)
@ -99,6 +99,28 @@ local function gui()
end
end
local function on_gui_opened(event)
if not event.entity then return end
if event.entity.force.name ~= "shopping_chests" then return end
local index = event.entity.position.x .. "_"
index = index .. event.entity.position.y
if global.registerd_shopping_chests[index] then return end
if event.entity.name == "logistic-chest-passive-provider" then
global.dump_chests[#global.dump_chests + 1] = event.entity
global.registerd_shopping_chests[index] = true
event.entity.surface.create_entity({name = "flying-text", position = event.entity.position, text = "Chest registered, shop active!", color = {r = 200, g = 160, b = 30}})
return
end
if event.entity.name == "logistic-chest-requester" then
global.shopping_chests[#global.shopping_chests + 1] = event.entity
global.registerd_shopping_chests[index] = true
event.entity.surface.create_entity({name = "flying-text", position = event.entity.position, text = "Chest registered, shop active!", color = {r = 200, g = 160, b = 30}})
return
end
end
local function tick()
for k, chest in pairs(global.shopping_chests) do
process_shopping_chest(k, chest)
@ -112,6 +134,7 @@ end
local function on_init()
global.shopping_chests = {}
global.dump_chests = {}
global.registerd_shopping_chests = {}
global.credits = 0
game.create_force("shopping_chests")
game.forces.player.set_friend("shopping_chests", true)
@ -119,5 +142,6 @@ local function on_init()
end
local event = require 'utils.event'
event.add(defines.events.on_gui_opened, on_gui_opened)
event.on_nth_tick(120, tick)
event.on_init(on_init)