|
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 |