cs / factorio /data /base /menu-simulations /menu-simulations.lua
enemy7's picture
Upload 1553 files
898c672
raw
history blame
28 kB
local menu_simulations = {}
menu_simulations.forest_fire =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-forest-fire.zip",
length = 60 * 20,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
]],
update =
[[
local dx = 0
local dy = 0
if game.tick % 3000 < 1000 then
dx = 0.01
elseif game.tick % 3000 < 2000 then
dx = -0.01
end
if (game.tick + 1500) % 3000 < 1000 then
dy = 0.01
elseif (game.tick + 1500) % 3000 < 2000 then
dy = -0.01
end
game.camera_position = {game.camera_position.x + dx*0, game.camera_position.y + dy*0}
]]
}
menu_simulations.solar_power_construction =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-solar-power-construction.zip",
length = 60 * 7,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
local blueprint_string_1 = '0eNqd2dtq4zAUBdB/0bNbLOvuXyllcDKmGBw7+FIagv99cmFoodqWznlLQr2KhfaOdXIVh35tz1M3LKK+iu44DrOo365i7j6Gpr9/tlzOrahFt7QnUYihOd3fzWPfTC/nZmh7sRWiG/62X6KW23sh2mHplq59Mo83lz/Dejq00+0PokAhzuN8u2Yc7v/v5rw49WoKcbm9kqF8NdtW/KKqXKpMUiqTsi5J6VxKJymTS8kkZTMp45OUy6R0+gZ9LpW+wZBJqfQNyjLXMmkrd7+rKm3lbvgqpC1Fz6F3wNL0IELL0JMILUuPIrQcPYvQ8vQwQivQ04isqqTHEVqSnkdoVfQ8QkvR8wgtTc8jtAwjjxpYlpFHZH3v++Z4XE9r3yzjFNv3/r8Ud3yuY/edkOvoXUeVjDyDNVKSkWdkVYw8I0sx8owsnbnuKuyvu8l13L5jcx2z7zhGH6A18ow+QFZg9IEET6Qlow+QJcl9oKLOj32+HualeVy7VwdxRpHrIO5oRh2gJTKMOkCWZdQBshyjDpDlyXUQX/eQtw2+2yDKmJLcBnGH8bSOlsgwntahpcipk1FHk7+F444hxy7uWPI2ijuO/K0Sdzx5H8UdRns7D07ujPaGlqSfrqBV0U9X0FL0+oWWptcvtAy9fqFl6fULLUc/XUHL009X0Ar0/kSWK+n9CS3G1NEZYDHGjtBizB2hxRg8QosxeYQWY/QILcbsEVqM4SO0GNNHZHnG9BFajOcZaDGeZ57We/H86aD+8UtDIT7baX5cVXmpXaictM4FF7btH3fkxKI='
local blueprint_string = '0eNqd191qhDAQBeB3mWt3MTHmx1cppbjbUAIaRWOpLL57XUvpQjOrkzsj5hPmHAi5waWZbD84H6C6gbt2foTq5Qaj+/B1c38X5t5CBS7YFjLwdXtfjV1TD6e+9raBJQPn3+0XVGx5zcD64IKzP8y2mN/81F7ssH4QBTLou3Hd0/n7/1bnJIpzmcG8PjHDzuWyZP8ofpTKd6niIFWoXUocpcQuVR6l2C4lD1Jc71KKnqDWcUrTE8QoQ08Qo1hOjxC1GD1D1OL0EFGrSEixRCyRECNm/XW+vl6ndmrq0A2xeelfSUYdedSRzx111BHPHZ3QA2xGJqEHiMVz8rxF1Hno+XQZQ73tfTbuOMPJ4447KfXmyIhS6o1Z9HrzqEOvd9yh1zvupNQbm1FKvRGryOk9UAaxGL0HqMXpxxVqFfTjCrUEPUfUKuk5opZMyFEilkrIEbN0Qo6YZRJyRCyRJ+SIWSwhx81arwLbnaF6uGJk8GmHcdvFNRPKcMWkUkaZZfkGTxv4MA=='
local inventory = game.create_inventory(1)
local stack = inventory[1]
stack.import_stack(blueprint_string)
local function build_blueprint(position)
stack.build_blueprint{ surface = 'nauvis', position = position, force = 'player', force_build = true }
end
local tiktok =
{
[0.5 * 60] = {-36, -184},
[1 * 60] = {-67, -184},
[4 * 60] = {-36, -184-18},
[math.floor(4.1 * 60)] = {-36+18, -184-18},
[4.2 * 60] = {-36+18, -184},
[4.3 * 60] = {-36+18, -184+18},
[4.4 * 60] = {-36, -184+18},
[4.5 * 60] = {-67, -184+18},
[4.6 * 60] = {-67-18, -184+18},
[4.7 * 60] = {-67-18, -184},
[4.8 * 60] = {-67-18, -184-18},
[4.9 * 60] = {-67, -184-18},
}
local start_tick = game.tick
script.on_event(defines.events.on_tick, function()
local tick_from_start = game.tick - start_tick
local position = tiktok[tick_from_start]
if position then build_blueprint(position) end
end)
]],
update =
[[
]]
}
menu_simulations.lab =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-lab.zip",
length = 60 * 10,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0.5
]],
update =
[[
]]
}
menu_simulations.burner_city =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-burner-city.zip",
length = 60 * 10,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0.5
]],
update =
[[
]]
}
menu_simulations.mining_defense =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-mining-defense.zip",
length = 60 * 15,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
game.forces.enemy.evolution_factor = 0.11
]],
update =
[[
]]
}
menu_simulations.biter_base_steamrolled =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-biter-base.zip",
length = 60 * 10,
init =
[[
local surface = game.surfaces.nauvis
local logo = surface.find_entities_filtered{name = "factorio-logo-11tiles"}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
center = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
surface.daytime = 0
game.forces.enemy.evolution_factor = 0.3
surface.peaceful_mode = true
local count = 120
script.on_nth_tick(2,
function()
count = count - 2
if count <= 0 then
for i=0,20 do
local y = game.camera_position.y - 20 + i * 2
local x = game.camera_position.x - 40
local character = surface.create_entity{ name = "character", position = {x, y}, force = "player" }
character.color = {1, 0, 0, 0.5}
local tank = surface.create_entity{ name = "tank", position = {x, y}, force = "player" }
tank.orientation = 0.25
tank.insert{name = "rocket-fuel", count = 3}
tank.speed = 0.5
tank.set_driver(character)
character.riding_state = { acceleration = defines.riding.acceleration.accelerating, direction = defines.riding.direction.straight }
end
script.on_nth_tick(2, nil)
end
end)
local wube_logo_position = {-499.5, 43.5}
script.on_nth_tick(1,
function()
if surface.count_entities_filtered{position = wube_logo_position, radius = 3, name = "tank"} > 0 then
local tiles = {}
for x=-3,3 do
for y=-3,3 do
table.insert(tiles, {name = "dirt-1", position = {wube_logo_position[1] + x, wube_logo_position[2] + y}})
end
end
surface.set_tiles(tiles)
end
end)
]]
}
menu_simulations.biter_base_spidertron =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-biter-base.zip",
length = 60 * 12,
init =
[[
local surface = game.surfaces.nauvis
local logo = surface.find_entities_filtered{name = "factorio-logo-11tiles"}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
center = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
surface.daytime = 0
game.forces.enemy.evolution_factor = 1
surface.peaceful_mode = true
spider = surface.create_entity{name = "spidertron", position = {logo.position.x - 30, logo.position.y + 60}, force = "player"}
spider.force.research_all_technologies()
local grid = spider.grid
grid.put{name = "fusion-reactor-equipment"}
grid.put{name = "personal-laser-defense-equipment"}
grid.put{name = "personal-laser-defense-equipment"}
grid.put{name = "personal-laser-defense-equipment"}
spider.insert({name = "rocket", count = 800})
points =
{
{-16, -8},
{0, -12},
{16, -8},
{16, 0},
{60, 60},
}
local bonk = function()
local k, position = next(points)
if not k then return end
points[k] = nil
local x = position[1] + center[1]
local y = position[2] + center[2]
spider.autopilot_destination = {x, y}
end
bonk()
script.on_event(defines.events.on_spider_command_completed, function(event)
bonk()
end)
]]
}
menu_simulations.biter_base_artillery =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-biter-base.zip",
length = 60 * 12,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
logo.destructible = false
game.camera_position = {logo.position.x, logo.position.y+9.75}
center = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
game.forces.enemy.evolution_factor = 0.7
local bases = {}
local get = function()
bases = game.surfaces[1].find_entities_filtered{force = "enemy", position = center, radius = 32}
for k, v in pairs (bases) do
local i = math.random(#bases)
bases[k], bases[i] = bases[i], bases[k]
end
end
local badonk = function(position, fluff)
local x = position.x + ((math.random() - 0.5) * fluff * 2)
local y = position.y + ((math.random() - 0.5) * fluff * 2)
return {x, y}
end
get()
local donk = function()
local k, base = next(bases)
if not k then
if not badink then
get()
badink = true
end
return
end
bases[k] = nil
if not base.valid then return end
game.surfaces[1].create_entity{name = "artillery-projectile", position = {center[1]-80, center[2]-80}, force = "player", target = badonk(base.position, base.get_radius()), speed = 1}
end
script.on_nth_tick(17, donk)
script.on_nth_tick(23, donk)
script.on_nth_tick(29, donk)
script.on_event(defines.events.on_entity_died, function()
if not badoob then
for k, v in pairs (game.surfaces[1].find_enemy_units(center, 32, "player")) do
if not (v.command and v.command.type == defines.command.go_to_location) then
v.set_command{type = defines.command.go_to_location, destination = {center[1] + 80, center[2] + 20}}
end
end
end
end)
]]
}
menu_simulations.biter_base_player_attack =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-biter-base.zip",
length = 60 * 12,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
logo.destructible = false
game.camera_position = {logo.position.x, logo.position.y+9.75}
center = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.forces.enemy.evolution_factor = 0.5
game.surfaces[1].peaceful_mode = true
game.forces.player.research_all_technologies()
game.surfaces.nauvis.daytime = 0
local character = game.surfaces[1].create_entity{name = "character", position = {center[1] - 40, center[2] - 20}, force = "player"}
character.insert{name = "heavy-armor"}
character.insert{name = "submachine-gun"}
character.insert{name = "piercing-rounds-magazine", count = 50}
character.insert{name = "grenade", count = 50}
points =
{
{-20, -8},
{-20, 8},
{-40, 20},
{0, -12},
{16, -8},
{16, 0},
{8, 8},
{60, 8},
}
local distance = function(p_1, p_2)
local dx = (p_1[1] or p_1.x) - (p_2[1] or p_2.x)
local dy = (p_1[2] or p_1.y) - (p_2[2] or p_2.y)
return ((dx * dx) + (dy * dy)) ^ 0.5
end
local direction = function(p_1, p_2)
local d_x = (p_2[1] or p_2.x) - (p_1[1] or p_1.x)
local d_y = (p_2[2] or p_2.y) - (p_1[2] or p_1.y)
local angle = math.atan2(d_y, d_x)
local orientation = (angle / (2 * math.pi)) - 0.25
if orientation < 0 then orientation = orientation + 1 end
local direction = math.floor((orientation * 8) + 0.5)
if direction == 8 then direction = 0 end
return direction
end
local get_shoot_target = function(entity)
local enemies = entity.surface.find_entities_filtered{force = "enemy", type = {"unit-spawner", "turret", "unit"}, position = entity.position, radius = 15}
local closest = entity.surface.get_closest(entity.position, enemies)
return closest
end
local badonk = function(position, fluff)
local x = position.x + ((math.random() - 0.5) * fluff * 2)
local y = position.y + ((math.random() - 0.5) * fluff * 2)
return {x, y}
end
script.on_event(defines.events.on_tick, function()
if not character.valid then return end
local k, destination = next(points)
if not k then return end
local target = {center[1] + destination[1], center[2] + destination[2]}
if distance(character.position, target) < 1 then
points[k] = nil
return
end
if game.tick % 17 == 0 then
local walking_direction = direction(target, character.position)
character.walking_state = {walking = true, direction = walking_direction}
end
if not (shoot_target and shoot_target.valid) or game.tick % 123 == 0 then
shoot_target = get_shoot_target(character)
end
if shoot_target then
character.shooting_state = {state = defines.shooting.shooting_enemies, position = shoot_target.position}
if game.tick % 31 == 0 then
character.surface.create_entity{name = "grenade", position = character.position, speed = 0.3, target = badonk(shoot_target.position, 2), force = "player"}
end
else
character.shooting_state = {state = defines.shooting.not_shooting}
end
end)
]]
}
menu_simulations.biter_base_laser_defense =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-biter-base.zip",
length = 60 * 12,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
logo.destructible = false
game.camera_position = {logo.position.x, logo.position.y+9.75}
center = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.forces.enemy.evolution_factor = 0.7
game.surfaces[1].peaceful_mode = true
game.forces.player.research_all_technologies()
game.surfaces.nauvis.daytime = 0
local character = game.surfaces[1].create_entity{name = "character", position = {center[1] - 40, center[2] + 20}, force = "player"}
character.insert{name = "power-armor-mk2"}
local grid = character.get_inventory(defines.inventory.character_armor)[1].grid
grid.put{name = "exoskeleton-equipment"}
grid.put{name = "exoskeleton-equipment"}
for k = 1, 10 do
grid.put{name = "personal-laser-defense-equipment"}
grid.put{name = "energy-shield-mk2-equipment"}
grid.put{name = "battery-mk2-equipment"}
grid.put{name = "battery-mk2-equipment"}
end
for k, equipment in pairs(grid.equipment) do
if equipment.max_shield > 0 then equipment.shield = equipment.max_shield end
equipment.energy = equipment.max_energy
end
character.insert{name = "submachine-gun"}
character.insert{name = "uranium-rounds-magazine", count = 50}
points =
{
{-16, -8},
{0, -12},
{16, -8},
{16, 0},
{8, 8},
{60, 8},
}
local distance = function(p_1, p_2)
local dx = (p_1[1] or p_1.x) - (p_2[1] or p_2.x)
local dy = (p_1[2] or p_1.y) - (p_2[2] or p_2.y)
return ((dx * dx) + (dy * dy)) ^ 0.5
end
local direction = function(p_1, p_2)
local d_x = (p_2[1] or p_2.x) - (p_1[1] or p_1.x)
local d_y = (p_2[2] or p_2.y) - (p_1[2] or p_1.y)
local angle = math.atan2(d_y, d_x)
local orientation = (angle / (2 * math.pi)) - 0.25
if orientation < 0 then orientation = orientation + 1 end
local direction = math.floor((orientation * 8) + 0.5)
if direction == 8 then direction = 0 end
return direction
end
local get_shoot_target = function(entity)
local enemies = entity.surface.find_enemy_units(entity.position, 10)
local closest = entity.surface.get_closest(entity.position, enemies)
return closest
end
script.on_event(defines.events.on_tick, function()
local k, destination = next(points)
if not k then return end
local target = {center[1] + destination[1], center[2] + destination[2]}
if distance(character.position, target) < 1 then
points[k] = nil
return
end
if game.tick % 17 == 0 then
local walking_direction = direction(target, character.position)
character.walking_state = {walking = true, direction = walking_direction}
end
if not (shoot_target and shoot_target.valid) then
shoot_target = get_shoot_target(character)
end
if shoot_target then
character.shooting_state = {state = defines.shooting.shooting_enemies, position = shoot_target.position}
else
character.shooting_state = {state = defines.shooting.not_shooting}
end
end)
]]
}
menu_simulations.artillery =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-artillery.zip",
length = 60 * 22,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
]],
update =
[[
]]
}
menu_simulations.train_junction =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-train-junction.zip",
length = 60 * 10,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
]],
update =
[[
]]
}
menu_simulations.oil_pumpjacks =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-oil-pumpjacks.zip",
length = 60 * 12,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
]],
update =
[[
]]
}
menu_simulations.oil_refinery =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-oil-refinery.zip",
length = 60 * 20,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
]],
update =
[[
]]
}
menu_simulations.early_smelting =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-early-smelting.zip",
length = 60 * 10,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
]],
update =
[[
]]
}
menu_simulations.train_station =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-train-station.zip",
length = 60 * 16,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
]],
update =
[[
]]
}
menu_simulations.logistic_robots =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-logistic-robots.zip",
length = 60 * 12,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
]],
update =
[[
]]
}
menu_simulations.nuclear_power =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-nuclear-power.zip",
length = 60 * 12,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
game.camera_position = {logo.position.x, logo.position.y+9.75}
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
]],
update =
[[
]]
}
menu_simulations.chase_player =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-chase-player.zip",
length = 60 * 16,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
local center = {logo.position.x, logo.position.y+9.75}
game.camera_position = center
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 0
game.map_settings.steering.moving.force_unit_fuzzy_goto_behavior = true
game.map_settings.steering.moving.radius = 1
local character = game.surfaces[1].create_entity{name = "character", position = {center[1] - 55, center[2] + 4.5}, force = "player"}
character.walking_state = {walking = true, direction = 2}
character.character_running_speed_modifier = 0.2
character.tick_of_last_attack = game.tick
local biter = game.surfaces[1].create_entity{name = "small-biter", position = {center[1] - 40, center[2] + 4.5}}
biter.speed = character.character_running_speed
biter.set_command{type = defines.command.go_to_location, destination = {center[1] + 60, center[2] + 4.5}, distraction = defines.distraction.none}
script.on_nth_tick(10, function()
if biter.position.x < (center[1] + 50) then return end
character.walking_state = {walking = true, direction = 6}
character.tick_of_last_attack = 0
character.character_running_speed_modifier = 0.6
local command = {type = defines.command.go_to_location, destination_entity = character, distraction = defines.distraction.none}
biter.set_command(command)
biter.speed = character.character_running_speed
local position = biter.position
local surface = game.surfaces[1]
local names = {"medium-biter", "small-biter", "small-biter", "small-biter"}
for k = 1, 25 do
local spawn_position = {position.x + math.random(-5, 5), position.y + math.random(-10, 10)}
local name = names[math.random(#names)]
local biter = surface.create_entity{name = name, position = position}
biter.set_command(command)
biter.speed = character.character_running_speed
end
script.on_nth_tick(10, nil)
end)
]]
}
menu_simulations.big_defense =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-big-defense.zip",
length = 60 * 12,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
logo.destructible = false
local center = {logo.position.x, logo.position.y+9.75}
game.camera_position = center
game.camera_zoom = 1
game.tick_paused = false
game.surfaces.nauvis.daytime = 1
game.map_settings.steering.moving.force_unit_fuzzy_goto_behavior = true
game.map_settings.steering.moving.radius = 3
local bop = function()
local surface = game.surfaces[1]
local target = surface.find_entities_filtered{name = "flamethrower-turret", position = {33.5, -12}}[1]
local names = {"medium-biter", "medium-biter", "big-biter", "big-biter", "big-spitter", "medium-spitter"}
for k = 1, 100 do
local spawn_position = {center[1] - 60 + math.random(-35, 5), center[2] + math.random(-10, 10)}
local name = names[math.random(#names)]
local biter = surface.create_entity{name = name, position = spawn_position}
biter.set_command({type = defines.command.attack, target = target})
biter.speed = 0.24 + (math.random() / 20)
end
end
bop()
]]
}
menu_simulations.brutal_defeat =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-brutal-defeat.zip",
length = 60 * 18,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
logo.destructible = false
local center = {logo.position.x, logo.position.y+9.75}
game.camera_position = center
game.camera_zoom = 1
game.tick_paused = false
game.map_settings.steering.moving.force_unit_fuzzy_goto_behavior = true
game.map_settings.steering.moving.radius = 2
game.forces.enemy.set_ammo_damage_modifier("melee", 10)
game.forces.enemy.set_ammo_damage_modifier("biological", 10)
game.forces.enemy.set_gun_speed_modifier("melee", 0.5)
game.forces.enemy.set_gun_speed_modifier("biological", 0.5)
local bop = function()
local surface = game.surfaces[1]
local targets = surface.find_entities_filtered{force = "player", position = {center[1] + 25, center[2]}, radius = 10}
local count = #targets
local names = {"medium-biter", "small-biter", "small-biter", "small-biter", "small-biter", "small-biter", "small-spitter"}
for k = 1, 350 do
local spawn_position = {center[1] - 40 + math.random(-55, 5), center[2] + 10 + math.random(-5, 5)}
local name = names[math.random(#names)]
local biter = surface.create_entity{name = name, position = spawn_position}
biter.set_command
{
type = defines.command.compound,
structure_type = defines.compound_command.return_last,
commands =
{
{type = defines.command.attack, target = targets[math.random(count)]},
{type = defines.command.attack_area, destination = {center[1] + 20, center[2]}, radius = math.random(5, 10)},
{type = defines.command.attack_area, destination = {center[1] + 35, center[2]}, radius = math.random(2, 5)},
{type = defines.command.go_to_location, destination = {center[1] + 120, center[2]}}
}
}
biter.speed = 0.24 + (math.random() / 20)
end
end
bop()
]]
}
menu_simulations.spider_ponds =
{
checkboard = false,
save = "__base__/menu-simulations/menu-simulation-spider-ponds.zip",
length = 60 * 12,
init =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{name = "factorio-logo-11tiles", limit = 1}[1]
logo.destructible = false
local center = {logo.position.x, logo.position.y+9.75}
game.camera_position = center
game.camera_zoom = 1
game.tick_paused = false
local spider = game.surfaces.nauvis.find_entities_filtered{name = "spidertron", limit = 1}[1]
points =
{
{-16, -8},
{0, -12},
{16, -8},
{16, 0},
{60, 60},
}
local bonk = function()
local k, position = next(points)
if not k then return end
points[k] = nil
local x = position[1] + center[1]
local y = position[2] + center[2]
spider.autopilot_destination = {x, y}
end
bonk()
script.on_event(defines.events.on_spider_command_completed, function(event)
bonk()
end)
]]
}
return menu_simulations