z_mirror/Krastorio2
git clone https://git.raiguard.me/z_mirror/Krastorio2
0152652e
santichu95/patch-1
1local util =require ( "scripts.util" ) 2 3--- @param e EventData.on_player_placed_equipment 4local function on_player_placed_equipment ( e ) 5local equipment =e . equipment 6if not equipment . valid or equipment . name ~= "energy-absorber" then 7return 8end 9local grid =e . grid 10if not grid . valid then 11return 12end 13 14local player =game . get_player ( e . player_index ) 15if not player then 16return 17end 18 19if grid . get_contents ()[ "energy-absorber" ] <= 1 then 20return 21end 22 23-- Retrieve the equipment 24grid . take ( { equipment =equipment , by_player =player } ) 25 26-- Return the item 27local cursor_stack =player . cursor_stack 28-- If we're holding another absorber 29if cursor_stack and cursor_stack . valid_for_read and cursor_stack . name == "energy-absorber" then 30cursor_stack . count =cursor_stack . count + 1 --[[@as uint]] 31-- If we're holding something else or the stack is empty 32elseif cursor_stack and player . clear_cursor () then 33cursor_stack . set_stack ( { name ="energy-absorber" , count =1 } ) 34end 35 36-- Show the error 37if ( storage . error_message_tick [ e . player_index ] or 0 ) + 30 < game . ticks_played then 38util . flying_text_with_sound ( player , { "message.kr-already-one-energy-absorber" } ) 39end 40storage . error_message_tick [ e . player_index ] =game . ticks_played 41end 42 43local energy_absorber ={} 44 45function energy_absorber . on_init () 46--- Holds the last tick that an energy absorber error message was displayed for each player 47--- @type table<number, number> 48storage . error_message_tick ={} 49end 50 51energy_absorber . events ={ 52[ defines . events . on_player_placed_equipment ] =on_player_placed_equipment , 53} 54 55return energy_absorber