z_mirror/EditorExtensions
git clone https://git.raiguard.me/z_mirror/EditorExtensions
f44d975
1.14
1local util =require ( "__EditorExtensions__/scripts/util" ) 2 3local character_modifiers ={ 4character_build_distance_bonus =1000000 , 5character_mining_speed_modifier =2 , 6character_reach_distance_bonus =1000000 , 7character_resource_reach_distance_bonus =1000000 , 8} 9 10local equipment_to_add ={ 11{ name ="ee-infinity-fusion-reactor-equipment" , position ={ 0 , 0 } } , 12{ name ="ee-super-personal-roboport-equipment" , position ={ 1 , 0 } } , 13{ name ="ee-super-exoskeleton-equipment" , position ={ 2 , 0 } } , 14{ name ="ee-super-exoskeleton-equipment" , position ={ 3 , 0 } } , 15{ name ="ee-super-energy-shield-equipment" , position ={ 4 , 0 } } , 16{ name ="ee-super-night-vision-equipment" , position ={ 5 , 0 } } , 17{ name ="ee-super-battery-equipment" , position ={ 6 , 0 } } , 18{ name ="belt-immunity-equipment" , position ={ 7 , 0 } } , 19} 20 21local items_to_add ={ 22{ name ="ee-infinity-accumulator" , count =50 } , 23{ name ="ee-infinity-chest" , count =50 } , 24{ name ="ee-super-construction-robot" , count =100 } , 25{ name ="ee-super-inserter" , count =50 } , 26{ name ="ee-infinity-loader" , count =50 } , 27{ name ="ee-infinity-pipe" , count =50 } , 28{ name ="ee-super-substation" , count =50 } , 29} 30 31local items_to_remove ={ 32{ name ="express-loader" , count =50 } , 33{ name ="stack-inserter" , count =50 } , 34{ name ="substation" , count =50 } , 35{ name ="construction-robot" , count =100 } , 36{ name ="electric-energy-interface" , count =1 } , 37{ name ="infinity-chest" , count =20 } , 38{ name ="infinity-pipe" , count =10 } , 39{ name ="linked-chest" , count =10 } , 40} 41 42--- @param inventory LuaInventory? 43local function set_armor ( inventory ) 44if not inventory or not inventory . valid then 45return 46end 47inventory [ 1 ]. set_stack ( { name ="power-armor-mk2" } ) 48local grid =inventory [ 1 ]. grid 49if not grid then 50return 51end 52for i =1 , # equipment_to_add do 53grid . put ( equipment_to_add [ i ]) 54end 55end 56 57--- @param player LuaPlayer 58local function set_character_cheats ( player ) 59if not player . cheat_mode or player . character_reach_distance_bonus >= 1000000 then 60return 61end 62local character =player . character 63if not character or not character . valid then 64return 65end 66for modifier , amount in pairs ( character_modifiers ) do 67character [ modifier ] =character [ modifier ] + amount 68end 69end 70 71--- @param player LuaPlayer 72local function set_loadout ( player ) 73-- Remove default items 74local main_inventory =player . get_main_inventory () 75if not main_inventory then 76return 77end 78local items_to_remove =items_to_remove 79for i =1 , # items_to_remove do 80main_inventory . remove ( items_to_remove [ i ]) 81end 82-- Add custom items 83local items_to_add =items_to_add 84for i =1 , # items_to_add do 85main_inventory . insert ( items_to_add [ i ]) 86end 87if player . controller_type == defines . controllers . character then 88set_armor ( player . get_inventory ( defines . inventory . character_armor )) 89set_character_cheats ( player ) 90elseif player . controller_type == defines . controllers . editor then 91set_armor ( player . get_inventory ( defines . inventory . editor_armor )) 92end 93end 94 95--- @param force LuaForce 96local function unlock_recipes ( force ) 97for _ , recipe in pairs ( force . recipes ) do 98if recipe . category == "ee-testing-tool" then 99recipe . enabled =true 100end 101end 102end 103 104--- @param e EventData.on_console_command 105local function on_console_command ( e ) 106if e . command ~= "cheat" or not game . console_command_used then 107return 108end 109local player =game . get_player ( e . player_index ) 110if not player or not player . valid then 111return 112end 113if e . parameters == "all" then 114set_loadout ( player ) 115end 116unlock_recipes ( player . force --[[@as LuaForce]] ) 117if game . is_multiplayer () then 118player . force . ( { "message.ee-tools-enabled" , player . name } ) 119end 120end 121 122--- @param e EventData.on_player_created 123local function on_player_created ( e ) 124local player =game . get_player ( e . player_index ) 125if not player then 126return 127end 128if util . in_debug_world () or util . in_testing_scenario () then 129set_loadout ( player ) 130unlock_recipes ( player . force --[[@as LuaForce]] ) 131end 132end 133 134--- @param e EventData.on_player_toggled_map_editor 135local function on_player_toggled_map_editor ( e ) 136local player =game . get_player ( e . player_index ) 137if not player or not player . cheat_mode or player . controller_type ~= defines . controllers . character then 138return 139end 140set_character_cheats ( player ) 141end 142 143local cheat_mode ={} 144 145cheat_mode . events ={ 146[ defines . events . on_console_command ] =on_console_command , 147[ defines . events . on_player_created ] =on_player_created , 148[ defines . events . on_player_toggled_map_editor ] =on_player_toggled_map_editor , 149} 150 151return cheat_mode