Autodrive

by Pi-C

Car equipment for train avoidance, logistic network integration, circuit network connectivity, fuel refill, ammo reload, vehicle repair, radio control, enemy targeting, and gate control.

Content
2 months ago
0.17 - 1.1
2.98K
Transportation Combat Logistic network Circuit network

Changelog

Version: 1.1.17
Date: 2024-10-05
  Uploaded by:
    - Pi-C

  Bugfixes:
    - Fixed crash when running on_configuration_changed, reported a long time ago on the discussion board of another mod about an old version of Autodrive. (https://mods.factorio.com/mod/far-reach/discussion/650053e2ecd8c6a540556e32)

  Changes:
    - Debugging state was toggled on entering/leaving some functions. This shouldn't have activated logging unless you already had activated debugging, but tunless new problems turn up in these functions I don't need the logging anymore, so I remove the lines where it was toggled.


  TODO:
    - Don't forget to remove the new optional dependency on "Krastorio2" once it creates new equipment-grids for "Aircraft" in data/data-updates instead of data-final-fixes! (Current version of K2: 1.3.24)

    - Bugfix: Suicide by train (Is that taken care of by bouncing?)
    - Change: Find a way to toggle logistics behavior so that items requested/loaded in place A can be provided/unloaded in place B. (Buffer chest instead of requester/provider?)
    - Potential change: Add drop-down list of destinations?

    - Record routes by driving them with a vehicle: "Markers" mod could be used to set waypoints (one kind where direction is changed, one kind as a stop where the vehicle is waiting for a certain time or until a condition is met -- similar to train stations). Once a route has been recorded, it becomes available to all players on the force and can be assigned to vehicles per GUI.

    - What I did discover is that the status of the follow enabled or disabled, seems to be what's getting stuck. If I save the with follow disabled, the car comes back stuck in disabled when the save is loaded. If I save in enabled, the car comes back stuck in enabled mode. I also discovered that it is the process of removing the car from the Autodrive list that is what resets it to normal control. I thought I had done that already, but I'm not so sure now. (https://mods.factorio.com/mod/autodrive/discussion/5f13807cad167e6da3ce6ef3)

    - Follow mode: When my car is set to follow me and I go to a place it cannot reach (due to lack of space), it goes into a mode where it continually says "Pathing..." and stops moving forever, even when my position is reachable again. Stopping/starting follow usually fixes it and it starts following again. (https://mods.factorio.com/mod/autodrive/discussion/5ecafdf5b7d53d000c414812)

    - Group pathing: One final improvement to the logic might be to do a repath once the final (20 tiles? 10 %?) leg of the trip is reached, just to make sure the parking spot is still available. This would help alleviate the parking issue if they arrived on a moderate delay. (https://mods.factorio.com/mod/autodrive/discussion/5f0a926401510c706ab84ecb)

    - Repathing while driving: Perhaps defining a hot-key for "Stop" would be an option? Pro: You don't have to move the mouse over to the GUI, so it may be faster. Contra: One more hot key competing with combinations from other mods. (https://mods.factorio.com/mod/autodrive/discussion/5efddc617d58e102db147db0)

    - On entering panic mode, save state.path to state.panic.saved_path. On leaving panic mode, find a path to next(state.panic.saved_path), once there, remove state.panic.saved_path[1] and write back state.panic.saved_path to state.path. (This doesn't make sense now. It will be relevant if we can store complex paths with routes between waypoint destinations.)

    - Try save autodrive-shortwave-test!

    - Register to events from "CustomColor" once that is updated (current version: 3.1.1)!
    - Use find_entities_filtered with rotated areas for the train sensor! (Do we still need the train sensor? Since the introduction of bouncing, vehicles will be shoved off the rails by trains already.)

    - Consider conflicting with "DMV" mod. For some reason, the cars that have been converted to spider-vehicles never get a path, and impact damage is never registered for them (only for the other crashing party), so healing/repairs and bouncing don't work either.
Version: 1.1.16
Date: 2024-09-29
  Uploaded by:
    - Pi-C

  Bugfixes:
    - Fixed crash when running on_configuration_changed, reported on the discussion board of another mod about an old version of Autodrive. (https://mods.factorio.com/mod/far-reach/discussion/650053e2ecd8c6a540556e32)

  Changes:
    - Debugging state was toggled on entering/leaving some functions. This shouldn't have activated logging unless you already had activated debugging, but tunless new problems turn up in these functions d, so it's better to remove the lines that toggled the logging.


  Compatibility:
    - Blacklisted vehicle prototype from "Maraxsis", a still deprecated mod that should become available when Factorio 2.0 drops.

    - Forked Schallfalke's mod "Schall Tank Woodcutting" in order to fix some issues with the original. My version also has some improvements tailored to Autodrive. Mainly, if vehicles that have a fuel sensor and are controlled by Autodrive crash into a rock or a tree, they will try to pick up wood and coal IF they can use them to fuel themselves or installed equipment. Also, vehicles that collide with a tree or rock but don't kill them will no longer bounce if "Schall Tank Woodcutting (Autodrive fix)" destroys these entities on impact.
Version: 1.1.15
Date: 2024-07-18
  Uploaded by:
    - Pi-C

  Info:
    - "All The Mods Tradução Brasileira" now (since version 0.0.35) includes an "Autodrive" localization in Brasilian Portuguese. Thanks a lot to LUIS_DAS_ARTIMANHAS for translating the strings! (As the other mod already contains an optional dependency on "Autodrive", I can't add a dependency myself or we'd get a dependency circle.)

  Bugfixes:
    - Fixed that a dummy would appear outside a vehicle when it already had finished autodriving along a path and was assigned a new path. This happened because we didn't preserve the current list of occupants when the vehicle state was reset after the first path was finished, so we'd create a new dummy as passenger, which would replace (and eject) the existing dummy. (https://mods.factorio.com/mod/autodrive/discussion/6676cbd9827872aa6f62262d)

    - Fixed that with "Nullius", remote control could only be hand-crafted. They can now be crafted in Small and Medium Assemblers as well.

    - Fixed crash when another mod (in this case: "Schall Tank Woodcutter") responded to on_entity_damaged before us and destroyed the entity damaged by one of our vehicles. As we wouldn't get the first event (where the vehicle is event.cause), we wouldn't have marked the following events (where event.cause of the first event may be event.entity) for skipping, so the assumption that event.cause would exist and be valid when we check for bouncing was wrong. (https://mods.factorio.com/mod/autodrive/discussion/6676e92cad7fcc95f5f30014)

    - Fixed that panicking vehicles wouldn't calm down if they crashed into something repeatedly without changing position. (Reasons: Looked for crash data in the parent of the actual table, and overshadowed class name with panic data so the calm_down function couldn't be called.).

    - Fixed crash with scenario that changes player force in on_player_created, caused by trying to access the uninitialized player data. (https://mods.factorio.com/mod/autodrive/discussion/6691b4ad09b021ad2e10c486)

    - Fixed that "clearance" -- the multiplier applied to the vehicle's collision_box -- wasn't reduced on repathing after path finding failed. The value of "clearance" is used to determine the radius for surface.find_non_colliding_position() when we bump the vehicle to a new start position; bigger clearance leaves more room for maneuvering, but if we can't find a position, clearance will be gradually reduced from 1.5 to 1. We also need this value to determine the size of bounding_box for surface.request_path().

    - Fixed that toggling camera view on our GUI would crash the game. We didn't convert the vehicle's unit_number that we extracted from button name from string to number, so looking up vehicle data in our vehicle list failed.(https://mods.factorio.com/mod/autodrive/discussion/6667a05ac3b7746017fd9dee)


  Changes:
    - We now keep a prototype list of fuel items, ammo items, fuelable grid equipment, and guns. We also store what items can be used by by each vehicle (ammo/fuel) or grid equipment (fuel). This allows for more efficient reloading/refueling. It's also a prerequisite for issuing a warning if the amount of usable fuel/ammo in the trunk drops below a certain limit.

    - We now store installed sensors and fuelable equipment with grid data instead of the individual vehicles' data. This way we don't need to care about preserving these kind-of-static data each time a vehicle has finished a path etc., but only when they are added to/removed from the grid.

    - We now only rotate vehicles based on a "car" prototype during pathing. It's useless for spider-vehicles as they don't have the property "orientation".

  Compatibility:
    - Blacklisted vehicles and grids from "Schmitt | Logistic Carts/Transport Drones". This is a fork of a fork of dorfl's "Logicarts" mod (still using the same prototype names), and the logicarts were already meant to be ignored by "Autodrive" when it was still owned by dorfl.

    - Removed optional dependency on "Schall Transport Group". This may fix a bug caused by mod loading order (see https://mods.factorio.com/mod/autodrive/discussion/6676e92cad7fcc95f5f30014 for more info). However, you still can use "Schall Transport Group" together with "Autodrive" just as before, our sensors and remote control will still be put into the "Transport" group!
Version: 1.1.14
Date: 2024-06-22
  Uploaded by:
    - Pi-C


  Bugfixes:
    - Fixed crash in on_load when updating Autodrive to version 1.1.13 because mod tries to access a table before it has been created. (https://mods.factorio.com/mod/autodrive/discussion/66765ed1ad7fcc95f5f3000b)
Version: 1.1.13
Date: 2024-06-21
  Uploaded by:
    - Pi-C

  Minor features:
    - If you are in the driver's seat of a vehicle following a path, you now can switch to manual driving by changing direction (this will remove the path).

    - If you are in a bouncing vehicle, you can now stop bouncing by accelerating (if the vehicle is moving backwards) or braking (if the vehicle is moving forwards).

    - Vehicles that killed an entity on impact but were not put in steamroll mode will keep their current direction but gradually slow down. Slowing down can be cancelled (so the vehicle doesn't have to come to a full stop) by accelerating when the vehicle is moving forwards, or by reversing when the vehicle is moving backwards.

    - Added custom inputs for cancelling the path (can only be used by driver) and emergency stop (can be used by driver and passenger of any vehicle, will brake hard and remove the path). The new custom inputs are still undefined, so you must set them in Settings-->Controls-->Mods before they can be used!


  Bugfixes:
    - Fixed that vehicles would bounce even if the entity they've crashed with was destroyed.  (https://mods.factorio.com/mod/autodrive/discussion/664eb889ef75a94af98de5fc)

    - Fixed that if vehicle wouldn't bounce if a train was involved in the crash and on_entity_damaged was first run for the train as crash cause and the vehicle as damaged entity.

    - Fixed crash when refueling equipment in a vehicle's equipment grid because function for getting the localized name didn't accept LuaEquipmentPrototype as argument. (https://mods.factorio.com/mod/autodrive/discussion/665532a7b9ba80fd6f031f68)

    - Fixed that grid equipment would only be refueled if the vehicle had also run out of fuel. (https://mods.factorio.com/mod/autodrive/discussion/665532a7b9ba80fd6f031f68)

    - Fixed that equipment in grids of vehicles without a fuel tank (e.g. vanilla spider-vehicles) would never be refueled.

    - Fixed that remote control couldn't be crafted if "Nullius" was active. (https://mods.factorio.com/mod/autodrive/discussion/6667a05ac3b7746017fd9dee)

    - Fixed crash in debugging function when trying to output info about an invalid inventory.

    - Fixed that a stopped vehicle standing with its back to an entity that could be steamrolled would move forwards instead of backwards when it destroyed the entity on impact.


  Changes:
    - On collisions with entities that can't be steamrolled (i.e., everything except trees, units, unit-spawners, and worms), vehicles will now bounce if the entity has survived, or slow down if the entity was killed. Vehicles that are not on the GUI will now always bounce if they've crashed with an entity (including trees etc.) that survived, or slow down if the entity was destroyed. (https://mods.factorio.com/mod/autodrive/discussion/664eb889ef75a94af98de5fc)

    - We now keep track of equipment item prototypes with burner, and store fuelable equipment with vehicle data.

    - When vehicles or equipment are refueled, we now move the items from the burnt_results_inventory to the vehicle trash (only for spider-vehicles!), to the trunk, or to the trash or main inventory of driver or passenger (unless the passenger is our dummy). All remaining items will be spilled on the ground and marked for deconstruction.

    - We now store driver, passenger and dummies with the vehicles controlled by us. Dummies will be removed when somebody enters the driver's seat, so that player-controlled passengers may enter.
Version: 1.1.12
Date: 2024-05-17
  Uploaded by:
    - Pi-C

  Bugfixes:
    - Fixed crash because of an uninitialized table. (https://mods.factorio.com/mod/autodrive/discussion/6632e165fe05bc0b3539ae87, https://mods.factorio.com/mod/autodrive/discussion/6646523a5767a05cb7fe429b)

  Compatibility:
    - Added optional hidden dependency on "NoEquipmentGrid". If the mod is active, settings for removing grids of car and spider-vehicle prototypes will be hidden and set to "false".
Version: 1.1.11
Date: 2024-04-10
  Uploaded by:
    - Pi-C

  Bugfixes:
    - Fixed crash on trying to access riding_state of spider-vehicles, which exists only for players and cars. (https://mods.factorio.com/mod/autodrive/discussion/6614a96d349a1c39a2e92005)

  Changes:
    - Skip calculating max_speed of vehicles based on spider-vehicle prototye in on_tick.
    - Improvements to debugging functions.
Version: 1.1.10
Date: 2024-01-12
  Uploaded by:
    - Pi-C

  Info:
    - You may want to check out the new mod "Shortwave & Autodrive Graphics fix" which provides some improved graphics as well as a Japanese translation of Autodrive and Shortwave. (https://mods.factorio.com/mod/shortwave-and-autodrive-graphics-fix)

  Bugfixes:
    - Fixed that with the logistic sensor, unfiltered slots wouldn't be added to slot list for provided items if filtered slots were found in the same row of the inventory.
    - Fixed that buttons for toggling enemy and logistics sensors would be enabled on the GUI even if no such sensor was installed.
    - Fixed that a vehicle's rendering of the channel name would be kept when the circuit network sensor was removed.
    - Fixed that with the logistic sensor, slots in the trunk inventory that already contained items but had a filter set for another item would only add the request, but never provide the existing item.
    - Fixed that vehicles were reset when "Request from buffer chests" was toggled via the GUI.
    - Fixed that code for checking sensors was run when only sensors that had been disabled via the GUI were installed in the vehicle grid.

  Changes:
    - We'll now process the provides/requests of a vehicle only if it is located within the bounds of a logistic network that has at least one bot. This should improve performance in the unlikely event that all bots from an isolated network (e.g. in a distant outpost) have been destroyed.
    - Added another migration file, moving some of the stored vehicle data into subtables. As quite a lot of data was dumped into one big table, this made debugging unnecessarily hard. I hope I didn't introduce any new bugs with that -- so far, things seem to work alright, though!
Version: 1.1.9
Date: 2024-01-08
  Uploaded by:
    - Pi-C


  Changes:
    - If vehicles equipped with a logistics sensor provide items that they also request, we try to fulfill the requests with items from the trunk or with items we've already moved into the hidden provider chest so that bots don't have to move these items.
    - We no longer search empty inventories for stacks to transfer.
    - We now stop stack transfers once the destination inventory is full.
    - Armor items are now considered special items, so they won't lose the items from their equipment grid when they are provided.
    - We now also consider items-with-tags and items-with-label as special items if no tag or label is set. This should help against blueprints being cleared when they are moved to the hidden provider chest.
    - We now use a cached empty table as fallback in constructs like "for k, v in pairs(tab or {})". This should improve performance a bit as we can reuse the same table again and again, without allocating a new one each time.
    - Cleaned up a huge mess of obsolete code that has been commented out for ages.

  GUI:
    - Added buttons to temporarily disable enemy and logistic sensors. (https://mods.factorio.com/mod/autodrive/discussion/5f13807cad167e6da3ce6ef3)
Version: 1.1.8
Date: 2023-12-30
  Uploaded by:
    - Pi-C

  Bugfixes:
    - Fixed that a player couldn't use the selection tool after changing to a force that already had researched our unlock tech but had no other players (e.g. after changing to force "enemy" after the tech was researched using cheats like commands or "Creative Mod").
    - Fixed that some keys were assigned to wrong categories in the English locale.
    - Fixed that vehicles couldn't be linked to the radio from "Shortwave". (https://mods.factorio.com/mod/autodrive/discussion/658118477d17e8c8831e86b3)


  Changes:
    - Added "is_military_target = true" to supported vehicle prototypes. This means that turrets of enemy forces may now automatically target your vehicles.
    - If two vehicles were parked touching each other (e.g. after they stopped bouncing), and tried to find a path again, it could happen that they would still touch each other after bumping. In order to prevent this, we will now rotate vehicles full circle in up to 24 steps. If we couldn't find a path from the current vehicle position after rotating the vehicle by 360°, we will bump it to a new position (up to 5 times) and try to repath from there.
    - Added setting for the angle by which vehicles are rotated when pathing (15°, 30°, or 45°). The angle affects the maximum number of rotations (n = 360°/angle): smaller angles increase the chance of finding a path, larger angles potentially reduce the number of rotations (and thus: path requests) and may be better for UPS.
    - Vehicles that are linked to a shortwave-radio will now transmit their position as soon as it changes (arrival and departure times will still be updated once per second).
Version: 1.1.6
Date: 2023-10-17
  Uploaded by:
    - Pi-C

  Minor features:
    - We no longer use the same top speed for all vehicles! Several years ago, AlienX already suggested to "[u]se crazy math to work out a vehicles max speed, and set the 'auto pilot' to that" and provided some code to figure out the maximum speed a vehicle could drive at. (As I'm using variable modifiers of fuel and -- once Factorio >=1.1.93 is active -- sticker effects, it's not possible to store the maximum speed per vehicle/tile; but the maximum speed of moving vehicles will be cached until fuel, terrain, or sticker effects change.) Thanks a lot, AlienX! (https://mods.factorio.com/mod/autodrive/discussion/5d795c18ae6ef6000cece2a7)
    - The cursor will be changed to Autodrive remote control when players use the toggle button to turn on the GUI, provided they have one in their inventory or use the "Shortcuts" mod.
    - If an enemy sensor was installed, vehicles would shoot at insane speeds (1/tick, or 60/second). We'll now add a delay based on gun warmup and cooldown as well as any speed modifiers unlocked by the vehicle force.
    - Manual adjustment of research costs was always a bit hacky as it didn't figure in changes to tech tree and costs made by other mods. For each of our techs (remote control and sensors), we now copy the science packs from the prerequisite that uses the highest number of science pack types, and use the highest number of research cycles used by any of the prerequisites for calculating the number of our tech's research cycles.


  Bugfixes:
    - Fixed crash when vehicle.selected_gun_index was greater than the number of guns defined in the vehicle prototype. (https://mods.factorio.com/mod/autodrive/discussion/649e6a8e62f1b7219cd80ccd)
    - Fixed crash with vehicles trying to request/provide items that aren't available anymore (removed mods etc.).
    - Fixed crash when vehicles that stopped panicking because they had run out of fuel, caused by a local variable having the same name as a global table.
    - Added migration script to remove dummy-characters from vehicles if they were driver instead of passenger. (https://mods.factorio.com/mod/autodrive/discussion/649e6a8e62f1b7219cd80ccd)
    - Fixed crash when player entered a vehicle while having no character. (https://mods.factorio.com/mod/autodrive/discussion/6526cd4f1dd665d81d8221e0)
    - Fixed that UNFUELED vehicles would be teleported a short distance when pathing has failed, so that they could try repathing from a (hopefully) better location. Teleporting is a crutch, but it really doesn't make sense that a vehicle without fuel should be able to move in that situation. (https://mods.factorio.com/mod/autodrive/discussion/64d134f0d9a9597ea60f1c2e)
    - Fixed that once vehicles had started following a path in autodrive mode, they would continue to its end even if it had run out of fuel on the way.

  Changes:
    - We'll now ignore vehicle prototypes where allow_passengers is false because such vehicles may have neither driver nor passenger and we couldn't insert our dummy.
    - Vehicles crashing with front or back into the side of another vehicle will now bounce off in order to prevent deadlocks. (This is meant to be a temporary solution until I've figured out how to rotate the damaged vehicle.)
    - We now make sure that no dummy character is driver!
    - Replaced most references to game.players[], which is shorter to write, with game.get_player(), which is faster to run.
    - Added handler for new (as of version 1.1.83) on_entity_color_changed event.
    - In the on_tick event, we now won't run the code related to checking sensors for vehicles without an installed sensor.
    - In on_configuration_changed, we now exchange the following data with GCKI: list of supported vehicle prototypes; original colors of vehicles based on prototypes supported by Autodrive/GCKI; vehicle names set by Autodrive/GCKI; Autodrive owner and GCKI owner/locker of vehicles controlled by both mods.
    - Improved cleanup of obsolete mod data.
    - We now inform GCKI about vehicles added to/removed from our GUI. Likewise, we store and update info about GCKI owners/lockers with the respective vehicle when GCKI adds/removes them. This way, we don't have to use remote calls each time one of the mods wants to update their GUI or rename/recolor a vehicle.
    - If both Autodrive and GCKI are active, we won't listen to on_entity_color_changed and on_entity_renamed as GCKI will handle these events for us.
    - If debugging is turned off, all debugging functions will be replaced with an empty dummy function.
    - Bumped dependency on base mod to >=1.1.85. (Required for on_entity_color_changed, but actually a mere formality as the stable version of Factorio is 1.1.91.)

  Compatibility:
    - If a player enters a force from "Blueprint Sandboxes", we will ignore this change (not updating vehicles selected by player, GUIs, etc.) and just hide that player's GUIs and toggle button until the player returns to the original force.
    - Added custom events "on_vehicle_starts_autodriving" and "on_vehicle_stops_autodriving" for telling mods like "Dirt Path" that we'll start/stop to move vehicles in autodrive-mode when they are following a path automatically or when they are bouncing. If you want to listen to these events, use 'remote.call("autodrive", "get_custom_event_ids")' in script.on_init and script.on_load to get the numeric event IDs!

  GUI:
    - If a vehicle doesn't have a custom name, its unit_number will be shown instead in the header of camera and minimap GUIs. The unit_number may change if a vehicle has been exchanged by another mod; however, this shouldn't cause much confusion as the unit_number is also shown on the main GUI if there is no custom name.
Version: 1.1.5
Date: 2023-05-29
  Uploaded by:
    - Pi-C

  Bugfixes:
    - Fixed that state.gun would only be stored after the vehicle actually reloaded its weapons with ammo from the trunk. If both ammo and enemy sensor were installed, but the gun hadn't been auto-reloaded yet because it still had ammo, the enemy sensor would put the vehicle in panic mode instead of ordering it to shoot at the next enemy.
    - Fixed that a vehicle wouldn't leave panic mode when the enemy sensor didn't find any enemies near it.
    - Fixed that path renderings wouldn't be removed when a vehicle was loaded onto a vehicle wagon (could happen if vehicle with a path was standing next to a vehicle wagon because it had been locked or was out of fuel.)

  Changes:
    - Optimized function for refilling fuel/ammo inventories from the trunk.
    - Added missing handler for on_entity_renamed.
    - Changed per-user setting "Render color" to new (as of Factorio 1.1.77) type "color-setting".
    - Added migration script to store all panic-related state data in table mod.panic.
    - Vehicles in panic mode (e.g. when pursued by enemies while having no loaded weapon) will now be rotated randomly if they are stuck at a cliff or another obstacle, so they can try to escape.
    - Rewrote code for bouncing. Vehicles don't just reverse at the same speed they had when crashing, instead bounce speeds now depend on weight, speed, and the directions the vehicles move into (i.e., there is a distinction between vehicles moving towards each other or one vehicle pushing the other).
    - If two vehicles that are based on prototypes supported by Autodrive crash, Autodrive will handle the bouncing of both vehicles, even if one of them is not on the GUI of any force. Collisions involving trains/rolling stock will also cause bouncing of vehicles controlled by Autodrive, but not the train.

  Compatibility:
    - Added optional dependency on "Spidertron Weapon Switcher" (SWS).
    - Forced startup setting of SWS for alternate items to be true.
    - Added handler for custom event on_spidertron_switched from SWS.
    - Blacklisted dummy prototypes from "Spidertron Enhancements".
    - Blacklisted spider-vehicle from "Companion Drones".
    - Blacklisted car-prototype from "Long range delivery drones".
    - Players using the GUI to select a vehicle will now also get our remote control if "Shortcuts for 1.1" is active (without that mod, they still must have a remote control in their main inventory).

  Modding:
    - Removed deprecated custom event "on_autodrive_teleported_vehicle". Listen to defines.events.script_raised_teleported instead! It will be raised with the following data:
      {
        entity              = LuaEntity,
        old_surface_index   = uint,
        old_position        = MapPosition,
        name_render_text_id = uint (optional, ID of LuaRendering for custom name)
        mod_name            = "autodrive" (fixed string added by Factorio)
      }
Version: 1.1.4
Date: 2023-01-11
  Uploaded by:
    - Pi-C


  Bugfixes:
    - Fixed crash because of a typo in a migration script. (https://mods.factorio.com/mod/autodrive/discussion/63a463e4bee72fe36ac4c0de)
    - Fixed crash when trying to call functions related to the circuit-network sensor while the shortwave mod was not active. (https://mods.factorio.com/mod/autodrive/discussion/63a857cbf69ecbcb06bbaad0, https://mods.factorio.com/mod/autodrive/discussion/63a463e4bee72fe36ac4c0de)
    - Fixed crash in handler for on_entity_replaced when trying to read from an uninitialized table. (Thanks to robot256 for finding this!)
    - Fixed crash on opening the Tips & Tricks tutorial scenario. Thanks to robot256 for directing my attention to this bug which probably affects all my mods! (https://mods.factorio.com/mod/GCKI/discussion/63b62197d41edfb807a63fba)
    - Fixed crash when trying to read the request_from_buffers property of a spider-vehicle without requester slots.
    - Added optional dependency on Krastorio2 in order to fix a crash when K2, "AAI Vehicles: Flame Tumbler", and "Aircraft" were active. (https://mods.factorio.com/mod/autodrive/discussion/63b63f5d0987d5bd1062404a)


  Changes:
    - Ammo, fuel, and trunk inventories are now stored in the global table, so we won't have to call vehicle.get_inventory() all the time from on_tick.
    - Avoid calling remote functions from GCKI in on_configuration_changed. As GCKI is loaded after Autodrive, tables may not have been set up correctly at this point, leading to crashes.
    - It didn't make sense that logistic and repair sensors required just red and green science packs while blue science packs were needed for some prerequisites (logistic and construction bots). *Manually* adjusted research costs of the sensor techs so that they will require at least as much as the most expensive prerequisite tech.
    - If there are multiple tiers of a sensor, all tiers will take the same time to research (e.g. 100 cycles at 30 seconds/cycle), but require more science packs per cycle: Thus, researching tier X of a sensor might cost X red + X green + X blue science packs per cycle. (Multiple tiers are only used for the repair sensors at the moment, but this will apply to any tiered sensors added later in the future.)


  Compatibility:
    - "SchallTransportGroup": Really added the recipes for remote control and sensors to the transport group, if it is available. (https://mods.factorio.com/mod/autodrive/discussion/63a463e4bee72fe36ac4c0de)
    - "Nullius": Our techs and recipes can now be researched and crafted.
    - "DMV - Directional Movement Vehicles": Create dummy-items that place the "car" prototypes for which DMV has created a "spider-vehicle" version (we'll need this so the selection tool will show an icon, and to get the icon for the GUIs).
Version: 1.1.3
Date: 2022-12-21
  Uploaded by:
    - Pi-C

  Major Features:
    - Autodrive finally supports spider-vehicles! Some native abilities of spider-vehicles (e.g. logistics) will be disabled when such a vehicle is controlled by Autodrive unless the respective sensor is added to the vehicle grid.
    - As suggested by NightOps, there's now a repair sensor you can install in your vehicles. The repair sensors comes in 3 tiers, each unlocked with its own research. With each tier, repair speed will increase, so you should equip vehicles that you expect to go into combat with a sensor of the highest tier available. Please note that you may install only one repair sensor (regardless of tier) in a vehicle! (https://mods.factorio.com/mod/autodrive/discussion/5f0bb638aaa96f7748e87d86)
    - Vehicles in follow-player mode will now be teleported to the player's surface, if necessary.
    - You can now give custom names to vehicles you control with Autodrive. This is compatible with GCKI's custom names.
    - The old "Find vehicle" button whas been removed because mapview only works if player and vehicle are on the same surface. Instead, you can watch vehicles on a minimap or camera (one of each per player).


  Changes:
    - Huge code overhaul, allowing for better maintenance in the future.
    - Removed versions from optional dependencies. They were obsolete as they referred to mod versions for Factorio 0.18.
    - Blacklisted dummy character prototypes with miniMAXIme and Jetpack, so they won't scale it or create new versions of it.
    - Added support for spider-vehicles. This may still be weird with some of the sensors.
    - Reused code for vehicle filtering from GCKI. Other mods can now black-/whitelist their prototypes with Autodrive.
    - Optimized handling of grids. (https://forums.factorio.com/viewtopic.php?p=570840#p570840)
    - By assigning unique custom names to your vehicles, you can easily keep track of them even if they are destroyed+replaced by mods like "AAI Programmable Vehicles". The name will be rendered above the vehicle, in a color that you can change with a player setting. If GCKI is active, custom names will be synced between the mods. The render color selected in GCKI will take precedence over the color set in this mod.
    - If vehicles equipped with a repair sensor take damage which is not repaired by auto-healing, repair tools (vanilla repair packs and modded tools) from the vehicle trunk will be used to repair the damage. The repair is not instantaneous, but depends on speed and durability of the repair tool, as well as the tier of the repair sensor.

  Bugfixes:
    - Fixed that follow state was stuck after loading a game. (https://mods.factorio.com/mod/autodrive/discussion/5f13807cad167e6da3ce6ef3)


  Graphics:
    - Updated icons for sensors and remote control. Some of the icons still used graphics from Factorio 0.16 (logistic sensors) or 0.17 (ammo sensors), at a size of 32x32. Rebuilt all icons with modern graphics, at a size of 64x64.
    - Added sprites for sprite buttons (camera, map).


  Compatibility:
    - Some mods use entities based on the "car" or "spider-vehicle" prototypes creatively. Autodrive will ignore prototypes where selectable_in_game == false (unless they are whitelisted). Entities from the following mods are blacklisted by default:
      - "Avatars"
      - "Companion Drones"
      - "HelicopterRevival"
      - "Industrial Revolution 2"
      - "King Jo's Warhammer 40K Bunker"
      - "Logicarts", "Logistic Carts"
      - "Nullius"
      - "Renai Transportation"
      - "Satisfactorio"
      - "Shield Projector"
      - "Space Exploration"

    - "Space Exploration": Even unlocked vehicles won't be active if they are in space.
    - "DMV - Directional Movement Vehicles": Add dummy-items to place the vehicles based on the "car" prototypes for which DMV has created a "spider-vehicle" version (we'll need this so the selection tool will show an icon, and to get the icon for the GUIs).

  Modding:
    - Other mods can now black-/whitelist their vehicle prototypes with Autodrive. See data.lua for instructions!
    - Added remote function "vehicle_proxy_destroyed". Mods may store vehicle data when they temporarily remove a vehicle (use case: "Vehicle Wagons 2" loading a vehicle on a wagon). Now vehicles may have a custom name that should persist even though the vehicle is temporarily unavailable, but could be restored. This function should be called when the proxy (e.g. the wagon carrying the vehicle) is destroyed, so that GCKI can remove the custom name from its list.
Version: 1.1.2
Date: 2022-06-16
  Uploaded by:
    - Pi-C

  Bugfixes:
    - Fixed crash when trying to render a path for a destroyed vehicle. (https://mods.factorio.com/mod/autodrive/discussion/62b75fcae07b54516be76873?quote=0)

  Changes:
    - Removed obsolete version checks for filtering events. Filtering script-raised events has been possible since 0.18.27! :-)
Version: 1.1.1
Date: 2022-06-16
  Uploaded by:
    - Pi-C

  Bugfixes:
    - Fixed crash on loading a vehicle owned in Autodrive to a Vehicle Wagon when GCKI was not active. (https://mods.factorio.com/mod/autodrive/discussion/62ab083ad7aebf180542168c)
Version: 1.1.0
Date: 2022-05-03
  Uploaded by:
    - Pi-C

  Info:
    - This is a long overdue update to Factorio 1.1. I didn't have time yet to restructure the mod, so it's basically the same mod as before, with hardly any changes worth mentioning. I won't have a lot of time to work on this in the near future, so I won't update this in the near future. (Considering that the control script is just one big monolithic block of code, it's no fun to maintain this.) However, I've already taken precautions that it will be compatible with the pending version of GCKI.

  Bugfixes:
    - Fixed that the Beam weapon of AAI Wardens was replaced with a vehicle machine gun. (https://mods.factorio.com/mod/autodrive/discussion/5ffaf3cbe65e1f69e7249c46)

  Changes:
    - Replaced hard dependency on "Shortwave" with an optional dependency on "Shortwave for 1.1". If that mod isn't available, the circuit-network sensor won't be created. (https://mods.factorio.com/mod/autodrive/discussion/5ef93c26936a68d808cd68aa)
Version: 0.2.10
Date: 2020-08-23
  Uploaded by:
    - Pi-C

  Info:
    - All changes are also available for Factorio 0.17 (version 0.1.30 of this mod).

  Bugfixes:
    - Fixed that players would be nagged to install GCKI even if an appropriate version was already active. Seems the version check disappeared from on_player_joined_game when I tried including it directly in the nagging function but removed it from there later on.
Version: 0.2.9
Date: 2020-08-17
  Uploaded by:
    - Pi-C

  Info:
    - All changes are also available for Factorio 0.17 (version 0.1.29 of this mod).

  Bugfixes:
    - Fixed instant desync when clients tried to join a multiplayer game. (https://mods.factorio.com/mod/autodrive/discussion/5f37e3c043e182003c399eb6)

  Changes:
    - Fixed that it was possible to select or stop a vehicle that was already controlled by another player. Now, you can only manipulate vehicles for which your name or no name is displayed in the GUI.
    - If a vehicle has been marked as selected by Autodrive, this will be visible to all players, including those from another force.
Version: 0.2.8
Date: 2020-08-15
  Uploaded by:
    - Pi-C

  Info:
    - All changes are also available for Factorio 0.17 (version 0.1.28 of this mod).
    - Unless there are any serious bugs, this will be the last version of this mod for Factorio 0.18.

  Bugfixes:
    - Fixed crash on loading a saved game when a mod providing vehicles has been removed. (https://mods.factorio.com/mod/autodrive/discussion/5f37e3c043e182003c399eb6)

  Changes:
    - I've been convinced that the nagging messages recommending to install GCKI may be too intrusive even though they've been shown just once per session. As Autodrive and GCKI both have a lot of code supporting each other, and as adding a dependency on GCKI to Autodrive isn't possible, I still think it's legit to point players to GCKI -- but I totally understand that you don't want to see this message each time you reload after dying. So starting with this release, the message will be shown at most 3 times per game: once when a new game is created or Autodrive is added to an existing game, and two more times when on_configuration_changed is triggered (new Factorio version, added/removed/updated mods, or changed settings).     (https://mods.factorio.com/mod/autodrive/discussion/5ec33483972846000e2df115)

    - It's stupid that you get the GUI toggle button right from the start of the game, when you don't have even a car yet that could be controlled with it. From now on, the GUI toggle button won't be shown until the Car radio control has been researched by you or your force.
Version: 0.2.7
Date: 2020-06-03
  Uploaded by:
    - Pi-C

  Info:
    - All changes are also available for Factorio 0.17 (version 0.1.27 of this mod).

  Bugfixes:
    - Fixed dependencies: "Unminable Vehicles" must be loaded before this mod; that's not necessary for "Vehicle Wagons 2".
    - Fixed crash on loading a saved game in Factorio <0.18.27 by including code to avoid calling script raised events with filtering. (https://mods.factorio.com/mod/autodrive/discussion/5ed1c874bf1de3000b182448)
    - Fixed crash when remote calls were issued to GCKI, but GCKI was not installed. (https://mods.factorio.com/mod/autodrive/discussion/5ed65b14c8ae2b000b765992)
    - Fixed that follow-player proximity setting wasn't cached.
    - Fixed crash of Factorio 0.17.79 and 0.18.<27 when script_raised_built was called with created_entity instead of entity. (https://mods.factorio.com/mod/autodrive/discussion/5ed6ab7d459dda000c60c90d)

  GUI:
    - Added some checks so that the text of tooltips better reflects the state of a vehicle.
    - Show the name of the player that a vehicle is following; if it's not in follow mode, the name of the player who selected it will be used instead.
    - Follow button is not active if a vehicle already follows another player.

  Changes:
    - Unlock locked vehicles that have been left behind if GCKI was removed from the game.
    - A vehicle that's already on the GUI can't be selected by another player if it is in follow mode.
    - Update vehicle list and GUI when a player is permanently removed from the game.
    - Added migration script to store mod settings in global table.

  Minor Features:
    - Added startup settings to disable healing of vehicles when they hit a tree and healing of friendly entities when a vehicle collides with them.
Version: 0.2.6
Date: 2020-05-30
  Uploaded by:
    - Pi-C

  Info:
    - All changes are also available for Factorio 0.17 (version 0.1.26 of this mod).

  Features:
    - If the Fuel Sensor is installed in a vehicle, and if that vehicle has a grid where equipment like the "Portable generator"/"Small portable generator" from "Krastorio 2" is installed, and if there is any fuel in the vehicle's trunk that can be used with these generators, they now will also be refueled. Refueling the vehicle takes precedence, however.
    - "Allow requests from buffer chests" is no longer a runtime player setting. It has been moved to the GUI, so you can change this separately for each vehicle.

  Changes:
    - Added compatibility with "Vehicle Wagons 2": If a vehicle controlled by Autodrive is loaded onto a vehicle wagon, it will be removed from the GUI until it has been unloaded. Thanks to robot256 for cooperating on making our mods compatible!

    - Unloading a vehicle from a vehicle wagon will not select it -- you'll have to do this with the remote control or the GUI!
    - Vehicles locked or claimed with GCKI can only be selected be the player who claimed or locked them.


  Bugfixes:
    - Logicarts shouldn't be controlled by Autodrive, so adding Autodrive sensors to its grid doesn't make sense. Blacklisted grids from Logicarts.
    - Fixed that GUI was still updated on every tick. This should boost performance immensely! (https://mods.factorio.com/mod/autodrive/discussion/5daacebcf6f1ad002bf2afb5)
    - Fixed an ancient bug where a test checked for the wrong condition when accelerating or braking. It went unnoticed because the condition would always be true, so vehicles would accelerate/brake as expected.

  Modding:
    - Other mods can now blacklist their grids, so Autodrive won't extend them and won't place its sensors into these grids.

    - Added remote interfaces for "Vehicle Wagons 2" and similar mods that may remove vehicles for a while and restore them later.

      USAGE:

      remote.call("autodrive", "get_vehicle_data", vehicle)

        This will return a table with the vehicle data. Currently it only contains { owner = player.index or nil}, but it may be extended in the future.

        vehicle: entity.unit_number or a valid (!) entity of type "car"

      remote.call("autodrive", "vehicle_removed", vehicle, modname)

        This will return nothing. If a vehicle was controlled by Autodrive, it will be removed from the GUI.
Version: 0.2.5
Date: 2020-05-08
  Uploaded by:
    - Pi-C

  Info:
    - All changes are also available for Factorio 0.17 (version 0.1.25 of this mod).

  Bugfixes:
    - Fixed crash when logistic operations should be performed on a vehicle not associated with a player. (https://mods.factorio.com/mod/autodrive/discussion/5eb47628de651c000d0a0026)
Version: 0.2.4
Date: 2020-05-07
  Uploaded by:
    - Pi-C

  Info:
    - All changes are also available for Factorio 0.17 (version 0.1.24 of this mod).

  Bugfixes:

  Minor Features:
    - Vehicles equipped with a Logistic network sensor can now also request items from buffer chests. This is a per-user setting. (https://mods.factorio.com/mod/autodrive/discussion/5eb40158de651c000dfee8ce)

  Changes:
    - Removed code introduced in 0.1.8 and 0.1.10 that added compatibility with the grids from  Bob's/Angel's and Krastorio. It's obsolete since 0.1.23/0.2.3 as this mod is handling grids on it's own now.
Version: 0.2.3
Date: 2020-05-01
  Uploaded by:
    - Pi-C

  Info:
    - All changes are also available for Factorio 0.17 (version 0.1.23 of this mod).

  Bugfixes:
    - Fixed crash when starting an in-game tutorial.

  Changes:
    - Optimized a regular expression for string matching. Thanks a lot to Oktokolo!
Version: 0.2.2
Date: 2020-04-29
  Uploaded by:
    - Pi-C

  Info:
    - dorfl has transferred ownership of this mod to me (Pi-C).
    - All changes are also available for Factorio 0.17 (version 0.1.22 of this mod).

  Bugfixes:
    - Fixed crash related to some apparent change to LuaPlayer.shooting_state in Factorio 0.18.19.
      (https://mods.factorio.com/mod/autodrive/discussion/5e9e1a649e85eb000d0617ba)
    - Removed "Automobilism" from prerequisites of "Circuit network sensor" and "Gate sensor". It was redundant because their prerequisite technology "Car radio control" already requires "Automobilism".
    - Fixed that the GUI was spammed with buttons for vehicles that didn't exist anymore because they had been replaced by "AAI Programming Vehicles".

  Locale:
    - Added Russian localization. Thanks a lot to Dragonling for providing it!

  Features:
    - A minimal equipment grid just big enough to fit all sensors in it will be added to vehicles that don't have an equipment grid yet. However, only sensors from "Autodrive" can be placed into this grid, so if you want to add more equipment to your vehicles, you still need to install another mod providing grids!
    - VortiK's "Armor Plating" adds small grids to vehicles, but they are too small to fit in armor and all of the "Autodrive" sensors. Therefore, if "Armor Plating" is active, its grids will be extended.
    - The size of grids from all other mods (e.g. "Vehicle Grid") will not be changed. However, these grids will be adjusted so that you can place the "Autodrive" sensors from this mod in them.
Version: 0.2.1
Date: 2020-03-18
  Uploaded by:
    - Pi-C

  Changes:
  Bugfixes:
    - Fixed crash when vehicle color should be set to the owner's color but there was no owner yet. (Don't know how that could happen in the first place. I couldn't reliably reproduce it, but it has crashed my game.)
Version: 0.2.0
Date: 2020-01-24
  Uploaded by:
    - Pi-C

  Info:
    - Upgraded for Factorio 0.18 (no code changes)
Version: 0.1.21
Date: 2019-12-27
  Uploaded by:
    - Pi-C

  Bugfixes:
    - Fixed that "Follow player" switch in the GUI wouldn't work by enforcing that the GUI is rebuilt if configuration changes (added/removed mods or changed mod settings), if a player joins the game, or if a singleplayer game is loaded.

  Changes:
    - Output message recommending to install GCKI if it's not active, or to update it to a version >=0.17.14 if a previous version is installed. Adding a dependency won't work (circular dependency error) because GCKI must depend on Autodrive (patches fixing issues with Autodrive are implemented there now and have been disabled in GCKI).

  GUI:
    - Added button to disconnect a vehicle from Autodrive and remove it from the GUI. If the vehicle is moving when you disconnect it, it will brake hard. Disconnecting a vehicle from Autodrive will trigger an alert, so you can easily find it on the map.
    - Added indicator if vehicle is not active. If GCKI >=0.17.14 is active and the vehicle has been locked with the keys from GCKI, a special indicator will be used.
    - If a vehicle is not active, the controls "Select", "Stop", and "Follow" will be disabled.
Version: 0.1.20
Date: 2019-12-21
  Uploaded by:
    - Pi-C

  Changes:
    - Improved bouncing:
      - Code optimization
      - Vehicles bumping into something while moving backwards will now really bounce into the opposite direction.
      - Vehicles will not bounce off trees if they kill them on first impact. This means that a lightweight car will probably bounce back when it collides with a tree while a tank will be able to proceed. May be a nerf, but it's not plausible that a light car should do the same damage as a heavy tank.

  Bugfixes:
    - Removed unnecessary event listener (the function it called was never defined).

  Locale:
    - Localized messages
Version: 0.1.19
Date: 2019-12-20
  Uploaded by:
    - Pi-C

  Bugfixes:
    - Ooops, didn't remove all debugging output! There was one line left that wrote to the log file on every tick -- sorry!
Version: 0.1.18
Date: 2019-12-20
  Uploaded by:
    - Pi-C

  Info:
    - I (Pi-C) have been added as collaborator on this mod.

  Changes:
    - Ignore vehicles that are not active, for example cars that have been locked with the keys from "Gizmos Car Keys (improved)".
    - Ammo sensor and Enemy sensor worked before, but only for vehicles that have only one weapon. Tanks can have 3, but reloading didn't always work (if first weapon had no ammo, it couldn't shoot, but if one of the other weapons had ammo it wouldn't reload the first). Now, the mod tries to reload all available weapons, and tries to switch over to the next weapon if it can't reload the current one.
    - If your vehicle has an Enemy sensor, and if that vehicle runs out of ammo and can't reload, it will now behave as if it had no Enemy sensor.
    - Different people complained that their vehicles would bounce back if they collided with a tree. You will now be able to plow through the thickest forest with your tank or even your car.

  Bugfixes:
    - If a vehicle controlled by this mod was destroyed, it would leave a dummy passenger behind. This dummy is now removed.
    - If a vehicle controlled by this mod had both a human driver and a human passenger, it would continue shooting at the last target position until it ran out of ammo. It will now cease shooting as soon as the last enemy or spawner in its range has been destroyed.
Version: 0.1.17
Date: 2019-08-07
  Uploaded by:
    - dorfl

  Bugfixes:
    - work around bobs logistics changes to logistics chest prototypes
Version: 0.1.16
Date: 2019-08-07
  Uploaded by:
    - dorfl

  Changes:
    - check player on same surface before pathing (follow sensor)
Version: 0.1.15
Date: 2019-08-19
  Uploaded by:
    - dorfl

  Bugfixes:
    - use correct car sprite in the GUI. This caused a crash for, eg, Angel's CAB
Version: 0.1.14
Date: 2019-08-18
  Uploaded by:
    - dorfl

  Changes:
    - add 'Follow player' sensor and tech
Version: 0.1.13
Date: 2019-08-18
  Uploaded by:
    - dorfl

  Bugfixes:
    - fix notfication crash when failing to find non-colliding-position at path target
Version: 0.1.12
Date: 2019-08-17
  Uploaded by:
    - dorfl

  Bugfixes:
    - avoid invalid entity reference trying to unpublish non-published car in GUI
Version: 0.1.11
Date: 2019-08-17
  Uploaded by:
    - dorfl

  Changes:
    - GUI car list
    - multiplayer car selection fixes
Version: 0.1.10
Date: 2019-08-16
  Uploaded by:
    - dorfl

  Bugfixes:
    - catch nil prototype collision_mask for helicopter
  Changes:
    - add sensors to 'vehicle-equipment' for Krastorio
    - trigger logistics sensor when trunk not yet filtered, for emptying
Version: 0.1.9
Date: 2019-08-12
  Uploaded by:
    - dorfl

  Bugfixes:
    - keep item-with-{tags,label,inventory,entity-data} intact during logistics transfer
  Changes:
    - spread UPS load over multiple ticks for scanning large vehicle inventories (Hauler, Crawler)
Version: 0.1.8
Date: 2019-08-11
  Uploaded by:
    - dorfl

  Changes:
    - add sensors to 'vehicle' category for Bob's
    - add sensors to 'angels-crawler' category for Angel's Crawler
Version: 0.1.7
Date: 2019-08-10
  Uploaded by:
    - dorfl

  Changes:
    - reduce UPS load for train sensor when car is parked and not on rails
    - cars with circuit sensors report status via signals on their shortwave channel
  Bugfixes:
    - recovery code for cars that lock together during bounce-crash
Version: 0.1.6
Date: 2019-08-09
  Uploaded by:
    - dorfl

  Changes:
    - render path segments incrementally over multiple ticks to avoid latency spike for long paths
Version: 0.1.5
Date: 2019-08-09
  Uploaded by:
    - dorfl

  Bugfixes:
    - car channel now persists subsqeuent selections
Version: 0.1.4
Date: 2019-08-09
  Uploaded by:
    - dorfl

  Changes:
    - dispatch car via circuit network sensor (with shortwave dependency)
Version: 0.1.3
Date: 2019-08-06
  Uploaded by:
    - dorfl

  Changes:
    - render path destination circle as visual feedback after click
    - relax click bounds detection
Version: 0.1.2
Date: 2019-08-06
  Uploaded by:
    - dorfl

  Changes:
    - Move gate sensor behind gates research
    - Move train sensor behind rail-signals research
    - Added military dependency for ammo and enemy sensors
    - Drop adavanced-electronics dependencies (cover by other deps for logistic sensor)