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:
parent
e65726d120
commit
70c64a2210
@ -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},
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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})
|
||||
|
Loading…
x
Reference in New Issue
Block a user