z_mirror/EditorExtensions
git clone https://git.raiguard.me/z_mirror/EditorExtensions
e65a4b6
Quezler/patch-1
1local util =require ( "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-fission-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 ="bulk-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 =script . active_mods [ "space-age" ] and "mech-armor" or "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 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 disable_recipes ( force ) 97for _ , recipe in pairs ( force . recipes ) do 98if recipe . category == "ee-testing-tool" then 99recipe . enabled =false 100end 101end 102end 103 104--- @param force LuaForce 105local function enable_recipes ( force ) 106for _ , recipe in pairs ( force . recipes ) do 107if recipe . category == "ee-testing-tool" then 108recipe . enabled =true 109end 110end 111for _ , player in pairs ( force . players ) do 112player . clear_recipe_notifications () 113end 114end 115 116--- @param e EventData.on_console_command 117local function on_console_command ( e ) 118if e . command ~= "cheat" or not game . console_command_used then 119return 120end 121local player =game . get_player ( e . player_index ) 122if not player or not player . valid then 123return 124end 125if e . parameters == "all" then 126set_loadout ( player ) 127end 128enable_recipes ( player . force --[[@as LuaForce]] ) 129if game . is_multiplayer () then 130player . force . ( { "message.ee-tools-enabled" , player . name } ) 131end 132end 133 134--- @param e EventData.on_player_created 135local function on_player_created ( e ) 136local player =game . get_player ( e . player_index ) 137if not player then 138return 139end 140if util . in_debug_world () or util . in_testing_scenario () then 141set_loadout ( player ) 142enable_recipes ( player . force --[[@as LuaForce]] ) 143end 144end 145 146--- @param e EventData.on_player_toggled_map_editor 147local function on_player_toggled_map_editor ( e ) 148local player =game . get_player ( e . player_index ) 149if not player or not player . cheat_mode or player . controller_type ~= defines . controllers . character then 150return 151end 152set_character_cheats ( player ) 153end 154 155local cheat_mode ={} 156 157function cheat_mode . on_configuration_changed () 158for _ , force in pairs ( game . forces ) do 159for _ , player in pairs ( force . players ) do 160if player . cheat_mode then 161enable_recipes ( force ) 162break 163end 164end 165end 166end 167 168cheat_mode . events ={ 169[ defines . events . on_console_command ] =on_console_command , 170[ defines . events . on_player_created ] =on_player_created , 171[ defines . events . on_player_toggled_map_editor ] =on_player_toggled_map_editor , 172} 173 174cheat_mode . add_remote_interface =function () 175remote . add_interface ( "ee_cheat_mode" , { 176--- @param force LuaForce 177disable_testing_recipes =function ( force ) 178disable_recipes ( force ) 179end , 180--- @param force LuaForce 181enable_testing_recipes =function ( force ) 182enable_recipes ( force ) 183end , 184} ) 185end 186 187return cheat_mode