diff --git a/Addons/Admin/auto-chat.lua b/Addons/Admin/auto-chat.lua index 92e4ca5e..23da5903 100644 --- a/Addons/Admin/auto-chat.lua +++ b/Addons/Admin/auto-chat.lua @@ -41,7 +41,12 @@ local commands = { ['magic']={'chat-bot.magic'}, ['aids']={'chat-bot.aids'}, ['riot']={'chat-bot.riot'}, - ['lenny']={'chat-bot.lenny'} + ['lenny']={'chat-bot.lenny'}, + ['maketea']=function(player) Server.new_thread{ + timeout=math.floor(180*(math.random()+0.5)),data=player.name + }:on_event('timeout',function(self) + if self.data then game.print{'chat-bot.message',{'chat-bot.make-tea-2',self.data}} end + end):open() return {'chat-bot.make-tea-1'} end } Event.register(defines.events.on_console_chat,function(event) diff --git a/Addons/Admin/player-info.lua b/Addons/Admin/player-info.lua index d9d03245..465a8a21 100644 --- a/Addons/Admin/player-info.lua +++ b/Addons/Admin/player-info.lua @@ -33,7 +33,7 @@ function get_player_info(player,frame,add_cam) frame.add{type='label',caption={'player-info.group',_player.group}} frame.add{type='label',caption={'player-info.rank',_player.rank}} if add_cam then - Gui.cam_link{entity=player.character,frame=frame,width=200,height=75,zoom=0.5,respawn_open=true} + Gui.cam_link{entity=player.character,frame=frame,width=200,height=150,zoom=0.5,respawn_open=true} end end return _player diff --git a/Addons/Commands/admin.lua b/Addons/Commands/admin.lua index 8cbeac66..0bd05d6e 100644 --- a/Addons/Commands/admin.lua +++ b/Addons/Commands/admin.lua @@ -13,7 +13,8 @@ commands.add_command('report', 'Reports a player.', {'player','reason',true}, fu local player = Game.get_player(args.player) local reason = args.reason if not player then player_return({'commands.invalid-player',args.player}) return commands.error end - if Ranking.get_rank(player):allowed('no-report') or Admin.is_banned(player) then player_return({'reports.cant-report',args.player}) return commands.error end + if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end + if Ranking.get_rank(player):allowed('no-report') then player_return({'reports.cant-report',args.player}) return commands.error end for _,report in pairs(global.addons.reports.reports) do if report[1] == _player.name then player_return({'reports.cant-report',args.player}) return commands.error end end for _,report in pairs(global.addons.reports.varified) do if report[1] == _player.name then player_return({'reports.cant-report',args.player}) return commands.error end end Admin.report(player,event.player_index,reason) @@ -23,7 +24,8 @@ commands.add_command('warn', 'Gives a player a warnings', {'player','reason',tru local player = Game.get_player(args.player) local reason = args.reason if not player then player_return({'commands.invalid-player',args.player}) return commands.error end - if Ranking.get_rank(player):allowed('no-report') or Admin.is_banned(player) then player_return({'reports.cant-report',args.player}) return commands.error end + if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end + if Ranking.get_rank(player):allowed('no-report') then player_return({'reports.cant-report',args.player}) return commands.error end Admin.give_warning(player,event.player_index,reason) end) @@ -31,13 +33,15 @@ commands.add_command('jail', 'Jails a player', {'player','reason',true}, functio local player = Game.get_player(args.player) local reason = args.reason if not player then player_return({'commands.invalid-player',args.player}) return commands.error end - if Ranking.get_rank(player):allowed('no-report') or Admin.is_banned(player) then player_return({'reports.cant-report',args.player}) return commands.error end + if Ranking.get_rank(player):allowed('no-report') then player_return({'reports.cant-report',args.player}) return commands.error end + if Admin.is_banned(player) then player_return({'commands.cant-report-ban',args.player}) return commands.error end Admin.jail(player,event.player_index,reason) end) commands.add_command('unjail', 'Returns the players old rank', {'player',true}, function(event,args) local player = Game.get_player(args.player) if not player then player_return({'commands.invalid-player',args.player}) return commands.error end + if Admin.is_banned(player) then player_return({'commands.cant-report-ban',args.player}) return commands.error end Ranking.revert(player,event.player_index) end) @@ -45,25 +49,28 @@ commands.add_command('temp-ban', 'Temporarily ban a player.', {'player','reason' local player = Game.get_player(args.player) local reason = args.reason if not player then player_return({'commands.invalid-player',args.player}) return commands.error end - if Admin.is_banned(player) then player_return({'reports.cant-report',args.player}) return commands.error end + if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end Admin.temp_ban(player,event.player_index,reason) end) commands.add_command('clear-inv', 'Clears the player\'s invetory', {'player'}, function(event,args) local player = Game.get_player(args.player) if not player then player_return({'commands.invalid-player',args.player}) return commands.error end + if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end Admin.move_inventory(player) end) -commands.add_command('clear-warings', 'Clears the warnings on a player.', {'player'}, function(event,args) +commands.add_command('clear-warnings', 'Clears the warnings on a player.', {'player'}, function(event,args) local player = Game.get_player(args.player) if not player then player_return({'commands.invalid-player',args.player}) return commands.error end + if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end Admin.clear_warings(player,event.player_index) end) commands.add_command('clear-reports', 'Clears the reports on a player.', {'player'}, function(event,args) local player = Game.get_player(args.player) if not player then player_return({'commands.invalid-player',args.player}) return commands.error end + if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end Admin.clear_reports(player,event.player_index) end) diff --git a/Addons/Commands/bonus.lua b/Addons/Commands/bonus.lua index 5e4e9b80..d38af150 100644 --- a/Addons/Commands/bonus.lua +++ b/Addons/Commands/bonus.lua @@ -54,6 +54,13 @@ end) Event.register(defines.events.on_pre_player_died,function(event) local player = Game.get_player(event) if Ranking.get_rank(player):allowed('bonus-respawn') then - player.ticks_to_respawn = 60 + player.ticks_to_respawn = 120 + -- manually dispatch death event because it is not fired when ticks_to_respawn is set pre death + Event.dispatch{ + name=defines.events.on_player_died, + tick=event.tick, + player_index=event.player_index, + cause = event.cause + } end -end) \ No newline at end of file +end) diff --git a/Addons/Commands/home.lua b/Addons/Commands/home.lua index c65df76d..cc08b439 100644 --- a/Addons/Commands/home.lua +++ b/Addons/Commands/home.lua @@ -14,24 +14,24 @@ local function _homes(reset) return global.addons.homes end -commands.add_command('set-home', 'Set Your Home Possition', {}, function(event,args) +commands.add_command('set-home', 'Set your home position', {}, function(event,args) local player = Game.get_player(event) if not _homes()[player.index] then _homes()[player.index] = {player.force.get_spawn_position(player.surface),player.force.get_spawn_position(player.surface)} end _homes()[player.index][1] = {math.floor(player.position.x),math.floor(player.position.y)} player_return('Home set at: ('..math.floor(player.position.x)..','..math.floor(player.position.y)..')') end) -commands.add_command('home', 'Goto you home possition', {}, function(event,args) +commands.add_command('home', 'Go to you home position', {}, function(event,args) local player = Game.get_player(event) if not _homes()[player.index] then _homes()[player.index] = {player.force.get_spawn_position(player.surface),player.force.get_spawn_position(player.surface)} end _homes()[player.index][2] = {math.floor(player.position.x),math.floor(player.position.y)} player.teleport(player.surface.find_non_colliding_position('player',_homes()[player.index][1],32,1),player.surface) end) -commands.add_command('return', 'Goto where you were before using /home', {}, function(event,args) +commands.add_command('return', 'Go to where you were before using /home', {}, function(event,args) local player = Game.get_player(event) if not _homes()[player.index] then _homes()[player.index] = {player.force.get_spawn_position(player.surface),player.force.get_spawn_position(player.surface)} end local _temp = {math.floor(player.position.x),math.floor(player.position.y)} player.teleport(player.surface.find_non_colliding_position('player',_homes()[player.index][2],32,1),player.surface) _homes()[player.index][2] = _temp -end) \ No newline at end of file +end) diff --git a/Addons/Commands/repair.lua b/Addons/Commands/repair.lua index f862f4ce..654af5f9 100644 --- a/Addons/Commands/repair.lua +++ b/Addons/Commands/repair.lua @@ -28,18 +28,20 @@ commands.add_command('repair', 'Repairs all destoryed and damaged entites in an local max_range = rank.power-highest_admin_power > 0 and const/(rank.power-highest_admin_power) or nil local center = player and player.position or {x=0,y=0} if not range or max_range and range > max_range then player_return({'commands.invalid-range',0,math.floor(max_range)}) return commands.error end - for x = -range-2, range+2 do - for y = -range-2, range+2 do - if x^2+y^2 < range^2 then - for key, entity in pairs(player.surface.find_entities_filtered({area={{x+center.x,y+center.y},{x+center.x+1,y+center.y+1}},type='entity-ghost'})) do - if disallow[entity.ghost_prototype.name] then - player_return('You have repaired: '..entity.name..' this item is not allowed.',defines.text_color.crit,player) - Admin.temp_ban(player,'','Attempt To Repair A Banned Item') - entity.destroy() - else entity.revive() end - end - for key, entity in pairs(player.surface.find_entities({{x+center.x,y+center.y},{x+center.x+1,y+center.y+1}})) do if entity.health then entity.health = 10000 end end - end + local area = {{center.x-range,center.y-range},{center.x+range,center.y+range}} + local max_time_to_live = 2^32 - 1 + local sq_range = range^2 + for key, entity in pairs(player.surface.find_entities_filtered({area=area,type='entity-ghost'})) do + if entity.force == player.force and (entity.position.x-center.x)^2+(entity.position.y-center.y)^2 < sq_range then + if disallow[entity.ghost_prototype.name] then + player_return('You have repaired: '..entity.name..' this item is not allowed.',defines.text_color.crit,player) + Admin.temp_ban(player,'','Attempt To Repair A Banned Item') + entity.destroy() + elseif entity.time_to_live ~= max_time_to_live then + entity.revive() end end end + for key, entity in pairs(player.surface.find_entities(area)) do + if entity.force == player.force and (entity.position.x-center.x)^2+(entity.position.y-center.y)^2 < sq_range and entity.health then entity.health = 10000 end + end end) diff --git a/Addons/Guis/admin-gui.lua b/Addons/Guis/admin-gui.lua index 4c0cbf79..b2404db5 100644 --- a/Addons/Guis/admin-gui.lua +++ b/Addons/Guis/admin-gui.lua @@ -133,7 +133,7 @@ Admin.center = Gui.center.add{ type='flow', direction='vertical' } - player_info_flow.style.height = 200 + player_info_flow.style.height = 300 player_info_flow.style.width = 200 local label = dropdowns.add{ type='label', diff --git a/Addons/Guis/polls.lua b/Addons/Guis/polls.lua index 2b3f9eb4..290746c4 100644 --- a/Addons/Guis/polls.lua +++ b/Addons/Guis/polls.lua @@ -132,19 +132,33 @@ local next = Gui.inputs.add{ draw_poll(parent.parent.poll_area) end) --- this function from redmew, would take too much to make a better one +local poll_question_input = Gui.inputs.add_text('poll-question-input',true,'Question',function(player,text,element) + local options = element.parent.options + if not options.question then options.add{type='label',name='question',caption=''} + else options.question.caption = text end +end) + +local _self_referace_poll_option_input = nil +local poll_option_input = Gui.inputs.add_text('poll-option-input',true,'Enter Option',function(player,text,element) + local options = element.parent.parent.parent.options + if not options[element.parent.name] then options.add{type='label',name=element.parent.name,caption=text} + else options[element.parent.name].caption = text end + if options.last.caption == element.parent.name then + options.last.caption = tonumber(options.last.caption)+1 + _self_referace_poll_option_input:draw(element.parent.parent.add{type='flow',name=options.last.caption}).style.minimal_width = 200 + end +end) +_self_referace_poll_option_input = poll_option_input + local function poll_assembler(frame) - frame.clear() - local frame_table = frame.add { type = 'table', name = 'table_poll_assembler', column_count = 2 } - frame_table.add { type = 'label', caption = 'Question:' } - frame_table.add { type = 'textfield', name = 'textfield_question', text = '' } - frame_table.add { type = 'label', caption = 'Option #1:' } - frame_table.add { type = 'textfield', name = 'textfield_answer_1', text = '' } - frame_table.add { type = 'label', caption = 'Option #2:' } - frame_table.add { type = 'textfield', name = 'textfield_answer_2', text = '' } - frame_table.add { type = 'label', caption = 'Option #3:' } - frame_table.add { type = 'textfield', name = 'textfield_answer_3', text = '' } - frame_table.add { type = 'label', caption = '' } + frame.clear() + local options = frame.add{type='flow',name='options'} + options.style.visible = false + options.add{type='label',name='last',caption='2'} + poll_question_input:draw(frame).style.minimal_width = 200 + local flow = frame.add{type='flow',direction='vertical'} + poll_option_input:draw(flow.add{type='flow',name='1'}).style.minimal_width = 200 + poll_option_input:draw(flow.add{type='flow',name='2'}).style.minimal_width = 200 end local create_poll = Gui.inputs.add{ @@ -154,17 +168,24 @@ local create_poll = Gui.inputs.add{ }:on_event('click',function(event) local parent = event.element.parent if event.element.sprite == 'utility/enter' then - local inputs = parent.parent.poll_area.table_poll_assembler + local inputs = parent.parent.poll_area.options if not inputs then event.element.sprite = 'utility/add' draw_poll(parent.parent.poll_area) return end - local uuid = _poll_data(inputs.textfield_question.text,{ - inputs.textfield_answer_1.text, - inputs.textfield_answer_2.text, - inputs.textfield_answer_3.text - }) + local options = {} + for _,option in pairs(inputs.children) do + if option.name ~= 'question' and option.name ~= 'last' then + if option.caption ~= 'Enter Option' and option.caption ~= '' then table.insert(options,option.caption) end + end + end + if not inputs.question or #options == 0 then + event.element.sprite = 'utility/add' + draw_poll(parent.parent.poll_area) + return + end + local uuid = _poll_data(inputs.question.caption,options) Gui.popup.open('polls',{uuid=uuid}) event.element.sprite = 'utility/add' draw_poll(parent.parent.poll_area) diff --git a/Addons/Guis/rockets.lua b/Addons/Guis/rockets.lua index 5ca8fb1f..10f716d1 100644 --- a/Addons/Guis/rockets.lua +++ b/Addons/Guis/rockets.lua @@ -83,4 +83,22 @@ Gui.left.add{ end } -Event.register(defines.events.on_rocket_launched,function(event) Gui.left.update('rockets') end) \ No newline at end of file +Event.register(defines.events.on_rocket_launched,function(event) Gui.left.update('rockets') end) +Sync.add_update('rockets',function() + local _return = {} + local data = _global() + local satellites = game.forces.player.get_item_launched('satellite') + local time = {'rockets.nan'} + if satellites == 1 then time = tick_to_display_format(game.tick) + elseif satellites > 1 then time = tick_to_display_format((game.tick-data.first)/satellites) end + _return.total = satellites + _return.first = Sync.tick_format(data.first) + _return.last = Sync.tick_format(data.last-data._last) + _return.time = Sync.tick_format(time) + _return.fastest = Sync.tick_format(data.fastest) + _return.milestones = {} + for milestone,time in pairs(data.milestones) do + _return.milestones[milestone] = Sync.tick_format(time) + end + return _return +end) \ No newline at end of file diff --git a/Addons/Guis/science.lua b/Addons/Guis/science.lua index 1bca2004..1cdf7887 100644 --- a/Addons/Guis/science.lua +++ b/Addons/Guis/science.lua @@ -83,4 +83,20 @@ Gui.left.add{ end } -Event.register(defines.events.on_research_finished,function(event) Gui.left.update('science') end) \ No newline at end of file +Event.register(defines.events.on_research_finished,function(event) Gui.left.update('science') end) +Sync.add_update('science',function() + local _return = {} + local _data = _global() + for force_name,data in pairs(_data) do + if force_name ~= '_base' then + _return[force_name] = {totals={},times={}} + for i,name in pairs(science_packs) do + local made = data.made[i] + _return[force_name].totals[name] = made + local _made = string.format('%.2f',(made-data._made[i])/((data.update-data._update)/(3600*game.speed))) + _return[force_name].times[name] = _made + end + end + end + return _return +end) \ No newline at end of file diff --git a/Addons/Guis/tasklist.lua b/Addons/Guis/tasklist.lua index 91860415..f4cb2262 100644 --- a/Addons/Guis/tasklist.lua +++ b/Addons/Guis/tasklist.lua @@ -108,6 +108,7 @@ local function _tasks(player) return _global().tasks elseif not data._edit and _edit then data._edit = true + for key,_ in pairs(data._tasks) do if not data._editing[key] then data._editing[key] = false end end return data._tasks elseif _edit then return data._tasks else return _global().tasks diff --git a/Addons/Guis/warp-system.lua b/Addons/Guis/warp-system.lua index bf18db23..b05a416f 100644 --- a/Addons/Guis/warp-system.lua +++ b/Addons/Guis/warp-system.lua @@ -85,7 +85,10 @@ local function make_warp_point(position,surface,force,name) icon={type='item',name=warp_item} }) _warps().warps[name] = {tag=tag,surface=surface,position=tag.position,old_tile=old_tile} - _warps().warps = table.keysort(_warps().warps) + local _temp = {Spawn=_warps().warps.Spawn} + _warps().warps.Spawn = nil + for name,data in pairs(table.keysort(_warps().warps)) do _temp[name] = data end + _warps().warps = _temp Gui.left.update('warp-list') end @@ -94,6 +97,8 @@ commands.add_command('make-warp', 'Make a warp point at your location', {'name', local position = game.player.position local name = args.name if _warps().warps[name] then player_return({'warp-system.name-used'},defines.text_color.med) return commands.error end + if position.x^2 + position.y^2 < 100 then player_return({'warp-system.too-close'},defines.text_color.med) return commands.error end + -- to do add a test for all warps make_warp_point(position,game.player.surface,game.player.force,name) end) diff --git a/Addons/load.lua b/Addons/load.lua index 20f935bb..206379ba 100644 --- a/Addons/load.lua +++ b/Addons/load.lua @@ -38,7 +38,7 @@ require('Guis/rockets') require('Guis/player-list') require('Guis/tasklist') require('Guis/warp-system') ---require('Guis/polls') -- too many desyncs +require('Guis/polls') -- too many desyncs require('Guis/announcements') require('Guis/rank-changer') require('Guis/admin-gui') -- used with Admin/admin, requires Admin/admin diff --git a/StandAlone/load.lua b/StandAlone/load.lua index 84bcca6b..16841b94 100644 --- a/StandAlone/load.lua +++ b/StandAlone/load.lua @@ -12,5 +12,5 @@ require('colours') require('health') require('spawn') require('starting-items') ---require('paths') -- takes up too much file size +require('paths') require('body-marker') \ No newline at end of file diff --git a/StandAlone/paths.lua b/StandAlone/paths.lua index 0929c976..42572fe9 100644 --- a/StandAlone/paths.lua +++ b/StandAlone/paths.lua @@ -1,110 +1,100 @@ -- made by cooldude -- idea from Mylon - Dirt Path -local clean_time = 18000 -- time in ticks +local adjacency_boost = 1.3 -- makes paths more lickly to be next to each other +local placed_paths = { + ['refined-concrete']=true, + ['refined-hazard-concrete-right']=true, + ['refined-hazard-concrete-left']=true, + ['concrete']=true, + ['hazard-concrete-right']=true, + ['hazard-concrete-left']=true, + ['stone-path']=true +} local paths = { -- ['tile name'] = {health,convert to} - -- health is in hundrads of steps - ['refined-concrete']={60,'concrete'}, - ['refined-hazard-concrete-right']={60,'hazard-concrete-right'}, - ['refined-hazard-concrete-left']={60,'hazard-concrete-left'}, - ['concrete']={40,'stone-path'}, - ['hazard-concrete-right']={40,'stone-path'}, - ['hazard-concrete-left']={40,'stone-path'}, - ['stone-path']={20,'world-gen'}, -- world-gen just makes it pick the last tile not placed by a player - ['sand-1']={5,'sand-2'}, - ['sand-2']={10,'sand-3'}, - ['sand-3']={5,'red-desert-3'}, - ['red-desert-3']={5,'red-desert-2'}, - ['red-desert-2']={10,'dirt-1'}, - ['grass-2']={5,'grass-1'}, - ['grass-1']={5,'grass-3'}, - ['grass-3']={10,'red-desert-0'}, - ['red-desert-0']={5,'red-desert-1'}, - ['red-desert-1']={10,'dirt-1'}, - ['dirt-1']={5,'dirt-2'}, - ['dirt-2']={5,'dirt-3'}, - ['dirt-3']={10,'dirt-4'}, - ['dirt-4']={5,'dirt-5'}, - ['dirt-5']={5,'dirt-6'}, - ['grass-4']={10,'dirt-4'} + -- health is the average number of steps in hundards before it changes + ['refined-concrete']={30,'concrete'}, + ['refined-hazard-concrete-right']={30,'hazard-concrete-right'}, + ['refined-hazard-concrete-left']={30,'hazard-concrete-left'}, + ['concrete']={25,'stone-path'}, + ['hazard-concrete-right']={25,'stone-path'}, + ['hazard-concrete-left']={25,'stone-path'}, + ['stone-path']={10,'world-gen'}, -- world-gen just makes it pick the last tile not placed by a player + ['sand-1']={1,'sand-2'}, + ['sand-2']={5,'sand-3'}, + ['sand-3']={1,'red-desert-3'}, + ['red-desert-3']={1,'red-desert-2'}, + ['red-desert-2']={5,'dirt-1'}, + ['grass-2']={1,'grass-1'}, + ['grass-1']={1,'grass-3'}, + ['grass-3']={5,'red-desert-0'}, + ['red-desert-0']={1,'red-desert-1'}, + ['red-desert-1']={5,'dirt-1'}, + ['dirt-1']={1,'dirt-2'}, + ['dirt-2']={1,'dirt-3'}, + ['dirt-3']={5,'dirt-4'}, + ['dirt-4']={1,'dirt-5'}, + ['dirt-5']={1,'dirt-6'}, + ['grass-4']={5,'dirt-4'} } for tile,value in pairs(paths) do - value[1]=value[1]*100 + value[1]=1/(value[1]*150) -- 150 do make it so about 75% will change by the expected value end local function global_key(surface,pos) - local key = 'S'..surface.name..'X'..math.floor(pos.x)..'Y'..math.floor(pos.y) - if not global.paths then global.paths = {} end - if not global.paths[key] then - local tile = surface.get_tile(pos).name - global.paths[key] = {tile,paths[tile][1]} - end - return global.paths[key] -end - -local function remove_key(surface,pos) - local key = 'S'..surface.name..'X'..math.floor(pos.x)..'Y'..math.floor(pos.y) - if not global.paths then global.paths = {} end - global.paths[key] = nil -end - -local function clean_global() - if not global.paths or not game then return end - for key,tile in pairs(global.paths) do - if tile[3] and tile[3] < game.tick-clean_time then global.paths[key] = nil end - end + return 'S'..surface.name..'X'..math.floor(pos.x)..'Y'..math.floor(pos.y) end local function down_grade(surface,pos) local tile = surface.get_tile(pos).name local new_tile = paths[tile][2] - if new_tile == 'world-gen' then new_tile = global_key(surface,pos)[1] or 'grass-1' end + if new_tile == 'world-gen' then + if global.paths == nil then global.paths = {} end -- nil as you can set to false to disable + new_tile = global.paths[global_key(surface,pos)] or 'grass-1' + end surface.set_tiles{{name=new_tile,position=pos}} - global_key(surface,pos)[2]=paths[new_tile][1] - if not paths[new_tile] then remove_key(surface,pos) return end end Event.register(defines.events.on_player_built_tile, function(event) local surface = game.surfaces[event.surface_index] local old_tiles = event.tiles for _,old_tile in pairs(old_tiles) do - if old_tile.old_tile.name ~= 'refined-concrete' and old_tile.old_tile.name ~= 'refined-hazard-concrete-right' - and old_tile.old_tile.name ~= 'refined-hazard-concrete-left' and old_tile.old_tile.name ~= 'concrete' - and old_tile.old_tile.name ~= 'hazard-concrete-right' and old_tile.old_tile.name ~= 'hazard-concrete-left' - and old_tile.old_tile.name ~= 'stone-path' and old_tile.old_tile.name ~= 'water' and old_tile.old_tile.name ~= 'deep-water' then - global_key(surface,old_tile.position)[1]=old_tile.old_tile.name + if placed_paths[old_tile.old_tile.name] or old_tile.old_tile.name == 'water' or old_tile.old_tile.name == 'deep-water' then else + if global.paths == nil then global.paths = {} end -- nil as you can set to false to disable + global.paths[global_key(surface,old_tile.position)]=old_tile.old_tile.name end - if not paths[surface.get_tile(old_tile.position).name] then remove_key(surface,old_tile.position) return end - global_key(surface,old_tile.position)[2]=paths[surface.get_tile(old_tile.position).name][1] - global_key(surface,old_tile.position)[3] = event.tick - end -end) - -Event.register(defines.events.on_player_mined_tile, function(event) - local surface = game.surfaces[event.surface_index] - local old_tiles = event.tiles - for _,old_tile in pairs(old_tiles) do - if not paths[surface.get_tile(old_tile.position).name] then remove_key(surface,old_tile.position) return end - global_key(surface,old_tile.position)[2]=paths[surface.get_tile(old_tile.position).name][1] - global_key(surface,old_tile.position)[3] = event.tick end end) Event.register(defines.events.on_player_changed_position, function(event) local player = Game.get_player(event) + if player.afk_time > 300 then return end local surface = player.surface local pos = player.position - if not paths[surface.get_tile(pos).name] then remove_key(surface,pos) return end - global_key(surface,pos)[2] = global_key(surface,pos)[2]-1 - if global_key(surface,pos)[2] <= 0 then + local tile_name = surface.get_tile(pos).name + if not paths[tile_name] then return end + local chance = paths[tile_name][1] + for x = -1,1 do for y = -1,1 do + local _pos = {pos.x+x,pos.y+y} + if paths[tile_name][2] == 'world-gen' and not placed_paths[surface.get_tile(_pos).name] + or surface.get_tile(_pos).name == paths[tile_name][2] + then chance=chance*adjacency_boost end + end end + if math.random() < chance then down_grade(surface,pos) end - global_key(surface,pos)[3] = event.tick end) -Event.register(defines.events.on_tick, function(event) - if (game.tick%clean_time) == 0 then - clean_global() - end -end) \ No newline at end of file +--[[ +/interface +local tile_name = tile.name +local chance = paths[tile_name][1] +for x = -1,1 do for y = -1,1 do + local _pos = {position.x+x,position.y+y} + if paths[tile_name][2] == 'world-gen' and not placed_paths[surface.get_tile(_pos).name] + or surface.get_tile(_pos).name == paths[tile_name][2] + then game.print('boost'..tostring(math.random())) chance=chance*adjacency_boost end end +end +return chance +]] \ No newline at end of file diff --git a/StandAlone/starting-items.lua b/StandAlone/starting-items.lua index 12a2e181..5a3db04f 100644 --- a/StandAlone/starting-items.lua +++ b/StandAlone/starting-items.lua @@ -22,6 +22,7 @@ Event.register(defines.events.on_player_created, function(event) local player = game.players[event.player_index] if event.player_index == 1 then player.force.friendly_fire = false + game.map_settings.enemy_expansion.enabled = false player.force.chart(player.surface, {{player.position.x - 400, player.position.y - 400}, {player.position.x + 400, player.position.y + 400}}) end for item,count in pairs(items) do diff --git a/locale/en/base-damage.cfg b/locale/en/base-damage.cfg index 025dc56f..a9e54d1d 100644 --- a/locale/en/base-damage.cfg +++ b/locale/en/base-damage.cfg @@ -1,3 +1,3 @@ [base-damage] used=You hit some of your own buildings. Please be careful next time! -nukes=Nukes are not allowed in your rank. This is a preventive measure against griefers. +nuke=Nukes are not allowed in your rank. This is a preventive measure against griefers. diff --git a/locale/en/chat-bot.cfg b/locale/en/chat-bot.cfg index d90c2687..8626268c 100644 --- a/locale/en/chat-bot.cfg +++ b/locale/en/chat-bot.cfg @@ -13,10 +13,12 @@ read-readme=Make sure you have read the Readme (can be found through the questio not-real-dev=Cooldude2606 is a dev for this server and makes the softmod (look top left) and is not a factorio dev. softmod=A softmod is a custom scenario that runs on this server, example is the player list. blame=Blame __1__ for what just happend! -afk=Your afk? Look at __1__ they have been afk for: __2__ +afk=Your afk? Look at __1__, that player has been afk for: __2__ links=To see links open the readme and click links. magic=Fear the admin magic (ノ゚∀゚)ノ⌒・*:.。. .。.:*・゜゚・*☆ aids=≖ ‿ ≖ Fear the aids of a public server ≖ ‿ ≖ riot=(admins) ┬┴┬┴┤ᵒ_ᵒ)├┬┴┬┴ ‹ ‹\(´ω` )/››‹‹\ (  ´)/››‹‹\ ( ´ω`)/›› (rest of server) loops=NO LOOPS; LOOPS ARE BAD; JUST NO LOOPS!!!!!; IF YOU MAKE A LOOP.... IT WILL NOT END WELL!!!!!!! -lenny=( ͡° ͜ʖ ͡°) \ No newline at end of file +lenny=( ͡° ͜ʖ ͡°) +make-tea-1= ☕ Boiling the water... ☕ +make-tea-2= ☕ __1__ your tea is done! ☕ \ No newline at end of file diff --git a/locale/en/reports.cfg b/locale/en/reports.cfg index 2f400fdd..72678613 100644 --- a/locale/en/reports.cfg +++ b/locale/en/reports.cfg @@ -3,6 +3,7 @@ name=Report Player low-print=__1__ has been reported by a user for: __2__ high-print=__1__ has been reported by __2__ for: __3__ cant-report=This player can not be reported. +cant-report-ban=Invalid player as player is banned; Either unban or use /clear-all warning-given-by=This warning was given by: __1__ player-warning=__1__ was given a warning by __2__ for: __3__ temp-ban=__1__ was temporary banned by __2__ and will remain in jail until next reset diff --git a/locale/en/warp-system.cfg b/locale/en/warp-system.cfg index 20e2f769..b241d7b4 100644 --- a/locale/en/warp-system.cfg +++ b/locale/en/warp-system.cfg @@ -6,4 +6,5 @@ go-to-tooltip=Go To cooldown=You must wait for the cooldown. Time left: __1__ cooldown-zero=Your cooldown has expired, You can use warp points again. name-used=That name is already taken. +too-close=You are too close to an existing warp point to make a new one. not-on-warp=You are not on a warp point right now, you must be on a warp point to go to one. \ No newline at end of file diff --git a/locale/sv-SE/base-damage.cfg b/locale/sv-SE/base-damage.cfg index db96b8a7..154e28c3 100644 --- a/locale/sv-SE/base-damage.cfg +++ b/locale/sv-SE/base-damage.cfg @@ -1,3 +1,3 @@ [base-damage] used=Du träffade några av dina egna byggnader. Var försiktig nästa gång! -nukes=Kärnvapen är inte tillåted för din rang. Det här är en förebyggande åtgärd mot griefers (bråkstakar) +nuke=Kärnvapen är inte tillåted för din rang. Det här är en förebyggande åtgärd mot griefers (bråkstakar) diff --git a/locale/sv-SE/chat-bot.cfg b/locale/sv-SE/chat-bot.cfg index df7e5fe3..3d65d9d2 100644 --- a/locale/sv-SE/chat-bot.cfg +++ b/locale/sv-SE/chat-bot.cfg @@ -13,12 +13,10 @@ custom-commands=Vi använder oss av specialiserade kommandon, som till exempel / read-readme=Se till att du har läst "Readme" (Finn den genom att klicka på frågetecknet högst upp i vänstra hörnet) not-real-dev=Cooldude2606 är dev för den här servern och gör mjukmodden ("the softmod") och är inte en factorio dev. ssoftmod=En mjukmod ("softmod") är ett specialscenario som används på den här servern, exempelvis listan över spelare. - - blame=Skyll på __1__ för vad som just hände! -afk=Är du afk (borta från tangentbordet)? Titta på __1__ De har varit afk för: __2__ +afk=Är du afk (borta från tangentbordet)? Titta på __1__, den spelaren har varit afk under: __2__ links=För att se länkar, öppna readme och klicka "länkar". magic=Frukta admin-magin (ノ゚∀゚)ノ⌒・*:.。. .。.:*・゜゚・*☆ aids=≖ ‿ ≖Fear the aids of a public server ≖ ‿ ≖ riot=(admins) ┬┴┬┴┤ᵒ_ᵒ)├┬┴┬┴ ‹ ‹\(´ω` )/››‹‹\ (  ´)/››‹‹\ ( ´ω`)/›› (rest of server) -loops=NO LOOPS; LOOPS ARE BAD; JUST NO LOOPS!!!!!; IF YOU MAKE A LOOP.... IT WILL NOT END WELL!!!!!!! +loops=INGA LOOPAR; LOOPAR ÄR DÅLIGT; JUST INGA LOOPAR!!!!!; OM DU GJÖR EN LOOP.... DET KOMMER INTE ATT SLUTA VÄL!!!!!!! diff --git a/locale/sv-SE/exp-core.cfg b/locale/sv-SE/exp-core.cfg index 7dacce04..40791114 100644 --- a/locale/sv-SE/exp-core.cfg +++ b/locale/sv-SE/exp-core.cfg @@ -4,7 +4,7 @@ invalid-inputs=Igiltig inmatning, /__1__ __2__ invalid-range=Invalid räckvid, Min: __1__, Max: __2__ invalid-length=ogiltig längd, Max: __1__ invalid-player=Ogiltigt spelarnamn, __1__ , försök använda tab-tangenten för att auto-slutföra namn. -offline-player=Spellare är offline. Kommando misslyckades med att köras. +offline-player=Spelare är offline. Kommando misslyckades med att köras. dead-player=Spelare är död. Kommando misslyckades med att köras. command-ran=Kommandot slutfört @@ -19,4 +19,4 @@ tag-reset=Din tag blev återställd på grund av rangförändrning. [gui] unauthorized=401 -Otillåten: Tillgång nekas på grund av otillräcklig säkerhetsprövning. cant-open=Du kan inte öppna den här panelen just nu, orsak: __1__ -cant-open-no-reason=Du kan inte öppna den här panelen just nu +cant-open-no-reason=Du kan inte öppna den här panelen just nu \ No newline at end of file diff --git a/locale/sv-SE/polls.cfg b/locale/sv-SE/polls.cfg index 39095bbe..4331b9d7 100644 --- a/locale/sv-SE/polls.cfg +++ b/locale/sv-SE/polls.cfg @@ -4,4 +4,4 @@ tooltip=Se gamla undersökningar no-poll=Inga gamla undersökningar end=Röstning slutade nyss: __1__ winner=__1__ hade flest röster. -time-left=Du kommer att få __1__s att välja. +time-left=Du kommer att få __1__s på dig att välja. \ No newline at end of file diff --git a/locale/sv-SE/readme.cfg b/locale/sv-SE/readme.cfg index 22e411d6..30e6530e 100644 --- a/locale/sv-SE/readme.cfg +++ b/locale/sv-SE/readme.cfg @@ -30,30 +30,30 @@ servers-name=Servrar servers-tooltip=Information om våra servrar servers-singleline=Välkommen till ExplosiveGamings gemenskap! S1-S3 har förskjutna återställningar (resets). servers-format=S__1__: __2__ -servers-cap1=Publik +servers-cap1=Offentlig servers-des1=En plats för alla spelare, then här kartan återställs varje 72H, 16:00 UTC. -servers-cap2=Publik +servers-cap2=Offentlig servers-des2=En plats för alla spelare, then här kartan återställs varje 72H, 16:00 UTC. -servers-cap3=Publik +servers-cap3=Offentlig servers-des3=En plats för alla spelare, then här kartan återställs varje 72H, 16:00 UTC. servers-cap4=Modifierad -servers-des4=A Modifierad server för alla spelare. Länk i Discord för medlemmar. +servers-des4=En modifierad server för alla spelare. Länk i Discord för medlemmar. servers-cap5=Evenemang servers-des5=Server för evenemang (alla kan ansluta sig) - Kan kräva lösenord. Anslut dig till Discord för mer info. servers-cap6=Donator servers-des6=För spelare som stöder oss finansiellt. Ändringar kan göras på begäran. rules-name=Regler rules-tooltip=Den fullla listan över ExplosiveGamings regler. -rules-singleline=Även om riktlinjerna täcker de flesta av reglerna, den fulla listan har alltid prioritet och går alltid före riktlinjerna. Det är välbetänkt att vara bekant med alla reglerna för att förhindra varningar och bannlystningar. +rules-singleline=Även om riktlinjerna täcker de flesta av reglerna så har den fulla listan alltid prioritet och går alltid före riktlinjerna. Det är välbetänkt att vara bekant med alla reglerna för att förhindra varningar och bannlystningar. rules-format=__1__) __2__ rules-rule1=Dataintrång / fusk / missbruk av buggar kommer inte att tolereras. -rules-rule2=Buggar och utnyttjingssätt ska rapporteras till team-medlemmar (exkluderande kreativa saker) +rules-rule2=Buggar och utnyttjingssätt ska rapporteras till team-medlemmar (exkludera kreativa saker) rules-rule3=Var inte respektlös mot någon annan spelare i servern. rules-rule4=Att ta alla saker från ett bälte eller logistikbegäran är förbjudet: att dela med sig av resurserna är obligatoriskt. rules-rule5=Spam (genom chat, bottar, obegränsade kistor eller betong) är inte tillåtet. rules-rule6=Gör inga placeringar/borttagningar av betong eller sten med hjälp av bottar utan tillåtelse. rules-rule7=Använd inte aktiva tillgångskistor utan tillåtelse. -rules-rule8=Använd inte globala högtalare varningar utan tillåtelse. +rules-rule8=Använd inte globala högtalare eller varningar utan tillåtelse. rules-rule9=Ta inte bort eller flytta huvuddelar av fabriken utan tillåtelse. rules-rule10=Gå inte omkring i slumpvisa riktningar utan anledning (för att spara kartstorlek och serverresurser) rules-rule11=Ta inte bort saker utan att fråga dina medspelare. diff --git a/locale/sv-SE/tasklist.cfg b/locale/sv-SE/tasklist.cfg index cb84ae48..dcfd6e8c 100644 --- a/locale/sv-SE/tasklist.cfg +++ b/locale/sv-SE/tasklist.cfg @@ -1,4 +1,4 @@ [tasklist] name=Uppgiftslista tooltip=Jobb som behövs slutföras överallt i fabriken -none=Det finns för närvarande inga uppgifter. Fråga en medlem i spelet eller via Discord för att lägga till uppgifter. +none=Det finns för närvarande inga uppgifter. Fråga en medlem i spelet eller via Discord för att lägga till nya uppgifter. \ No newline at end of file