Modding:
- Fast cropping of sprite boundaries - it's no longer necessary to delete crop-cache.dat when existing sprites are modified.
- Utility sprites are now defined fully in the core mod prototypes.
- Added support for burner type generator-equipment.
- Added "simple-entity-with-force" and "simple-entity-with-owner" entity types.
- Boiler has now dynamically specified energy source (as inserter and similar).
- Added support for mod settings: startup, runtime, and runtime-per-user.
- Added commandline option --check-unused-prototype-data
- Added a "nothing" technology modifier type with an "effect_key" property for script-based-effect research.
- Redundant technology prerequisites are logged when verbose logging is enabled.
- Changed technology prototype icon_size to default to 32 instead of 64.
- In any instance an icon isn't 32x32 the icon_size property must be set to the actual size of the (square) icon.
- Renamed "armor-making-2" to "heavy-armor".
- Renamed "armor-making-3" to "power-armor".
- Removed "alien-technology".
- Added the ability to have "friend" forces. Friend forces are given unrestricted access to buildings and won't be attacked.
- Changed container entities to not scale info icons by default + added the optional prototype property "scale_info_icons" to enable scaling.
- Added property "turret_base_has_direction" to turret entity types. Set it to true if you want to use turn_range property in turret attack_parameters. This property has to be true for any fluid-turret, because of pipe connections.
- Added support for different recipe and technology complexity definitions.
- Added "item-with-tags" item type that can store any basic arbitrary Lua data.
- Lamps, roboports, walls, rail signals, and accumulators now accept any signal type (item, fluid, virtual).
- "animation_speed" property of animation definitions has to be greater than 0.
- Mod events are now fired by the mod dependency order instead of the mod name starting with the scenario script.
- Utility sprites can be used in the sprite button.
- Added 4th custom gui root position "goal", which is used in the objectives.
- The goal and left gui element has default direction vertical.
- Added LuaGuiElement::clear to remove all the contents of the element.
- Added column_alignments settings in table style.
- LuaForce::reset() now resets everything about the force to the default state.
- Added on_selected_entity_changed - fires when the selected entity for a player changes.
- Added on_market_item_purchased - fires when a player purchases something from a market entity.
- Added on_player_dropped_item - fires when a player drops an item that results in an item-on-ground entity.
- Added on_biter_base_built - fires when biters build bases during migration.
- Added on_player_changed_force - fires when a players force is changed.
- Added on_entity_renamed - fires when an entity is renamed either by the player or through script.
- Added on_gui_selection_state_changed - fires when an item in a drop-down gui element is selected.
- Added on_surface_deleted, on_pre_surface_deleted, and on_surface_created events.
- Added on_player_mined_entity and on_robot_mined_entity events.
- Added on_train_created event.
- Changed less_then to less_than in lua GUI progress bar style specification. (33196)
- Added remote interface to freeplay and sandbox scripts.
- Added the ability for mods to register commands.
- Added LuaRandomGenerator.
- Changed LuaEntityPrototype::underground_belt_distance to LuaEntityPrototype::max_underground_distance and changed it to work on both underground pipes and underground belts.
- Added LuaEntityPrototype::drawing_box, sticker_box, flags, remains_when_mined, additional_pastable_entities, allow_copy_paste, shooting_cursor_size, created_smoke, created_effect, map_color, friendly_map_color, enemy_map_color, build_base_evolution_requirement read.
- Added LuaEntity::graphics_variation read/write for simple entities and trees.
- Added LuaSurface::destroy_decoratives and LuaSurface::create_decoratives.
- Added LuaBurner - readable off entities and equipment - the burner energy source for the entity.
- Added optional "surface" to LuaForce::chart_all().
- Added "recipe" to on_player_crafted_item.
- Added "cause" to on_entity_died - the entity that did the killing if available.
- Added the ability to read item_requests from item request proxy entities as well as ghosts.
- Changed LuaEntity::item_requests to match the docs format.
- Added "by_script" to on_research_finished.
- Added LuaCircuitNetwork::network_id read.
- Added LuaGui::children read.
- Added LuaGuiElement::children read.
- Added LuaGuiElement drop-down type.
- Removed LuaGameScript::evolution_factor.
- Added LuaForce::evolution_factor.
- Added optional fields "durability" and "ammo" when using SimpleItemStack definitions.
- Added LuaItemPrototype fuel_category, burnt_result, fuel_acceleration_multiplier, fuel_top_speed_multiplier read.
- Removed LuaSurface::get_tileproperties.
- Added LuaPlayer::opened write.
- Added LuaPlayer::opened_gui_type read.
- Added on_runtime_mod_setting_changed event - fires when a player changes runtime mod settings.
- Expanded LuaStyle read/write property support.
- Fixed LuaSurface::spill_item_stack didn't interpret "enable_looted" parameter properly. (38717)
- Added player_index to the entity settings pasted events.
- Added support for specifying the "max_range" of a projectile when created through create_entity.
- Added LuaSurface::find_logistic_networks_by_construction_area(..).
- Added support for turret orientation read/write through LuaEntity::orientation.
- Added LuaEntity::shooting_target read/write for turrets.
- Added LuaLogisticPoint - read access to logistic data about provider, storage, and requester points.
- Added LuaEntity::get_logistic_point().
- Added LuaLogisticNetwork::provider_points, empty_provider_points, requester_points, full_or_satisfied_requester_points, and storage_points read.
- Added LuaPlayer::add_alert, remove_alert, and get_alerts.
- Changed LuaSurface::create_entity{name="item-on-ground", stack=...} to accept the same format for item stacks as the rest of the Lua API.
- Removed LuaPlayer::build_from_cursor + LuaPlayer::rotate_for_build as they aren't replay/MP safe.
- Added optional parameter "return_item_request_proxy" to LuaEntity::revive. If true and revive creates item request proxy, the proxy will be returned as the third value.
- Added LuaPlayer::mute_alert, unmute_alert, is_alert_muted, enable_alert, disable_alert, is_alert_enabled.
- Added LuaForce::set_friend/get_friend.
- Moved game.get_event_handler and game.raise_event to "script".
- Added LuaSurface::get_trains() and LuaForce::get_trains().
- Added LuaSurface::regenerate_decorative().
- Added LuaDecorativePrototype.
- Added Mod gui script for easy consistent styling of mod buttons and frames within the game.
- Added remote interface functions for the rocket silo gui: add_tracked_item, remove_tracked_item, get_tracked_items, update_gui
- Changed LuaForce::clear_chart() to take an optional surface to clear the chart for.
- Added LuaGuiElement::single_line and want_ellipsis for the CustomLabel type.
- Added LuaGuiElement type "camera".
- Added LuaEntity::stickers read. The stickers attached to a given entity.
- Changed the player built event to include the item name used to do the building if possible and include the tags from the "item-with-tags" item if possible.
- Added LuaEntityPrototype::module_inventory_size read.
- Added LuaEntityPrototype::get_inventory_size().
- Added LuaTransportLine::operator[] and operator#.
- Added support for full copying LuaItemStack in most places that take the SimpleItemStack type.
- Added LuaInventory::entity_owner, player_owner, and equipment_owner read.
- Changed LuaEntity::passenger to work with both character entities and players.
- Added LuaEntityPrototype::ingredient_count read.
- Added support for LuaFlowStatistics read on electric poles.