2024-09-10 12:29:44 +02:00
-- This file is part of thesixthroc's Pirate Ship softmod, licensed under GPLv3 and stored at https://github.com/ComfyFactory/ComfyFactorio and https://github.com/danielmartin0/ComfyFactorio-Pirates.
2022-06-01 20:50:36 +02:00
2022-03-19 23:20:55 +02:00
--luacheck: ignore
--luacheck ignores because mass requires is a code templating choice...
2021-10-13 10:21:53 +02:00
local Color = require ' utils.color_presets '
local Server = require ' utils.server '
local Math = require ' maps.pirates.math '
local Ai = require ' maps.pirates.ai '
local Memory = require ' maps.pirates.memory '
local Common = require ' maps.pirates.common '
local CoreData = require ' maps.pirates.coredata '
local PlayerColors = require ' maps.pirates.player_colors '
local Utils = require ' maps.pirates.utils_local '
local Crew = require ' maps.pirates.crew '
local Roles = require ' maps.pirates.roles.roles '
local Boats = require ' maps.pirates.structures.boats.boats '
local Surfaces = require ' maps.pirates.surfaces.surfaces '
local Overworld = require ' maps.pirates.overworld '
local Islands = require ' maps.pirates.surfaces.islands.islands '
local Progression = require ' maps.pirates.progression '
local Crowsnest = require ' maps.pirates.surfaces.crowsnest '
2022-05-29 13:36:27 +02:00
local PiratesApiEvents = require ' maps.pirates.api_events '
2024-09-15 22:12:26 +02:00
local Upgrades = require ' maps.pirates.shop.boat_upgrades '
2021-10-13 10:21:53 +02:00
local Effects = require ' maps.pirates.effects '
local Kraken = require ' maps.pirates.surfaces.sea.kraken '
2022-03-19 23:20:55 +02:00
local _inspect = require ' utils.inspect ' . inspect
2021-10-13 10:21:53 +02:00
local simplex_noise = require ' utils.simplex_noise ' . d2
local Token = require ' utils.token '
local Task = require ' utils.task '
local Highscore = require ' maps.pirates.highscore '
2024-09-18 19:07:18 +02:00
local Permissions = require ' maps.pirates.permissions '
2022-03-13 20:19:59 +02:00
local Classes = require ' maps.pirates.roles.classes '
2022-07-28 19:15:31 +02:00
local Gui = require ' maps.pirates.gui.gui '
2023-06-25 23:14:04 +02:00
-- local Session = require 'utils.datastore.session_data'
2024-09-11 20:04:10 +02:00
-- *** *** --
--*** HELPERS ***--
-- *** *** --
2022-06-02 20:54:47 +02:00
local function cmd_set_memory ( cmd )
2022-06-15 23:00:18 +02:00
local player = game.players [ cmd.player_index ]
local crew_id = Common.get_id_from_force_name ( player.force . name )
2022-06-02 20:54:47 +02:00
Memory.set_working_id ( crew_id )
end
2022-06-02 15:47:23 +02:00
local function check_admin ( cmd )
local player = game.players [ cmd.player_index ]
2022-06-07 22:48:42 +02:00
--local trusted = Session.get_trusted_table()
2022-06-02 15:47:23 +02:00
local p
if player then
if player ~= nil then
p = player.print
2022-07-02 17:42:22 +02:00
--@temporary
2024-09-11 20:13:18 +02:00
if player.name == " Piratux " or player.name == " thesixthroc " then
2022-07-02 17:42:22 +02:00
return true
end
2022-06-02 15:47:23 +02:00
if not player.admin then
2024-09-12 14:27:22 +02:00
p ( { ' pirates.cmd_error_not_admin ' } , Color.fail )
2022-06-02 15:47:23 +02:00
return false
end
else
p = log
end
end
return true
end
local function check_captain ( cmd )
local player = game.players [ cmd.player_index ]
local p
if player then
if player ~= nil then
p = player.print
if not Common.validate_player ( player ) then return end
2024-09-18 19:07:18 +02:00
if not ( Permissions.player_privilege_level ( player ) >= Permissions.privilege_levels . CAPTAIN ) then
2024-09-12 14:27:22 +02:00
p ( { ' pirates.cmd_error_not_captain ' } , Color.fail )
2022-06-02 15:47:23 +02:00
return false
end
else
p = log
end
end
return true
end
local function check_captain_or_admin ( cmd )
local player = game.players [ cmd.player_index ]
local p
if player then
if player ~= nil then
p = player.print
if not Common.validate_player ( player ) then return end
2024-09-18 19:07:18 +02:00
if not ( player.admin or Permissions.player_privilege_level ( player ) >= Permissions.privilege_levels . CAPTAIN ) then
2024-09-12 14:27:22 +02:00
p ( { ' pirates.cmd_error_not_captain ' } , Color.fail )
2022-06-02 15:47:23 +02:00
return false
end
else
p = log
end
end
return true
end
2024-09-13 15:52:32 +02:00
local function check_creator_of_crew ( cmd )
local player = game.players [ cmd.player_index ]
local p
if player then
if player ~= nil then
p = player.print
cmd_set_memory ( cmd )
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
local creator = memory.original_proposal . created_by_player
if creator ~= player.index then
Common.notify_player_error ( player , { ' pirates.cmd_error_not_creator_of_crew ' } )
return false
end
end
end
end
2022-06-02 15:47:23 +02:00
2023-02-20 18:56:41 +02:00
-- @UNUSED
-- local function check_trusted(cmd)
-- local Session = require 'utils.datastore.session_data'
-- local player = game.players[cmd.player_index]
-- local trusted = Session.get_trusted_table()
-- local p
-- if player then
-- if player ~= nil then
-- p = player.print
-- if not (trusted[player.name] or player.admin) then
-- p('[ERROR] Only admins and trusted weebs are allowed to run this command!', Color.fail)
-- return false
-- end
-- else
-- p = log
-- end
-- end
-- return true
-- end
2022-06-02 15:47:23 +02:00
2024-09-11 20:04:10 +02:00
-- *** *** --
--*** PUBLIC COMMANDS ***--
-- *** *** --
2022-06-02 15:47:23 +02:00
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' ok ' ,
{ ' pirates.cmd_explain_ok ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2022-07-07 22:01:45 +02:00
2024-09-12 14:27:22 +02:00
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
2022-07-07 22:01:45 +02:00
2024-09-12 14:27:22 +02:00
local player = game.players [ cmd.player_index ]
if not Common.validate_player ( player ) then return end
2022-07-16 20:46:23 +02:00
2024-09-12 14:27:22 +02:00
--local memory = Memory.get_crew_memory()
Roles.player_confirm_captainhood ( player )
end )
2021-10-13 10:21:53 +02:00
2024-09-11 20:04:10 +02:00
-- Disabled, better to find these out through gameplay:
2022-02-27 18:42:25 +02:00
-- commands.add_command(
-- 'classes',
-- 'Prints the available classes in the game.',
-- function(cmd)
-- local player = game.players[cmd.player_index]
-- if not Common.validate_player(player) then return end
-- player.print('[color=gray]' .. Roles.get_classes_print_string() .. '[/color]')
-- end)
2022-06-02 15:07:17 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' classinfo ' ,
{ ' pirates.cmd_explain_classinfo ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
local player = game.players [ cmd.player_index ]
if not Common.validate_player ( player ) then return end
2022-06-02 15:07:17 +02:00
2024-09-12 14:27:22 +02:00
if param and param ~= ' nil ' then
local string = Roles.get_class_print_string ( param , true )
if string then
Common.notify_player_expected ( player , { ' ' , { ' pirates.class_definition_for ' } , ' ' , string } )
else
Common.notify_player_error ( player , { ' pirates.cmd_error_invalid_class_name ' , param } )
end
2022-06-02 15:07:17 +02:00
else
2024-09-12 14:27:22 +02:00
Common.notify_player_expected ( player , { ' ' , ' /classinfo ' , { ' pirates.cmd_explain_classinfo ' } } )
2022-06-02 15:07:17 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2022-06-02 15:07:17 +02:00
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' ccolor ' ,
{ ' pirates.cmd_explain_ccolor ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
local player_index = cmd.player_index
if player_index then
local player = game.players [ player_index ]
if player and player.valid then
if cmd.parameter then
if PlayerColors.colors [ param ] then
local rgb = PlayerColors.colors [ param ]
player.color = rgb
player.chat_color = rgb
local message = { ' ' , ' [color= ' .. rgb.r .. ' , ' .. rgb.g .. ' , ' .. rgb.b .. ' ] ' , { ' pirates.choose_chat_color ' , player.name , param } , ' [/color] (via /ccolor). ' }
-- local message = '[color=' .. rgb.r .. ',' .. rgb.g .. ',' .. rgb.b .. ']' .. player.name .. ' chose the color ' .. param .. '[/color] (via /ccolor).'
Common.notify_game ( message )
else
Common.notify_player_error ( player , { ' pirates.cmd_error_color_not_found ' , param } )
end
else
local color = PlayerColors.bright_color_names [ Math.random ( # PlayerColors.bright_color_names ) ]
local rgb = PlayerColors.colors [ color ]
if not rgb then return end
2022-02-25 02:15:32 +02:00
player.color = rgb
player.chat_color = rgb
2024-09-12 14:27:22 +02:00
local message = { ' ' , ' [color= ' .. rgb.r .. ' , ' .. rgb.g .. ' , ' .. rgb.b .. ' ] ' , { ' pirates.randomize_chat_color ' , player.name , color } , ' [/color] (via /ccolor). ' } --'randomly became' was amusing, but let's not
-- local message = '[color=' .. rgb.r .. ',' .. rgb.g .. ',' .. rgb.b .. ']' .. player.name .. '\'s color randomized to ' .. color .. '[/color] (via /ccolor).' --'randomly became' was amusing, but let's not
2022-02-27 18:42:25 +02:00
Common.notify_game ( message )
2024-09-12 14:27:22 +02:00
-- disabled due to lag:
-- GUIcolor.toggle_window(player)
2022-02-24 21:39:03 +02:00
end
2021-10-13 10:21:53 +02:00
end
end
2024-09-12 14:27:22 +02:00
end )
2021-10-13 10:21:53 +02:00
2023-01-28 15:21:41 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' fixpower ' ,
{ ' pirates.cmd_explain_fixpower ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2021-10-13 10:21:53 +02:00
2024-09-12 14:27:22 +02:00
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
2023-01-28 15:21:41 +02:00
2024-09-12 14:27:22 +02:00
Boats.force_reconnect_boat_poles ( )
end )
2021-10-13 10:21:53 +02:00
2024-09-11 20:04:10 +02:00
-- *** *** --
--*** CAPTAIN COMMANDS ***--
-- *** *** --
2021-10-13 10:21:53 +02:00
2024-09-11 20:04:10 +02:00
commands.add_command (
' plank ' ,
2024-09-12 14:27:22 +02:00
{ ' pirates.cmd_explain_plank ' } ,
function ( cmd )
2024-09-11 20:04:10 +02:00
cmd_set_memory ( cmd )
2024-09-12 14:27:22 +02:00
2021-10-13 10:21:53 +02:00
local memory = Memory.get_crew_memory ( )
2024-09-11 20:04:10 +02:00
if not Common.is_id_valid ( memory.id ) then return end
2024-09-12 14:27:22 +02:00
2024-09-11 20:04:10 +02:00
local player = game.players [ cmd.player_index ]
local param = tostring ( cmd.parameter )
if check_captain_or_admin ( cmd ) then
if param and game.players [ param ] and game.players [ param ] . index then
Crew.plank ( player , game.players [ param ] )
else
2024-09-12 14:27:22 +02:00
Common.notify_player_error ( player , { ' pirates.cmd_error_invalid_player_name ' , param } )
2024-09-11 20:04:10 +02:00
end
end
end )
2021-10-13 10:21:53 +02:00
2022-02-28 18:36:46 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' officer ' ,
{ ' pirates.cmd_explain_officer ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2022-06-02 20:54:47 +02:00
2024-09-12 14:27:22 +02:00
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
2022-07-07 22:01:45 +02:00
2024-09-12 14:27:22 +02:00
local player = game.players [ cmd.player_index ]
local param = tostring ( cmd.parameter )
if check_captain_or_admin ( cmd ) then
if param and game.players [ param ] and game.players [ param ] . index then
if Common.is_officer ( game.players [ param ] . index ) then
Roles.unmake_officer ( player , game.players [ param ] )
else
Roles.make_officer ( player , game.players [ param ] )
end
2024-09-11 20:04:10 +02:00
else
2024-09-12 14:27:22 +02:00
Common.notify_player_error ( player , { ' pirates.cmd_error_invalid_player_name ' , param } )
2024-09-11 20:04:10 +02:00
end
2022-03-09 01:36:03 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2022-02-28 18:36:46 +02:00
2022-03-09 01:36:03 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' tax ' ,
{ ' pirates.cmd_explain_tax ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
--local param = tostring(cmd.parameter)
if check_captain ( cmd ) then
--local player = game.players[cmd.player_index]
Roles.captain_tax ( memory.playerindex_captain )
end
end )
2022-02-28 18:36:46 +02:00
2023-06-24 22:49:36 +02:00
-- Try undock from an island or dock
2022-03-12 00:53:36 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' undock ' ,
{ ' pirates.cmd_explain_undock ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2022-07-07 22:01:45 +02:00
2024-09-12 14:27:22 +02:00
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
2022-07-16 20:46:23 +02:00
2024-09-12 14:27:22 +02:00
--local param = tostring(cmd.parameter)
if check_captain_or_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
if memory.boat . state == Boats.enum_state . DOCKED then
Progression.undock_from_dock ( true )
elseif memory.boat . state == Boats.enum_state . LANDED then
Progression.try_retreat_from_island ( player , true )
end
2022-03-12 00:53:36 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2022-03-12 00:53:36 +02:00
2023-06-24 22:49:36 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' clear_north_tanks ' ,
{ ' pirates.cmd_explain_clear_north_tanks ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2023-06-24 22:49:36 +02:00
2024-09-12 14:27:22 +02:00
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
2023-06-24 22:49:36 +02:00
2024-09-12 14:27:22 +02:00
if check_captain_or_admin ( cmd ) then
Boats.clear_fluid_from_ship_tanks ( 1 )
end
end )
2024-09-11 20:04:10 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' clear_south_tanks ' ,
{ ' pirates.cmd_explain_clear_south_tanks ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2024-09-11 20:04:10 +02:00
2024-09-12 14:27:22 +02:00
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
2024-09-11 20:04:10 +02:00
2024-09-12 14:27:22 +02:00
if check_captain ( cmd ) then
Boats.clear_fluid_from_ship_tanks ( 2 )
end
end )
2024-09-11 20:04:10 +02:00
2024-09-13 15:52:32 +02:00
-- *** *** --
--*** CREATOR OF CREW COMMANDS ***--
-- *** *** --
commands.add_command (
' reset_password ' ,
{ ' pirates.cmd_explain_set_private_run_password ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
local param = tostring ( cmd.parameter )
if check_creator_of_crew ( cmd ) then
local player = game.players [ cmd.player_index ]
2024-09-13 16:01:29 +02:00
if not memory.private_run_password then
Common.notify_player_error ( player , { ' pirates.cmd_error_no_existing_password ' } )
return false
end
2024-09-13 15:52:32 +02:00
memory.private_run_password = param
Common.notify_player_expected ( player , { ' pirates.cmd_notify_set_private_run_password ' , memory.name , param } )
end
end )
2024-09-11 20:04:10 +02:00
-- *** *** --
--*** ADMIN COMMANDS ***--
-- *** *** --
commands.add_command (
2024-09-12 14:27:22 +02:00
' set_max_crews ' ,
{ ' pirates.cmd_explain_set_max_crews ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local global_memory = Memory.get_global_memory ( )
2024-09-11 20:04:10 +02:00
2024-09-12 14:27:22 +02:00
if tonumber ( param ) then
global_memory.active_crews_cap_in_memory = tonumber ( param )
Common.notify_player_expected ( player , { ' pirates.cmd_notify_set_max_crews ' , param } )
end
2023-06-24 22:49:36 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2023-06-24 22:49:36 +02:00
2022-03-13 20:19:59 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' setcaptain ' ,
{ ' pirates.cmd_explain_setcaptain ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2022-07-07 22:01:45 +02:00
2024-09-12 14:27:22 +02:00
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
2022-07-16 20:46:23 +02:00
2024-09-12 14:27:22 +02:00
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
if param and game.players [ param ] and game.players [ param ] . index then
Roles.make_captain ( game.players [ param ] )
else
Common.notify_player_error ( player , { ' pirates.cmd_error_invalid_player_name ' , param } )
end
2024-09-11 20:04:10 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2022-03-13 20:19:59 +02:00
2022-11-20 21:07:04 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' summoncrew ' ,
{ ' pirates.cmd_explain_summoncrew ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2022-11-20 21:07:04 +02:00
2024-09-12 14:27:22 +02:00
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
2022-11-20 21:07:04 +02:00
2024-09-12 14:27:22 +02:00
--local param = tostring(cmd.parameter)
if check_admin ( cmd ) then
Crew.summon_crew ( )
end
end )
2022-11-20 21:07:04 +02:00
2024-09-11 20:04:10 +02:00
-- Force undock from an island or dock
2022-11-20 21:07:04 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' ret ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
-- local param = tostring(cmd.parameter)
if check_admin ( cmd ) then
if memory.boat . state == Boats.enum_state . DOCKED then
Progression.undock_from_dock ( true )
elseif memory.boat . state == Boats.enum_state . LANDED then
Progression.retreat_from_island ( true )
end
2024-09-11 20:04:10 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2022-11-20 21:07:04 +02:00
2022-02-28 18:36:46 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' dump_highscores ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2022-07-16 20:46:23 +02:00
2024-09-12 14:27:22 +02:00
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
if not Common.validate_player ( player ) then return end
Highscore.dump_highscores ( )
player.print ( ' Highscores dumped. ' )
end
end )
2022-02-28 18:36:46 +02:00
2022-03-01 23:59:48 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' setevo ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2022-07-16 20:46:23 +02:00
2024-09-12 14:27:22 +02:00
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
Common.set_evo ( tonumber ( param ) )
end
end )
2022-03-01 23:59:48 +02:00
2022-02-26 20:25:48 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' modi ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2022-07-16 20:46:23 +02:00
2024-09-12 14:27:22 +02:00
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
local surface = game.surfaces [ Common.current_destination ( ) . surface_name ]
local entities = surface.find_entities_filtered { position = player.position , radius = 500 }
for _ , e in pairs ( entities ) do
if e and e.valid then
-- e.force = memory.force
e.minable = true
e.destructible = true
e.rotatable = true
end
2021-10-13 10:21:53 +02:00
end
2024-09-12 14:27:22 +02:00
player.print ( ' nearby entities made modifiable ' )
2021-10-13 10:21:53 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2021-10-13 10:21:53 +02:00
2024-09-09 18:02:34 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' night ' ,
' night ' ,
function ( cmd )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local surface = player.surface
surface.daytime = 0.5
end
end )
2024-09-09 18:02:34 +02:00
2022-03-15 20:50:19 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' overwrite_scores_specific ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
2022-07-16 20:46:23 +02:00
2024-09-12 14:27:22 +02:00
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
if not Common.validate_player ( player ) then return end
local memory = Memory.get_crew_memory ( )
if Highscore.overwrite_scores_specific ( ) then player.print ( ' Highscores overwritten. ' ) end
end
end )
2022-03-15 20:50:19 +02:00
2022-07-28 19:15:31 +02:00
-- Unlock a class
commands.add_command (
2024-09-12 14:27:22 +02:00
' unlock ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
local player = game.players [ cmd.player_index ]
if not Classes.try_unlock_class ( param , player , true ) then
Common.notify_player_error ( player , { ' pirates.cmd_error_invalid_class_name ' , param } )
end
2022-10-11 19:52:23 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2022-07-28 19:15:31 +02:00
-- Remove all classes
commands.add_command (
2024-09-12 14:27:22 +02:00
' remove_classes ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
2022-07-28 19:15:31 +02:00
2024-09-12 14:27:22 +02:00
if not Gui.classes then return end
2022-07-28 19:15:31 +02:00
2024-09-12 14:27:22 +02:00
memory.classes_table = { }
memory.spare_classes = { }
memory.recently_purchased_classes = { }
memory.unlocked_classes = { }
memory.available_classes_pool = Classes.initial_class_pool ( )
memory.class_entry_count = 0
2022-07-28 19:15:31 +02:00
2024-09-12 14:27:22 +02:00
local players = Common.crew_get_crew_members_and_spectators ( )
2022-07-28 19:15:31 +02:00
2024-09-12 14:27:22 +02:00
for _ , player in pairs ( players ) do
Gui.classes . full_update ( player , true )
end
2022-07-28 19:15:31 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2022-02-26 20:25:48 +02:00
2024-09-11 20:04:10 +02:00
-- *** *** --
--*** DEVELOPER COMMANDS ***--
-- *** *** --
2022-02-26 20:25:48 +02:00
if _DEBUG then
2024-09-11 20:04:10 +02:00
local go_2 = Token.register (
2024-09-12 14:27:22 +02:00
function ( data )
2024-09-11 20:04:10 +02:00
Memory.set_working_id ( data.id )
local memory = Memory.get_crew_memory ( )
2024-09-27 18:44:33 +02:00
memory.loading_ticks = 0
2024-09-11 20:04:10 +02:00
-- local surface = game.surfaces[Common.current_destination().surface_name]
-- surface.request_to_generate_chunks({x = 0, y = 0}, 10)
-- surface.force_generate_chunk_requests()
Progression.go_from_starting_dock_to_first_destination ( )
end
)
local go_1 = Token.register (
2024-09-12 14:27:22 +02:00
function ( data )
2024-09-11 20:04:10 +02:00
Memory.set_working_id ( data.id )
local memory = Memory.get_crew_memory ( )
2024-09-12 13:30:33 +02:00
Overworld.ensure_lane_generated_up_to ( 0 , Crowsnest.Data . visibilitywidth )
Overworld.ensure_lane_generated_up_to ( 24 , Crowsnest.Data . visibilitywidth )
Overworld.ensure_lane_generated_up_to ( - 24 , Crowsnest.Data . visibilitywidth )
2024-09-12 13:56:20 +02:00
for i = 1 , # memory.destinations do
if memory.destinations [ i ] . overworld_position.x == 0 then
2024-09-27 18:44:33 +02:00
memory.map_being_loaded_destination_index = i
2024-09-12 13:56:20 +02:00
break
end
end
2024-09-27 18:44:33 +02:00
memory.currentdestination_index = memory.map_being_loaded_destination_index
2024-09-11 20:04:10 +02:00
Surfaces.create_surface ( Common.current_destination ( ) )
2024-09-12 14:27:22 +02:00
Task.set_timeout_in_ticks ( 60 , go_2 , { id = data.id } )
2024-09-11 20:04:10 +02:00
end
)
-- Move overworld boat right by a lot (you can jump over islands that way to skip them)
commands.add_command (
2024-09-12 14:27:22 +02:00
' jump ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
Overworld.try_overworld_move_v2 ( { x = 40 , y = 0 } )
end
end )
2024-09-11 20:04:10 +02:00
-- Move overworld boat up
commands.add_command (
2024-09-12 14:27:22 +02:00
' advu ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
Overworld.try_overworld_move_v2 { x = 0 , y = - 24 }
end
end )
2024-09-11 20:04:10 +02:00
-- Move overworld boat down
commands.add_command (
2024-09-12 14:27:22 +02:00
' advd ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
Overworld.try_overworld_move_v2 { x = 0 , y = 24 }
end
end )
2021-10-13 10:21:53 +02:00
2022-07-16 20:46:23 +02:00
-- Teleport player to available boat in lobby, automatically start journey and arrive at sea faster
2022-03-04 19:57:58 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' go ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
-- Doesn't completely prevent server from crashing when used twice at lobby, but at least saves from crashing when boat leaves lobby
if not Common.get_id_from_force_name ( player.character . force.name ) then
local proposal = {
capacity_option = 3 ,
difficulty_option = 4 ,
-- mode_option = 'left',
name = " AdminRun " ,
created_by_player = cmd.player_index
}
2024-09-13 13:31:33 +02:00
Crew.initialise_crew ( proposal , player.position )
2024-09-12 14:27:22 +02:00
Crew.initialise_crowsnest ( ) --contains a Task
local memory = Memory.get_crew_memory ( )
local boat = Utils.deepcopy ( Surfaces.Lobby . StartingBoats [ memory.id ] )
for _ , p in pairs ( game.connected_players ) do
p.teleport ( { x = - 30 , y = boat.position . y } , game.surfaces [ boat.surface_name ] )
end
2022-07-16 20:46:23 +02:00
2024-09-12 14:27:22 +02:00
Progression.set_off_from_starting_dock ( )
2022-07-16 20:46:23 +02:00
2024-09-12 14:27:22 +02:00
-- local memory = Memory.get_crew_memory()
-- local boat = Utils.deepcopy(Surfaces.Lobby.StartingBoats[memory.id])
-- memory.boat = boat
-- boat.dockedposition = boat.position
-- boat.decksteeringchests = {}
2024-09-27 18:44:33 +02:00
-- boat.crows_nest_steering_chests = {}
2022-07-16 20:46:23 +02:00
2024-09-12 14:27:22 +02:00
Task.set_timeout_in_ticks ( 120 , go_1 , { id = memory.id } )
else
game.print ( ' Can \' t use this command when run has already launched ' )
2022-07-02 17:42:22 +02:00
end
2022-03-04 19:57:58 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2022-03-19 23:20:55 +02:00
2022-03-09 01:36:03 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' chnk ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
2022-03-19 23:20:55 +02:00
2024-09-12 14:27:22 +02:00
for i = 0 , 13 do
for j = 0 , 13 do
PiratesApiEvents.event_on_chunk_generated ( { surface = player.surface , area = { left_top = { x = - 7 * 32 + i * 32 , y = - 7 * 32 + j * 32 } } } )
end
2022-03-09 01:36:03 +02:00
end
2024-09-12 14:27:22 +02:00
game.print ( ' chunks generated ' )
2022-03-09 01:36:03 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2022-03-19 23:20:55 +02:00
2022-03-09 01:36:03 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' spd ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
memory.boat . speed = 60
end
end )
2022-03-19 23:20:55 +02:00
2022-03-09 01:36:03 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' stp ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
memory.boat . speed = 0
end
end )
2022-03-19 23:20:55 +02:00
2022-03-09 01:36:03 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' rms ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local rms = 0
local n = 100000
local seed = Math.random ( n ^ 2 )
for i = 1 , n do
local noise = simplex_noise ( i , 7.11 , seed )
rms = rms + noise ^ 2
end
rms = rms / n
game.print ( rms )
2022-03-09 01:36:03 +02:00
end
2024-09-12 14:27:22 +02:00
end )
2022-03-19 23:20:55 +02:00
2022-03-09 01:36:03 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' pro ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local global_memory = Memory.get_global_memory ( )
2022-03-19 23:20:55 +02:00
2024-09-12 14:27:22 +02:00
local proposal = {
capacity_option = 3 ,
difficulty_option = 2 ,
-- mode_option = 'left',
name = " TestRun " ,
created_by_player = cmd.player_index
}
2022-03-19 23:20:55 +02:00
2024-09-12 14:27:22 +02:00
global_memory.crewproposals [ # global_memory.crewproposals + 1 ] = proposal
end
end )
2022-03-19 23:20:55 +02:00
2022-07-16 20:46:23 +02:00
-- Leave island, or dock immediately
2022-03-09 01:36:03 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' lev ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
Progression.go_from_currentdestination_to_sea ( )
end
end )
2022-03-19 23:20:55 +02:00
2022-07-16 20:46:23 +02:00
-- Add another hold
2022-03-09 01:36:03 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' hld ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
Upgrades.execute_upgade ( Upgrades.enum . EXTRA_HOLD )
end
end )
2022-03-19 23:20:55 +02:00
2022-07-16 20:46:23 +02:00
-- Upgrade power generators
2022-03-09 01:36:03 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' pwr ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
Upgrades.execute_upgade ( Upgrades.enum . MORE_POWER )
end
end )
2022-03-19 23:20:55 +02:00
2022-03-09 01:36:03 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' score ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
2022-03-19 23:20:55 +02:00
2024-09-12 14:27:22 +02:00
game.print ( ' faking a highscore... ' )
Highscore.write_score ( memory.secs_id , ' fakers ' , 0 , 40 , CoreData.version_string , 1 , 1 )
end
end )
2022-03-19 23:20:55 +02:00
2022-03-09 01:36:03 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' scrget ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
game.print ( ' running Highscore.load_in_scores() ' )
Highscore.load_in_scores ( )
end
end )
2022-03-09 01:36:03 +02:00
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' tim ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
Common.current_destination ( ) . dynamic_data.timer = 88
game.print ( ' time set to 88 seconds ' )
end
end )
2021-10-13 10:21:53 +02:00
2022-07-16 20:46:23 +02:00
-- Add 20000 coal fuel to ship
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' gld ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
memory.stored_fuel = memory.stored_fuel + 20000
end
end )
2022-03-19 23:20:55 +02:00
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' rad ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local destination = Common.current_destination ( )
Islands.spawn_enemy_boat ( Boats.enum . RAFT )
local boat = destination.dynamic_data . enemyboats [ 1 ]
Ai.spawn_boat_biters ( boat , 0.89 , Boats.get_scope ( boat ) . Data.capacity , Boats.get_scope ( boat ) . Data.width )
game.print ( ' enemy boat spawned ' )
end
end )
2022-03-19 23:20:55 +02:00
2022-02-28 18:36:46 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' rad2 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local destination = Common.current_destination ( )
Islands.spawn_enemy_boat ( Boats.enum . RAFTLARGE )
local boat = destination.dynamic_data . enemyboats [ 1 ]
Ai.spawn_boat_biters ( boat , 0.89 , Boats.get_scope ( boat ) . Data.capacity , Boats.get_scope ( boat ) . Data.width )
game.print ( ' large enemy boat spawned ' )
end
end )
2021-10-13 10:21:53 +02:00
2022-07-16 20:46:23 +02:00
-- Spawns kraken if at sea
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' krk ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
Kraken.try_spawn_kraken ( )
end
end )
2021-10-13 10:21:53 +02:00
2022-07-16 20:46:23 +02:00
-- Sets game speed to 0.25
2022-05-26 13:47:05 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' 1/4 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
game.speed = 0.25
end
end )
2022-05-26 13:47:05 +02:00
2022-07-16 20:46:23 +02:00
-- Sets game speed to 0.5
2022-05-26 13:47:05 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' 1/2 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
game.speed = 0.5
end
end )
2022-05-26 13:47:05 +02:00
2022-07-16 20:46:23 +02:00
-- Sets game speed to 1
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' 1 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
game.speed = 1
end
end )
2022-03-19 23:20:55 +02:00
2022-07-16 20:46:23 +02:00
-- Sets game speed to 2
2022-03-04 19:57:58 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' 2 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
game.speed = 2
end
end )
2022-03-19 23:20:55 +02:00
2022-07-16 20:46:23 +02:00
-- Sets game speed to 4
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' 4 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
game.speed = 4
end
end )
2022-03-19 23:20:55 +02:00
2022-07-16 20:46:23 +02:00
-- Sets game speed to 8
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' 8 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
game.speed = 8
end
end )
2022-03-19 23:20:55 +02:00
2022-07-16 20:46:23 +02:00
-- Sets game speed to 16
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' 16 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
game.speed = 16
end
end )
2022-03-19 23:20:55 +02:00
2022-07-16 20:46:23 +02:00
-- Sets game speed to 32
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' 32 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
game.speed = 32
end
end )
2022-03-19 23:20:55 +02:00
2022-07-16 20:46:23 +02:00
-- Sets game speed to 64
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' 64 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
game.speed = 64
end
end )
2022-03-19 23:20:55 +02:00
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' ef1 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
local surface = game.surfaces [ Common.current_destination ( ) . surface_name ]
Effects.worm_movement_effect ( surface , { x = - 45 , y = 0 } , false , true )
end
end )
2022-03-19 23:20:55 +02:00
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' ef2 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
local surface = game.surfaces [ Common.current_destination ( ) . surface_name ]
Effects.worm_movement_effect ( surface , { x = - 45 , y = 0 } , false , false )
end
end )
2022-03-19 23:20:55 +02:00
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' ef3 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
local surface = game.surfaces [ Common.current_destination ( ) . surface_name ]
Effects.worm_movement_effect ( surface , { x = - 45 , y = 0 } , true , false )
end
end )
2022-03-19 23:20:55 +02:00
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' ef4 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
local surface = game.surfaces [ Common.current_destination ( ) . surface_name ]
Effects.worm_emerge_effect ( surface , { x = - 45 , y = 0 } )
end
end )
2022-03-19 23:20:55 +02:00
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' ef5 ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
local surface = game.surfaces [ Common.current_destination ( ) . surface_name ]
Effects.biters_emerge ( surface , { x = - 30 , y = 0 } )
end
end )
2022-03-19 23:20:55 +02:00
2021-10-13 10:21:53 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' emoji ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
Server.to_discord_embed_raw ( CoreData.comfy_emojis . despair )
end
end )
2022-06-02 15:07:17 +02:00
2022-07-16 20:46:23 +02:00
-- Spawn friendly gun turrets with ammo to defend your ship
commands.add_command (
2024-09-12 14:27:22 +02:00
' def ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
local boat = memory.boat
local scope = Boats.get_scope ( boat )
local surface = game.surfaces [ boat.surface_name ]
if not surface then return end
if scope.Data . cannons then
for i = - 2 , 2 do
local p1 = scope.Data . cannons [ 1 ]
local p2 = { x = boat.position . x + p1.x + i * 2 , y = boat.position . y + p1.y - 4 }
local e = surface.create_entity ( { name = ' gun-turret ' , position = p2 , force = boat.force_name , create_build_effect_smoke = false } )
if e and e.valid then
e.insert ( { name = " uranium-rounds-magazine " , count = 200 } )
end
2022-07-16 20:46:23 +02:00
end
2024-09-12 14:27:22 +02:00
for i = - 2 , 2 do
local p1 = scope.Data . cannons [ 2 ]
local p2 = { x = boat.position . x + p1.x + i * 2 , y = boat.position . y + p1.y + 3 }
local e = surface.create_entity ( { name = ' gun-turret ' , position = p2 , force = boat.force_name , create_build_effect_smoke = false } )
if e and e.valid then
e.insert ( { name = " uranium-rounds-magazine " , count = 200 } )
end
2022-07-16 20:46:23 +02:00
end
end
end
2024-09-12 14:27:22 +02:00
end )
2022-07-16 20:46:23 +02:00
-- Spawn friendly gun turrets with ammo around you
commands.add_command (
2024-09-12 14:27:22 +02:00
' atk ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
cmd_set_memory ( cmd )
local param = tostring ( cmd.parameter )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
local memory = Memory.get_crew_memory ( )
if not Common.is_id_valid ( memory.id ) then return end
local boat = memory.boat
local p = player.character . position
local turret_positions = {
{ x = p.x - 2 , y = p.y - 2 } ,
{ x = p.x - 2 , y = p.y + 2 } ,
{ x = p.x + 2 , y = p.y - 2 } ,
{ x = p.x + 2 , y = p.y + 2 } ,
}
for _ , pos in pairs ( turret_positions ) do
local e = player.surface . create_entity ( { name = ' gun-turret ' , position = pos , force = boat.force_name , create_build_effect_smoke = false } )
if e and e.valid then
e.insert ( { name = " uranium-rounds-magazine " , count = 200 } )
end
2022-07-16 20:46:23 +02:00
end
end
2024-09-12 14:27:22 +02:00
end )
2022-07-16 20:46:23 +02:00
-- Give advanced starter kit to make exploration easier
commands.add_command (
2024-09-12 14:27:22 +02:00
' kit ' ,
{ ' pirates.cmd_explain_dev ' } ,
function ( cmd )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
player.insert { name = ' substation ' , count = 50 }
player.insert { name = ' solar-panel ' , count = 50 }
player.insert { name = ' vehicle-machine-gun ' , count = 1 }
player.insert { name = ' uranium-rounds-magazine ' , count = 200 }
player.insert { name = ' raw-fish ' , count = 100 }
player.insert { name = ' coin ' , count = 50000 }
player.insert { name = ' cluster-grenade ' , count = 100 }
player.insert { name = ' steel-chest ' , count = 50 }
player.insert { name = ' express-loader ' , count = 50 }
player.insert { name = ' burner-inserter ' , count = 50 }
player.insert { name = ' accumulator ' , count = 50 }
end
end )
2024-09-12 13:25:24 +02:00
commands.add_command (
2024-09-12 14:27:22 +02:00
' buff ' ,
' buffs all damage by 10% ' ,
function ( cmd )
if check_admin ( cmd ) then
local player = game.players [ cmd.player_index ]
Crew.buff_all_damage ( 0.1 )
end
end )
end