z_mirror/Krastorio2
git clone https://git.raiguard.me/z_mirror/Krastorio2
67346a85
trunk
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 ~= "kr-energy-absorber-equipment" 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 19local found =0 20for _ , equipment_spec in pairs ( grid . get_contents ()) do 21if equipment_spec . name == "kr-energy-absorber-equipment" then 22found =equipment_spec . count 23break 24end 25end 26if found <= 1 then 27return 28end 29 30-- Retrieve the equipment 31local equipment_quality =equipment . quality 32grid . take ( { equipment =equipment , by_player =player } ) 33 34-- Return the item 35local cursor_stack =player . cursor_stack 36-- If we're holding another absorber 37if cursor_stack and cursor_stack . valid_for_read and cursor_stack . name == "kr-energy-absorber-equipment" then 38cursor_stack . count =cursor_stack . count + 1 --[[@as uint]] 39-- If we're holding something else or the stack is empty 40elseif cursor_stack and player . clear_cursor () then 41cursor_stack . set_stack ( { name ="kr-energy-absorber-equipment" , count =1 , quality =equipment_quality } ) 42end 43 44-- Show the error 45if ( storage . error_message_tick [ e . player_index ] or 0 ) + 30 < game . ticks_played then 46util . flying_text_with_sound ( player , { "message.kr-already-one-energy-absorber-equipment" } ) 47end 48storage . error_message_tick [ e . player_index ] =game . ticks_played 49end 50 51--- @class EnergyAbsorberHandler : event_handler 52local energy_absorber ={} 53 54function energy_absorber . on_init () 55--- Holds the last tick that an energy absorber error message was displayed for each player 56--- @type table<number, number> 57storage . error_message_tick ={} 58end 59 60energy_absorber . events ={ 61[ defines . events . on_player_placed_equipment ] =on_player_placed_equipment , 62} 63 64return energy_absorber