GCMod

Exports and Statebags

Public API contracts (exports/statebags) for gcm_storms.


Exports

OnEnterZone() (client export)
  • Context: client
  • Signature:
lua
exports['gcm_storms']:OnEnterZone()
  • Behavior:

    • Applies storm-zone weather and environment effects.
    • Sets LocalPlayer.state.inStormZone = true.
  • Failure cases:

    • No active storm marker context: effect still applies, but gameplay logic may not match current storm state.

Usage example

lua
RegisterCommand('forceStormWeather', function()
    exports['gcm_storms']:OnEnterZone()
end)

Statebags

Player(state).stormData
  • Owner: server writes (Player(source).state:set), client reads.
  • Observed writes:
    • On storm join: sets { id, name, stormID, kills = 0, lives = playerlives }.
    • On kills/deaths: updates kills and lives.
    • On leave/remove: sets nil.
  • Impact: Drives HUD lives/kills and storm membership logic.

Read example

lua
local data = LocalPlayer.state.stormData
if data and data.stormID then
    print(('In storm %s with %s lives'):format(data.stormID, data.lives))
end

Write example

lua
-- Server-side custom adjustment example
local current = Player(source).state.stormData
if current then
    Player(source).state:set('stormData', {
        stormID = current.stormID,
        name = current.name,
        kills = current.kills + 1,
        lives = current.lives
    }, true)
end
LocalPlayer.state.inStorm
  • Owner: client writes.
  • Observed writes:
    • true when player enters active storm phase.
    • false when player leaves storm.
  • Impact: Controls local zone loops, HUD visibility, and death handling.

Read example

lua
if LocalPlayer.state.inStorm then
    -- run storm-only gameplay logic
end

Write example

lua
-- Client custom override example
LocalPlayer.state.inStorm = false
LocalPlayer.state.inStormZone
  • Owner: client writes.
  • Observed writes:
    • true on zone enter.
    • false on zone leave.
  • Impact: Determines whether out-of-zone damage should be applied.

Read example

lua
if not LocalPlayer.state.inStormZone then
    print('Player is outside the safe storm ring')
end

Write example

lua
LocalPlayer.state.inStormZone = true