local Public = {} function Public.locomotive_spawn(surface, position) for y = -6, 6, 2 do surface.create_entity({name = "straight-rail", position = {position.x, position.y + y}, force = "player", direction = 0}) end global.locomotive = surface.create_entity({name = "locomotive", position = {position.x, position.y + -3}, force = "player"}) global.locomotive.get_inventory(defines.inventory.fuel).insert({name = "wood", count = 100}) global.locomotive_cargo = surface.create_entity({name = "cargo-wagon", position = {position.x, position.y + 3}, force = "player"}) global.locomotive_cargo.get_inventory(defines.inventory.cargo_wagon).insert({name = "raw-fish", count = 8}) rendering.draw_light({ sprite = "utility/light_medium", scale = 5.5, intensity = 1, minimum_darkness = 0, oriented = true, color = {255,255,255}, target = global.locomotive, surface = surface, visible = true, only_in_alt_mode = false, }) global.locomotive.color = {0, 255, 0} global.locomotive.minable = false global.locomotive_cargo.minable = false global.locomotive_cargo.operable = false end --[[ local function fish_tag() if not global.locomotive_cargo then return end if not global.locomotive_cargo.valid then return end if not global.locomotive_cargo.surface then return end if not global.locomotive_cargo.surface.valid then return end if global.locomotive_tag then if global.locomotive_tag.valid then if global.locomotive_tag.position.x == global.locomotive_cargo.position.x and global.locomotive_tag.position.y == global.locomotive_cargo.position.y then return end global.locomotive_tag.destroy() end end global.locomotive_tag = global.locomotive_cargo.force.add_chart_tag( global.locomotive_cargo.surface, {icon = {type = 'item', name = 'raw-fish'}, position = global.locomotive_cargo.position, text = " " }) end local function accelerate() if not global.locomotive then return end if not global.locomotive.valid then return end if global.locomotive.get_driver() then return end global.locomotive_driver = global.locomotive.surface.create_entity({name = "character", position = global.locomotive.position, force = "player"}) global.locomotive_driver.driving = true global.locomotive_driver.riding_state = {acceleration = defines.riding.acceleration.accelerating, direction = defines.riding.direction.straight} end local function remove_acceleration() if not global.locomotive then return end if not global.locomotive.valid then return end if global.locomotive_driver then global.locomotive_driver.destroy() end global.locomotive_driver = nil end local function set_daytime() if not global.locomotive_cargo then return end if not global.locomotive_cargo.valid then return end local p = global.locomotive_cargo.position.y local t = math.abs(global.locomotive_cargo.position.y) * 0.02 if t > 0.5 then t = 0.5 end global.locomotive_cargo.surface.daytime = t game.print(t) end ]] local function set_player_spawn_and_refill_fish() if not global.locomotive_cargo then return end if not global.locomotive_cargo.valid then return end global.locomotive_cargo.get_inventory(defines.inventory.cargo_wagon).insert({name = "raw-fish", count = 4}) local position = global.locomotive_cargo.surface.find_non_colliding_position("stone-furnace", global.locomotive_cargo.position, 16, 2) if not position then return end game.forces.player.set_spawn_position({x = position.x, y = position.y}, global.locomotive_cargo.surface) end local function tick() local Reset = require "maps.mountain_fortress_v2.main".reset_map if game.tick % 30 == 0 then if game.tick % 1800 == 0 then set_player_spawn_and_refill_fish() end if global.game_reset_tick then if global.game_reset_tick < game.tick then global.game_reset_tick = nil Reset() end return end --fish_tag() --set_daytime() --accelerate() else --remove_acceleration() end end local event = require 'utils.event' event.on_nth_tick(5, tick) return Public