mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-02-07 13:31:40 +02:00
biter_battles > rainbow ore
This commit is contained in:
parent
0643a54c63
commit
7cc7ba2d60
@ -495,9 +495,9 @@ local function on_player_joined_game(event)
|
||||
}
|
||||
game.create_surface("surface", map_gen_settings)
|
||||
|
||||
game.map_settings.enemy_evolution.time_factor = 0.000005
|
||||
game.map_settings.enemy_evolution.destroy_factor = 0.004
|
||||
game.map_settings.enemy_evolution.pollution_factor = 0.000025
|
||||
game.map_settings.enemy_evolution.time_factor = 0.000004
|
||||
game.map_settings.enemy_evolution.destroy_factor = 0.0035
|
||||
game.map_settings.enemy_evolution.pollution_factor = 0.000005
|
||||
game.map_settings.enemy_expansion.enabled = true
|
||||
game.map_settings.enemy_expansion.min_expansion_cooldown = 18000
|
||||
game.map_settings.enemy_expansion.max_expansion_cooldown = 72000
|
||||
@ -538,6 +538,8 @@ local function on_player_joined_game(event)
|
||||
game.forces[name].set_turret_attack_modifier("flamethrower-turret", -0.5)
|
||||
--game.forces[name].set_ammo_damage_modifier("artillery-shell", -0.95)
|
||||
game.forces[name].set_ammo_damage_modifier("shotgun-shell", 0.5)
|
||||
|
||||
game.forces[name].research_queue_enabled = true
|
||||
end
|
||||
|
||||
game.forces["spectator"].technologies["toolbelt"].researched=true
|
||||
|
@ -11,10 +11,10 @@ local function init_surface()
|
||||
map_gen_settings.starting_area = "5"
|
||||
map_gen_settings.cliff_settings = {cliff_elevation_interval = 12, cliff_elevation_0 = 32}
|
||||
map_gen_settings.autoplace_controls = {
|
||||
["coal"] = {frequency = "4", size = "1", richness = "1"},
|
||||
["stone"] = {frequency = "4", size = "1", richness = "1"},
|
||||
["copper-ore"] = {frequency = "4", size = "1", richness = "1"},
|
||||
["iron-ore"] = {frequency = "4", size = "1", richness = "1"},
|
||||
["coal"] = {frequency = "3", size = "1", richness = "1"},
|
||||
["stone"] = {frequency = "3", size = "1", richness = "1"},
|
||||
["copper-ore"] = {frequency = "3", size = "1", richness = "1"},
|
||||
["iron-ore"] = {frequency = "3", size = "1", richness = "1"},
|
||||
["uranium-ore"] = {frequency = "2", size = "1", richness = "1"},
|
||||
["crude-oil"] = {frequency = "3", size = "1", richness = "1"},
|
||||
["trees"] = {frequency = "2", size = "1", richness = "1"},
|
||||
@ -72,12 +72,27 @@ local function init_forces(surface)
|
||||
local f = game.forces["player"]
|
||||
f.set_spawn_position({0,0},surface)
|
||||
|
||||
local p = game.permissions.create_group("spectator")
|
||||
for action_name, _ in pairs(defines.input_action) do
|
||||
p.set_allows_action(defines.input_action[action_name], false)
|
||||
end
|
||||
p.set_allows_action(defines.input_action.write_to_console, true)
|
||||
p.set_allows_action(defines.input_action.gui_click, true)
|
||||
p.set_allows_action(defines.input_action.gui_selection_state_changed, true)
|
||||
p.set_allows_action(defines.input_action.start_walking, true)
|
||||
p.set_allows_action(defines.input_action.open_kills_gui, true)
|
||||
p.set_allows_action(defines.input_action.open_character_gui, true)
|
||||
p.set_allows_action(defines.input_action.edit_permission_group, true)
|
||||
p.set_allows_action(defines.input_action.toggle_show_entity_info, true)
|
||||
global.spectator_rejoin_delay = {}
|
||||
|
||||
for _, force in pairs(game.forces) do
|
||||
game.forces[force.name].technologies["artillery"].enabled = false
|
||||
game.forces[force.name].technologies["artillery-shell-range-1"].enabled = false
|
||||
game.forces[force.name].technologies["artillery-shell-speed-1"].enabled = false
|
||||
game.forces[force.name].technologies["atomic-bomb"].enabled = false
|
||||
game.forces[force.name].set_ammo_damage_modifier("shotgun-shell", 1)
|
||||
game.forces[force.name].research_queue_enabled = true
|
||||
end
|
||||
|
||||
global.game_lobby_active = true
|
||||
@ -99,9 +114,10 @@ local function on_player_joined_game(event)
|
||||
player.teleport({0,0}, surface)
|
||||
end
|
||||
player.character.destructible = false
|
||||
game.permissions.get_group("spectator").add_player(player.name)
|
||||
end
|
||||
|
||||
--player.character.destroy()
|
||||
player.character.destroy()
|
||||
end
|
||||
|
||||
event.add(defines.events.on_player_joined_game, on_player_joined_game)
|
||||
|
@ -1,4 +1,5 @@
|
||||
local event = require 'utils.event'
|
||||
local math_random = math.random
|
||||
|
||||
local particles = {"coal-particle", "copper-ore-particle", "iron-ore-particle", "stone-particle"}
|
||||
local function create_fireworks_rocket(surface, position)
|
||||
@ -178,9 +179,10 @@ local function on_entity_died(event)
|
||||
if event.entity == global.rocket_silo.south or event.entity == global.rocket_silo.north then
|
||||
for _, player in pairs(game.connected_players) do
|
||||
player.play_sound{path="utility/game_won", volume_modifier=1}
|
||||
end
|
||||
show_mvps(player)
|
||||
fireworks(surface)
|
||||
if player.gui.left["bb_main_gui"] then player.gui.left["bb_main_gui"].destroy() end
|
||||
show_mvps(player)
|
||||
end
|
||||
fireworks(event.entity.surface)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -224,44 +224,61 @@ local function refresh_gui()
|
||||
end
|
||||
|
||||
local function join_team(player, force_name)
|
||||
if not global.chosen_team then global.chosen_team = {} end
|
||||
local surface = player.surface
|
||||
|
||||
if global.chosen_team[player.name] then
|
||||
local p = surface.find_non_colliding_position("player", game.forces[global.chosen_team[player.name]].get_spawn_position(surface), 3, 1)
|
||||
local enemy_team = "south"
|
||||
if force_name == "south" then enemy_team = "north" end
|
||||
|
||||
if #game.forces[force_name].connected_players > #game.forces[enemy_team].connected_players then
|
||||
player.print("Team " .. force_name .. " has too many players currently.", {r=0.98, g=0.66, b=0.22})
|
||||
return
|
||||
end
|
||||
|
||||
if global.chosen_team[player.name] then
|
||||
if game.tick - global.spectator_rejoin_delay[player.name] < 1800 then
|
||||
player.print(
|
||||
"Not ready to return to your team yet. Please wait " .. 30-(math.ceil((game.tick - global.spectator_rejoin_delay[player.name])/60)) .. " seconds.",
|
||||
{r=0.98, g=0.66, b=0.22}
|
||||
)
|
||||
return
|
||||
end
|
||||
local p = surface.find_non_colliding_position("player", game.forces[force_name].get_spawn_position(surface), 8, 0.5)
|
||||
player.teleport(p, surface)
|
||||
player.force = game.forces[force_name]
|
||||
local p = game.permissions.get_group("Default")
|
||||
local p = game.permissions.get_group("Default")
|
||||
p.add_player(player.name)
|
||||
game.print("Team " .. player.force.name .. " player " .. player.name .. " is no longer spectating.", {r=0.98, g=0.66, b=0.22})
|
||||
return
|
||||
end
|
||||
|
||||
local enemy_team = "south"
|
||||
if force_name == "south" then enemy_team = "north" end
|
||||
|
||||
if #game.forces[force_name].connected_players > #game.forces[enemy_team].connected_players then
|
||||
player.print("Team " .. force_name .. " has too many players currently.", {r=0.98, g=0.66, b=0.22})
|
||||
else
|
||||
player.teleport(surface.find_non_colliding_position("player", game.forces[force_name].get_spawn_position(surface), 3, 1))
|
||||
player.force = game.forces[force_name]
|
||||
game.print(player.name .. " has joined team " .. player.force.name .. "!", {r=0.98, g=0.66, b=0.22})
|
||||
local i = player.get_inventory(defines.inventory.player_main)
|
||||
player.insert {name = 'pistol', count = 1}
|
||||
player.insert {name = 'raw-fish', count = 3}
|
||||
player.insert {name = 'firearm-magazine', count = 16}
|
||||
player.insert {name = 'iron-gear-wheel', count = 4}
|
||||
player.insert {name = 'iron-plate', count = 8}
|
||||
global.chosen_team[player.name] = force_name
|
||||
end
|
||||
|
||||
player.teleport(surface.find_non_colliding_position("player", game.forces[force_name].get_spawn_position(surface), 3, 1))
|
||||
player.force = game.forces[force_name]
|
||||
game.print(player.name .. " has joined team " .. player.force.name .. "!", {r=0.98, g=0.66, b=0.22})
|
||||
local i = player.get_inventory(defines.inventory.player_main)
|
||||
i.clear()
|
||||
player.insert {name = 'pistol', count = 1}
|
||||
player.insert {name = 'raw-fish', count = 3}
|
||||
player.insert {name = 'firearm-magazine', count = 16}
|
||||
player.insert {name = 'iron-gear-wheel', count = 4}
|
||||
player.insert {name = 'iron-plate', count = 8}
|
||||
global.chosen_team[player.name] = force_name
|
||||
end
|
||||
|
||||
local function spectate(player)
|
||||
player.teleport(player.surface.find_non_colliding_position("player", {0,0}, 2, 1))
|
||||
player.force = game.forces.spectator
|
||||
game.print(player.name .. " is spectating.", { r=0.98, g=0.66, b=0.22})
|
||||
local permission_group = game.permissions.get_group("spectator")
|
||||
permission_group.add_player(player.name)
|
||||
global.spectator_rejoin_delay[player.name] = game.tick
|
||||
create_main_gui(player)
|
||||
end
|
||||
|
||||
local function join_gui_click(name, player)
|
||||
local team = {
|
||||
["join_north_button"] = "north",
|
||||
["join_south_button"] = "south"
|
||||
}
|
||||
|
||||
}
|
||||
if global.game_lobby_active then
|
||||
if player.admin then
|
||||
join_team(player, team[name])
|
||||
@ -293,19 +310,33 @@ local function on_gui_click(event)
|
||||
|
||||
--if food_names[name] then feed_the_biters(player, name) return end
|
||||
|
||||
if name == "bb_leave_spectate" then join_team(player, global.chosen_team[player.name]) end
|
||||
|
||||
if name == "bb_spectate" then
|
||||
if player.position.y < 100 and player.position.y > -100 and player.position.x < 100 and player.position.x > -100 then
|
||||
--join_team(player, "spectator")
|
||||
if player.position.y ^ 2 + player.position.x ^ 2 < 12000 then
|
||||
spectate(player)
|
||||
else
|
||||
player.print("You are too far away from spawn to spectate.",{ r=0.98, g=0.66, b=0.22})
|
||||
end
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if name == "bb_hide_players" then
|
||||
global.bb_view_players[player.name] = false
|
||||
create_main_gui(player)
|
||||
end
|
||||
if name == "bb_view_players" then
|
||||
global.bb_view_players[player.name] = true
|
||||
create_main_gui(player)
|
||||
end
|
||||
end
|
||||
|
||||
local function on_player_joined_game(event)
|
||||
local player = game.players[event.player_index]
|
||||
|
||||
if not global.bb_view_players then global.bb_view_players = {} end
|
||||
if not global.chosen_team then global.chosen_team = {} end
|
||||
|
||||
global.bb_view_players[player.name] = false
|
||||
|
||||
create_sprite_button(player)
|
||||
|
@ -4,6 +4,7 @@ local math_random = math.random
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local create_tile_chain = require "functions.create_tile_chain"
|
||||
local spawn_circle_size = 28
|
||||
local ores = {"copper-ore", "iron-ore", "stone", "coal"}
|
||||
|
||||
local function get_noise(name, pos)
|
||||
local seed = game.surfaces[1].map_gen_settings.seed
|
||||
@ -81,6 +82,26 @@ local function generate_river(event)
|
||||
end
|
||||
end
|
||||
|
||||
local function generate_rainbow_ore(event)
|
||||
local surface = event.surface
|
||||
local left_top_x = event.area.left_top.x
|
||||
local left_top_y = event.area.left_top.y
|
||||
for x = 0, 31, 1 do
|
||||
for y = 0, 31, 1 do
|
||||
local pos = {x = left_top_x + x, y = left_top_y + y}
|
||||
if surface.can_place_entity({name = "iron-ore", position = pos}) then
|
||||
local noise = get_noise(1, pos)
|
||||
if noise > 0.83 then
|
||||
local amount = math_random(1500, 2000) + math.sqrt(pos.x ^ 2 + pos.y ^ 2) * noise * 4
|
||||
local i = math.ceil(math.abs(noise * 25)) % 4
|
||||
if i == 0 then i = 4 end
|
||||
surface.create_entity({name = ores[i], position = pos, amount = amount})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function on_chunk_generated(event)
|
||||
if event.area.left_top.y >= 0 then return end
|
||||
local surface = event.surface
|
||||
@ -94,9 +115,10 @@ local function on_chunk_generated(event)
|
||||
generate_river(event)
|
||||
generate_circle_spawn(event)
|
||||
generate_silos(event)
|
||||
generate_rainbow_ore(event)
|
||||
|
||||
if event.area.left_top.y == -160 and event.area.left_top.x == -160 then
|
||||
for _, e in pairs(surface.find_entities_filtered({area = {{-8,-8},{8,8}}})) do
|
||||
for _, e in pairs(surface.find_entities_filtered({area = {{-10,-10},{10,10}}})) do
|
||||
if e.name ~= "player" then e.destroy() end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user