From 1c86ef7e0e08e935d51f5da9680a203fed8b5ea0 Mon Sep 17 00:00:00 2001 From: npc-strider Date: Mon, 6 May 2019 18:42:37 +0800 Subject: [PATCH] 0.7.4: Fix for 0.17.35 player/character naming conventions and equipment bugs --- Shortcuts/changelog.txt | 8 ++++ Shortcuts/clean_changelog.sh | 2 + Shortcuts/control.lua | 81 +++++++++++++----------------------- Shortcuts/data-updates.lua | 4 +- Shortcuts/info.json | 3 +- Shortcuts/settings.lua | 11 ++--- 6 files changed, 48 insertions(+), 61 deletions(-) create mode 100644 Shortcuts/clean_changelog.sh diff --git a/Shortcuts/changelog.txt b/Shortcuts/changelog.txt index 2ea95c0..33af5ba 100644 --- a/Shortcuts/changelog.txt +++ b/Shortcuts/changelog.txt @@ -1,3 +1,11 @@ +--------------------------------------------------------------------------------------------------- +Version: 0.7.4 +Date: 2019-05-06 + Bugfixes: + - Removed redundant AAI shortcuts (The recipe hiding functionality is still functional for this mod as it still creates recipes even though the shortcut can create infinite remotes) + - Fixed valid issue for equipment + - Fixed issue with new 0.17.35 player/character naming conventions + --------------------------------------------------------------------------------------------------- Version: 0.7.3 Date: 2019-04-15 diff --git a/Shortcuts/clean_changelog.sh b/Shortcuts/clean_changelog.sh new file mode 100644 index 0000000..ac7ed5d --- /dev/null +++ b/Shortcuts/clean_changelog.sh @@ -0,0 +1,2 @@ +sed -i -e 's/\t/ /g' -e 's/\s*$//' changelog.txt +#from factorioforums: https://forums.factorio.com/viewtopic.php?f=25&t=67140 \ No newline at end of file diff --git a/Shortcuts/control.lua b/Shortcuts/control.lua index 677bfce..3ef2141 100644 --- a/Shortcuts/control.lua +++ b/Shortcuts/control.lua @@ -10,7 +10,7 @@ require("util") local function update_armor(event) local player = game.players[event.player_index] - local power_armor = player.get_inventory(defines.inventory.player_armor) + local power_armor = player.get_inventory(defines.inventory.character_armor) if power_armor and power_armor ~= nil and power_armor.valid then if power_armor[1].valid_for_read then if power_armor[1].grid and power_armor[1].grid.valid and power_armor[1].grid.width > 0 then @@ -88,40 +88,6 @@ local function toggle_rail(player) end end --- local function update_inventory(event) -- removes spare remotes - -- local item_prototypes = game.item_prototypes - -- local inventory = game.players[event.player_index].get_inventory(defines.inventory.player_main) - -- if inventory and inventory.valid then - -- if settings.startup["artillery-targeting-remote"].value == true then - -- inventory.remove("artillery-targeting-remote") - -- end - -- if settings.startup["artillery-jammer-remote"].value == true then - -- inventory.remove("artillery-jammer-tool") - -- end - -- if settings.startup["discharge-defense-remote"].value == true then - -- inventory.remove("discharge-defense-remote") - -- end - -- if settings.startup["tree-killer"].value == true then - -- inventory.remove("shortcuts-deconstruction-planner") - -- end - -- if item_prototypes["resource-monitor"] and settings.startup["resource-monitor"].value == true then - -- inventory.remove("resource-monitor") - -- end - -- if item_prototypes["outpost-builder"] and settings.startup["outpost-builder"].value == true then - -- inventory.remove("outpost-builder") - -- end - -- if item_prototypes["ion-cannon-targeter"] and settings.startup["ion-cannon-targeter"].value == true then - -- inventory.remove("ion-cannon-targeter") - -- end - -- if item_prototypes["max-rate-calculator"] and settings.startup["max-rate-calculator"].value == true then - -- inventory.remove("max-rate-calculator") - -- end - -- if item_prototypes["module-inserter"] and settings.startup["module-inserter"].value == true then - -- inventory.remove("module-inserter") - -- end - -- end --- end - local function false_shortcuts(player) -- disables things if settings.startup["night-vision-equipment"].value == true then player.set_shortcut_available("night-vision-equipment", false) @@ -157,14 +123,17 @@ local function reset_state(event, toggle) -- verifies placement of equipment and update_armor(event) local player = game.players[event.player_index] local grid = global.shortcuts_armor[game.players[event.player_index].index] - if grid then + if grid and grid.valid then local equipment = event.equipment if equipment and toggle == 1 then --place local type = equipment.type if type == "night-vision-equipment" or type == "belt-immunity-equipment" or (type == "active-defense-equipment" and game.equipment_prototypes["disabledinactive-" .. equipment.name] == nil) then - for _, equipment in pairs(grid.equipment) do - if equipment.valid and equipment.type == type then - enable_it(player, equipment, grid, type) + local setting = settings.startup[type] + if setting and setting.value then + for _, equipment in pairs(grid.equipment) do -- Enable all of a type of equipment, even if only one is placed in the grid. + if equipment.valid and equipment.type == type then + enable_it(player, equipment, grid, type) + end end end end @@ -172,21 +141,24 @@ local function reset_state(event, toggle) -- verifies placement of equipment and local type = game.equipment_prototypes[equipment].type local name = game.equipment_prototypes[equipment].name if type == "night-vision-equipment" or type == "belt-immunity-equipment" or type == "active-defense-equipment" then - local value = false - for _, equipment in pairs(grid.equipment) do - if equipment.type == type and equipment.valid then - if type ~= "active-defense-equipment" then - value = true - break - elseif type == "active-defense-equipment" and game.equipment_prototypes["disabledinactive-" .. equipment.name] == nil then - value = true - break + local setting = settings.startup[type] + if setting and setting.value then + local value = false + for _, equipment in pairs(grid.equipment) do + if equipment.type == type and equipment.valid then + if type ~= "active-defense-equipment" then + value = true + break + elseif type == "active-defense-equipment" and game.equipment_prototypes["disabledinactive-" .. equipment.name] == nil then + value = true + break + end end end - end - if value == false then - player.set_shortcut_available(type, false) - player.set_shortcut_toggled(type, false) + if value == false then + player.set_shortcut_available(type, false) + player.set_shortcut_toggled(type, false) + end end end elseif toggle == 0 then --armor place @@ -194,7 +166,10 @@ local function reset_state(event, toggle) -- verifies placement of equipment and for _, equipment in pairs(grid.equipment) do local type = equipment.type if equipment.valid and type == "night-vision-equipment" or type == "belt-immunity-equipment" or (type == "active-defense-equipment" and game.equipment_prototypes["disabledinactive-" .. equipment.name] == nil) then - enable_it(player, equipment, grid, equipment.type) + local setting = settings.startup[type] + if setting and setting.value then + enable_it(player, equipment, grid, equipment.type) + end end end end diff --git a/Shortcuts/data-updates.lua b/Shortcuts/data-updates.lua index e5a6ac3..6e325e7 100644 --- a/Shortcuts/data-updates.lua +++ b/Shortcuts/data-updates.lua @@ -54,10 +54,10 @@ if mods["ModuleInserter"] and data.raw["selection-tool"]["module-inserter"] and hide_the_remote("module-inserter", "construction-robotics", data.raw["selection-tool"]["module-inserter"]) end if mods["aai-programmable-vehicles"] then - if settings.startup["unit-remote-control"].value == true and data.raw["selection-tool"]["unit-remote-control"] then + if --[[settings.startup["unit-remote-control"].value == true and]] data.raw["selection-tool"]["unit-remote-control"] then hide_the_remote("unit-remote-control", nil, data.raw["selection-tool"]["unit-remote-control"]) end - if settings.startup["path-remote-control"].value == true and data.raw["selection-tool"]["path-remote-control"] then + if --[[settings.startup["path-remote-control"].value == true and]] data.raw["selection-tool"]["path-remote-control"] then hide_the_remote("path-remote-control", nil, data.raw["selection-tool"]["path-remote-control"]) end end diff --git a/Shortcuts/info.json b/Shortcuts/info.json index a633f48..35894d7 100644 --- a/Shortcuts/info.json +++ b/Shortcuts/info.json @@ -1,10 +1,11 @@ { "name": "Shortcuts", - "version": "0.7.3", + "version": "0.7.4", "factorio_version": "0.17", "title": "Shortcuts", "author": "npc_strider(morley376)", "contact": "", "homepage": "http://steamcommunity.com/id/morley376", + "dependencies": ["base >= 0.17.35"], "description": "Adds a host of useful shortcuts to improve QOL. Shortcuts for the artillery remote, discharge defense remote, tree deconstructor, and toggles for equipment, rail blocks and the player lamp. Additionally adds in a customizable grid overlay, far zoom and a artillery wagon toggle. See mod portal FAQ page for a full list of shortcuts and supported mods. Suggest any new shortcut ideas to the discussion page." } \ No newline at end of file diff --git a/Shortcuts/settings.lua b/Shortcuts/settings.lua index 407b113..16aaf5c 100644 --- a/Shortcuts/settings.lua +++ b/Shortcuts/settings.lua @@ -194,6 +194,7 @@ data:extend({ }) -- Since we cannot conditionally extend mod settings, we have to implement them whether the mod is enabled or not :( + -- This can break the localization of the shortcut if the mod is not installed data:extend( { { @@ -202,25 +203,25 @@ data:extend( localised_name = {"", {"item-name.resource-monitor"}, " ", {"gui-mod-info.toggle"}, " (LEGACY YARM)"}, localised_description = {"", {""}, "Disable specific shortcuts to free up space for other modded shortcuts, or to slightly increase performance and load time."}, setting_type = "startup", - default_value = true, + default_value = false, order = "zz" }, { type = "bool-setting", name = "path-remote-control", - localised_name = {"", {"item-name.path-remote-control"}, " ", {"gui-mod-info.toggle"}}, + localised_name = {"", {"item-name.path-remote-control"}, " ", {"gui-mod-info.toggle"}, " (LEGACY AAI)"}, localised_description = {"", {""}, "Disable specific shortcuts to free up space for other modded shortcuts, or to slightly increase performance and load time."}, setting_type = "startup", - default_value = true, + default_value = false, order = "zz" }, { type = "bool-setting", name = "unit-remote-control", - localised_name = {"", {"item-name.unit-remote-control"}, " ", {"gui-mod-info.toggle"}}, + localised_name = {"", {"item-name.unit-remote-control"}, " ", {"gui-mod-info.toggle"}, " (LEGACY AAI)"}, localised_description = {"", {""}, "Disable specific shortcuts to free up space for other modded shortcuts, or to slightly increase performance and load time."}, setting_type = "startup", - default_value = true, + default_value = false, order = "zz" }, {