166 lines
6.3 KiB
Lua
166 lines
6.3 KiB
Lua
--------------------------------------wind----------------
|
|
--- https://www.geogebra.org/m/GDgua6HK
|
|
--- y = sin(3x/2)/3+sin(2x/2+2)/3+sin(2x/2-3)/2-sin(4x/2+1)/3-sin(5x/2+3)/4-sin(6x/2+4)/2+sin(x/3)+2.5
|
|
--- y = 20*(sin(1.5*x)/3+sin(x+2)/3+sin(x-3)/2-sin(2*x+1)/3-sin(2.5*x+3)/4-sin(3*x+4)/2+sin(x/3)+1.5)
|
|
--- y = 14*((sin(x/2))+(sin(x/3))+(sin(x/5))+(sin(x/7))+(sin(x/11))+(sin(x/13))+(sin(x/17))+2)
|
|
|
|
|
|
require "util"
|
|
|
|
script.on_event(defines.events.on_tick, function(event)
|
|
|
|
if global.windx == nil then
|
|
global.windx = 0
|
|
end
|
|
|
|
if global.windz == nil then
|
|
global.windz = 2
|
|
end
|
|
|
|
if global.windt == nil then
|
|
global.windt = 0
|
|
end
|
|
|
|
if global.wind_turbine == nil then
|
|
global.wind_turbine = {}
|
|
end
|
|
|
|
if (game.tick % 6100000) == 0 then
|
|
if global.windx >= 180000000 then
|
|
global.windx = 0
|
|
--game.print("reset 1000s")
|
|
end
|
|
end
|
|
|
|
if (game.tick % 61) == 0 then
|
|
global.windx = global.windx + math.random()/2
|
|
|
|
local x = global.windx
|
|
local y = (math.sin(x/2)) + (math.sin(x/3)) + (math.sin(x/5)) + (math.sin(x/7)) + (math.sin(x/11)) + (math.sin(x/13)) + (math.sin(x/17)) + (math.sin(x/19)) + (math.sin(x/23)) + (math.sin(x/29)) + 1.5
|
|
--- local y = (math.sin(3*x/2)/3)+(math.sin(2*x/2+2)/3)+(math.sin(3*x/2-3)/2)-(math.sin(4*x/2+1)/3)-(math.sin(5*x/2+3)/4)-(math.sin(6*x/2+4)/2)+math.sin(x/3)+5
|
|
--- local y = (math.sin(3*x)/3)+(math.sin(2*x+2)/3)+(math.sin(3*x-3)/2)-(math.sin(4*x+1)/3)-(math.sin(5*x+3)/4)-(math.sin(6*x+4)/2)+math.sin(x/3)+5
|
|
|
|
global.windt = 0.99*global.windt + math.random() - 0.5
|
|
global.windz = 0.9*global.windz + 0.1*global.windt
|
|
local z = 0.8*global.windz+3
|
|
--- game.print(z)
|
|
|
|
|
|
|
|
|
|
|
|
--- global.wind_next = math.random(0,100)/1000
|
|
--- end
|
|
---
|
|
--- local t = (game.tick % 3600) / 3600.0
|
|
---
|
|
--- surface.wind_speed = global.wind_prev + (global.wind_next-global.wind_prev) * t
|
|
|
|
|
|
for key,wind_turbine in pairs(global.wind_turbine) do
|
|
if wind_turbine.valid then
|
|
wind_turbine.fluidbox [1]= {name="steam", amount=2000, temperature=14*(y+z)}
|
|
else
|
|
table.remove(global.wind_turbine, key)
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
-------------------------------------------------------------------------------------------------------------------
|
|
------------------------------------------hiden poles---------------------------------------------
|
|
|
|
local function on_passive_wood( entity )
|
|
local twt_eletric_pole = entity.surface.create_entity{name="twt-electric-pole", position=entity.position, force=entity.force}
|
|
twt_eletric_pole.minable = false
|
|
twt_eletric_pole.destructible = false
|
|
end
|
|
|
|
local function on_passive_steel( entity )
|
|
local twt_eletric_pole2 = entity.surface.create_entity{name="twt-electric-pole2", position=entity.position, force=entity.force}
|
|
twt_eletric_pole2.minable = false
|
|
twt_eletric_pole2.destructible = false
|
|
end
|
|
|
|
local function on_passive_huge( entity )
|
|
local twt_eletric_pole3 = entity.surface.create_entity{name="twt-electric-pole3", position=entity.position, force=entity.force}
|
|
twt_eletric_pole3.minable = false
|
|
twt_eletric_pole3.destructible = false
|
|
end
|
|
-------------------------------------------------------------------------------------------------------------------
|
|
function on_creation(event)
|
|
if event.created_entity.name == "texugo-wind-turbine" or
|
|
event.created_entity.name == "texugo-wind-turbine2" or
|
|
event.created_entity.name == "texugo-wind-turbine3" then
|
|
local wind_turbine = event.created_entity
|
|
table.insert(global.wind_turbine, wind_turbine)
|
|
end
|
|
if event.created_entity.name == "texugo-wind-turbine" then on_passive_wood( event.created_entity ) end
|
|
if event.created_entity.name == "texugo-wind-turbine2" then on_passive_steel( event.created_entity ) end
|
|
if event.created_entity.name == "texugo-wind-turbine3" then on_passive_huge( event.created_entity ) end
|
|
end
|
|
|
|
function on_remove(event)
|
|
--------------------------------------------------------------------------wind1
|
|
if event.entity.name == "texugo-wind-turbine" then
|
|
center = event.entity.position
|
|
for _, entity in pairs(event.entity.surface.find_entities_filtered{
|
|
area = {{center.x-0.5, center.y-0.5}, {center.x+0.5, center.y+0.5}},
|
|
name = "twt-electric-pole"}) do
|
|
entity.destroy()
|
|
end
|
|
--end
|
|
elseif event.entity.name == "twt-electric-pole" then
|
|
center = event.entity.position
|
|
for _, entity in pairs(event.entity.surface.find_entities_filtered{
|
|
area = {{center.x-0.5, center.y-0.5}, {center.x+0.5, center.y+0.5}},
|
|
name = "texugo-wind-turbine"}) do
|
|
entity.damage(6666, "neutral")
|
|
end
|
|
--end
|
|
--------------------------------------------------------------------------wind2
|
|
|
|
elseif event.entity.name == "texugo-wind-turbine2" then
|
|
center = event.entity.position
|
|
for _, entity in pairs(event.entity.surface.find_entities_filtered{
|
|
area = {{center.x-0.5, center.y-0.5}, {center.x+0.5, center.y+0.5}},
|
|
name = "twt-electric-pole2"}) do
|
|
entity.destroy()
|
|
end
|
|
--end
|
|
elseif event.entity.name == "twt-electric-pole2" then
|
|
center = event.entity.position
|
|
for _, entity in pairs(event.entity.surface.find_entities_filtered{
|
|
area = {{center.x-0.5, center.y-0.5}, {center.x+0.5, center.y+0.5}},
|
|
name = "texugo-wind-turbine2"}) do
|
|
entity.damage(6666, "neutral")
|
|
end
|
|
--end
|
|
--------------------------------------------------------------------------wind3
|
|
elseif event.entity.name == "texugo-wind-turbine3" then
|
|
center = event.entity.position
|
|
for _, entity in pairs(event.entity.surface.find_entities_filtered{
|
|
area = {{center.x-0.5, center.y-0.5}, {center.x+0.5, center.y+0.5}},
|
|
name = "twt-electric-pole3"}) do
|
|
entity.destroy()
|
|
end
|
|
--end
|
|
elseif event.entity.name == "twt-electric-pole3" then
|
|
center = event.entity.position
|
|
for _, entity in pairs(event.entity.surface.find_entities_filtered{
|
|
area = {{center.x-0.5, center.y-0.5}, {center.x+0.5, center.y+0.5}},
|
|
name = "texugo-wind-turbine3"}) do
|
|
entity.damage(6666, "neutral")
|
|
end
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
script.on_event(defines.events.on_built_entity, on_creation)
|
|
script.on_event(defines.events.on_robot_built_entity, on_creation)
|
|
script.on_event(defines.events.on_entity_died, on_remove)
|
|
script.on_event(defines.events.on_robot_mined_entity, on_remove)
|
|
script.on_event(defines.events.on_player_mined_entity, on_remove) |