51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
function get_any_stack_size(name)
 | 
						|
    local item = prototypes.item[name]
 | 
						|
    if item ~= nil then
 | 
						|
        return item.stack_size
 | 
						|
    end
 | 
						|
    item = prototypes.equipment[name]
 | 
						|
    if item ~= nil then
 | 
						|
        return item.stack_size
 | 
						|
    end
 | 
						|
    -- failsafe
 | 
						|
    return 1
 | 
						|
end
 | 
						|
 | 
						|
-- from https://stackoverflow.com/a/40180465
 | 
						|
-- split("a,b,c", ",") => {"a", "b", "c"}
 | 
						|
function split(s, sep)
 | 
						|
    local fields = {}
 | 
						|
 | 
						|
    sep = sep or " "
 | 
						|
    local pattern = string.format("([^%s]+)", sep)
 | 
						|
    string.gsub(s, pattern, function(c) fields[#fields + 1] = c end)
 | 
						|
 | 
						|
    return fields
 | 
						|
end
 | 
						|
 | 
						|
function random_offset_position(position, offset)
 | 
						|
    return {x=position.x+math.random(-offset, offset), y=position.y+math.random(-offset, offset)}
 | 
						|
end
 | 
						|
 | 
						|
function fire_entity_at_players(entity_name, speed)
 | 
						|
    local entities = {}
 | 
						|
    for _, player in ipairs(game.forces["player"].players) do
 | 
						|
        if player.character ~= nil then
 | 
						|
            table.insert(entities, player.character)
 | 
						|
        end
 | 
						|
    end
 | 
						|
    return fire_entity_at_entities(entity_name, entities, speed)
 | 
						|
end
 | 
						|
 | 
						|
function fire_entity_at_entities(entity_name, entities, speed)
 | 
						|
    for _, current_entity in ipairs(entities) do
 | 
						|
        local target = current_entity
 | 
						|
        if target.health == nil then
 | 
						|
            target = target.position
 | 
						|
        end
 | 
						|
        current_entity.surface.create_entity{name=entity_name,
 | 
						|
            position=random_offset_position(current_entity.position, 128),
 | 
						|
            target=target, speed=speed}
 | 
						|
    end
 | 
						|
end
 |