Browse docs

Changelog

Full change history for Sky Ambulance Job.
Latest

Version 2.11.0

Highlights

  • Body armor now absorbs bleeding and pain — hits that drop GetPedArmour skip injury effects, so vests actually protect against gunshot bleeds. Headshots and leg shots bypass armor naturally and still bleed.
  • Knockout respawns now run through a distinct code path — players keep their items, the client-side revive flow runs correctly, and the server-side death snapshot is cleared.

Notable Changes

  • Fixed intermittent attempt to call a nil value (field 'getDeathInjuryFromHash') at resource start by hoisting the injury helpers into the Sky.Ambulance namespace and deferring gameEventTriggered registration until the resource is fully loaded.
  • Fixed deathscreen router guard blocking navigation to the hospital spawn route; hospital spawn state now initializes exactly once and prevents the hospital selector from opening multiple times.
  • Fixed dangling carry sessions on knockout wakeup — ResetCarryState now also runs on the knockout branch of deathscreen:respawned, so carried players wake up detached with no stuck carry animation.
  • Added Config.InjuryThresholds.respectArmor toggle controlling the new armor-absorption behaviour.

Other Changes

  • Deathscreen keyboard toggle hint is now only shown when Config.EnableKeyboard is enabled.

Version 2.10.0

Highlights

  • Injury data now persists across reconnects — original death cause, attacker info, weapon, bone zones, and fractures are fully restored from database instead of re-randomized.
  • Wheelchair timer now persists across reconnects (matching existing crutch pattern) with full cleanup on resource stop.
  • Death screen is now fully ESC-proof with multiple layers of protection (NUI capture-phase blocking, router guard, focus re-enforcement every frame, and SetFadeOutAfterDeath disabled).
  • Pain screen effects now use server-side pain level threshold instead of HP loss, fixing unreliable detection with high max health.

Notable Changes

  • AI medic now falls back to hospital spawn when no bed is available, and force-revives on entity-missing scenarios.
  • Duplicate revive triggers (knockout timer, deadline loop, AI medic force-revive) no longer fire simultaneously — reviveInProgress guard blocks concurrent calls.
  • Knockout respawn paths now route through triggerDeathscreenRespawn for correct hospital coords resolution.
  • Falling-death detection now uses ground proximity checks instead of IsPedFalling, and forces ragdoll physics for airborne deaths.
  • Player loading now waits for framework-specific spawn (ESX/QB/QBox) before restoring state or equipping mobility aids.
  • Database migrations must complete before player state is restored during connections and resource restarts.
  • Added 500ms debounce to status:refresh event in damage handler to prevent event pool overflow during rapid damage.
  • Radial menu actions now blocked when player is dead.
  • Self-medication usage now blocked inside vehicles.
  • Added configurable Config.PainEffects.minPainLevel threshold for pain screen effects.

Other Changes

  • Fixed LocalPlayer.state.isLoggedIn used in server-side code causing nil errors on QB/QBox.
  • Fixed wheelchair nil vehicle check.
  • Fixed pain class notification firing below minimum pain threshold.
  • Removed redundant manual entity freezing during death sequence.
  • Removed blood_pressure from suicide injury definition.
  • Added ForceCleanupWheelchair export for vehicle pull ejection scenarios.

Version 2.9.0

Highlights

  • Added auto database migration (Config.AutoExecuteQuery) — missing tables and columns are created automatically on resource start.
  • Added configurable force-revive when AI medic can't reach a downed player (stuck, drive timeout, or mission timeout).
  • Crutch timer and death timeout now persist across reconnects via database storage.
  • Added fuelType config option for ambulance vehicle catalog entries (uses sky_base fuel bridge).

Notable Changes

  • Death screen UI now uses a handshake between Vue app and client to ensure NUI is fully mounted before sending payloads.
  • Resource initialization now waits for database migrations to complete before broadcasting beds, registering jobs, and loading stretcher overrides.
  • Migration logic now uses centralized Sky.DB.Migrate() from sky_base.
  • VIP vehicle protection now limited to automobiles only — helicopters, planes, and bikes no longer block fatal damage.
  • Players ejected from non-automobiles or destroyed vehicles now fall to the ground before death animation plays instead of floating.
  • Refund identifier resolution now handles varied formats and prefixes (e.g. charX:).
  • Added dedicated "suicide" death cause for forced kills.
  • Refund list callback now uses batched item lookups to eliminate N+1 query pattern.
  • removeItems config now supports boolean toggles in addition to table definitions.
  • Revive exports now accept both string reason and structured context table payloads.

Other Changes

  • Fixed flexbox constraints and overflow issues across management views for consistent scrolling.
  • Removed blood_pressure condition from drowning and thirst death injuries.
  • Reordered resource dependencies in fxmanifest to load sky_jobs_base before sky_base.
  • Added safety-net re-broadcast of death state to handle edge cases where the initial frame is missed.
  • Added debug logging throughout death snapshot and item stripping flow.

Version 2.8.0

Highlights

  • New NUI bleeding screen overlay with procedurally generated veins, pulsing, and intensity driven by bleed level and blood volume.
  • Self-diagnose feature: medics can open diagnose UI on themselves via /selfdiagnose or radial menu.
  • AI medic override hook (Config.Functions.onAiMedicRequest) for external dispatch interception/blocking.
  • Death injury profiles reworked with granular bleeding, pain, and vitals per cause.

Notable Changes

  • Configurable vehicle damage modifier for occupants (Config.VehicleDamageModifier).
  • AI medic now adds configurable extra seconds to bleedout timer when requested.
  • AI medic wait timer: button becomes available only after configurable delay.
  • AI medic button now shows clear status messages when disabled.
  • Revive exports now accept both string reason and structured context table payloads.
  • New client exports: setAiMedicState, getAiMedicState, isAiMedicActive.
  • New exports for death-timeout management (stop, override, query remaining duration).
  • New bleeding blacklist for specific weapons (stungun, raypistol).
  • Added Config.LiveWoundBleedingClass to set initial bleeding intensity per damage cause.
  • Fractures for conscious players via Config.LiveDamageFractures with per-zone chances.
  • New stretcher treatment animation config for treating on-stretcher patients.
  • Stretcher workflow refined with automated carry-to-stretcher transitions and cleanup.
  • Localized fatal death state title/subtitle across all 9 languages.

Other Changes

  • 3-second grace period after revival to prevent death screen retrigger from sync delay.
  • Blade weapon classification list separated from blunt trauma.
  • Fire damage no longer misclassified as gunshot.
  • Knockout no longer triggers if lethal weapon damage occurred within 15s before fist KO.
  • Dead players no longer take damage or ragdoll while dead.
  • Death protections now reset correctly on revive to avoid redeath loops.
  • /kill now triggers proper death state instead of knockout, with admin permission support.
  • Existing injuries are preserved when patient profile is re-registered.
  • Diagnose UI now closes for all observing medics when patient is revived.
  • Diagnose camera now uses correct overhead view for stretcher patients.
  • Fixed paid respawn taking money but not reviving.
  • Fixed AI medic nil crash when clicking respawn with AI medic disabled.
  • Fixed hospital respawn teleporting to death position instead of hospital.
  • Fixed respawn failure after payment caused by AI medic cancel crash.
  • Fixed duplicate hospital blips when sky_jobs_base is running.
  • Hospital blip now uses sprite 61 instead of 280.
  • Dead-on-reconnect now waits for framework spawn before applying death state.
  • NUI bleeding overlay now sends messages only when state actually changes.
  • Added locale strings for self-diagnose and blade weapon classification.
  • Split client modules into focused files (knockout, vehicle impact, healing, fractures).

Version 2.7.0

Highlights

  • Server-side job check and range validation on stretcher/bodybag events to prevent exploit abuse.
  • Added onBeforeDeath hook export to allow external scripts to block death screen.
  • Added Vehicle Impact Protection with configurable low-speed death thresholds.
  • Player clothing preserved/restored across revive and respawn.

Notable Changes

  • Entity revalidation before all AttachEntityToEntity calls with bone fallback and 5-second load timeouts.
  • Nil guards on all joaat() calls to prevent config-related errors.
  • Added preventAutoRespawn config to unconditionally block auto-respawn on bleedout.
  • Added server-side stretcher module with respawn:hospital ActionHook.
  • Bodybag/carry animations and attachments are now fully configurable.
  • Trunk stretcher refactored for better vehicle detection and attachment.
  • Vehicle pull now works on dead players in vehicles.
  • Vehicle pull sync now server-authoritative.
  • Added detailed Doctor NPC revive failure messages.
  • Unconscious voice mode now supports none, listen (default), full.

Other Changes

  • Deathscreen NUI callback wrapped in pcall to prevent "Failed to fetch" errors.
  • Startup detection/warnings for conflicting medical resources.
  • Fixed players stuck unrevivable after bleedout until restart.
  • Fixed paid hospital respawn taking money without reviving.
  • Female peds now use 200 max health instead of GTA default 175.
  • breakWindow now triggers only on vehicle entity owner.
  • Helicopters now use separate stretcher pickup/interact distances.
  • Fixed AI medic drive-task retarget loop; now retargets only when player moves >30 units.
  • Fixed early respawn not cancelling AI medic.
  • AI medic payment now supports fallback to secondary account.
  • Added Save buttons to Reports and Conditions apps.
  • Fixed Conditions app not closing after tablet disappears.
  • Fixed draft-state leak between Reports and Conditions.
  • Fixed patient card stretching to full height with single entry.
  • Reduced frequency of background status-effect loops for performance.
  • Player name lookups now use PlayerCache.
  • Added Finnish translation.
  • Added locale keys for revive failure reasons across all languages.

Version 2.6.0

Highlights

  • Added ActionHooks event system with onAction export for carry, crutch, death, hospital, wheelchair, x-ray, stretcher, billing.
  • Added insurance copay calculation export for external billing integrations.
  • Added ox_target support for direct diagnosis, billing, and tablet access.

Notable Changes

  • Added billing enabled toggle.
  • Stretcher editor improved with dynamic camera scale/FOV by vehicle dimensions.
  • Added helicopter-specific preview logic in stretcher editor.
  • Deathscreen now uses ticketed closure to avoid UI persistence after spawn.
  • Server now closes diagnosis UI if patient disconnects.
  • Re-enabled bleeding, pain, fractures, and bed respawning by default.

Other Changes

  • Diagnose animations now support scenario and dict/clip alternatives.
  • Fixed helicopter trunk stretcher coordinates.
  • Refined body-point interaction coordinates and camera positioning.
  • Improved billing/action button UI styling.
  • Added Chinese locale keys for new features.

Version 2.5.0

Highlights

  • Critically low hunger/thirst now blocks health regeneration and blood-based healing.
  • Added optional revive expiration that permanently blocks recovery after bleedout.
  • Auto-respawn blocked when medic is within configurable radius.
  • Billing overlay integrated into diagnosis view.

Notable Changes

  • Knockout auto-respawn logic refined with immediate deadline revive and fallback scheduling.
  • Dead medics are now excluded from online medic count.
  • Patient state (carry, stretcher, bed, body bag) now fully cleared on revive/admin heal.
  • Insurance can now be renewed by selecting same provider.
  • Improved death-state persistence across reconnect/resource restart.
  • Job/duty checks now include ready state.
  • Table component now has sticky headers and configurable row limits.

Other Changes

  • Fixed possible deathscreen lock when knockout deadline elapsed.
  • Disabled G-key interactions while on death screen.
  • Improved TxAdmin heal payload parsing.
  • Patients are detached from stretcher before carry.
  • Locale sync now includes retry mechanism.
  • Improved player-name retrieval robustness.
  • Centralized server-side carry-state reset.
  • Added Chinese translation.

Version 2.4.0

Highlights

  • Diagnose and treatment animations are now configurable.
  • Revive checklist now covers low blood sugar, low oxygen, active bleeding, dehydration.
  • Added blood pressure medication as treatment step.
  • Knockout auto-respawn timer now dynamically adjusts by medic availability.

Notable Changes

  • Clothing now auto-restored after revival.
  • Players can no longer bill themselves.
  • Improved job-access state synchronization.
  • Late-registered jobs are now recognized regardless of start order.
  • Improved ventilation minigame pointer-event handling.
  • Server-side billing validation now checks target existence.

Other Changes

  • Hotbar now supports horizontal scrolling.
  • Fixed health calculation when GetEntityMaxHealth returns invalid values.
  • Fixed inverted self-check logic in billing target selection.
  • Updated README links and added suggestion board link.
  • Removed incorrect comment from German translation file.

Version 2.3.0

Highlights

  • Added Helicam feature.
  • Added panic and ping system.
  • Added major performance improvements.

Notable Changes

  • Improved dispatch notification.
  • Vehicle liveries and extras are now configurable in vehicle shop.

Other Changes

  • Added visible tablet prop animation while tablet is open.
  • Added additional fixes and improvements from detailed changelog.

Version 2.2.0

Highlights

  • Added prop system in vehicle trunk UI for medic prop placement and cleanup.
  • Reworked tablet chat app with cross-job chats and self-managed group chats.
  • Added option to respawn player in hospital bed.
  • Added option to revive player in hospital bed via NPC doctor.

Notable Changes

  • Added configurable command permissions.
  • Added /removemobilityaid [playerId].
  • Added automatic regeneration on knockout damage when knockout does not trigger.
  • Added self-heal HP items independent of bleeding system.
  • Added back grade change/bonus notifications.
  • Added confirmation modal on employee actions in boss menu.
  • Improved stretcher collision handling.

Other Changes

  • ESX heal command now clears pain/bleeding state.
  • Added Serbian translation.
  • Fixed mixed bodycam/dashcam views at long distances.
  • Fixed tablet video recordings.
  • Fixed and improved translations.
  • Fixed reports app stuck state on close.
  • Fixed society not receiving NPC doctor money when configured.
  • Fixed refund system item recording accuracy.
  • Fixed tablet map app performance.
  • Fixed tablet icon positioning on long text.
  • Fixed NPC spawning issues.
  • Fixed second-job radial actions (treat/stretcher).
  • Added Config.Functions.HasCommandPermission server function/export for centralized permission checks.

Version 2.1.0

Highlights

  • Added back off-duty job logic.
  • Added option to route NPC doctor spending into faction funds.

Notable Changes

  • Added config options to disable minigames.
  • Added option to disable blood pressure scenarios on conscious patients.

Other Changes

  • Fixed high blood pressure not healable with blood pressure medication.
  • Fixed occasional damage on player join.
  • Removed interaction at hospital blip position.

Version 2.0.0

Highlights

  • Added brand-new MDT tablet system as central in-game interface.
  • Added integrated tablet apps for dispatch, live map, team chat, reports, patient records, camera/gallery, and calendar.
  • Added multi-job support for running multiple medical factions in one system.
  • Added bodycam and dashcam support with recording capabilities.

Notable Changes

  • Added dispatch workflow in tablet for receiving, managing, and tracking calls.
  • Added live map app to view units, vehicles, and active dispatches.
  • Added separated job data flows so departments can keep independent vehicles, employees, and records.
  • Added automatic retention of the latest recording window.
  • Added gallery integration for saved recordings.
  • Added public forms system for player submissions (job applications, complaints).
  • Added tablet-side review flow for form submissions.
  • Added faction vehicle sellback management flow.

Other Changes

  • Refactored diagnose and treatment systems for higher stability and faster runtime behavior.
  • Fixed rare healing bugs in medical flow.
  • Added blood pressure medication to treatment options.
  • Reorganized configuration structure for cleaner and faster customization.
  • Introduced sky_jobs_base integration as the shared foundation for job systems.

Version 1.8.0

Highlights

  • Added major performance improvements.
  • Added radial option to pull unconscious patients out of vehicles with animation.
  • Added support for multiple vehicle and helicopter garages per hospital.

Notable Changes

  • Added /stopdeathtimeout [playerId] command.
  • Added Discord logs for revive command usage.
  • Added option to disable death timeout on knockout.
  • Added onReviveCommand hook.

Other Changes

  • Death timeout no longer triggers on revive command.
  • Added Polish translation.
  • Fixed member list scrolling in management dashboard.

Version 1.7.0

Highlights

  • Added death timeout system.
  • Hospital creator, bed, and stretcher override data now save to database instead of json.

Notable Changes

  • XRay, NPC doctor, and deathscreen now show character names instead of Steam names.
  • Added config support to define which vehicles include a stretcher.
  • Bodybag delivery no longer requires a stretcher; carrying is supported.
  • Added configurable knockout weapon list.
  • Renamed prop stretcher to sky_stretcher to avoid conflicts.

Other Changes

  • Added Dutch translation.
  • Fixed knockout bugs (missing deathscreen, missing post-revive damage lock).
  • Fixed broken diagnose locale keys such as open_wound.
  • Fixed deathscreen reset when pressing ESC.
  • Fixed dead-on-rejoin issue after AI medic treatment.
  • Fixed vehicle keys not removed after parking.
  • Fixed non-static NPC behavior in some cases.
  • Fixed pulse and glucose translation issues.
  • Fixed duty error on leave for QB and QBox.
  • Removed custom bandage clothing due to crashes on some servers.

Version 1.6.0

Highlights

  • Added Refund Menu.
  • Added support for loading item images from inventory into storage UIs.

Notable Changes

  • Players are now forced off duty when leaving the server.
  • Added optional salary payment intervals while on duty.

Other Changes

  • Fixed issue where players could close deathscreen with ESC.
  • Fixed buggy interaction points on multi-hospital setups.

Version 1.5.0

Highlights

  • Added major server-side performance improvements for larger servers.
  • Added configurable injury threshold for bleeding and pain so minor hits do not trigger it.

Notable Changes

  • Improved garage design.
  • Fixed boss-menu duty status on QB and QBox.
  • Fixed duty time counting and salary calculation on QB and QBox.

Other Changes

  • Added bonus notification when player receives bonus.
  • Removed debug print.

Version 1.4.0

Highlights

  • Added limited storage and locker capacities.
  • /revive can now be used without player id for self revive.
  • QB and QBox now use integrated duty systems.
  • Added configurable delay before requested AI paramedic arrives.

Notable Changes

  • Added storage transfer status responses.
  • Fixed wrong stretcher positions on some addon vehicles.
  • Fixed body bag not disappearing after revive.
  • Fixed billing issues.
  • Fixed boss-menu issues on QB.
  • Added related compatibility updates through base integration: qs-banking, ox_inventory CanCarryItem, QB/QBox duty integration, qs-inventory, jacksam inventory, quasar billing, jacksam billing.

Other Changes

  • Salaries can now be below 1000.
  • Fixed cloakroom translations.
  • Fixed insurance terminal NPC heading.
  • Fixed issues with NPC freeze state.
  • Fixed early wheelchair exit exploit.
  • Fixed NUI focus loss in diagnose view.

Version 1.3.1

Highlights

  • Added config option to set max on-duty medics allowed for AI paramedic usage.
  • AI paramedic can no longer be used on fatal injuries.

Notable Changes

  • Pain effects are now removed when using revive command.
  • Fixed QBcore issue where model changed to NPC on death.
  • Fixed female diagnose clothing config.
  • Fixed early-respawn no-medics requirement option.

Other Changes

  • Added French translations.

Version 1.3.0

Highlights

  • Added Health Insurance system.

Notable Changes

  • Disabled bleeding and pain on fist fights, drowning, and vehicle crashes while seated.
  • Added configurable hunger/thirst visual effects with threshold.

Other Changes

  • Fixed occasional teleport on revival.
  • Fixed occasional vehicle ejection on revival.
  • Fixed translations.

Version 1.2.0

Highlights

  • Added Discord death logs.
  • Added vehicle access restrictions per vehicle and role via boss-menu permissions.

Notable Changes

  • Vehicle trunk doors now open while accessing trunk.
  • Revive now restores hunger and thirst to 100 instead of 50.

Other Changes

  • Fixed billing errors.

Version 1.1.2

Highlights

  • NPC doctor now also treats fractures, pain, and bleeding.
  • Callable AI medic now heals fractures.
  • /revive now heals fractures.

Notable Changes

  • Bleeding and pain no longer trigger in blocked dimensions (FFA, etc.).

Other Changes

  • Fixed doctor unavailable issue when self-healing at NPC doctor.
  • Fixed stretcher collision issue that could flip vehicles or props when occupied.

Version 1.1.1

Highlights

  • Fixed bugs from previous update.

Notable Changes

  • No additional notable changes documented.

Other Changes

  • No additional changes documented.

Version 1.1.0

Highlights

  • Added bleeding and pain system.
  • Added death and body bag system.

Notable Changes

  • Added optional public treatment mode so non-medics can diagnose/treat with rescue backpack.
  • Wound treatment and pain medication are now usable by all players.

Other Changes

  • Renamed item bandage to gauze to avoid conflicts.
  • Conscious players now heal fractionally for each treated open wound.