Skip to content

[WIP] Diggy Experimental (foundation for multi surface diggy) #950

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion features/player_stats.lua
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,12 @@ local function robot_built_entity()
end

local function biter_kill_counter(event)
if event.entity.force.name == 'enemy' then
local entity = event.entity
if not entity or not entity.valid then
return
end

if entity.force.name == 'enemy' then
change_for_global(aliens_killed_name, 1)
end
end
Expand Down
4 changes: 4 additions & 0 deletions map_gen/maps/diggy/feature/coin_gathering.lua
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ function CoinGathering.register(config)

Event.add(defines.events.on_entity_died, function (event)
local entity = event.entity
if not entity or not entity.valid then
return
end

local force = entity.force
if force.name ~= 'enemy' or random() > alien_coin_drop_chance then
return
Expand Down
1 change: 1 addition & 0 deletions map_gen/maps/diggy_experimental.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require 'map_gen.maps.diggy_experimental.scenario'.register()
449 changes: 449 additions & 0 deletions map_gen/maps/diggy_experimental/config.lua

Large diffs are not rendered by default.

56 changes: 56 additions & 0 deletions map_gen/maps/diggy_experimental/feature/antigrief.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
-- dependencies
local Event = require 'utils.event'
local Global = require 'utils.global'
local CaveCollapse = require 'map_gen.maps.diggy_experimental.feature.diggy_cave_collapse'
local Report = require 'features.report'
local format = string.format

-- this
local Antigrief = {}

local global_primitives = {}

local allowed_collapses_first_hour = 0

local player_collapses = {}
local jailed_players = {}

Global.register({
player_collapses = player_collapses,
jailed_players = jailed_players,
global_primitives = global_primitives,
}, function(tbl)
player_collapses = tbl.player_collapses
jailed_players = tbl.jailed_players
global_primitives = tbl.global_primitives
end)

global_primitives.autojail = false
global_primitives.last_collapse = 0

--[[--
Registers all event handlers.
]]
function Antigrief.register(config)
global_primitives.autojail = config.autojail
allowed_collapses_first_hour = config.allowed_collapses_first_hour
end


Event.add(CaveCollapse.events.on_collapse, function(event)
local player_index = event.player_index
if player_index and global_primitives.last_collapse ~= game.tick then
global_primitives.last_collapse = game.tick
local count = player_collapses[player_index] or 0
count = count + 1
player_collapses[player_index] = count
local player = game.get_player(player_index)
if global_primitives.autojail and count > allowed_collapses_first_hour and player.online_time < 216000 and not jailed_players[player_index] then
Report.jail(player)
Report.report(nil, player, format('Caused %d collapses in the first hour', count))
jailed_players[player_index] = true
end
end
end)

return Antigrief
Loading