mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-06 00:23:49 +02:00
177 lines
5.1 KiB
Lua
177 lines
5.1 KiB
Lua
-- one table to rule them all!
|
|
local Global = require 'utils.global'
|
|
local Difficulty = require 'modules.difficulty_vote'
|
|
local Event = require 'utils.event'
|
|
|
|
local this = {}
|
|
local Public = {}
|
|
|
|
Global.register(
|
|
this,
|
|
function(tbl)
|
|
this = tbl
|
|
end
|
|
)
|
|
|
|
function Public.reset_table()
|
|
-- @start
|
|
-- these 3 are in case of stop/start/reloading the instance.
|
|
this.soft_reset = true
|
|
this.restart = false
|
|
this.shutdown = false
|
|
this.announced_message = false
|
|
this.force_chunk = false
|
|
this.fish_eye = false
|
|
this.chunk_load_tick = game.tick + 500
|
|
-- @end
|
|
this.game_has_ended = false
|
|
this.game_reset = false
|
|
this.spawn_area_generated = false
|
|
this.results_sent = false
|
|
|
|
this.explosive_bullets_unlocked = false
|
|
this.bouncy_shells_unlocked = false
|
|
this.trapped_capsules_unlocked = false
|
|
this.ultra_mines_unlocked = false
|
|
this.laser_pointer_unlocked = false
|
|
this.crumbly_walls_unlocked = false
|
|
this.vehicle_nanobots_unlocked = false
|
|
this.game_restart_timer = nil
|
|
this.wave_count = 0
|
|
this.wave_limit = 2000
|
|
this.attack_wave_threat = nil
|
|
this.market = nil
|
|
this.market_age = nil
|
|
this.last_reset = game.tick
|
|
this.wave_interval = 3600
|
|
this.wave_grace_period = game.tick + 72000
|
|
-- this.wave_grace_period = game.tick + 3600
|
|
this.boss_biters = {}
|
|
this.acid_lines_delay = {}
|
|
this.entity_limits = {
|
|
['ammo-turret'] = {placed = 1, limit = 6, str = 'gun turret', slot_price = 70},
|
|
['electric-turret'] = {placed = 0, limit = 1, str = 'laser turret', slot_price = 300},
|
|
['artillery-turret'] = {placed = 0, limit = 1, str = 'artillery turret', slot_price = 500},
|
|
['fluid-turret'] = {placed = 0, limit = 0, str = 'flamethrower turret', slot_price = 50000},
|
|
['land-mine'] = {placed = 0, limit = 1, str = 'mine', slot_price = 20}
|
|
}
|
|
this.difficulties_votes = {
|
|
[1] = {
|
|
wave_interval = 5000,
|
|
amount_modifier = 0.90,
|
|
strength_modifier = 0.90,
|
|
boss_modifier = 5.0
|
|
},
|
|
[2] = {
|
|
wave_interval = 3500,
|
|
amount_modifier = 1.00,
|
|
strength_modifier = 1.00,
|
|
boss_modifier = 6.0
|
|
},
|
|
[3] = {
|
|
wave_interval = 3400,
|
|
amount_modifier = 1.10,
|
|
strength_modifier = 1.30,
|
|
boss_modifier = 7.0
|
|
},
|
|
[4] = {
|
|
wave_interval = 3200,
|
|
amount_modifier = 1.20,
|
|
strength_modifier = 1.60,
|
|
boss_modifier = 8.0
|
|
},
|
|
[5] = {
|
|
wave_interval = 3000,
|
|
amount_modifier = 1.40,
|
|
strength_modifier = 2.20,
|
|
boss_modifier = 9.0
|
|
}
|
|
}
|
|
this.boss_waves = {
|
|
[50] = {{name = 'big-biter', count = 3}},
|
|
[100] = {{name = 'behemoth-biter', count = 1}},
|
|
[150] = {{name = 'behemoth-spitter', count = 4}, {name = 'big-spitter', count = 16}},
|
|
[200] = {
|
|
{name = 'behemoth-biter', count = 4},
|
|
{name = 'behemoth-spitter', count = 2},
|
|
{name = 'big-biter', count = 32}
|
|
},
|
|
[250] = {
|
|
{name = 'behemoth-biter', count = 8},
|
|
{name = 'behemoth-spitter', count = 4},
|
|
{name = 'big-spitter', count = 32}
|
|
},
|
|
[300] = {{name = 'behemoth-biter', count = 16}, {name = 'behemoth-spitter', count = 8}}
|
|
}
|
|
this.comfylatron_habitat = {
|
|
left_top = {x = -1500, y = -1500},
|
|
right_bottom = {x = -80, y = 1500}
|
|
}
|
|
this.shotgun_shell_damage_modifier_old = {}
|
|
this.fish_eye = false
|
|
this.stop_generating_map = false
|
|
end
|
|
|
|
function Public.get(key)
|
|
if key then
|
|
return this[key]
|
|
else
|
|
return this
|
|
end
|
|
end
|
|
|
|
function Public.set(key, value)
|
|
if key and value == false then
|
|
if this[key] then
|
|
this[key] = false
|
|
return this[key]
|
|
end
|
|
end
|
|
if key and not value then
|
|
if this[key] then
|
|
this[key] = nil
|
|
return
|
|
end
|
|
end
|
|
if key and value then
|
|
this[key] = value
|
|
return this[key]
|
|
end
|
|
end
|
|
|
|
function Public.get_current_difficulty_wave_interval()
|
|
local diff_index = Difficulty.get_difficulty_vote_index()
|
|
if this.difficulties_votes[diff_index] then
|
|
return this.difficulties_votes[diff_index].wave_interval
|
|
end
|
|
end
|
|
|
|
function Public.get_current_difficulty_boss_modifier()
|
|
local diff_index = Difficulty.get_difficulty_vote_index()
|
|
if this.difficulties_votes[diff_index] then
|
|
return this.difficulties_votes[diff_index].boss_modifier
|
|
end
|
|
end
|
|
|
|
function Public.get_current_difficulty_strength_modifier()
|
|
local diff_index = Difficulty.get_difficulty_vote_index()
|
|
if this.difficulties_votes[diff_index] then
|
|
return this.difficulties_votes[diff_index].strength_modifier
|
|
end
|
|
end
|
|
|
|
function Public.get_current_difficulty_amount_modifier()
|
|
local diff_index = Difficulty.get_difficulty_vote_index()
|
|
if this.difficulties_votes[diff_index] then
|
|
return this.difficulties_votes[diff_index].amount_modifier
|
|
end
|
|
end
|
|
|
|
local on_init = function()
|
|
Public.reset_table()
|
|
end
|
|
|
|
Event.on_init(on_init)
|
|
|
|
return Public
|