mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-02-01 13:08:05 +02:00
WIP
This commit is contained in:
parent
98c166ed82
commit
aa5f310174
85
maps/biter_hatchery/main.lua
Normal file
85
maps/biter_hatchery/main.lua
Normal file
@ -0,0 +1,85 @@
|
||||
local unit_raffle = require "maps.biter_hatchery.raffle_tables"
|
||||
local math_random = math.random
|
||||
|
||||
local function spawn_units(belt, food_item, removed_item_count)
|
||||
local count = unit_raffle[food_item][2]
|
||||
local raffle = unit_raffle[food_item][1]
|
||||
for _ = 1, count, 1 do
|
||||
belt.surface.create_entity({name = raffle[math_random(1, #raffle)], position = belt.position, force = belt.force})
|
||||
end
|
||||
end
|
||||
|
||||
local function get_belts(spawner)
|
||||
local belts = spawner.surface.find_entities_filtered({
|
||||
type = "transport-belt",
|
||||
area = {{spawner.position.x - 5, spawner.position.y - 3},{spawner.position.x + 4, spawner.position.y + 3}},
|
||||
force = spawner.force,
|
||||
})
|
||||
return belts
|
||||
end
|
||||
|
||||
local function eat_food_from_belt(belt)
|
||||
for i = 1, 2, 1 do
|
||||
local line = belt.get_transport_line(i)
|
||||
for food_item, raffle in pairs(unit_raffle) do
|
||||
local removed_item_count = line.remove_item({name = food_item, count = 8})
|
||||
if removed_item_count > 0 then
|
||||
spawn_units(belt, food_item, removed_item_count)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function nom()
|
||||
local surface = game.surfaces[1]
|
||||
for key, force in pairs(global.map_forces) do
|
||||
local belts = get_belts(force.hatchery)
|
||||
for _, belt in pairs(belts) do
|
||||
eat_food_from_belt(belt)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function on_player_joined_game(event)
|
||||
local player = game.players[event.player_index]
|
||||
player.force = game.forces.east
|
||||
end
|
||||
|
||||
local tick_tasks = {
|
||||
[0] = nom,
|
||||
}
|
||||
|
||||
local function tick()
|
||||
local t = game.tick % 60
|
||||
if tick_tasks[t] then tick_tasks[t]() end
|
||||
end
|
||||
|
||||
local function on_init()
|
||||
global.map_forces = {
|
||||
["west"] = {},
|
||||
["east"] = {},
|
||||
}
|
||||
|
||||
for key, _ in pairs(global.map_forces) do game.create_force(key) end
|
||||
|
||||
local surface = game.surfaces[1]
|
||||
game.forces.west.set_spawn_position({-64, 0}, game.surfaces[1])
|
||||
game.forces.east.set_spawn_position({64, 0}, game.surfaces[1])
|
||||
|
||||
unit_spawners = {}
|
||||
|
||||
local e = game.surfaces[1].create_entity({name = "biter-spawner", position = {-64, 0}, force = "west"})
|
||||
e.active = false
|
||||
global.map_forces.west.hatchery = e
|
||||
global.map_forces.east.target = e
|
||||
|
||||
local e = game.surfaces[1].create_entity({name = "biter-spawner", position = {64, 0}, force = "east"})
|
||||
e.active = false
|
||||
global.map_forces.east.hatchery = e
|
||||
global.map_forces.west.target = e
|
||||
end
|
||||
|
||||
local event = require 'utils.event'
|
||||
event.on_init(on_init)
|
||||
event.on_nth_tick(60, tick)
|
||||
event.add(defines.events.on_player_joined_game, on_player_joined_game)
|
51
maps/biter_hatchery/raffle_tables.lua
Normal file
51
maps/biter_hatchery/raffle_tables.lua
Normal file
@ -0,0 +1,51 @@
|
||||
local raffle = {
|
||||
["automation-science-pack"] = {{}, 1},
|
||||
["logistic-science-pack"] = {{}, 2},
|
||||
["military-science-pack"] = {{}, 3},
|
||||
["chemical-science-pack"] = {{}, 4},
|
||||
["production-science-pack"] = {{}, 5},
|
||||
["utility-science-pack"] = {{}, 6},
|
||||
["space-science-pack"] = {{}, 7},
|
||||
}
|
||||
|
||||
local t = raffle["automation-science-pack"][1]
|
||||
for _ = 1, 4, 1 do table.insert(t, "small-biter") end
|
||||
for _ = 1, 1, 1 do table.insert(t, "small-spitter") end
|
||||
|
||||
local t = raffle["logistic-science-pack"][1]
|
||||
for _ = 1, 32, 1 do table.insert(t, "small-biter") end
|
||||
for _ = 1, 8, 1 do table.insert(t, "small-spitter") end
|
||||
for _ = 1, 4, 1 do table.insert(t, "medium-biter") end
|
||||
for _ = 1, 1, 1 do table.insert(t, "medium-spitter") end
|
||||
|
||||
local t = raffle["military-science-pack"][1]
|
||||
for _ = 1, 8, 1 do table.insert(t, "small-biter") end
|
||||
for _ = 1, 2, 1 do table.insert(t, "small-spitter") end
|
||||
for _ = 1, 16, 1 do table.insert(t, "medium-biter") end
|
||||
for _ = 1, 4, 1 do table.insert(t, "medium-spitter") end
|
||||
for _ = 1, 4, 1 do table.insert(t, "big-biter") end
|
||||
for _ = 1, 1, 1 do table.insert(t, "big-spitter") end
|
||||
|
||||
local t = raffle["chemical-science-pack"][1]
|
||||
for _ = 1, 12, 1 do table.insert(t, "medium-biter") end
|
||||
for _ = 1, 3, 1 do table.insert(t, "medium-spitter") end
|
||||
for _ = 1, 4, 1 do table.insert(t, "big-biter") end
|
||||
for _ = 1, 1, 1 do table.insert(t, "big-spitter") end
|
||||
|
||||
local t = raffle["production-science-pack"][1]
|
||||
for _ = 1, 4, 1 do table.insert(t, "medium-biter") end
|
||||
for _ = 1, 1, 1 do table.insert(t, "medium-spitter") end
|
||||
for _ = 1, 12, 1 do table.insert(t, "big-biter") end
|
||||
for _ = 1, 3, 1 do table.insert(t, "big-spitter") end
|
||||
|
||||
local t = raffle["utility-science-pack"][1]
|
||||
for _ = 1, 32, 1 do table.insert(t, "big-biter") end
|
||||
for _ = 1, 8, 1 do table.insert(t, "big-spitter") end
|
||||
for _ = 1, 4, 1 do table.insert(t, "behemoth-biter") end
|
||||
for _ = 1, 1, 1 do table.insert(t, "behemoth-spitter") end
|
||||
|
||||
local t = raffle["space-science-pack"][1]
|
||||
for _ = 1, 4, 1 do table.insert(t, "behemoth-biter") end
|
||||
for _ = 1, 1, 1 do table.insert(t, "behemoth-spitter") end
|
||||
|
||||
return raffle
|
Loading…
x
Reference in New Issue
Block a user