1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-02-09 13:37:02 +02:00

Merge pull request #113 from randomdud3/filter-events

Filter events so they are only triggered when it really matters
This commit is contained in:
MewMew 2020-01-08 18:26:52 +01:00 committed by GitHub
commit 331b9d8d65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 12 deletions

View File

@ -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
@ -99,7 +99,7 @@ local tick_minute_functions = {
local function on_tick(event)
Mirror_terrain()
local tick = game.tick
if tick % 60 ~= 0 then return end
@ -115,7 +115,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
@ -139,7 +139,10 @@ 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)
Event.add_event_filter(defines.events.on_entity_damaged, { filter = "name", name = "rocket-silo" })
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"
require "maps.biter_battles_v2.difficulty_vote"
require "modules.custom_death_messages"
require "modules.custom_death_messages"

View File

@ -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