Add natural disasters system

Introduce a natural-disasters feature: add DisasterManager, an abstract NaturalDisaster base class, and four concrete implementations (Earthquake, Meteor, Thunder, Tornado). Integrate the manager into SpeedHG (property, initialization/start) so disasters run on a timed cycle with guards for game state, grace period and per-disaster validation. Implementations: Meteor spawns a non-destructive LargeFireball impact, Earthquake applies nausea/impulses and particles, Thunder triggers multiple lightning strikes with fire chance, Tornado creates a particle vortex and pulls nearby players (uses a coroutine for precomputation). Add localization keys for disaster warnings in en_US.yml. Safety/cancel logic and flight/timeout cutoffs included to avoid leaks or invalid triggers.
This commit is contained in:
TDSTOS
2026-04-04 07:13:39 +02:00
parent 8c2ab684bb
commit 1382de63fc
8 changed files with 712 additions and 0 deletions

View File

@@ -10,6 +10,7 @@ import club.mcscrims.speedhg.config.CustomGameSettings
import club.mcscrims.speedhg.config.LanguageManager
import club.mcscrims.speedhg.database.DatabaseManager
import club.mcscrims.speedhg.database.StatsManager
import club.mcscrims.speedhg.disaster.DisasterManager
import club.mcscrims.speedhg.game.GameManager
import club.mcscrims.speedhg.game.PodiumManager
import club.mcscrims.speedhg.game.modules.AntiRunningManager
@@ -83,6 +84,9 @@ class SpeedHG : JavaPlugin() {
lateinit var podiumManager: PodiumManager
private set
lateinit var disasterManager: DisasterManager
private set
override fun onLoad()
{
instance = this
@@ -124,6 +128,9 @@ class SpeedHG : JavaPlugin() {
perkManager = PerkManager( this )
perkManager.initialize()
disasterManager = DisasterManager( this )
disasterManager.start()
registerKits()
registerPerks()
registerCommands()