1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2025-03-03 14:53:01 +02:00

Merge pull request #1096 from Refactorio/Jayefuu-patch-crashsite-restart

Updated crashsite commands.lua to check total biter count
This commit is contained in:
grilledham 2020-10-10 19:36:31 +01:00 committed by GitHub
commit e4712f9cdc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -52,22 +52,41 @@ callback =
end
)
local entities_to_check = {
local static_entities_to_check = {
'spitter-spawner','biter-spawner',
'small-worm-turret', 'medium-worm-turret','big-worm-turret', 'behemoth-worm-turret',
'small-spitter', 'medium-spitter', 'big-spitter', 'behemoth-spitter',
'small-biter', 'medium-biter', 'big-biter', 'behemoth-biter',
'gun-turret', 'laser-turret', 'artillery-turret', 'flamethrower-turret'
}
local function map_cleared()
local biter_entities_to_check = {
'small-spitter', 'medium-spitter', 'big-spitter', 'behemoth-spitter',
'small-biter', 'medium-biter', 'big-biter', 'behemoth-biter'
}
local function map_cleared(player)
player = player or server_player
local get_entity_count = game.forces["enemy"].get_entity_count
for i = 1, #entities_to_check do
local name = entities_to_check[i]
-- Check how many of each turrets, worms and spawners are left and return false if there are any of each left.
for i = 1, #static_entities_to_check do
local name = static_entities_to_check[i]
if get_entity_count(name) > 0 then
player.print('All enemy spawners, worms, buildings, biters and spitters must be cleared before crashsite can be restarted.')
return false
end
end
-- Count all the remaining biters and spitters
local biter_total = 0;
for i = 1, #biter_entities_to_check do
local name = biter_entities_to_check[i]
biter_total = biter_total + get_entity_count(name)
end
-- Return false if more than 20 left. Players have had problems finding the last few biters so set to a reasonable value.
if biter_total > 20 then
player.print('All enemy spawners, worms, buildings are dead. Crashsite can be restarted when all biters and spitters are killed.')
return false
end
return true
end
@ -82,8 +101,7 @@ local function restart(args, player)
if player ~= server_player and Rank.less_than(player.name, Ranks.admin) then
-- Check enemy count
if not map_cleared() then
player.print('All enemy spawners, worms, buildings, biters and spitters must be cleared for non-admin restart.')
if not map_cleared(player) then
return
end