Para começar a criação deste NPC, vou te apresentar uma função nativa Lua que guarda o tempo em segundos desde a criação da linguagem, essa função se chama os.time().
Levando em consideração que você quer comparar dois intervalos de tempos distintos que distam em quatro horas. Precisamos armazenar o tempo local acrescido de quatro horas em segundos em uma variável, no caso, uma célula em seu banco de dados que você, comumente, chama por storage. Então é só chamar essa variável em uma comparação entre o valor dela e o tempo local
Você teria, então, que trabalhar com dois storages: Um que irá marcar o tempo e outro que irá marcar o estado das missões que o NPC dá.
Vamos criar um algoritmo para a inteligência artificial do seu NPC:
AO FALAR "HI" OR "HELLO"
CHECAR A VARIáVEL MISSION
SE MISSION é -1 ENTãO
O NPC DEVE FALAR SOBRE A PRIMEIRA MISSãO
SE MISSION é 1 ENTãO
O NPC DEVE PERGUNTAR SE A MISSãO Já FOI CUMPRIDA
SE MISSION é 2 ENTãO
CHECAR SE A VARIáVEL TEMPO é MENOR QUE OS.TIME()
SE SIM
O NPC DEVE FALAR SOBRE A SEGUNDA MISSãO
DO CONTRáRIO
O NPC DEVE AVISAR QUE O JOGADOR AINDA NãO PODE FAZER A SEGUNDA MISSãO
Simples assim.
Espero que isso ajude no desenvolvimento do seu NPC.