Disaster Hub

Disaster Hub brings your Big Daddy disaster resources together in one in-game menu and can trigger disasters automatically from the weather. It controls Tornado, Hail Storm, Sea Storm, Blackout, Ice Age, Earthquake, and Flash Flood through their separate resources.

The disaster resources must be installed and running for their effects to work. Disaster Hub does not include those effects itself.

{:links-list}

INSTALLATION

  1. Copy the inner BigDaddy-DisasterHub resource folder into your server's resources folder. This is the folder containing fxmanifest.lua, settings.ini, the DLLs, bridge, and html.
  2. Enter your own product key in [licensing] as key1 in settings.ini. Keep the other supplied licensing and synchronization values unchanged.
  3. Install and start the disaster resources you want to use. Start your weather resource first if you want automatic weather triggers, and start BigDaddy-EAS if you want emergency alerts.
  4. Add ensure BigDaddy-DisasterHub after those resources in server.cfg.
  5. Configure permissions and weather options below, then restart the resource and reconnect before testing /DisasterHub.

DO NOT RENAME THE FOLDER. The resource must be named BigDaddy-DisasterHub.

{:is-danger}

Disaster resources

Menu option Resource name
Blackout BigDaddy-Blackout
Earthquake BigDaddy-Earthquake
Flash Flood BigDaddy-FlashFlood
Hail Storm BigDaddy-HailStorm
Ice Age BigDaddy-IceAge
Sea Storm BigDaddy-SeaStorm
Tornado BigDaddy-Tornado

Install only the disasters you plan to use. The automatic weather watcher checks whether a disaster resource is started or starting. The manual menu does not hide missing resources or check that they are running before sending a trigger. If it's not installed and running triggering that disaster just won't do anything.

CONFIGURATION

settings.ini

Put your product key under [licensing]. The options below belong under [settings]. Restart the resource after changing settings; reconnect to refresh the menu permission cached by the client.

“Supplied” refers to the configuration included in the inspected project. “Fallback” is the value used by the source when a setting is absent or cannot be parsed.

Setting Supplied / fallback Description
LinkWeather Not supplied / true Enables automatic weather monitoring. Add LinkWeather=false for manual menu use only.
UseWeather true / unused Present in the supplied file, but not read by the current source. Use LinkWeather instead.
WeatherCheckInterval 180000 / 180000 Delay between normal weather checks, in milliseconds. 180000 is three minutes. Some successful disaster branches return before this delay.
MinDisasterLength 30 / 30 Minimum randomly selected disaster duration, in seconds.
MaxDisasterLength 300 / 300 Exclusive upper limit for random duration. With the supplied range, durations are 30–299 seconds. Use positive whole numbers with the maximum greater than the minimum.
TornadoChance 0.1 / 0.1 Tornado threshold during thunder weather.
HailStormChance 0.3 / 0.2 Hail threshold in eligible weather branches.
IceAgeChance 0.1 / 0.1 Ice Age threshold during blizzard weather.
SeaStormChance 0.8 / 0.8 Sea Storm threshold during rain or thunder weather.
FlashFloodChance Not supplied / 0.2 Flash Flood threshold in eligible rain or thunder branches.
BlackoutChance 0.6 / 0.5 Blackout threshold in eligible weather branches.
UseAcePermissions Not supplied / false Enables ACE checks for opening the menu and manually triggering disasters. Without this setting enabled, every initialized player has access.
AcePermission Not supplied / command ACE object required when UseAcePermissions=true.
useEAS true / false Sends supported emergency alerts through BigDaddy-EAS.
UseScheduled Not supplied / false Reserved in the current source; scheduling is not implemented.
debug true / false Enables additional Disaster Hub diagnostic messages.
DesyncKey Supplied by the package Internal synchronization value. Leave the packaged value unchanged.

Chance values are decimal thresholds: 0.1 represents 10%, 0.5 represents 50%, and 1.0 represents 100% for a roll that reaches that check. Keep them between 0.0 and 1.0. Checks share rolls, follow a priority order, and sometimes return early, so these are not independent probabilities for every disaster on every check.

Setting names are case-insensitive. Spelling still matters. Edit existing settings rather than adding duplicate keys; the configuration reader uses the first occurrence.

ACE permissions

For an admin-only menu, add these options under the existing [settings] section:

