Changelog — ns-ambulancejob
1.0.0 — 2026-10-29
First stable release: everything from 0.1 to 0.11, plus:
- Discord log (
Config.Features.Logs, off by default;Config.Logs.events): knocked down / cardiac arrest with cause and place, revives / ROSC / hospital / respawn with the medic who did it, every admin command and theRevive/Healexports, medic payouts and hospital / pharmacy / insurance charges, hire / fire / grade changes, security flags. The webhook is the server convarns_ambulancejob_webhook(never inconfig.lua). Messages are batched (10 per request, one request every 2 s) to stay under Discord's rate limit. - Removed the default
sandyhospital. Its coordinates were the Bolingbroke prison infirmary, so a player who died in Sandy Shores / Grapeseed could respawn inside the prison. The default config now has Pillbox Hill and Paleto Bay; with a Sandy Shores MLO use its preset (cfx_gn_clinic_sandy,prompts_hospital,prompts_hospital_2) or add it with/emseditor. Ahospital:sandyrow moved earlier in the editor is ignored. - README: Qbox is the tested framework; QBCore and ESX run through the bridge but are not tested in game yet.
0.11.0 — 2026-10-29
From paramedic feedback: more heart rhythms, cardioversion, chest injury protocols, and local epinephrine.
Rhythms
- Pulseless VT (
pvt): a share of sudden arrests start in it (Config.Physiology.pvtShare); it turns into VF afterpvtSecondsof no flow. Shockable like VF: the AED now advises a shock on VF and pulseless VT, the manual defibrillator converts both. Bled out, hypoxic and tension arrests still start in PEA. - Tachyarrhythmias with a pulse (
Config.Physiology.rhythms): VT, SVT and AF with a fast rate. Only while knocked down (an unstable patient: he cannot be woken until it is converted). They come from VF / pVT falling back after ROSC (postRoscVt), a bruised heart after a hard blunt chest hit (contusion), epinephrine given with a pulse (complications), and the newcardiaccall-out. VT with a pulse left alone loses its pulse (vtArrest, then pulseless VT). - The monitor draws them all (VT broad and regular, SVT narrow and very fast without P waves, AF irregular with a
fibrillating baseline); alarms
VFIB,VTACH,AFIB. HR goes up to 220 on the monitor.
Synchronised cardioversion: a SYNC key on the monitor. With SYNC on, white markers sit on the R waves and the
shock is timed on them: VT / SVT / AF convert by chance (rhythms.cardiovert: recommended energy per rhythm, half
the chance below it). SYNC on a normal (sinus) rhythm: a chest burn and rarely VF (complications,
syncSinusArrest). SYNC in cardiac arrest does not fire (care_err_sync_arrest), the charge stays. New default
energies 50 and 100 J (Config.Care.defib.energies). Amiodarone is now the right drug for VT with a pulse: no
complication, it may convert it (rhythms.amio).
Chest injuries (Config.Physiology.chest)
- A gunshot / stab wound of the torso (severity 2+) or a hard blunt hit to it (severity 3+, high energy) collapses the lung on one side (pneumothorax). It builds up into a tension pneumothorax: slowly while the wound is open, at full speed once it is sealed. Tension lowers SpO₂ and blood pressure and raises heart and breathing rate; a conscious patient collapses, and at full tension the heart stops in PEA (obstructive arrest). In arrest the ROSC odds stay near zero until the chest is decompressed.
- Breath sounds in the manual vitals: listen to both sides (clear / reduced / absent; late: the trachea shifts).
- Needle decompression (ALS bag, new supply
needle = 2): pick the right or left chest. On the tension side it relieves it at once and stays in. On a side without a pneumothorax it is wasted, and with complications that lung collapses (cx_needle_wrong). The needle shows on the chart (ND). - The chest is saved with the patient (relog).
- Waking needs no tension pneumothorax (
care_err_wake_chest).
Local epinephrine (epi_local, uses an epinephrine ampoule): on a bleeding wound, no IV, also on a
conscious patient. That wound bleeds much less for drugs.localEpiSeconds (localEpiFactor; an artery, severity 4,
only a little: localEpiSevere). Not on burns, closed fractures, a wound that does not bleed, or in arrest.
Systemic epinephrine stays refused on a conscious patient.
Pocket guide: new chapters Chest injuries and Rhythms & cardioversion; AED / monitor steps mention
pulseless VT; the live plan suggests SYNC + energy for VT / SVT / AF, SYNC off in arrest, listening to the chest,
needle decompression on the silent side (both sides in traumatic arrest) and local epinephrine before TXA; two
new Mistakes. Practice: /emspractice cardiac (VT with a pulse: SYNC cardioversion or amiodarone) and
/emspractice chest (stab wound, tension builds up: listen, needle); arrest may start in pulseless VT.
Call-outs: new scenarios chest (stab wound with tension) and cardiac (VT / SVT / AF).
Config added. An older config.lua without these keys still runs (no pulseless VT, no chest model, no needle in the
bag); copy them in to get the features:
Physiology.pvtShare, pvtSeconds, rhythms, chest, rosc.shockPvt, rosc.cprBase.pvt, rosc.cprEpi.pvt,
drugs.localEpi*, complications.syncSinusArrest, complications.epiPulseVt, Kits.als.supplies.needle,
Care.durations.lungs / epi_local / needle, Missions.scenarios.chest / cardiac.
0.10.0 — 2026-10-28
Four new skill games, drawn and played like the first three (Config.Minigames.actions, Config.Minigames.difficulty).
A failed game applies and uses up nothing; try again.
- Chest seal (
chestseal = 'seal'): hold to wipe the blood off the skin, then press at the end of a breath out (the breathing trace shows the still pause in green). Sealed while breathing in, while air still comes out, or on skin that got wet again: missed. - SAM splint (
splint = 'splint', arm or leg drawn by the selected limb): hold for in-line traction until the limb is straight and the distal pulse comes back, then three straps: let go when each is snug. Pulled past straight or a strap so tight the distal pulse goes: missed. A loose strap just slips, pull it again. - i-gel (
igel = 'igel'): a section of the head and neck; hold to glide it along the palate, let go when it meets the resistance at the larynx (the bite block line at the teeth), then two breaths with the bag: the capnography shows CO₂. Pushed on past the resistance: missed. - Bag-valve-mask (
bvm = 'bvm'): hold for head tilt / chin lift until the tongue comes off the back of the throat, then two breaths: squeeze about a second and let go in the green band of the tidal volume scale (chest rise). Too little does not count; too much (air into the stomach) or an over-extended neck: missed. The bag refills in about a second, so squeezing again too soon gives less air. - Handbook entries of these four items say how the game is played.
- Airway games do not show the selected body part as their subtitle.
Visuals (all seven games): rendered instead of drawn (nui/games-gfx.js). Skin is lit pixel by pixel
(pores, fine creases, mottled tone, freckles, hair, light scattering red into the shadow side), veins stand out
under it; drapes, quilted underpads, denim and T-shirts have folds, fibres and frayed cut edges; blood is wet and
glossy where thick, runs down in rivulets and soaks into the cloth; nitrile gloves are soft lit shapes. The airway
section has tissue textures (brain folds, cerebellum, porous bone, muscle fibres, wet mucosa, cartilage) and bends
with the head tilt. Devices (cannula, CAT, gauze, chest seal, SAM splint, i-gel, bag and mask) got real materials.
- The picture is baked once when a game opens (~0.2-0.3 s, then cached per limb / zone: reopening is instant); frames only draw the baked layers and the moving parts.
- The game's time limit now starts after that, so the baking never eats into the player's time.
Fixed: an awake call-out (NPC) patient with a leg wound was offered a walking aid (chart button and handbook hint) that the server then refused. NPCs no longer get the offer.
New stretcher model: ns_ambulance_stretcher comes with the resource (stream/, works on every game build):
an ambulance cot with scissor legs, loading wheels, side handles and straps (yellow frame, black mattress, orange
straps), backrest flat for the patient, with collision. It is first in Config.Equipment.stretcher.models; the
game's gurney and the hospital bed stay as fallbacks. The model is CC BY 4.0 (credited in the README) and stays
outside the escrow (escrow_ignore: stream/*).
A parked stretcher / wheelchair is held in place (brakes on) until it is pushed again.
Fixed (stretcher / wheelchair)
- X only parks it. Pressing X again no longer grabs it back at once; walk to it and use its target option (ALT) to push it again. That option is now a small target zone around the parked device, so it also works on a streamed model without collision (the target ray went through it and never locked on).
- Taking one from an EMS vehicle failed now and then ("could not be spawned") because the server looked for the new object before it had reached the server; it now waits up to 1.5 s for it.
- It appears in front of the medic and is pushed right away, wherever they stand around the vehicle. Before, it was put 4.2 m behind the vehicle's centre: from the side or the front the server refused it as "not next to you" (and flagged a spoof), or it was left standing there unpushed.
Config: add the four lines to Config.Minigames.actions in an existing config to get the games (remove any
of them to keep the plain timer for that step).
0.9.0 — 2026-10-28
A review of every treatment: what it does, what it needs and what a wrong one does to the patient.
Fixed
- Drug doses no longer add up forever. A dose counts with the others only while the last one still works; once it has worn off a new series starts. Before, two fentanyl doses and one more an hour later was an overdose from a single dose, and TXA / amiodarone stayed "max dose" for the rest of that life.
- Extra saline (
complications.fluidSafe) is also cleared while the patient is down, not only standing. The limit is "in the body at once", as the config now says. - The care view shows the drugs that still work (the timeline keeps every dose).
Chest wounds
- New BLS supply chest seal (
Config.Kits.bls.supplies.chestseal = 2). It goes on a gunshot / stab wound of the torso: the air leak stops (SpO₂ / breathing) and it presses like a dressing. Bags you already have get it full on the next read. - A dressing no longer closes the air leak of a chest wound. Packing gauze into a torso wound is now a mistake
(
cx_gauze_chest: the wound gets worse); gauze is for gunshot / stab wounds on the arms and legs.
Taking things off
- Tourniquet, IV, C-collar and oxygen come off again (chart buttons,
tq_off/iv_off/collar_off/o2_off, durations inConfig.Care.durations). Taking off never pays. The bleeding under a tourniquet starts again; removing the IV stops the queued saline. - Tourniquet time (
complications.tqLimit = 1200s,tqLongPain = 2): one left on longer hurts the limb once. Its wounds get one severity worse, the limb hurts and stays numb until the hospital; a red line on the timeline.
More realistic
- The C-collar no longer opens the airway of an unconscious patient; only an OPA / i-gel does.
- No IV on a limb with a tourniquet, and a tourniquet above the IV stops its drugs and saline.
- A cardiac arrest from hypoxia (no breathing, opioid overdose) starts in PEA, not VF.
Safety
- Epinephrine, amiodarone and a manual shock are always refused on a conscious patient (also with complications off). A medic can no longer stop a standing player's heart. On an unconscious patient with a pulse they stay complications.
Not changed, on purpose
- Steps whose use depends on what the medic has to find out (amiodarone in asystole / PEA, naloxone without an opioid, saline at full volume, an OPA in arrest) are still accepted and only wasted. Refusing them would give away the rhythm, the drugs on board or the blood volume.
0.8.0 — 2026-10-28
Hospital presets (Config.Presets, presets/*.lua)
- 26 ready presets for popular hospital MLOs: reception, beds, pharmacy, elevators, duty, cabinet, wardrobe, garage and helipad. A Pillbox Hill or Paleto Bay preset replaces the default entry, the others add a hospital.
- Points moved with
/emseditorstill win over the preset; reset the site in the editor to use the preset.
Wardrobe (Config.Features.Wardrobe, Config.Wardrobe)
- A
wardrobepoint on job points: work outfits or your own outfits (illenium-appearance), the outfit menu (qb-clothing), or your own function. Also in the location editor.
Pharmacy (Config.Features.Pharmacy, Config.Pharmacy)
- A
pharmacypoint on hospitals: a pharmacist sells the first aid items to anyone. Price and amount are checked by the server; the money comes back when the item cannot be given. Also in the location editor.
Elevators (Config.Features.Elevators)
- A hospital's
elevators: a button on every stop takes you to the others behind a screen fade. Stops can have their own buttons (panels) and can be for EMS only (job = true).
0.7.0 — 2026-10-28
What stopped working once qbx_ambulancejob was switched off now works again, on the same patient model.
First aid items (Config.Features.FirstAid, Config.FirstAid)
bandage: a dressing on your worst bleeding wound; a light one closes. A little health back.ifaks: two dressings and a painkiller pill.painkillers: a pill, less pain for 10 minutes (two at most at once).firstaid: on the nearest other player. All bleeding wounds are dressed, and a knocked-down player wakes up when a medic could wake him too (enough blood, bleeding under control). Otherwise he waits for EMS.- Burns, fractures and cardiac arrest stay EMS work. The server times every use and checks the patient and the distance again before taking the item. Uses are written on the patient's timeline, so the medic sees them.
qbx_radialmenu
- The EMS entries (check status, revive, treat wounds) open the care view on the nearest player.
- The medic's emergency button sends a panic alert to police and EMS on duty (
Config.Ems.panicJobs, cooldownConfig.Ems.panicCooldown). It goes through the dispatch bridge, with its own title.
0.6.0 — 2026-10-28
Wrong treatment is no longer just refused: it hurts the patient, depending on what was done
(Config.Features.Complications, numbers in Config.Physiology.complications).
- OPA / i-gel / BVM on a conscious patient: he gags, vomits and aspirates (SpO₂ down, breathing up for a few minutes); the device does not stay in.
- Hemostatic gauze packed into a head wound (or a bruise, fracture or burn): the wound gets one severity worse and loses its dressing.
- Tourniquet on a limb that does not bleed: extra pain and a numb limb (limping / shaky aim) until the hospital.
- Epinephrine with a pulse: racing heart, every wound bleeds faster, 25% chance of VF. In arrest again within 150 s: the heart is injured (lower ROSC odds).
- Amiodarone with a pulse: blood pressure and heart rate fall, 15% chance of asystole.
- Fentanyl stacked until breathing stops: a conscious patient collapses; naloxone reverses it.
- More than 2000 ml of saline in one emergency: fluid in the lungs (SpO₂ down, breathing up) and faster bleeding; the body clears it slowly while alive.
- Manual shock on a patient with a pulse: a chest burn and 80% chance of VF. Shock on asystole / PEA: the heart is injured.
- CPR on an unconscious patient with a pulse is now possible and breaks ribs (a torso fracture), once per emergency. Still refused on a conscious patient.
- An arrest caused by a treatment keeps the findings and the timeline of the patient on the ground.
- A mistake shows in red on the timeline and as a warning to the medic who made it. That medic earns nothing more for that emergency (treatment, ROSC, wake, admit, call-out share), so causing an arrest and reviving it never pays.
- Useless steps (oxygen in arrest, a splint on a cut, fentanyl in arrest) are still refused. Wrong items are no
longer greyed out in the bags. New pocket guide chapter Mistakes.
/emspracticeplays the same mistakes. Config.Features.Complications = falsekeeps the 0.5 behaviour (wrong steps refused, nothing hurts).
Call-out patients can be moved
- NPC patients can now be carried on the shoulder and put on a stretcher / wheelchair (in any phase: an injured NPC does not walk), then loaded into the ambulance from there. Before, the ambulance had to be driven next to the ped.
- New option on EMS vehicles: Load the patient into the ambulance while carrying someone (players and NPCs).
- Call-out patients are still handed over at the vehicle, not unloaded (
err_npc_handover).
A real stretcher
- The stretcher is now the game's ambulance gurney (
m25_2_prop_m52_gurney_01a, game build 3717 and up). On older builds it falls back to the hospital bed. - Where the stretcher sits on the pusher and where the patient lies on it is worked out from the model's size
(
Config.Equipment.stretcher.fit): pushed lengthwise, wheels on the ground. Before, the bed was turned 90° on the pusher. Fixed offsets per model are still possible.
0.5.1 — 2026-10-28 (not released separately, part of 0.6.0)
- New server exports
Revive(src)andHeal(src)(the same as/reviveand/heal), so admin panels like ns-admin revive through the medical system instead of a native resurrect. Registered only while this resource owns death, like the commands.
0.5.0 — 2026-10-27
The EMS department around the patient: a tablet with a triage board and PCR reports, management for bosses, NPC call-outs, health insurance and an in-game location editor.
- EMS tablet (
/ems, the "EMS tablet" option at an EMS vehicle, an optional key and an optional item):- Triage board: every open emergency (player EMS calls, patients being treated, NPC call-outs) with a START tag. The colour is worked out from the patient record once a medic has opened his care view (black = cannot be brought back, red = arrest / heavy bleeding / low SpO₂, yellow = unconscious, green = awake), or set by a medic who treated him. Street, area, distance, age, responders and the medics who treated him. Respond (route + your name on the case for the crew), accept a call-out, set a route. Updates live while the tablet is open.
- PCR reports: one report per case per medic who treated the patient. Times, findings (examined wounds and what
was done), measured vitals, monitor readings, the care timeline and the patient's insurance are filled in by the
server and cannot be changed; the medic writes the chief complaint, the narrative, triage, outcome and hospital.
The findings of an emergency are kept even when the same patient goes down again. Archive with search and pages;
grades below
Config.Tablet.readAllGraderead their own reports. Optional reward per report. - Management (boss flag or
Config.Boss.grade): staff list with grade, duty and work counters, promote / demote, fire, hire the player next to you, active insurance policies, optional society balance. Nobody can change himself, manage someone of his own grade or above, or give his own grade.
- NPC call-outs: with enough medics on duty a call comes in every few minutes (gunshot, stabbing, crash, fall,
burn, overdose, cardiac arrest), alerting every on-duty medic. Accept it on the board; the patient ped is created
then and is a full patient of the same model (care view, kits, skill games, CPR, AED / monitor). Load him into
the ambulance ("Load into ambulance") and hand him over at any hospital ("Hand over patient" at the vehicle), or
pronounce him with a body bag when he cannot be brought back. Paid by outcome, split between the medics who
treated him.
/emscallout [scenario](admin) posts a test call in front of you that pays nothing. - Health insurance at the reception ("Health insurance"): plans with a price, days and the part of the check-in,
admit and respawn fees they pay (
Config.Insurance). The same plan adds its days; a failed save refunds. - Location editor (
/emseditor, admin): hospitals (centre + radius, reception, beds), job points (duty, kit cabinet, stash, garage / helipad + spawns, linked hospital) and call-out spots, all moved in game with a ghost preview (beds: look at the mattress, a ghost patient lies there; mouse wheel turns). Add / remove beds and spots, create and delete hospitals and job points, reset a config site toconfig.lua. Saved in the database and live at once for every player. - Job points have an
idnow (pillbox,paletoin the default config); points without one arepoint1, ... - New tables:
ns_ambulancejob_sites,ns_ambulancejob_reports,ns_ambulancejob_insurance;missionsandreportscounters onns_ambulancejob_medics(migrated automatically).
0.4.1 — 2026-10-27
Two medics on one patient.
- Fixed: the monitor / AED came off when the medic who attached it closed the care screen, also for the medic doing CPR next to them. They now stay on the patient and come off (with a timeline line) only when that medic leaves the server or walks away with the bag.
- Rescuers no longer kneel inside each other: a medic who opens the care screen where another rescuer already kneels walks round to the other side of the patient first.
0.4.0 — 2026-10-27
Skill games and CPR rebuilt to look and play like the real thing; the handbook is easy to find.
- Fixed: wound packing could not be won. The old game drained the gauze faster than most players can tap (it needed ~5 taps per second for 6 seconds). Replaced by the new packing game below.
- New skill game panel: a large drawn scene instead of a coloured bar, numbered steps, a time strip, the key to use (press / hold / tap) and a result line that says what happened ("Through the back wall: hematoma", "Too loose: venous tourniquet"...). ESC (or Cancel) during a game cancels the step; the mouse button on the picture works like SPACE.
- IV cannula: a forearm with a tourniquet, engorged veins and an iodine-cleaned site. 1) Aim: press when the needle tip is over the vein. 2) Insert: hold to slide the needle in, let go when blood shows in the flash chamber. A cross-section shows skin, fat and the vein; an off-centre aim leaves a shorter window, pushing on goes through the back wall. A missed IV still costs the cannula.
- Tourniquet: a CAT on the thigh or upper arm (the limb follows the selected zone). Hold to turn the windlass: the strap bites into the limb, the wound bleeds less, the distal pulse trace fades. Let go with the rod over the clip to lock it. Locked while it still bleeds = venous tourniquet (fail), turned far past the stop = over-tightened (fail), let go elsewhere = the rod unwinds.
- Wound packing: a close-up of the wound with pulsing arterial bleeding. 1) Tap to push gauze in with a gloved finger; a push during a spurt slips. 2) Hold direct pressure with both hands until the ring closes.
- CPR feedback panel: each compression is now a press and a release. Depth column (5-6 cm band, ~0.2 s hold),
rate gauge, 30-count, quality and a live prompt (push harder / too deep / let the chest recoil / faster /
slower / good). Depth is worked out from the press and release times, so a low frame rate does not count good
compressions as shallow.
Config.Care.cpr.depth = falsekeeps the old rate-only rhythm. - CPR in the world: the rescuer turns to face the patient before kneeling into compressions.
- Handbook easier to find: a yellow "Handbook H" button in the header next to Close, the H key toggles it, a larger tab on the clipboard edge, and until the guide has been opened once the button glows with a short note pointing at it.
- Buttons drop focus after a click, so SPACE always goes to CPR / the skill game.
- Fixed: "Start CPR" with no way to do it. After an AED analysis (which stops CPR) or a shock that brought the pulse back, the AED kept saying "Start CPR" while CPR was locked (the patient had a pulse) or had to be restarted from the button. The AED text now follows the patient (pulse back -> no CPR), and SPACE starts CPR when it can, or says why it cannot.
- "Next" strip in the header: the first priority from the pocket guide's plan for this patient ("Left leg,
gunshot (critical): tourniquet"). Clicking it selects that body part and flashes the item; the bag item for it
glows. The care view opens on the most urgent body part.
Config.Features.NextStep = falsehides it. - Bleeding first: the plan (strip and "This patient") now puts massive bleeding before examining the rest (MARCH order).
- Why is it grey? Hovering a bag item shows what it is for and, when it cannot be used, why ("Pick a wound on the chart first", "Needs IV access first", "Only for gunshot / stab wounds"...). Clicking it says the same.
- Clearer visuals: the selected body part is highlighted, bleeding wounds pulse on the chart, the Start CPR button calls for attention in an arrest, a larger step bar with seconds left, toasts with an icon.
/emspractice [trauma|arrest](admin): opens the care view on a made-up patient so one person can try everything: examine, the three skill games, measurements, drugs, CPR, AED and monitor shock (-> ROSC). It runs in the page only (nui/practice.js): nothing reaches the patient model, the kits or the payouts. Command name inConfig.Commands.practice.
0.3.0 — 2026-10-27
- Pocket guide in the care view: a yellow "Handbook" tab on the right edge of the clipboard opens a spiral
bound EMS field guide. Seven chapters: first look, bleeding, airway, cardiac arrest, drugs, wake & transport,
and the bag contents (every item with its icon and what it is for). It opens on the cardiac arrest chapter when
the patient has no pulse. It covers only the text part of the clipboard: the body figure, the monitor, the AED
and the bags stay usable while it is open. ESC closes the guide first, then the care view. Numbers in the text
(CPR rate, epinephrine duration, VF / irreversible times, saline cap) come from this server's config.
Config.Features.Handbook = falsehides it. - "This patient" in the guide: the guide opens on a live treatment plan for the patient in front of you, in priority order (now / next / done / note): examine the parts left, what each found wound still needs (tourniquet, gauze, dressing, TXA, splint, burn dressing), airway and oxygen, naloxone after fentanyl, low blood pressure -> IV + saline, CPR / AED / monitor rhythm / shock / epinephrine / amiodarone in an arrest, and when the patient can be woken. It is built only from what the medic has found (examined wounds, monitor or measured values, the devices on the patient) and refreshes with every update. Clicking a step selects that body part / wound on the chart so the fitting bag item lights up; a step whose supply is not in your bags is marked.
0.2.0 — 2026-10-27
Equipment and skill.
- Stretcher and wheelchair: take one from the back of an EMS vehicle, push it (X parks it / pushes it again), and put a knocked down or dead patient on it. A conscious patient can sit down in a parked wheelchair himself and get up again with X. A stretcher with a patient on it can be loaded into the ambulance (the stretcher goes with him). The pusher's client spawns the prop; the server adopts it only with the right model, owner and distance.
- Bags on the ground: using a bag item (or
/dropbag bls|als) puts it down. Everyone next to it uses its supplies (the care view marks the bag "on the ground"). Picking it up gives the item back with what is left in it. A bag left on the ground goes back to its owner afterplacedBagLifetime. - Body bag: for a patient who cannot be brought back (irreversible arrest, or the respawn timer is over). The
patient is hidden and may respawn at once. The medic gets
Rewards.bodybag. - Walking aid: a crutch / walking stick for a patient with a leg wound: cane walk, no sprinting or jumping. It goes away when the leg is healed.
- Stumbling: running on an unsplinted leg fracture without a walking aid can make you fall.
- Ambulance monitor: with patient and medic in the same EMS vehicle, the built-in monitor / defibrillator is used (ALS role, no ALS bag needed).
- Skill games: IV (needle over the vein), tourniquet (stop inside the pressure band) and wound packing (pack
faster than it bleeds). A missed IV costs the cannula; other failures cost nothing (
Config.Minigames).
0.1.0 — 2026-10-27
First version.
- Patient model on the server: wounds (6 zones, 5 kinds, 4 severities), bleeding and blood volume, vital signs, collapse, cardiac arrest (VF / asystole / PEA), ROSC, waking, knockouts, and wound effects while alive.
- BLS and ALS bags instead of loose items, with supplies in the item metadata (ox_inventory / qb-inventory) and restock at the cabinet or an ambulance.
- Patient care view:
- a cardiac monitor with live ECG / pleth / capnography from the real rhythm, alarms and a manual defibrillator
- an AED and a manual vital-signs card
- a CPR rhythm coach
- a trauma assessment chart with a body diagram, findings, tourniquet times, an ABC strip and a timeline
- the two bags
- Death screen: the same screen as ns-deathscreen. The bleed-out time comes from the patient model, and a stable patient has no countdown.
- Hospitals: reception check-in with an NPC doctor, admission by a medic, and respawn into a bed.
- Job: duty, kit cabinet, stash, garage and helipad, carry, ambulance load / unload, and payouts capped per emergency.
- Compatibility:
qbx_medicalexports / state bags / metadata and txAdmin heal. The resource stays off while qbx_medical / qbx_ambulancejob are running and starts once they stop.