z_mirror/Krastorio2
git clone https://git.raiguard.me/z_mirror/Krastorio2
0babd38f
real-fusion-reactor
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 31grid . take ( { equipment =equipment , by_player =player } ) 32 33-- Return the item 34local cursor_stack =player . cursor_stack 35-- If we're holding another absorber 36if cursor_stack and cursor_stack . valid_for_read and cursor_stack . name == "kr-energy-absorber-equipment" then 37cursor_stack . count =cursor_stack . count + 1 --[[@as uint]] 38-- If we're holding something else or the stack is empty 39elseif cursor_stack and player . clear_cursor () then 40cursor_stack . set_stack ( { name ="kr-energy-absorber-equipment" , count =1 } ) 41end 42 43-- Show the error 44if ( storage . error_message_tick [ e . player_index ] or 0 ) + 30 < game . ticks_played then 45util . flying_text_with_sound ( player , { "message.kr-already-one-energy-absorber-equipment" } ) 46end 47storage . error_message_tick [ e . player_index ] =game . ticks_played 48end 49 50local energy_absorber ={} 51 52function energy_absorber . on_init () 53--- Holds the last tick that an energy absorber error message was displayed for each player 54--- @type table<number, number> 55storage . error_message_tick ={} 56end 57 58energy_absorber . events ={ 59[ defines . events . on_player_placed_equipment ] =on_player_placed_equipment , 60} 61 62return energy_absorber