From 160e7e29a5cea3b4096cdcc831a282963f584998 Mon Sep 17 00:00:00 2001 From: randomdud3 Date: Sat, 4 Jan 2020 22:34:32 +0100 Subject: [PATCH 1/3] Filter events so they are only triggered when it really matters --- maps/biter_battles_v2/main.lua | 30 +++++++++++++++++------------- modules/biter_health_booster.lua | 4 ++++ utils/event.lua | 12 ++++++++++++ 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/maps/biter_battles_v2/main.lua b/maps/biter_battles_v2/main.lua index d989405c..5529621c 100644 --- a/maps/biter_battles_v2/main.lua +++ b/maps/biter_battles_v2/main.lua @@ -1,5 +1,6 @@ -- Biter Battles v2 -- by MewMew +local Init = require "maps.biter_battles_v2.init" local Ai = require "maps.biter_battles_v2.ai" local BiterHealthBooster = require "modules.biter_health_booster" local Biters_landfill = require "maps.biter_battles_v2.biters_landfill" @@ -7,7 +8,6 @@ local Chat = require "maps.biter_battles_v2.chat" local Combat_balance = require "maps.biter_battles_v2.combat_balance" local Game_over = require "maps.biter_battles_v2.game_over" local Gui = require "maps.biter_battles_v2.gui" -local Init = require "maps.biter_battles_v2.init" local Map_info = require "maps.biter_battles_v2.map_info" local Mirror_terrain = require "maps.biter_battles_v2.mirror_terrain" local No_turret_creep = require "maps.biter_battles_v2.no_turret_creep" @@ -21,7 +21,7 @@ require "modules.mineable_wreckage_yields_scrap" local function on_player_joined_game(event) local surface = game.surfaces["biter_battles"] - local player = game.players[event.player_index] + local player = game.players[event.player_index] if player.online_time == 0 then player.spectator = true @@ -34,7 +34,7 @@ local function on_player_joined_game(event) player.character.destructible = false game.permissions.get_group("spectator").add_player(player) end - + Map_info.player_joined_game(player) Team_manager.draw_top_toggle_button(player) end @@ -44,9 +44,9 @@ local function on_gui_click(event) local element = event.element if not element then return end if not element.valid then return end - + if Map_info.gui_click(player, element) then return end - Team_manager.gui_click(event) + Team_manager.gui_click(event) end local function on_research_finished(event) @@ -75,16 +75,16 @@ end --Prevent Players from damaging Rocket Silos local function on_entity_damaged(event) - local entity = event.entity + local entity = event.entity if not entity.valid then return end if entity.force.index > 5 then return end - + local cause = event.cause if cause then - if cause.type == "unit" then return end + if cause.type == "unit" then return end end - - if entity.name ~= "rocket-silo" then return end + + if entity.name ~= "rocket-silo" then return end entity.health = entity.health + event.final_damage_amount end @@ -100,7 +100,7 @@ local tick_minute_functions = { local function on_tick(event) Mirror_terrain() - + local tick = game.tick if tick % 60 ~= 0 then return end @@ -116,7 +116,7 @@ local function on_tick(event) Game_over.server_restart() return end - + local key = tick % 3600 if tick_minute_functions[key] then tick_minute_functions[key]() end end @@ -140,7 +140,11 @@ Event.add(defines.events.on_robot_built_entity, on_robot_built_entity) Event.add(defines.events.on_tick, on_tick) Event.on_init(on_init) +if package.loaded["maps.biter_battles_v2.init"] ~= nil then + Event.add_event_filter(defines.events.on_entity_damaged, { filter = "name", name = "rocket-silo" }) +end + require "maps.biter_battles_v2.spec_spy" require "maps.biter_battles_v2.terrain" require "maps.biter_battles_v2.difficulty_vote" -require "modules.custom_death_messages" \ No newline at end of file +require "modules.custom_death_messages" diff --git a/modules/biter_health_booster.lua b/modules/biter_health_booster.lua index 44dfc2df..3c98ce79 100644 --- a/modules/biter_health_booster.lua +++ b/modules/biter_health_booster.lua @@ -130,4 +130,8 @@ local event = require 'utils.event' event.on_init(on_init) event.add(defines.events.on_entity_damaged, on_entity_damaged) +if package.loaded["maps.biter_battles_v2.init"] ~= nil then + event.add_event_filter(defines.events.on_entity_damaged, { filter = "type", type = "unit" }) +end + return Public diff --git a/utils/event.lua b/utils/event.lua index 2b5a3536..a6dd0cd1 100644 --- a/utils/event.lua +++ b/utils/event.lua @@ -428,6 +428,18 @@ function Event.generate_event_name(name) return event_id end +function Event.add_event_filter(event, filter) + local current_filters = script.get_event_filter(event) + + if not current_filters then + current_filters = {filter} + else + table.insert(current_filters, filter) + end + + script.set_event_filter(event, current_filters) +end + local function add_handlers() for event_name, tokens in pairs(token_handlers) do for i = 1, #tokens do From 51e86d6b2c5453506decf4db07296e141f1b39c6 Mon Sep 17 00:00:00 2001 From: randomdud3 Date: Tue, 7 Jan 2020 04:11:32 +0100 Subject: [PATCH 2/3] Move all filters to the main map file --- maps/biter_battles_v2/main.lua | 7 +++---- modules/biter_health_booster.lua | 4 ---- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/maps/biter_battles_v2/main.lua b/maps/biter_battles_v2/main.lua index 5529621c..7cdabf03 100644 --- a/maps/biter_battles_v2/main.lua +++ b/maps/biter_battles_v2/main.lua @@ -1,6 +1,5 @@ -- Biter Battles v2 -- by MewMew -local Init = require "maps.biter_battles_v2.init" local Ai = require "maps.biter_battles_v2.ai" local BiterHealthBooster = require "modules.biter_health_booster" local Biters_landfill = require "maps.biter_battles_v2.biters_landfill" @@ -8,6 +7,7 @@ local Chat = require "maps.biter_battles_v2.chat" local Combat_balance = require "maps.biter_battles_v2.combat_balance" local Game_over = require "maps.biter_battles_v2.game_over" local Gui = require "maps.biter_battles_v2.gui" +local Init = require "maps.biter_battles_v2.init" local Map_info = require "maps.biter_battles_v2.map_info" local Mirror_terrain = require "maps.biter_battles_v2.mirror_terrain" local No_turret_creep = require "maps.biter_battles_v2.no_turret_creep" @@ -140,9 +140,8 @@ Event.add(defines.events.on_robot_built_entity, on_robot_built_entity) Event.add(defines.events.on_tick, on_tick) Event.on_init(on_init) -if package.loaded["maps.biter_battles_v2.init"] ~= nil then - Event.add_event_filter(defines.events.on_entity_damaged, { filter = "name", name = "rocket-silo" }) -end +Event.add_event_filter(defines.events.on_entity_damaged, { filter = "name", name = "rocket-silo" }) +Event.add_event_filter(defines.events.on_entity_damaged, { flter = "type", type = "unit" }) require "maps.biter_battles_v2.spec_spy" require "maps.biter_battles_v2.terrain" diff --git a/modules/biter_health_booster.lua b/modules/biter_health_booster.lua index 3c98ce79..44dfc2df 100644 --- a/modules/biter_health_booster.lua +++ b/modules/biter_health_booster.lua @@ -130,8 +130,4 @@ local event = require 'utils.event' event.on_init(on_init) event.add(defines.events.on_entity_damaged, on_entity_damaged) -if package.loaded["maps.biter_battles_v2.init"] ~= nil then - event.add_event_filter(defines.events.on_entity_damaged, { filter = "type", type = "unit" }) -end - return Public From 2f8f7c65b6d08dfcef4651cf19d542ff6c1726c8 Mon Sep 17 00:00:00 2001 From: randomdud3 <38328192+randomdud3@users.noreply.github.com> Date: Tue, 7 Jan 2020 20:17:00 +0100 Subject: [PATCH 3/3] Fix typo --- maps/biter_battles_v2/main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maps/biter_battles_v2/main.lua b/maps/biter_battles_v2/main.lua index 7cdabf03..c573553b 100644 --- a/maps/biter_battles_v2/main.lua +++ b/maps/biter_battles_v2/main.lua @@ -141,7 +141,7 @@ Event.add(defines.events.on_tick, on_tick) Event.on_init(on_init) Event.add_event_filter(defines.events.on_entity_damaged, { filter = "name", name = "rocket-silo" }) -Event.add_event_filter(defines.events.on_entity_damaged, { flter = "type", type = "unit" }) +Event.add_event_filter(defines.events.on_entity_damaged, { filter = "type", type = "unit" }) require "maps.biter_battles_v2.spec_spy" require "maps.biter_battles_v2.terrain"