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

losowe_komunikaty_C.A.S.S.T.E

📄 LosoweKomunikaty.cs – losowe ogłoszenia systemowe przez C.A.S.S.I.E.

🎯 Cel

Ten komponent odpowiada za emitowanie losowych komunikatów fabularnych przez CASSIE w trakcie rundy, w losowych odstępach czasu. Tworzy atmosferę zagrożenia i dodaje immersji do rozgrywki.


🧱 Konstrukcja klasy

public class LosoweKomunikaty
  • Zależna od:

    • CustomPlugin – dostęp do roundStartTime i ogólnej logiki

    • PluginConfig – sterowanie z poziomu konfiguracji

Pola wewnętrzne:

  • komunikatyFabularne – dynamiczna lista, z której losowane są komunikaty

  • rng – instancja System.Random

  • timerSystem.Timers.Timer, cyklicznie uruchamia wysyłkę komunikatów


🔧 Inicjalizacja

public LosoweKomunikaty(CustomPlugin plugin, PluginConfig config)
  • Kopiuje komunikaty z komunikaty do komunikatyFabularne

  • Inicjalizuje Timer, ustawia zdarzenie Elapsed

  • Ustala pierwszy losowy interwał wywołania (via SetRandomInterval())


📝 Zawartość komunikatów (List<string> komunikaty)

Przykładowe linie:

  • system failure detected in CASSIE core

  • security protocol breach detected in SCP 1 7 3 cell

  • danger detected in secure system

Format: CASSIE-readable – bez polskich znaków, zapis słowny cyfr (1 7 3 zamiast 173).


⏱️ Losowanie interwału

  • Ustawia timer.Interval na wartość z przedziału:

  • Po każdym wysłaniu komunikatu interwał jest losowany na nowo – pełna losowość między komunikatami.


🔔 Obsługiwane zdarzenia

▶️ RoundStart

  • Jeśli RandomMessagesEnabled == false, nie uruchamia systemu.

  • W przeciwnym wypadku startuje timer.

⏹️ RoundEnd

  • Zatrzymuje timer, co zapobiega emisji po zakończeniu rundy.


📢 Emisja komunikatów (OnTimerElapsed)

  • API z NWPlugin RespawnEffectsController wywołuje dźwięk przez system C.A.S.S.I.E.

  • Parametry false, false:

    • brak ogłuszenia (isSubtitles = false)

    • brak synchronizacji (isHold = false)

Losowany komunikat jest wysyłany bez powtórek – system nie śledzi już wyemitowanych komunikatów (ale można łatwo dodać, np. przez komunikatyFabularne.Remove(komunikat)).


🧪 Wymagana konfiguracja (fragment config.yml)

Last updated