mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-02-01 13:08:05 +02:00
Merge pull request #392 from ComfyFactory/fixes
Fixes to scenario and modules
This commit is contained in:
commit
d9e2999f49
@ -903,6 +903,8 @@ function Public.set_difficulty()
|
||||
amount = difficulty.highest -- lowered from 20 to 10
|
||||
end
|
||||
|
||||
local wave = WD.get('wave_number')
|
||||
|
||||
local threat_check = nil
|
||||
|
||||
if check_if_threat_below_zero then
|
||||
@ -910,26 +912,27 @@ function Public.set_difficulty()
|
||||
end
|
||||
|
||||
if Diff.index == 1 then
|
||||
if player_count < 10 then
|
||||
if wave < 1000 then
|
||||
wave_defense_table.wave_interval = 4500
|
||||
else
|
||||
wave_defense_table.wave_interval = 3600 - player_count * 60
|
||||
end
|
||||
if wave_defense_table.wave_interval < 2200 or threat_check then
|
||||
wave_defense_table.wave_interval = 2200
|
||||
|
||||
if wave_defense_table.wave_interval < 2000 or threat_check then
|
||||
wave_defense_table.wave_interval = 2000
|
||||
end
|
||||
elseif Diff.index == 2 then
|
||||
if player_count < 10 then
|
||||
if wave < 1000 then
|
||||
wave_defense_table.wave_interval = 3000
|
||||
else
|
||||
wave_defense_table.wave_interval = 2600 - player_count * 60
|
||||
end
|
||||
if wave_defense_table.wave_interval < 1900 or threat_check then
|
||||
wave_defense_table.wave_interval = 1900
|
||||
if wave_defense_table.wave_interval < 1800 or threat_check then
|
||||
wave_defense_table.wave_interval = 1800
|
||||
end
|
||||
elseif Diff.index == 3 then
|
||||
if player_count < 10 then
|
||||
wave_defense_table.wave_interval = 2000
|
||||
if wave < 1000 then
|
||||
wave_defense_table.wave_interval = 3000
|
||||
else
|
||||
wave_defense_table.wave_interval = 1600 - player_count * 60
|
||||
end
|
||||
|
@ -273,6 +273,7 @@ function Public.reset_map()
|
||||
end
|
||||
|
||||
game.forces.player.set_spawn_position({-27, 25}, surface)
|
||||
game.speed = 1
|
||||
|
||||
Task.set_queue_speed(16)
|
||||
|
||||
|
@ -158,12 +158,15 @@ local function is_position_near(area, table_to_check)
|
||||
end
|
||||
|
||||
local function place_wagon(data, adjusted_zones)
|
||||
local x_min = (-zone_settings.zone_width / 2) + 10
|
||||
local x_max = (zone_settings.zone_width / 2) - 10
|
||||
|
||||
local x_min = -zone_settings.zone_width / 2
|
||||
local x_max = zone_settings.zone_width / 2
|
||||
|
||||
if data.x < x_min then return end
|
||||
if data.x > x_max then return end
|
||||
if data.x < x_min then
|
||||
return
|
||||
end
|
||||
if data.x > x_max then
|
||||
return
|
||||
end
|
||||
|
||||
local placed_trains_in_zone = Public.get('placed_trains_in_zone')
|
||||
if not placed_trains_in_zone.randomized then
|
||||
|
@ -183,6 +183,20 @@ local function add_recipe_to_whitelist(item_whitelist, recipe)
|
||||
for key, ingredient in pairs(recipe.ingredients) do
|
||||
item_whitelist[ingredient.name] = true
|
||||
end
|
||||
|
||||
--Adding "place_result" in case the inventory item can turn into a differently named entity after placement on the map.
|
||||
for key, product in pairs(recipe.products) do
|
||||
local p = game.item_prototypes[product.name]
|
||||
if p and p.place_result then
|
||||
item_whitelist[p.place_result.name] = true
|
||||
end
|
||||
end
|
||||
for key, ingredient in pairs(recipe.ingredients) do
|
||||
local p = game.item_prototypes[ingredient.name]
|
||||
if p and p.place_result then
|
||||
item_whitelist[p.place_result.name] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Public.add_research_to_whitelist(force, effects)
|
||||
|
@ -726,6 +726,7 @@ function Public.draw_top_toggle_button(player)
|
||||
button_flow.style.maximal_height = 38
|
||||
button_flow.style.minimal_width = 40
|
||||
button_flow.style.padding = -2
|
||||
button_flow.style.font_color = {222, 222, 222}
|
||||
end
|
||||
|
||||
function Public.open_recipe(element, player, button)
|
||||
|
@ -138,6 +138,10 @@ local function on_string_translated(event)
|
||||
end
|
||||
|
||||
localised_string = localised_string[1]
|
||||
if not localised_string then
|
||||
return
|
||||
end
|
||||
|
||||
localised_string = string.match(localised_string, '[^.]*$')
|
||||
|
||||
Functions.set_translated_data(player, result, localised_string)
|
||||
|
@ -606,6 +606,30 @@ spells[#spells + 1] = {
|
||||
return create_projectiles(data)
|
||||
end
|
||||
}
|
||||
if _DEBUG then
|
||||
spells[#spells + 1] = {
|
||||
name = 'Kewl Nade',
|
||||
entityName = 'cluster-grenade',
|
||||
target = true,
|
||||
amount = 20,
|
||||
damage = true,
|
||||
aoe = true,
|
||||
force = 'player',
|
||||
level = 1,
|
||||
type = 'item',
|
||||
mana_cost = -1,
|
||||
cooldown = 0,
|
||||
enabled = true,
|
||||
log_spell = false,
|
||||
sprite = 'recipe/cluster-grenade',
|
||||
tooltip = 'Spawns a cluster nade where the mouse cursor is at',
|
||||
callback = function(data)
|
||||
local player = data.player
|
||||
player.insert({name = 'raw-fish'})
|
||||
return create_projectiles(data)
|
||||
end
|
||||
}
|
||||
end
|
||||
spells[#spells + 1] = {
|
||||
name = {'item-name.cluster-grenade'},
|
||||
entityName = 'cluster-grenade',
|
||||
|
@ -149,8 +149,9 @@ function Public.toggle_pause_wave_without_votes()
|
||||
end
|
||||
|
||||
Public.set('pause_waves', {index = 0})
|
||||
local pause_wave_in_ticks = Public.get('pause_wave_in_ticks')
|
||||
pause_waves_state(true)
|
||||
Task.set_timeout_in_ticks(18000, pause_waves_state_token, false) -- 5 minutes
|
||||
Task.set_timeout_in_ticks(pause_wave_in_ticks, pause_waves_state_token, false) -- 5 minutes
|
||||
end
|
||||
|
||||
Gui.on_click(
|
||||
|
@ -54,6 +54,7 @@ function Public.reset_wave_defense()
|
||||
this.log_wave_to_discord = true
|
||||
this.paused = false
|
||||
this.pause_without_votes = true
|
||||
this.pause_wave_in_ticks = 18000 -- 5 minutes
|
||||
this.game_lost = false
|
||||
this.get_random_close_spawner_attempts = 5
|
||||
this.group_size = 2
|
||||
@ -377,6 +378,12 @@ function Public.set_tick_to_spawn_unit_groups(int)
|
||||
this.tick_to_spawn_unit_groups = int or 200
|
||||
end
|
||||
|
||||
--- Sets the pause length in ticks.
|
||||
-- @param <int> in ticks
|
||||
function Public.set_pause_wave_in_ticks(int)
|
||||
this.pause_wave_in_ticks = int or 18000
|
||||
end
|
||||
|
||||
--- Pauses the wave defense module
|
||||
-- @param null
|
||||
function Public.pause(boolean)
|
||||
|
@ -200,7 +200,7 @@ local functions = {
|
||||
['vacant_toggle'] = function(event)
|
||||
local vacant = is_loaded('modules.clear_vacant_players')
|
||||
if not vacant then
|
||||
log("Error: toggle related to clear_vacant_players was activated, but the module does not seem to be loaded.")
|
||||
log('Error: toggle related to clear_vacant_players was activated, but the module does not seem to be loaded.')
|
||||
return
|
||||
end
|
||||
|
||||
@ -844,11 +844,11 @@ local function on_gui_switch_state_changed(event)
|
||||
pirates_functions[event.element.name](event)
|
||||
return
|
||||
elseif is_loaded('utils.gui.poll') then
|
||||
local is_spamming = SpamProtection.is_spamming(player, nil, 'Config Poll Elem')
|
||||
if is_spamming then
|
||||
return
|
||||
end
|
||||
if poll_function[event.element.name] then
|
||||
local is_spamming = SpamProtection.is_spamming(player, nil, 'Config Poll Elem')
|
||||
if is_spamming then
|
||||
return
|
||||
end
|
||||
poll_function[event.element.name](event)
|
||||
return
|
||||
end
|
||||
|
@ -22,14 +22,14 @@ local function debug_text(str)
|
||||
if not this.debug_text then
|
||||
return
|
||||
end
|
||||
print(main_text .. str)
|
||||
log(main_text .. str)
|
||||
end
|
||||
|
||||
local function debug_spam(str)
|
||||
if not this.debug_spam then
|
||||
return
|
||||
end
|
||||
print(main_text .. str)
|
||||
log(main_text .. str)
|
||||
end
|
||||
|
||||
function Public.reset_spam_table()
|
||||
@ -64,6 +64,10 @@ function Public.is_spamming(player, value_to_compare, text)
|
||||
return false -- game is paused - shoo
|
||||
end
|
||||
|
||||
if this.debug_spam then
|
||||
log(serpent.block(debug.traceback()))
|
||||
end
|
||||
|
||||
local tick = game.tick
|
||||
local value = value_to_compare or this.default_tick
|
||||
if this.prevent_spam[player.index] then
|
||||
@ -105,6 +109,9 @@ Event.add(
|
||||
defines.events.on_player_joined_game,
|
||||
function(event)
|
||||
local player = game.get_player(event.player_index)
|
||||
if not player then
|
||||
return
|
||||
end
|
||||
|
||||
if not this.prevent_spam[player.index] then
|
||||
this.prevent_spam[player.index] = game.tick
|
||||
|
Loading…
x
Reference in New Issue
Block a user