mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-02-11 13:39:14 +02:00
add timer to suicide
This commit is contained in:
parent
eaf754f18b
commit
3964ddec72
@ -231,7 +231,7 @@ require 'utils.freeplay'
|
||||
--require 'maps.cube'
|
||||
--require 'maps.mountain_race.main'
|
||||
--require 'maps.native_war.main'
|
||||
--require 'maps.scrap_towny_ffa.main'
|
||||
require 'maps.scrap_towny_ffa.main'
|
||||
---------------------------------------------------------------
|
||||
|
||||
---------------- MORE MODULES HERE ----------------
|
||||
|
@ -18,7 +18,6 @@ require 'maps.scrap_towny_ffa.fluids_are_explosive'
|
||||
require 'maps.scrap_towny_ffa.trap'
|
||||
require 'maps.scrap_towny_ffa.turrets_drop_ammo'
|
||||
require 'maps.scrap_towny_ffa.vehicles'
|
||||
require 'utils.commands.suicide'
|
||||
|
||||
local Event = require 'utils.event'
|
||||
local Autostash = require 'modules.autostash'
|
||||
@ -38,6 +37,7 @@ local Gui = require 'utils.gui'
|
||||
local Color = require 'utils.color_presets'
|
||||
local Where = require 'utils.commands.where'
|
||||
local Inventory = require 'modules.show_inventory'
|
||||
local Suicide = require 'maps.scrap_towny_ffa.suicide'
|
||||
|
||||
local function spairs(t, order)
|
||||
local keys = {}
|
||||
@ -183,6 +183,7 @@ local tick_actions = {
|
||||
[60 * 5] = Team.update_town_chart_tags, -- each minute, at 05 seconds
|
||||
[60 * 10] = Team.set_all_player_colors, -- each minute, at 10 seconds
|
||||
[60 * 15] = Fish.reproduce, -- each minute, at 15 seconds
|
||||
[60 * 20] = Suicide.check, -- each minute, at 20 seconds
|
||||
[60 * 25] = Biters.unit_groups_start_moving, -- each minute, at 25 seconds
|
||||
[60 * 30] = Radar.reset, -- each minute, at 30 seconds
|
||||
[60 * 45] = Biters.validate_swarms, -- each minute, at 45 seconds
|
||||
|
54
maps/scrap_towny_ffa/suicide.lua
Normal file
54
maps/scrap_towny_ffa/suicide.lua
Normal file
@ -0,0 +1,54 @@
|
||||
local ScenarioTable = require 'maps.scrap_towny_ffa.table'
|
||||
|
||||
local yellow = {r = 200, g = 200, b = 0}
|
||||
local minutes_to_die = 3
|
||||
local one_minute = 60 * 60
|
||||
|
||||
commands.add_command(
|
||||
'suicide',
|
||||
'Kills the player',
|
||||
function(cmd)
|
||||
local this = ScenarioTable.get_table()
|
||||
local player = game.player
|
||||
|
||||
if not player or not player.valid then
|
||||
return
|
||||
end
|
||||
-- Schedule death for 30 seconds less than the average. Death is checked every minute, so this keeps
|
||||
-- the average correct.
|
||||
this.suicides[player.name] = game.tick + (one_minute * minutes_to_die - (one_minute * 0.5))
|
||||
player.print("You ate a poison pill. You will die in approximately ".. minutes_to_die .. " minutes.", yellow)
|
||||
end
|
||||
)
|
||||
|
||||
local Public = {}
|
||||
|
||||
function Public.check()
|
||||
local this = ScenarioTable.get_table()
|
||||
for name, death_time in pairs(this.suicides) do
|
||||
local remaining_time = death_time - game.tick
|
||||
local player = game.get_player(name)
|
||||
if not player or not player.valid then
|
||||
return
|
||||
end
|
||||
if not player.character then
|
||||
return
|
||||
end
|
||||
|
||||
if remaining_time <= 0 then
|
||||
player.character.die(player.force, player.character)
|
||||
this.suicides[player.name] = nil
|
||||
else
|
||||
local remaining_minutes = math.ceil(remaining_time / 3600)
|
||||
if remaining_minutes ~= minutes_to_die then
|
||||
if remaining_minutes == 1 then
|
||||
player.print(remaining_minutes .. " minute remaining until death.", yellow)
|
||||
else
|
||||
player.print(remaining_minutes .. " minutes remaining until death.", yellow)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
return Public
|
@ -38,6 +38,7 @@ function Public.reset_table()
|
||||
this.spaceships = {}
|
||||
this.pvp_shields = {}
|
||||
this.pvp_shield_warned = {}
|
||||
this.suicides = {}
|
||||
end
|
||||
|
||||
function Public.get_table()
|
||||
|
@ -1,15 +0,0 @@
|
||||
commands.add_command(
|
||||
'suicide',
|
||||
'Kills the player',
|
||||
function(cmd)
|
||||
local player = game.player
|
||||
|
||||
if not player or not player.valid then
|
||||
return
|
||||
end
|
||||
if not player.character then
|
||||
return
|
||||
end
|
||||
player.character.die()
|
||||
end
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user