Just deleted about 400 bot accounts and a bunch of spam. To mitigate this in the future, we've enabled reCaptcha on signup. Let me know if someone got caught in the crossfire.

Commit 3812d9dc authored by Rob Nelson's avatar Rob Nelson
Browse files

Updates for 0.15.13

parent 21031b6b
day_length_multiplier = 3
-- Controls how the day length will be increased.
-- Must be an integer !
-- Set to 1 for default vanilla length (7 minutes full day/night cycle).
-- With 4, it gives a 28 mins cycle.
adapted_accumulators = true -- if true then buffer size of accumulators is multiplied by day_length_multiplier to support longer nights.
-- debug_status = 1
debug_mod_name = "DayNightExtender"
debug_file = debug_mod_name .. "-debug.txt"
require("utils")
require("config")
--------------------------------------------------------------------------------------
local function init_globals()
-- initialize or update general globals of the mod
debug_print( "init_globals" )
global.counter = global.counter or 0
global.multiplier = global.multiplier or math.floor(day_length_multiplier)
end
--------------------------------------------------------------------------------------
local function on_init()
-- called once, the first time the mod is loaded on a game (new or existing game)
debug_print( "on_init" )
init_globals()
end
script.on_init(on_init)
--------------------------------------------------------------------------------------
local function on_configuration_changed(data)
-- detect any mod or game version change
if data.mod_changes ~= nil then
local changes = data.mod_changes[debug_mod_name]
if changes ~= nil then
debug_print( "update mod: ", debug_mod_name, " ", tostring(changes.old_version), " to ", tostring(changes.new_version) )
init_globals()
end
end
end
script.on_configuration_changed(on_configuration_changed)
--------------------------------------------------------------------------------------
local function on_tick(event)
if game.tick % 14 == 0 then
for _, surf in pairs(game.surfaces) do
if not surf.always_day then
if global.counter == 0 then
surf.freeze_daytime(false)
elseif global.counter == 1 then
surf.freeze_daytime(true)
end
end
end
global.counter = global.counter + 1
if global.counter >= global.multiplier then
global.counter = 0
end
end
end
script.on_event(defines.events.on_tick, on_tick)
--------------------------------------------------------------------------------------
local interface = {}
function interface.on( )
debug_print( "on" )
message_all( "DayNightExtender : ON" )
script.on_event(defines.events.on_tick, on_tick)
end
function interface.off( )
debug_print( "off" )
message_all( "DayNightExtender : OFF" )
script.on_event(defines.events.on_tick, nil)
for _, surf in pairs(game.surfaces) do
surf.freeze_daytime(false)
end
end
function interface.multi( m )
debug_print( "multi" )
m = tonumber(m)
if m ~= nil then
m = math.max(1,math.floor(m))
message_all( "DayNightExtender : multiplier = " .. m )
global.multiplier = m
if global.multiplier == 1 then
interface.off()
else
interface.on()
end
end
end
remote.add_interface( "daynight", interface )
-- /c remote.call( "daynight", "on" )
-- /c remote.call( "daynight", "off" )
-- /c remote.call( "daynight", "multi", 4 )
require( "config" )
local function multiply_buffer(capa)
local n, unit = string.match(capa, "([%d%.]+)(%a+)")
if n == nil then return( "0MJ" ) end
return( n * day_length_multiplier .. unit )
end
if adapted_accumulators then
-- data.raw.accumulator.accumulator.energy_source.buffer_capacity = 5 * day_length_multiplier .. "MJ"
for _, accu in pairs(data.raw.accumulator) do
if accu.energy_source and accu.energy_source.buffer_capacity then
accu.energy_source.buffer_capacity = multiply_buffer(accu.energy_source.buffer_capacity)
end
end
end
{
"name": "DayNightExtender",
"version": "1.1.11",
"title": "Day Night Extender (longer days and nights)",
"author": "Original: Dark - Updated: vizzy, mikenlott, binbinhfr",
"homepage": "https://forums.factorio.com/viewtopic.php?f=92&t=28822",
"contact": "https://forums.factorio.com/memberlist.php?mode=viewprofile&u=14267",
"description": "Increase the length of day and night cycle. Vanilla length is around 7 mins. The extender multiplies this by x4 to 28 mins. This multiplier is customizable in config.lua.",
"factorio_version":"0.15",
"dependencies": ["base >= 0.14.0"]
}
##VERSIONS:
1.0.11 - factorio 0.15 compatible
1.0.10 - better reading of accu buffer capacity (when floating point number...)
1.0.9 - increase accumulators buffer size to support longer nights (multiply by day_length_multiplier)
1.0.8 - add an interface to enable/disable mod :
/c remote.call( "daynight", "on" )
/c remote.call( "daynight", "off" )
- add an interface to change multiplier :
/c remote.call( "daynight", "multi", 4 )
1.0.7 - factorio 0.14 compatible
1.1.6 - check all surfaces, and then unify day and night multipliers to simplify calculations and differences between surfaces. INtroduce config.lua. Default with x4 - 28 mins cycle.
1.1.4 - relaxes frequency, adds always_day checking
1.1.3 - update by Binbinhfr for factorio 0.13.x, published on portal
1.1.2 - update by Mikenlott
1.1.0 - update by Vizzy
1.0.0 - original release by Dark
\ No newline at end of file
[b][size=150]Infos[/size][/b]
[list]
[*]Type: Mod
[*]Name: DayNightExtender
[*]Description: Increase the length of day and night cycle. Vanilla length is around 7 mins. The extender multiplies this by x4 to 28 mins. This multiplier is customizable in config.lua.
[*]Tested-With-Factorio-Version: 0.13.0
[*]Multiplayer compatible: not tested
[*]Locale: none
[*]Tags: Time, clock, day length, slowtime.
[*]License: MIT.
[*]Authors : Dark, Vizzy, Mikenlott, BinbinHfr
[*]Portal download : https://mods.factorio.com/mods/binbinhfr/DayNightExtender[/list]
[spoiler=To Use]The default, modded day/night length is 4x the vanilla length.
Vanilla: 7 minutes for full day and night cycle
Modded: 28 minutes for full day and night cycle
With the mod, the game-minutes are ticking close to real seconds.
If you wish to change the modded values, you just have to change the value of day_length_multiplier in the config.lua file.[/spoiler]
[spoiler=Limitations]- Can only increase day/night length in blocks of 7 minutes. Unfortunately decreasing the length or finer granularity is not possible.
- If you are using a mod that display the clocl (like [url=https://forums.factorio.com/viewtopic.php?f=92&t=22822]TimeTools[/url], you will see that the clock is ticking slower and sometimes not very regularly. That's not a bug : DayNightExtender is constantly playing with the clock, freezing/unfreezing it, in order to give a fake slowtime effect.[/spoiler]
\ No newline at end of file
-- utils.lua by binbinhfr, v1.0.16
-- define debug_status to 1 or nil in the control.lua, before statement require("utils")
-- define also debug_file and debug_mod_name
colors = {
white = {r = 1, g = 1, b = 1},
black = {r = 0, g = 0, b = 0},
darkgrey = {r = 0.25, g = 0.25, b = 0.25},
grey = {r = 0.5, g = 0.5, b = 0.5},
lightgrey = {r = 0.75, g = 0.75, b = 0.75},
red = {r = 1, g = 0, b = 0},
darkred = {r = 0.5, g = 0, b = 0},
lightred = {r = 1, g = 0.5, b = 0.5},
green = {r = 0, g = 1, b = 0},
darkgreen = {r = 0, g = 0.5, b = 0},
lightgreen = {r = 0.5, g = 1, b = 0.5},
blue = {r = 0, g = 0, b = 1},
darkblue = {r = 0, g = 0, b = 0.5},
lightblue = {r = 0.5, g = 0.5, b = 1},
orange = {r = 1, g = 0.55, b = 0.1},
yellow = {r = 1, g = 1, b = 0},
pink = {r = 1, g = 0, b = 1},
purple = {r = 0.6, g = 0.1, b = 0.6},
brown = {r = 0.6, g = 0.4, b = 0.1},
}
anticolors = {
white = colors.black,
black = colors.white,
darkgrey = colors.white,
grey = colors.black,
lightgrey = colors.black,
red = colors.white,
darkred = colors.white,
lightred = colors.black,
green = colors.black,
darkgreen = colors.white,
lightgreen = colors.black,
blue = colors.white,
darkblue = colors.white,
lightblue = colors.black,
orange = colors.black,
yellow = colors.black,
pink = colors.white,
purple = colors.white,
brown = colors.white,
}
lightcolors = {
white = colors.lightgrey,
grey = colors.darkgrey,
lightgrey = colors.grey,
red = colors.lightred,
green = colors.lightgreen,
blue = colors.lightblue,
yellow = colors.orange,
pink = colors.purple,
}
local author_name1 = "BinbinHfr"
local author_name2 = "binbin"
--------------------------------------------------------------------------------------
function read_version(v)
local v1, v2, v3 = string.match(v, "(%d+).(%d+).(%d+)")
debug_print( "version cut = ", v1,v2,v3)
end
--------------------------------------------------------------------------------------
function compare_versions(v1,v2)
local v1a, v1b, v1c = string.match(v1, "(%d+).(%d+).(%d+)")
local v2a, v2b, v2c = string.match(v2, "(%d+).(%d+).(%d+)")
v1a = tonumber(v1a)
v1b = tonumber(v1b)
v1c = tonumber(v1c)
v2a = tonumber(v2a)
v2b = tonumber(v2b)
v2c = tonumber(v2c)
if v1a > v2a then
return 1
elseif v1a < v2a then
return -1
elseif v1b > v2b then
return 1
elseif v1b < v2b then
return -1
elseif v1c > v2c then
return 1
elseif v1c < v2c then
return -1
else
return 0
end
end
--------------------------------------------------------------------------------------
function older_version(v1,v2)
local v1a, v1b, v1c = string.match(v1, "(%d+).(%d+).(%d+)")
local v2a, v2b, v2c = string.match(v2, "(%d+).(%d+).(%d+)")
local ret
v1a = tonumber(v1a)
v1b = tonumber(v1b)
v1c = tonumber(v1c)
v2a = tonumber(v2a)
v2b = tonumber(v2b)
v2c = tonumber(v2c)
if v1a > v2a then
ret = false
elseif v1a < v2a then
ret = true
elseif v1b > v2b then
ret = false
elseif v1b < v2b then
ret = true
elseif v1c < v2c then
ret = true
else
ret = false
end
debug_print( "older_version ", v1, "<", v2, "=", ret )
return(ret)
end
--------------------------------------------------------------------------------------
function debug_active(...)
-- can be called everywhere, except in on_load where game is not existing
local s = ""
for i, v in ipairs({...}) do
s = s .. tostring(v)
end
if s == "RAZ" or debug_do_raz == true then
game.remove_path(debug_file)
debug_do_raz = false
elseif s == "CLEAR" then
for _, player in pairs(game.players) do
if player.connected then player.clear_console() end
end
end
s = debug_mod_name .. "(" .. game.tick .. "): " .. s
game.write_file( debug_file, s .. "\n", true )
for _, player in pairs(game.players) do
if player.connected then player.print(s) end
end
end
if debug_status == 1 then debug_print = debug_active else debug_print = function() end end
--------------------------------------------------------------------------------------
function message_all(s)
for _, player in pairs(game.players) do
if player.connected then
player.print(s)
end
end
end
--------------------------------------------------------------------------------------
function message_force(force, s)
for _, player in pairs(force.players) do
if player.connected then
player.print(s)
end
end
end
--------------------------------------------------------------------------------------
function square_area( origin, radius )
return {
{x=origin.x - radius, y=origin.y - radius},
{x=origin.x + radius, y=origin.y + radius}
}
end
--------------------------------------------------------------------------------------
function distance( pos1, pos2 )
local dx = pos2.x - pos1.x
local dy = pos2.y - pos1.y
return( math.sqrt(dx*dx+dy*dy) )
end
--------------------------------------------------------------------------------------
function distance_square( pos1, pos2 )
return( math.max(math.abs(pos2.x - pos1.x),math.abs(pos2.y - pos1.y)) )
end
--------------------------------------------------------------------------------------
function pos_offset( pos, offset )
return { x=pos.x + offset.x, y=pos.y + offset.y }
end
--------------------------------------------------------------------------------------
function surface_area(surf)
local x1, y1, x2, y2 = 0,0,0,0
for chunk in surf.get_chunks() do
if chunk.x < x1 then
x1 = chunk.x
elseif chunk.x > x2 then
x2 = chunk.x
end
if chunk.y < y1 then
y1 = chunk.y
elseif chunk.y > y2 then
y2 = chunk.y
end
end
return( {{x1*32-8,y1*32-8},{x2*32+40,y2*32+40}} )
end
--------------------------------------------------------------------------------------
function iif( cond, val1, val2 )
if cond then
return val1
else
return val2
end
end
--------------------------------------------------------------------------------------
function add_list(list, obj)
-- to avoid duplicates...
for i, obj2 in pairs(list) do
if obj2 == obj then
return(false)
end
end
table.insert(list,obj)
return(true)
end
--------------------------------------------------------------------------------------
function del_list(list, obj)
for i, obj2 in pairs(list) do
if obj2 == obj then
table.remove( list, i )
return(true)
end
end
return(false)
end
--------------------------------------------------------------------------------------
function in_list(list, obj)
for k, obj2 in pairs(list) do
if obj2 == obj then
return(k)
end
end
return(nil)
end
--------------------------------------------------------------------------------------
function size_list(list)
local n = 0
for i in pairs(list) do
n = n + 1
end
return(n)
end
--------------------------------------------------------------------------------------
function concat_lists(list1, list2)
-- add list2 into list1 , do not avoid duplicates...
for i, obj in pairs(list2) do
table.insert(list1,obj)
end
end
------------------------------------------------------------------------------------
function is_dev(player)
return( player.name == author_name1 or player.name == author_name2 )
end
--------------------------------------------------------------------------------------
function dupli_proto( type, name1, name2 )
if data.raw[type][name1] then
local proto = table.deepcopy(data.raw[type][name1])
proto.name = name2
if proto.minable and proto.minable.result then proto.minable.result = name2 end
if proto.place_result then proto.place_result = name2 end
if proto.take_result then proto.take_result = name2 end
if proto.result then proto.result = name2 end
return(proto)
else
error("prototype unknown " .. name1 )
return(nil)
end
end
--------------------------------------------------------------------------------------
function debug_guis( guip, indent )
if guip == nil then return end
debug_print( indent .. string.rep("....",indent) .. " " .. guip.name )
indent = indent+1
for k, gui in pairs(guip.children_names) do
debug_guis( guip[gui], indent )
end
end
--------------------------------------------------------------------------------------
function extract_monolith(filename, x, y, w, h)
return {
type = "monolith",
top_monolith_border = 0,
right_monolith_border = 0,
bottom_monolith_border = 0,
left_monolith_border = 0,
monolith_image = {
filename = filename,
priority = "extra-high-no-scale",
width = w,
height = h,
x = x,
y = y,
},
}
end
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment