Ice Age

Ice Age creates dangerous cold conditions with increasing exposure, a blue screen effect, health loss, and stumbling. Players can escape the cold by entering a vehicle or a recognized interior. Nearby exposed NPCs also take damage and flee.

The resource includes a standalone command and Disaster Hub integration. Optional ox_lib text warnings tell players when they are freezing; damage and visual effects still run without those warnings.

Command permissions: The inspected source uses a shared permission flag instead of checking the player invoking /starticeage. Enabling ACE settings does not provide reliable per-player protection. See permissions.

{:is-warning}

{:links-list}

INSTALLATION

  1. Copy the inner BigDaddy-IceAge resource folder into your server's resources folder. Use the folder containing fxmanifest.lua, settings.ini, the DLLs, and bridge.
  2. Enter your own product key as key1 under [licensing] in settings.ini. Leave the supplied synchronization value unchanged.
  3. Start your weather resource first if you use one. Start ox_lib if you want freezing warnings, and BigDaddy-EAS if you want emergency alerts.
  4. Add ensure BigDaddy-IceAge to server.cfg. If you use Disaster Hub, start Ice Age before BigDaddy-DisasterHub.
  5. Restart the resource after configuration changes and reconnect before testing.

DO NOT RENAME THE FOLDER. Configuration and integration calls use the exact name BigDaddy-IceAge.

{:is-danger}

Disaster Hub, EAS, and ox_lib are optional integrations. The inspected source has no framework, inventory, database, or in-game control menu integration.

CONFIGURATION

settings.ini

“Supplied” means the value in the inspected package. “Fallback” is used when a setting is missing or cannot be parsed. Add optional settings under the existing [settings] section.

Section Setting Supplied / fallback Description
[licensing] key1 Your product key Enter your own product key here.
[settings] UseEAS true / false Enables standalone emergency alerts when BigDaddy-EAS is started.
[settings] EASTitle EMERGENCY ALERT SYSTEM / same Title passed to the standalone alert.
[settings] EASMessage See below Standalone cold-weather warning text.
[settings] UseAcePermissions Not supplied / false Enables the command's permission gate, subject to the shared-flag limitation below.
[settings] AcePermission Not supplied / command ACE object checked during player initialization when permission checking is enabled.
[settings] debug true / false Enables additional resource diagnostic messages where implemented.
[settings] DesyncKey Supplied by the package Internal synchronization value. Leave it unchanged.

The supplied EASMessage is:

Very dangerous sub-frigid temperatures affecting the area. Take shelter immediately.

If the setting is absent, the source uses Dangerous sub-frigid temperatures affecting the area. Take shelter immediately.

Setting names are case-insensitive. Edit existing keys rather than adding duplicates, and restart the resource to reload configuration.

There are no INI settings for exposure thresholds, damage, visual strength, ragdoll probability, recovery speed, storm duration, clothing protection, or automatic scheduling in this source.

Permissions

The supplied configuration omits UseAcePermissions, so the standalone command's permission gate defaults to disabled.

The source recognizes these settings:

UseAcePermissions=true
AcePermission=bigdaddy.iceage

An administrator-group grant for that object would be:

add_ace group.admin bigdaddy.iceage allow

However, the server stores permission in one shared hasPermission flag, overwritten as players initialize. The command reads this flag instead of checking its caller. Access can therefore depend on the most recently initialized player. Correcting the command handler is necessary for reliable per-player enforcement; another ACE grant does not fix it.

The standalone and Hub server event handlers also contain no permission checks. Disaster Hub checks access to its own menu separately, but that does not restrict Ice Age's standalone command.

COMMANDS

Command Purpose
/starticeage Starts a standalone cold event after successful resource initialization. No supported arguments.

The command selects a random duration from 45,000 to 119,999 milliseconds. Arguments are ignored, so /starticeage 300 does not request five minutes. There is no registered stop command or automatic scheduler in Ice Age itself.

The standalone server handler requests weather suspension through its bridge and broadcasts the selected duration. Clients transition to BLIZZARD over ten seconds. That transition counts toward the event duration; the player's exposure checks begin after the transition.

At the end of the duration, player exposure checks stop and the blue effect fades. Once the fade finishes, the client requests a ten-second transition to OVERCAST. The server resumes its weather bridge at the end of the selected duration, so the provider can resume before the visual fade and final client weather request finish.

SURVIVING THE COLD

Exposure and damage

While the event is active, the client checks the player approximately once per second. Being outside a vehicle with no recognized interior adds one exposure point per check. These are accumulated exposure points, so returning outside before fully recovering resumes from the remaining value.

Exposure Effect while outside
Below 10 Exposure builds without scripted cold damage.
10 and above Applies the glasses_Darkblue screen effect. Its strength starts at zero at 10 points and increases by 0.05 per point, capped at full strength at 30.
20–29 Removes 1 health per exposure check and requests the warning “You are freezing! Find shelter soon!”
30 and above Removes 3 health per exposure check and requests “You are freezing to death! Find shelter soon!”
40 and above Continues the health loss and adds a 30% chance per check of a three-second ragdoll.

These values are fixed in the source. Cold damage directly reduces entity health; the code does not check clothing, warmth items, armor, or a framework temperature system.

Shelter and recovery

Any vehicle or recognized interior counts as shelter. An outdoor roof or canopy alone does not: this resource has no overhead-cover ray check. Whether a custom building counts depends on its interior setup.

While sheltered, the scripted player cold damage and ragdoll checks stop immediately. The warning is hidden, exposure falls by one point per second to a minimum of zero, and the blue effect weakens with exposure. Lost health is not restored by shelter or by the storm ending.

When the event ends, the screen effect fades by 0.05 per step, approximately once per second, before being cleared. A strong effect can therefore remain briefly after the server's event timer expires.

Warning messages

Warnings use ox_lib TextUI at the bottom center of the screen, with white text on a cyan background. Ice Age checks that ox_lib is started before showing or hiding text. Without it, the cold effects still apply but these messages are skipped.

The source repeatedly requests the severe warning after 30 exposure points because its second display flag is never set. It also calls the shared hideTextUI export while sheltered and at event end, which can interfere with another resource using the same TextUI.

Nearby NPCs

After more than 15 seconds have elapsed from the client event's start, a separate loop checks nearby NPCs approximately once per second. It affects living non-player peds owned by the local client and within 100 meters.

Eligible NPCs outside vehicles and recognized interiors lose a random 1–3 health per pass and are told to flee. They do not use the player's gradual exposure thresholds. The NPC loop remains active through the end-of-event visual fade, then stops.

Ice Age does not implement vehicle damage or active custom wind audio in the inspected source.

DISASTER HUB INTEGRATION

Start BigDaddy-IceAge before BigDaddy-DisasterHub, then select Ice Age in /DisasterHub. The Hub can also request Ice Age during eligible BLIZZARD weather checks. Configure IceAgeChance and weather monitoring in the Hub, not in Ice Age's settings.

The Hub calls BigDaddy-IceAge:StartIceAgeHub with a duration in seconds. This path starts the cold routine without Ice Age forcing its own weather, calling its own weather bridge, or sending its standalone EAS alert. The exposure checks can begin immediately because Ice Age skips its own ten-second weather transition.

In the Hub menu, Ice Age can run alone or with Hail Storm and/or Blackout. It cannot combine with Tornado, Sea Storm, Flash Flood, or Earthquake. See the Disaster Hub documentation for its weather and alert handling.

Both resources register starticeage. Avoid relying on that shared command when both are running; use the Hub menu for Hub-managed events.

Server integration events

Server event Argument Behavior
BigDaddy-IceAge:StartIceAge Integer duration in seconds Standalone path with weather bridge and optional EAS. Pass 0 for the random duration.
BigDaddy-IceAge:StartIceAgeHub Integer duration in seconds Cold effects without Ice Age's own weather or EAS handling. Pass 0 for the random duration.

Call these from authorized server logic. Neither handler checks caller permissions or rejects overlapping events. For positive standalone durations, use at least ten seconds: the server waits ten seconds before calculating its remaining delay. A ten-second standalone event leaves effectively no time for exposure after its weather transition.

WEATHER BRIDGE

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

Option Default Description
Enabled true Enables bridge suspend/resume handling. Disabling it does not prevent standalone clients from requesting BLIZZARD and OVERCAST.
Provider 'auto' Detects the first started provider in the order below, or uses an explicit identifier.
RestorePreviousWeather true Used by the QB resume handler to request saved weather when available.
Debug false Enables [WeatherBridge] diagnostics, including failed export calls.
Detection order / resource Identifier Implemented behavior
BigDaddy-Weather bigdaddy Reads GetWeather; sends weather-sync suspend/resume events.
qb-weathersync qb-weathersync Reads weather/dynamic state; attempts to disable dynamic weather and restore saved state on resume.
cd_easytime cd_easytime Reads GetAllData; suspend/resume hooks are placeholders.
Renewed-Weathersync renewed Reads GlobalState.weather; suspend/resume hooks are placeholders.
vSync vsync Detection only; no stock weather getter or working suspend/resume hooks are supplied.
vMenu vmenu Detection only; no stock weather getter or working suspend/resume hooks are supplied.

This table describes the local bridge implementation, not tested compatibility with every provider version. With no detected resource, the provider is none. You can also explicitly select none.

For another integration, select Provider='custom' and fill the Custom fields:

  • SuspendEvent and ResumeEvent: server events called with (enabled, reason).
  • SuspendExportResource and SuspendExportName: optional server export called on suspend with the same arguments.
  • ResumeExportResource and ResumeExportName: optional server export called on resume with the same arguments.
  • CurrentWeatherExportResource and CurrentWeatherExportName: getter called without arguments, returning a weather string or a table with a recognized weather field.

If both an event and export are configured for an action, both run. The getter does not add automatic cold events; Ice Age has no weather watcher.

The bridge exposes server exports Suspend(enabled, reason), Resume(reason), IsSuspended(), GetSuspendedReason(), GetProvider(), and GetCurrentWeather(). Pass true to Suspend to request suspension. State and success results describe bridge handling, not proof that the provider paused: some handlers are placeholders and export failures are caught. The getter returns nil when weather is unavailable.

EMERGENCY ALERTS

The supplied settings enable standalone alerts:

UseEAS=true
EASTitle=EMERGENCY ALERT SYSTEM
EASMessage=Very dangerous sub-frigid temperatures affecting the area. Take shelter immediately.

Approximately ten seconds after the standalone server trigger, Ice Age sends the title and message to BigDaddy-EAS:BuildEAS, with an empty alert-type argument. It only sends the alert if EAS is started.

Hub-triggered events skip this standalone alert. Configure the Hub's Ice Age EAS settings for that path instead.

TROUBLESHOOTING AND LIMITATIONS

Problem What to check
/starticeage is unavailable Confirm the exact resource name, product key, and successful initialization. The command is registered after synchronization succeeds. Check the server and F8 logs.
Command permissions seem inconsistent The handler uses a shared permission flag. It needs a caller-specific check; changing ACE grants alone does not fix this.
Players take damage without warnings Start ox_lib for the optional TextUI warnings. Damage and visual effects do not require it.
A roof does not protect a player Only a vehicle or recognized interior counts as shelter. There is no overhead-cover test.
Damage returns quickly after leaving shelter Exposure decreases gradually while sheltered; it does not reset immediately.
Blue tint remains after the event The normal recovery sequence fades it out after the duration expires. Health lost during exposure is not restored.
NPCs are still losing health during the fade The NPC loop stops after the visual fade finishes.
Weather resumes or changes unexpectedly Review the provider's implemented hooks and the separate server timer, client fade, and final OVERCAST request.
No EAS alert For standalone use, check UseEAS, EAS's started state, and the ten-second delay. For Hub use, check the Hub's settings.
Blizzard weather does not automatically start cold damage Ice Age has no weather watcher. Configure automatic events in Disaster Hub.

There is no overall active-event guard. Repeated triggers can overlap player damage loops, shared NPC-loop state, text, and visual effects. Players joining after a broadcast are not sent the active event's remaining duration. The client has no explicit death check in its exposure loop, so the event can continue across player death or respawn until its timer ends.

There is no resource-stop cleanup handler to explicitly clear the screen modifier, hide TextUI, or resume weather when interrupted. Normal completion performs those actions through the client recovery sequence and server bridge timer.

Enable debug=true in settings.ini and Debug=true in the weather bridge when gathering diagnostics. See the log collection guide.

This page describes the inspected source with manifest version 1.0.0. The packaged DLLs have not been exercised on a live FiveM server and may differ if built from another source revision.