Salut,
Il y a sans-doute plusieurs techniques possibles. En ce qui me concerne, je te conseille de créer trois tableaux. Le premier contient les possibles zones de contamination. Le second contient les zones de contamination actives. Le troisième contient l'index de la zone dans lequel se trouve le joueur et le temps qu'il a passé dans cette zone.
Toutes les x minutes, tu remplies le second tableau de valeurs tirées au hasard du premier tableau. Tu utilises un timer afin de vérifier qu'un joueur se trouve dans une zone active dans le second tableau avec la fonction IsPlayerInRangeOfPoint. Si c'est le cas, tu enregistres dans le troisième tableau l'index de la zone (la ligne du second tableau qui concerne la zone) et tu enregistres le timestamp dans ce même troisième tableau (dans la seconde case). Lorsque ton timer ne détecte plus que le joueur est dans une zone active, tu vides le timestamp (ou tu récupères la différence dans une variable, à toi de voir). Si les deux minutes se sont écoulées et qu'il est toujours présent dans la zone (ou si la somme des différences est égale ou supérieure à deux minutes), tu l'infectes (à toi de voir ce que tu veux faire dans un tel cas).
Ce n'est peut-être pas la meilleure technique (j'utilise trois tableaux, on peut sans-doute faire moins en ajoutant une case au premier qui définit si la zone est active ou non, par exemple) mais ça a le mérite d'être une piste à suivre pour débuter le système.
Bonne chance et bonne journée,
Gzsume.