UseAcePermissions=true
AcePermission=bigdaddy.disasterhub

Grant that ACE object to your administrator group in server.cfg:

add_ace group.admin bigdaddy.disasterhub allow

Your administrators must also belong to that group. See the permissions guide for principal setup. Restart Disaster Hub and reconnect after changing its permission settings.

USING THE MENU

  1. Enter /DisasterHub in game.
  2. Select one or more disasters.
  3. Press Trigger. The menu closes and the server triggers the selected resources with a randomly selected duration.

Press Cancel or Escape to close the menu without triggering anything.

Selection Allowed combinations
Earthquake Alone or with Blackout only.
Ice Age Alone or with Hail Storm and/or Blackout. Cannot combine with Tornado, Sea Storm, Flash Flood, or Earthquake.
Tornado, Hail Storm, Sea Storm, Flash Flood Can combine with each other and Blackout, subject to the Ice Age and Earthquake rules above.
Blackout Can accompany any otherwise valid selection.

At least one disaster must be selected. The menu disables conflicting choices, and the client and server also validate the combination.

Manual Tornado, Hail Storm, Sea Storm, or Flash Flood selections request THUNDER weather. Ice Age requests BLIZZARD. The client transitions weather over ten seconds. After the selected duration, these manual weather disasters request OVERCAST. Earthquake and Blackout alone do not request a weather change.

Manual Hail Storm lasts half the selected duration when combined with Tornado, Sea Storm, or Ice Age. Blackout receives an end event after the selected duration. Disaster Hub has no stop-all command or duration control in its menu.

Individual start commands

The source registers starttornado, starthailstorm, startseastorm, startblackout, starticeage, startearthquake, and startflashflood. In the inspected source, these commands pass no player to a permission check that rejects a missing player, so they do not start disasters. Use /DisasterHub for manual triggers.

AUTOMATIC WEATHER TRIGGERS

Automatic triggers require LinkWeather=true, a weather provider that the bridge can read, and running disaster resources.

Weather reported by the bridge Possible disasters
THUNDER Tornado, Hail Storm, Sea Storm, Flash Flood, and Blackout, depending on branch and chance checks.
RAIN Sea Storm, accompanying Hail Storm, Flash Flood, and Blackout, depending on branch and chance checks.
BLIZZARD Ice Age, accompanying Hail Storm, and Blackout.
Other weather No automatic disaster from this watcher.

Earthquakes are not started by the weather watcher. Any scheduling configured in a separate disaster resource is controlled by that resource.

The watcher generally remembers the weather that triggered a disaster and skips more rolls until the reported weather changes. It does not guarantee a disaster every three minutes. The current rain-to-Flash-Flood branch records THUNDER instead of RAIN, which can allow repeated checks while rain continues.

Weather bridge

Edit Config.WeatherBridge near the top of bridge/weather.server.lua.

Option Default Description
Enabled true Enables the bridge's suspend/resume handling. This does not disable the C# weather watcher; use LinkWeather=false for that.
Provider 'auto' Selects a provider automatically, or uses an explicit identifier from the table below.
RestorePreviousWeather true Used by the QB resume handler to request the saved weather when available.
Debug false Enables [WeatherBridge] messages, including failed export calls.

Automatic detection selects the first started resource in this order:

Resource Provider identifier Behavior implemented in this bridge
BigDaddy-Weather bigdaddy Reads GetWeather; sends suspend/resume weather-sync events.
qb-weathersync qb-weathersync Reads getWeatherState; attempts to save weather/dynamic state, disable dynamic weather, and restore state on resume.
cd_easytime cd_easytime Reads GetAllData; suspend/resume hooks are not implemented.
Renewed-Weathersync renewed Reads GlobalState.weather; suspend/resume hooks are not implemented.
vSync vsync Detected, but no current-weather getter or suspend/resume hooks are implemented.
vMenu vmenu Detected, but no current-weather getter or suspend/resume hooks are implemented.

These entries describe the local bridge implementation, not verified compatibility with every version of those resources. With no matching resource, the provider is none and no weather is returned. You can explicitly select none or configure custom.

For a custom provider, set Provider='custom' and fill the Custom fields in the same file:

  • SuspendEvent and ResumeEvent: server events to call with (enabled, reason).
  • SuspendExportResource and SuspendExportName: optional server export called on suspend.
  • ResumeExportResource and ResumeExportName: optional server export called on resume.
  • CurrentWeatherExportResource and CurrentWeatherExportName: server export used to obtain weather, called without arguments.

