if you want to use different actors for this its not too hard to do either. you just need to compare the inventory against a list of keys. to do this we will use the find node which takes in a actor reference and returns its index in the array, it should also return -1 for items not in the array. so working from here we just do as i did before and increment a variable when we find one of the keys. once we are done with the loop we just compare how many keys we were searching for to the variable and that will tell us if we found them all.
note i try to make things as modular as possible so the same blueprint can be reused over and again. you could accomplish this without the loop and just use a series of branches like you have pictured but then you are limited to only having 4 keys whereas my method you can have as many as you like.
in your picture i see your using an array of structs and a contains node which may be a little problematic. while i havent tried your implementation, based on my experience the issue i would forsee is that generally when trying to do something like that you need to fill in all the fields of the make struct and they need to perfectly match to the struct in your inventory. so the value of item, item thumbnail, pickuptext, and action text need to be exactly the same as the values stored in the inventory. to combat this you may want to look into using a data table to store the values of things then just searching for the DT values.