Change delay for millis

You could make a struct

struct tableStruct
{
  int pin,
  int value,
  unsigned long interval,
};

tableStruct table[] = 
{
  { relaylock, HIGH, 0 },
  { relayindicators, HIGH, 0 },
  { relaybeep, HIGH, 0 },
  { relaywindowup, HIGH, 150 },
  ...
};

With variables to control everything:

bool enable;
int index;

unsigned long previousMillis;
unsigned long interval;

With a millis() timer in the loop()

unsigned long currentMillis = millis();

if( enable)
{
  if( currentMillis - previousMillis >= interval)
  {
    previousMillis = currentMillis;
  
    digitalWrite( table[index].pin, table[index].value);
    interval = table[index].interval;

    index++;
    if( index >= sizeof(table) / sizeof(tableStruct))
    {
      enable = false;
    }
  }
}

Starting the table can be done with:

enable = true;
index = 0;
previousMillis = millis();

When a few items in the struct have a interval of zero, they will be executed one by one every time the loop() runs. That will work, even with a interval of zero.