If both an event and export are configured for an action, both are called. The getter accepts a nonempty weather string or a table containing a recognized weather field. Return uppercase weather names such as RAIN, THUNDER, or BLIZZARD, since the watcher compares those exact strings.

Current weather-control limitation: Manual weather disasters call the bridge's Suspend event with false. The bridge requires true to suspend, so this call does not pause the active weather provider. The timer later requests resume and OVERCAST, rather than restoring the original weather through a complete suspend/resume cycle. Another weather resource may override Disaster Hub's requested weather.

{:is-warning}

Server exports

These exports belong to BigDaddy-DisasterHub and control or inspect the weather bridge:

Export Result / purpose
Suspend(enabled, reason) Pass true to request suspension or false to request resumption. Returns a boolean for bridge handling.
Resume(reason) Requests resumption. Returns a boolean for bridge handling.
IsSuspended() Returns the bridge's recorded suspension state.
GetSuspendedReason() Returns the recorded reason, or nil.
GetProvider() Returns the recorded active provider, or the current configured/detected provider.
GetCurrentWeather() Returns the provider's weather string, or nil if unavailable.

A successful return or recorded suspension state does not confirm the provider actually paused: some handlers are placeholders and export failures are caught by the bridge.

EMERGENCY ALERTS

Start BigDaddy-EAS and enable useEAS=true to send alerts through BigDaddy-EAS:BuildEAS. Eligible alerts are delayed by approximately 5–15 seconds. The Hub sends at most one alert for each manual trigger or weather-watcher pass, even when multiple disasters are selected.

For Tornado, Hail Storm, Sea Storm, Ice Age, and Flash Flood, use these keys under [settings]:

Disaster Agency key Alert-type key Message key
Tornado TornadoEASAgency TornadoEASType TornadoEASMessage
Hail Storm HailStormEASAgency (automatic), HailStormEASAgnecy (manual) HailStormEASType HailStormEASMessage
Sea Storm SeaStormEASAgency SeaStormEASType SeaStormEASMessage
Ice Age IceAgeEASAgency IceAgeEASType IceAgeEASMessage
Flash Flood FlashFloodEASAgency FlashFloodEASType FlashFloodEASMessage

The supplied file uses names such as TornadoEASMessageType, but the source reads TornadoEASType. Use the alert-type keys shown above for custom text to take effect. The manual Hail Storm agency key contains the spelling error shown in the table; set both spellings if you want the same custom agency for manual and automatic alerts.

For example:

useEAS=true
TornadoEASAgency=NATIONAL WEATHER SERVICE
TornadoEASType=TORNADO WARNING
TornadoEASMessage=A tornado has been spotted in your area. Please seek shelter immediately.

The supplied BlackoutEASAgency, BlackoutEASMessageType, and BlackoutEASMessage settings are not read by the Hub. The Hub also sends no Earthquake alert itself. Check the individual disaster resources for their own alert settings.

TROUBLESHOOTING

Problem What to check
/DisasterHub does not open Confirm the exact resource name, successful startup, your product key, and ACE access if enabled. Restart and reconnect after changing permissions. Check the server and F8 consoles for initialization errors.
A selected disaster has no effect Confirm its separate resource is installed and started. The menu can display disasters that are not installed.
Automatic disasters continue after setting UseWeather=false Add or update LinkWeather=false under [settings], then restart Disaster Hub.
No automatic disasters Confirm LinkWeather=true, a working weather getter, an eligible weather name, running disaster resources, and nonzero chance settings. Some weather branches prevent repeat rolls until the weather changes.
Weather changes back unexpectedly Review the manual suspension limitation above and whether your provider has real suspend/resume support.
Custom alert type is ignored Use TornadoEASType, for example, instead of the supplied TornadoEASMessageType name.
Hail agency customization works only automatically Set the manual key HailStormEASAgnecy as well as HailStormEASAgency.
Individual start commands do nothing Use the menu; the current individual command handlers fail the missing-player permission check.
Scheduled disasters never start UseScheduled has no implementation in the inspected source.

For weather diagnosis, enable Debug=true in Config.WeatherBridge. For Hub messages, use debug=true in settings.ini. See log collection when gathering information for support.