1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-03-17 20:58:13 +02:00

mtn v3 - tweaks and fixes

This commit is contained in:
Gerkiz 2020-12-20 19:56:26 +01:00
parent e65726d120
commit 70c64a2210
7 changed files with 130 additions and 43 deletions

View File

@ -763,6 +763,21 @@ function Public.remove_offline_players()
end
end
local function calc_players()
local players = game.connected_players
local total = 0
for i = 1, #players do
local player = players[i]
if player.afk_time < 36000 then
total = total + 1
end
end
if total <= 0 then
total = 1
end
return total
end
function Public.set_difficulty()
local game_lost = WPT.get('game_lost')
if game_lost then
@ -773,6 +788,10 @@ function Public.set_difficulty()
local collapse_amount = WPT.get('collapse_amount')
local collapse_speed = WPT.get('collapse_speed')
local player_count = #game.connected_players
local check_afk_players = WPT.get('check_afk_players')
if check_afk_players then
player_count = calc_players()
end
if not Diff.difficulty_vote_value then
Diff.difficulty_vote_value = 0.1
end
@ -786,7 +805,8 @@ function Public.set_difficulty()
-- threat gain / wave
wave_defense_table.threat_gain_multiplier = 1.2 + player_count * Diff.difficulty_vote_value * 0.1
local amount = player_count * 0.40 + 2
-- local amount = player_count * 0.40 + 2 -- too high?
local amount = player_count * 0.25 + 2
amount = floor(amount)
if amount > 20 then
amount = 20
@ -818,9 +838,14 @@ end
function Public.render_direction(surface)
local counter = WPT.get('soft_reset_counter')
local winter_mode = WPT.get('winter_mode')
local text = 'Welcome to Mountain Fortress v3!'
if winter_mode then
text = 'Welcome to Wintery Mountain Fortress v3!'
end
if counter then
rendering.draw_text {
text = 'Welcome to Mountain Fortress v3!\nRun: ' .. counter,
text = text .. '\nRun: ' .. counter,
surface = surface,
target = {-0, 10},
color = {r = 0.98, g = 0.66, b = 0.22},
@ -831,7 +856,7 @@ function Public.render_direction(surface)
}
else
rendering.draw_text {
text = 'Welcome to Mountain Fortress v3!',
text = text,
surface = surface,
target = {-0, 10},
color = {r = 0.98, g = 0.66, b = 0.22},

View File

@ -15,6 +15,13 @@ local queue_task = Task.queue_task
local tiles_per_call = 8
local total_calls = ceil(1024 / tiles_per_call)
local regen_decoratives = false
local wintery_type = {
['simple-entity'] = true,
['tree'] = true,
['fish'] = true,
['locomotive'] = true,
['cargo-wagon'] = true
}
-- Set to false by modules that want to control the on_chunk_generated event themselves.
Public.enable_register_events = true
@ -266,6 +273,44 @@ local function do_place_buildings(data)
end
end
local function wintery(ent, extra_lights)
local winter_mode = WPT.get('winter_mode')
if not winter_mode then
return false
end
local colors = {{255, 0, 0}, {0, 255, 0}, {0, 0, 255}}
local function add_light(e)
local color = colors[math.random(1, 3)]
local scale = extra_lights or 1
rendering.draw_light(
{
sprite = 'utility/light_small',
orientation = 1,
scale = scale,
intensity = 1,
minimum_darkness = 0,
oriented = false,
color = color,
target = e,
target_offset = {0, -0.5},
surface = e.surface
}
)
end
if not (ent and ent.valid) then
return
end
if wintery_type[ent.type] then
if ent.type == 'simple-entity' then
if random(1, 8) ~= 1 then
return
end
end
add_light(ent)
end
return true
end
local function do_place_entities(data)
local surface = data.surface
local entity
@ -274,6 +319,7 @@ local function do_place_entities(data)
if e.collision then
if surface.can_place_entity(e) then
entity = surface.create_entity(e)
wintery(entity)
if entity and e.direction then
entity.direction = e.direction
end
@ -297,6 +343,7 @@ local function do_place_entities(data)
end
else
entity = surface.create_entity(e)
wintery(entity)
if entity and e.direction then
entity.direction = e.direction
end
@ -528,4 +575,6 @@ end
Event.add(defines.events.on_chunk_generated, on_chunk)
Public.wintery = wintery
return Public

View File

@ -1,6 +1,7 @@
local Event = require 'utils.event'
--local Power = require 'maps.mountain_fortress_v3.power'
local Market = require 'maps.mountain_fortress_v3.basic_markets'
local Generate = require 'maps.mountain_fortress_v3.generate'
local ICW = require 'maps.mountain_fortress_v3.icw.main'
local WPT = require 'maps.mountain_fortress_v3.table'
local WD = require 'modules.wave_defense.table'
@ -1840,35 +1841,42 @@ function Public.locomotive_spawn(surface, position)
this.locomotive_cargo = surface.create_entity({name = 'cargo-wagon', position = {position.x, position.y + 3}, force = 'player'})
this.locomotive_cargo.get_inventory(defines.inventory.cargo_wagon).insert({name = 'raw-fish', count = 8})
rendering.draw_light(
{
sprite = 'utility/light_medium',
scale = 5.5,
intensity = 1,
minimum_darkness = 0,
oriented = true,
color = {255, 255, 255},
target = this.locomotive,
surface = surface,
visible = true,
only_in_alt_mode = false
}
)
local winter_mode_locomotive = Generate.wintery(this.locomotive, 5.5)
if not winter_mode_locomotive then
rendering.draw_light(
{
sprite = 'utility/light_medium',
scale = 5.5,
intensity = 1,
minimum_darkness = 0,
oriented = true,
color = {255, 255, 255},
target = this.locomotive,
surface = surface,
visible = true,
only_in_alt_mode = false
}
)
end
rendering.draw_light(
{
sprite = 'utility/light_medium',
scale = 5.5,
intensity = 1,
minimum_darkness = 0,
oriented = true,
color = {255, 255, 255},
target = this.locomotive_cargo,
surface = surface,
visible = true,
only_in_alt_mode = false
}
)
local winter_mode_cargo = Generate.wintery(this.locomotive_cargo, 5.5)
if not winter_mode_cargo then
rendering.draw_light(
{
sprite = 'utility/light_medium',
scale = 5.5,
intensity = 1,
minimum_darkness = 0,
oriented = true,
color = {255, 255, 255},
target = this.locomotive_cargo,
surface = surface,
visible = true,
only_in_alt_mode = false
}
)
end
local data = {
surface = surface,

View File

@ -134,6 +134,10 @@ function Public.reset_map()
local surface = game.surfaces[this.active_surface_index]
if this.winter_mode then
surface.daytime = 0.45
end
Explosives.set_surface_whitelist({[surface.name] = true})
game.forces.player.set_spawn_position({-27, 25}, surface)

View File

@ -193,6 +193,8 @@ function Public.reset_table()
-- this.void_or_tile = 'lab-dark-2'
this.void_or_tile = 'out-of-map'
this.validate_spider = {}
this.check_afk_players = true
this.winter_mode = true
--!reset player tables
for _, player in pairs(this.players) do

View File

@ -2427,6 +2427,11 @@ Event.add(
return
end
local winter_mode = WPT.get('winter_mode')
if winter_mode then
rendering.draw_sprite({sprite = "tile/lab-white", x_scale = 32, y_scale = 32, target = left_top, surface = surface, tint = {r = 0.6, g = 0.6, b = 0.6, a = 0.6}, render_layer = "ground"})
end
if left_top.y == -128 and left_top.x == -128 then
local pl = WPT.get().locomotive.position
for _, entity in pairs(surface.find_entities_filtered({area = {{pl.x - 5, pl.y - 6}, {pl.x + 5, pl.y + 10}}, type = 'simple-entity'})) do

View File

@ -123,7 +123,7 @@ function Public.extra_settings(player)
reset_gui_input.tooltip = ({'rpg_settings.not_trusted'})
goto continue
end
if rpg_t[player.index].level <= 50 then
if rpg_t[player.index].level < 50 then
reset_gui_input.enabled = false
reset_gui_input.tooltip = ({'rpg_settings.low_level', 50})
reset_label.tooltip = ({'rpg_settings.low_level', 50})
@ -157,10 +157,7 @@ function Public.extra_settings(player)
magic_pickup_input_style.height = 35
magic_pickup_input_style.vertical_align = 'center'
local reach_mod
if
player_modifiers.disabled_modifier[player.index] and
player_modifiers.disabled_modifier[player.index].character_item_pickup_distance_bonus
then
if player_modifiers.disabled_modifier[player.index] and player_modifiers.disabled_modifier[player.index].character_item_pickup_distance_bonus then
reach_mod = not player_modifiers.disabled_modifier[player.index].character_item_pickup_distance_bonus
else
reach_mod = true
@ -187,10 +184,7 @@ function Public.extra_settings(player)
movement_speed_input_style.height = 35
movement_speed_input_style.vertical_align = 'center'
local speed_mod
if
player_modifiers.disabled_modifier[player.index] and
player_modifiers.disabled_modifier[player.index].character_running_speed_modifier
then
if player_modifiers.disabled_modifier[player.index] and player_modifiers.disabled_modifier[player.index].character_running_speed_modifier then
speed_mod = not player_modifiers.disabled_modifier[player.index].character_running_speed_modifier
else
speed_mod = true
@ -232,7 +226,7 @@ function Public.extra_settings(player)
end
stone_path_gui_input = create_input_element(stone_path_input, 'boolean', stone_path)
if rpg_t[player.index].level <= 20 then
if rpg_t[player.index].level < 20 then
stone_path_gui_input.enabled = false
stone_path_gui_input.tooltip = ({'rpg_settings.low_level', 20})
stone_path_label.tooltip = ({'rpg_settings.low_level', 20})
@ -274,7 +268,7 @@ function Public.extra_settings(player)
one_punch_gui_input.enabled = false
one_punch_gui_input.tooltip = ({'rpg_settings.one_punch_globally'})
else
if rpg_t[player.index].level <= 30 then
if rpg_t[player.index].level < 30 then
one_punch_gui_input.enabled = false
one_punch_gui_input.tooltip = ({'rpg_settings.low_level', 30})
else
@ -312,7 +306,7 @@ function Public.extra_settings(player)
flame_boots_gui_input = create_input_element(flame_boots_input, 'boolean', flame_mod)
if rpg_t[player.index].mana > 50 then
if rpg_t[player.index].level <= 100 then
if rpg_t[player.index].level < 100 then
flame_boots_gui_input.enabled = false
flame_boots_gui_input.tooltip = ({'rpg_settings.low_level', 100})
flame_boots_label.tooltip = ({'rpg_settings.low_level', 100})