1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-10 00:43:27 +02:00
ComfyFactorio/maps/biter_battles_v2/main.lua

215 lines
7.6 KiB
Lua
Raw Normal View History

2019-03-13 18:09:06 +02:00
-- Biter Battles v2 -- by MewMew
2019-11-23 12:45:43 +02:00
local bb_config = require "maps.biter_battles_v2.config"
2019-11-29 06:56:24 +02:00
require "on_tick_schedule"
require "maps.biter_battles_v2.map_settings_tab"
require "modules.spawners_contain_biters"
2019-07-13 19:12:18 +02:00
require "modules.mineable_wreckage_yields_scrap"
2019-03-16 21:25:21 +02:00
2019-03-17 03:35:58 +02:00
local event = require 'utils.event'
2019-03-13 18:09:06 +02:00
2019-11-29 06:56:24 +02:00
local function init_settings()
global.bb_settings = {
--TEAM SETTINGS--
["team_balancing"] = true, --Should players only be able to join a team that has less or equal members than the opposing team?
["only_admins_vote"] = false, --Are only admins able to vote on the global difficulty?
--GENERAL SETTINGS--
["blueprint_library_importing"] = false, --Allow the importing of blueprints from the blueprint library?
["blueprint_string_importing"] = false, --Allow the importing of blueprints via blueprint strings?
}
end
local function init_surface()
2019-03-13 18:09:06 +02:00
local map_gen_settings = {}
2019-11-26 05:17:23 +02:00
map_gen_settings.water = math.random(15, 65) * 0.01
2019-09-14 03:00:43 +02:00
map_gen_settings.starting_area = 2.5
map_gen_settings.terrain_segmentation = math.random(30, 40) * 0.1
2019-11-26 05:17:23 +02:00
map_gen_settings.cliff_settings = {cliff_elevation_interval = 0, cliff_elevation_0 = 0}
2019-03-13 18:09:06 +02:00
map_gen_settings.autoplace_controls = {
2019-11-26 05:17:23 +02:00
["coal"] = {frequency = 2.5, size = 0.65, richness = 0.5},
["stone"] = {frequency = 2.5, size = 0.65, richness = 0.5},
["copper-ore"] = {frequency = 3.5, size = 0.65, richness = 0.5},
["iron-ore"] = {frequency = 3.5, size = 0.65, richness = 0.5},
["uranium-ore"] = {frequency = 2, size = 1, richness = 1},
2019-11-26 05:17:23 +02:00
["crude-oil"] = {frequency = 3, size = 1, richness = 0.75},
2019-11-20 04:40:54 +02:00
["trees"] = {frequency = math.random(8, 16) * 0.1, size = math.random(8, 16) * 0.1, richness = math.random(2, 10) * 0.1},
["enemy-base"] = {frequency = 256, size = 0.61, richness = 1}
2019-03-13 18:09:06 +02:00
}
2019-03-14 05:25:54 +02:00
game.create_surface("biter_battles", map_gen_settings)
2019-03-14 05:25:54 +02:00
game.map_settings.enemy_evolution.time_factor = 0
game.map_settings.enemy_evolution.destroy_factor = 0
game.map_settings.enemy_evolution.pollution_factor = 0
game.map_settings.pollution.enabled = false
2019-11-26 05:17:23 +02:00
game.map_settings.enemy_expansion.enabled = false
2019-03-14 05:25:54 +02:00
end
2019-03-17 19:19:40 +02:00
local function init_forces()
local surface = game.surfaces["biter_battles"]
2019-03-14 19:06:39 +02:00
game.create_force("north")
game.create_force("north_biters")
game.create_force("south")
game.create_force("south_biters")
2019-03-14 05:25:54 +02:00
game.create_force("spectator")
2019-03-14 05:25:54 +02:00
local f = game.forces["north"]
f.set_spawn_position({0, -44}, surface)
2019-03-16 21:25:21 +02:00
f.set_cease_fire('player', true)
2019-03-14 05:25:54 +02:00
f.set_friend("spectator", true)
2019-03-14 19:06:39 +02:00
f.set_friend("south_biters", true)
2019-03-16 21:25:21 +02:00
f.share_chart = true
2019-03-14 05:25:54 +02:00
local f = game.forces["south"]
f.set_spawn_position({0, 44}, surface)
2019-03-16 21:25:21 +02:00
f.set_cease_fire('player', true)
2019-03-14 05:25:54 +02:00
f.set_friend("spectator", true)
2019-03-16 21:25:21 +02:00
f.set_friend("north_biters", true)
2019-03-14 05:25:54 +02:00
f.share_chart = true
2019-03-16 21:25:21 +02:00
local f = game.forces["north_biters"]
f.set_friend("south_biters", true)
f.set_friend("south", true)
f.set_friend("player", true)
f.set_friend("spectator", true)
f.share_chart = false
2019-03-14 19:06:39 +02:00
local f = game.forces["south_biters"]
f.set_friend("north_biters", true)
f.set_friend("north", true)
f.set_friend("player", true)
f.set_friend("spectator", true)
2019-03-16 21:25:21 +02:00
f.share_chart = false
2019-03-14 05:25:54 +02:00
local f = game.forces["spectator"]
f.set_spawn_position({0,0},surface)
f.technologies["toolbelt"].researched=true
2019-03-18 05:47:27 +02:00
f.set_cease_fire("north_biters", true)
f.set_cease_fire("south_biters", true)
2019-03-14 05:25:54 +02:00
f.set_friend("north", true)
f.set_friend("south", true)
2019-03-18 02:30:41 +02:00
f.set_cease_fire("player", true)
2019-03-16 21:25:21 +02:00
f.share_chart = true
2019-03-14 05:25:54 +02:00
local f = game.forces["player"]
2019-03-18 04:24:13 +02:00
f.set_spawn_position({0,0},surface)
2019-03-16 21:25:21 +02:00
f.set_cease_fire('spectator', true)
2019-03-18 05:47:27 +02:00
f.set_cease_fire("north_biters", true)
f.set_cease_fire("south_biters", true)
2019-03-16 21:25:21 +02:00
f.set_cease_fire('north', true)
f.set_cease_fire('south', true)
f.share_chart = false
2019-11-29 06:56:24 +02:00
if not global.bb_settings.blueprint_library_importing then
game.permissions.get_group("Default").set_allows_action(defines.input_action.grab_blueprint_record, false)
end
2019-11-29 06:56:24 +02:00
if not global.bb_settings.blueprint_string_importing then
game.permissions.get_group("Default").set_allows_action(defines.input_action.import_blueprint_string, false)
game.permissions.get_group("Default").set_allows_action(defines.input_action.import_blueprint, false)
end
2019-03-15 02:39:49 +02:00
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
2019-03-17 22:39:05 +02:00
local defs = {
2019-11-20 04:40:54 +02:00
defines.input_action.activate_copy,
defines.input_action.activate_cut,
defines.input_action.activate_paste,
defines.input_action.clean_cursor_stack,
defines.input_action.edit_permission_group,
2019-03-17 22:39:05 +02:00
defines.input_action.gui_click,
2019-11-23 12:45:43 +02:00
defines.input_action.gui_confirmed,
2019-03-17 22:39:05 +02:00
defines.input_action.gui_elem_changed,
2019-11-23 12:45:43 +02:00
defines.input_action.gui_location_changed,
defines.input_action.gui_selected_tab_changed,
2019-11-20 04:40:54 +02:00
defines.input_action.gui_selection_state_changed,
2019-11-23 12:45:43 +02:00
defines.input_action.gui_switch_state_changed,
2019-03-17 22:39:05 +02:00
defines.input_action.gui_text_changed,
defines.input_action.gui_value_changed,
defines.input_action.open_character_gui,
2019-11-20 04:40:54 +02:00
defines.input_action.open_kills_gui,
2019-03-18 04:24:13 +02:00
defines.input_action.rotate_entity,
2019-11-20 04:40:54 +02:00
defines.input_action.start_walking,
defines.input_action.toggle_show_entity_info,
defines.input_action.write_to_console,
}
2019-11-23 12:45:43 +02:00
2019-03-17 22:39:05 +02:00
for _, d in pairs(defs) do p.set_allows_action(d, true) end
2019-03-19 05:05:32 +02:00
global.rocket_silo = {}
2019-03-15 02:39:49 +02:00
global.spectator_rejoin_delay = {}
2019-03-15 04:59:43 +02:00
global.spy_fish_timeout = {}
global.force_area = {}
global.active_biters = {}
2019-07-29 15:24:02 +02:00
global.biter_raffle = {}
2019-08-14 21:16:56 +02:00
global.evo_raise_counter = 1
2019-07-25 05:49:27 +02:00
global.next_attack = "north"
if math.random(1,2) == 1 then global.next_attack = "south" end
2019-03-15 22:50:49 +02:00
global.bb_evolution = {}
global.bb_evasion = {}
global.bb_threat_income = {}
global.bb_threat = {}
2019-03-17 19:19:40 +02:00
global.chunks_to_mirror = {}
2019-03-19 22:00:30 +02:00
global.map_pregen_message_counter = {}
2019-03-14 05:25:54 +02:00
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
2019-03-14 05:25:54 +02:00
game.forces[force.name].set_ammo_damage_modifier("shotgun-shell", 1)
2019-03-15 02:39:49 +02:00
game.forces[force.name].research_queue_enabled = true
2019-03-15 04:59:43 +02:00
global.spy_fish_timeout[force.name] = 0
global.active_biters[force.name] = {}
2019-07-29 15:24:02 +02:00
global.biter_raffle[force.name] = {}
2019-03-15 22:50:49 +02:00
global.bb_evolution[force.name] = 0
2019-04-21 02:45:24 +02:00
global.bb_evasion[force.name] = false
2019-03-15 22:50:49 +02:00
global.bb_threat_income[force.name] = 0
global.bb_threat[force.name] = 0
2019-03-14 23:50:09 +02:00
end
global.game_lobby_active = true
2019-03-13 18:09:06 +02:00
end
local function on_player_joined_game(event)
2019-03-17 03:35:58 +02:00
local surface = game.surfaces["biter_battles"]
local player = game.players[event.player_index]
2019-03-14 23:50:09 +02:00
if player.gui.left["map_pregen"] then player.gui.left["map_pregen"].destroy() end
2019-03-14 05:25:54 +02:00
if player.online_time == 0 then
2019-10-01 03:16:56 +02:00
player.spectator = true
2019-09-01 02:42:14 +02:00
player.force = game.forces.spectator
2019-03-14 05:25:54 +02:00
if surface.is_chunk_generated({0,0}) then
player.teleport(surface.find_non_colliding_position("character", {0,0}, 3, 0.5), surface)
2019-03-14 05:25:54 +02:00
else
2019-03-14 23:50:09 +02:00
player.teleport({0,0}, surface)
2019-03-14 05:25:54 +02:00
end
player.character.destructible = false
game.permissions.get_group("spectator").add_player(player)
end
2019-03-13 18:09:06 +02:00
end
2019-11-29 06:56:24 +02:00
local function on_init()
init_settings()
2019-03-17 19:19:40 +02:00
init_surface()
init_forces()
2019-09-16 18:14:27 +02:00
global.gui_refresh_delay = 0
global.bb_debug = false
2019-03-17 19:19:40 +02:00
end
event.on_init(on_init)
2019-03-13 18:09:06 +02:00
event.add(defines.events.on_player_joined_game, on_player_joined_game)
2019-03-14 05:25:54 +02:00
require "maps.biter_battles_v2.spec_spy"
2019-03-17 19:19:40 +02:00
require "maps.biter_battles_v2.on_tick"
2019-03-14 05:25:54 +02:00
require "maps.biter_battles_v2.terrain"
2019-09-08 03:54:02 +02:00
require "maps.biter_battles_v2.biters_landfill"
2019-03-25 01:49:02 +02:00
require "maps.biter_battles_v2.no_turret_creep"
2019-03-18 06:51:32 +02:00
require "maps.biter_battles_v2.chat"
2019-03-18 15:23:12 +02:00
require "maps.biter_battles_v2.bb_map_intro"
2019-08-14 21:16:56 +02:00
require "maps.biter_battles_v2.difficulty_vote"
2019-09-01 02:42:14 +02:00
require "maps.biter_battles_v2.team_manager"
2019-11-23 12:45:43 +02:00
require "modules.custom_death_messages"