circle-info
alpha version all features and options may change dramatically or disappear

Okresowe_zamykanie_drzwi

📄 OkresoweZamykanieDrzwi.cs – okresowy lockdown drzwi + zdarzenia losowe

🎯 Cel

Ten komponent odpowiada za:

  • cykliczne zamykanie i blokowanie wszystkich drzwi na mapie SCP:SL,

  • odblokowanie ich po określonym czasie,

  • losowe interakcje z drzwiami – przy wejściu gracza istnieje mała szansa, że drzwi zostaną zablokowane lub zmienią stan.

System imituje sytuacje awaryjne i dodaje atmosferę niestabilności w placówce.


🧱 Struktura klasy

public class OkresoweZamykanieDrzwi
  • Używa PluginConfig do pełnej konfiguracji interwałów, czasu trwania i aktywacji.

  • Opiera się na System.Random oraz async Task.Delay() do harmonogramu.

  • Obsługuje dwa główne eventy:

    • RoundStart → uruchamia pętlę lockdownów

    • PlayerInteractDoor → losowa reakcja drzwi na interakcję


🔔 RoundStart → inicjacja harmonogramu

  • Sprawdza DoorLockdownEnabled

  • Uruchamia StartDoorLockdownScheduler() – nieskończoną pętlę, która:

    • czeka losową ilość sekund (config.DoorLockdownMinIntervalSecondsMax)

    • uruchamia procedurę ExecuteDoorLockdown()

    • działa tylko, gdy Round.IsRoundStarted == true


🔐 ExecuteDoorLockdown() – właściwy lockdown

  1. Sprawdzenie flagi isDoorLockdownActive

    • Zapobiega nakładaniu się wielu lockdownów.

  2. Wysłanie komunikatu CASSIE:

  3. Zamknięcie i zablokowanie wszystkich drzwi:

  4. Opóźnienie (config.DoorLockdownDurationSeconds)

  5. Odblokowanie drzwi:

  6. Logowanie całego procesu


🎲 PlayerInteractDoor → losowe efekty przy interakcji

Zawiera 5% szansy na losowe zachowanie drzwi:

  • Jeśli drzwi wymagają karty (RequiredPermissions != None):

    • Zostaną zablokowane (ServerChangeLock)

    • Ich stan zostanie odwrócony (NetworkTargetState = !TargetState)

    • Gracz otrzyma komunikat o zmianie


⚙️ Przykładowa konfiguracja config.yml

Last updated