Вот поэтому...для геймдева нужно знать дискретную математику
Можно создать битовую маску / битовую карту, в которой по одному измерению будут блоки, по другому измерению локации. Единичный бит будет означать доступность действия, нулевой бит - недоступность.
Тогда
"сто тыщ миллионов" условий будут проверяться одной строкой кода. Такой подход слегка напоминает ПЛИС / FPGA. Кстати, если скомбинировать это с ответом
Daemon23RUS, можно не таскаться с огромной битовой картой, а подгружать маленькую в конкретной локации. И, более того, битовую карту можно динамически менять в зависимости от дополнительных факторов, например, разлочивание какой-то возможности будет выглядеть как замена одного нолика на единичку в битовой карте.