v1.0.1
Summary
This release adds drowning, hospital Self Check-In when no medics are on duty, and a citizen EMS phone app (call, health, insurance, prescriptions, outbreaks). Merge config/config.lua and the locale files — insurance auto-renews every Config.health_insurance_days (default 30).
What's New
Features
- Self Check-In at hospital reception when no medics are on duty (
Config.features.self_check_in) - Drowning (mild / water aspiration / respiratory failure); last-standing players left underwater go into arrest (
Config.drowning) - okokPhone EMS app: call an ambulance, My Health, nearby hospitals, insurance, prescriptions, certifications, job application, and outbreaks (
Config.mobile_app) - Insurance plans last
Config.health_insurance_days(default 30) and auto-renew from the player's bank; plan cards list coverage from treatment services - HUD layout editor opens on the first clock-in
- Units can leave a dispatch call without concluding it
- Deathscreen
Config.status.dead.freeze_frame(default off) - Rain no longer gives a cold by default
Bug Fixes
/reviveno longer silently does nothing for invalid, missing, or console targets- Opening the patient hotbar holsters the medic's weapon
- Bandage props no longer linger after a resource restart
File Changes
⚙️ Configuration & Bridge Files
These files are not encrypted. Review the changes below — you may need to manually apply updates to your server's config files.
config/config.lua
features = {
--- Outbreaks, infections (zones, rain, food, player spread), and the tablet Diseases page.
- --- Legacy master switch; Config.diseases.enabled=false also forces this off (see shared/init.lua).
+ --- Legacy master switch; Config.diseases.enabled=false also forces this off (see core/shared.lua).
diseases = true,
+ --- Reception "Self Check-In": with no medics on duty and a free bed, the player is
+ --- admitted and the bed heals them to full health before discharging them.
+ self_check_in = true,
+
--- EMS staff can train and certify normal players spawn_probability = 0, -- rain-only, no zones
--- Rain exposure vector: standing in rain can give you a cold.
- rain = { enabled = true },
+ rain = { enabled = false }, hospital_respawn_hold_duration = 3000,
condition_damage_interval = 5000,
+ --- Insurance plans last this many days, then auto-renew from the player's bank into the society.
+ health_insurance_days = 30,
--- How often (hours) expired plans of online players are renewed, or dropped if they can't pay.
health_insurance_hours_renewal = 1,
+ --[[ Citizen phone app (okokPhone) ]]
+ mobile_app = {
+ call_cooldown = 120, -- seconds between EMS calls from the same player's phone
+ },
+
--[[ Blood donation & transfusion ]] respawn_min_wait = 5 * 60 * 1000,
+ -- Deathscreen burn freezes the last frame alive. false keeps the live world moving under the red.
+ freeze_frame = false,
-- Hospital E-respawn inventory wipe. false keeps everything and ignores filtered_items.
clear_inventory = true, respect_care_owner = true,
},
+ --[[ Drowning ]]
+ --- Builds up while the head is underwater with no air left. Downed players can't hold their breath,
+ --- so they start aspirating as soon as they go under.
+ drowning = {
+ enabled = true,
+ -- Seconds underwater before the condition worsens. It starts as mild on the first second.
+ stages = { moderate = 10, severe = 20 },
+ -- Mild drowning clears on its own after this many seconds. Moderate and severe need treatment.
+ mild_recovery_seconds = 120,
+ -- A player in last standing still underwater after this many seconds goes into cardiac arrest.
+ arrest_seconds = 30,
+ -- Success multipliers while drowning is untreated. Rescue breaths are what brings a drowned patient back,
+ -- a shock rarely does.
+ cpr_chance_mult = 2.0,
+ defib_chance_mult = 0.5,
+ },
+
--[[ AI NPC ]] params = {
- { name = "target", help = "Server Id of the targeted player", optional = true }
+ { name = "target", type = "playerId", help = "Server Id of the targeted player", optional = true }
},bridge/server/player.lua
function player.getMetadata(source, key)
local playerObj = player.getPlayerObject(source)
- if not playerObj then return end
+ if not playerObj then return nil end
if Framework.name == "esx" then
- return playerObj.getMeta(key)
+ return (playerObj.getMeta(key))
else
return playerObj.PlayerData.metadata[key]
endfxmanifest.lua
description "Luxu Medicine - Ambulance Job"
-version "1.0.0"
+version "1.0.1"locales/en.json (also es.json, pt.json)
- "mobile_app_title": "Outbreak Map",
- "mobile_app_medics_online": "%s medics online · %s on duty",
- "mobile_app_no_medics": "No medics online",
- "mobile_app_updated": "Updated %s",
+ "mobile_app_no_medics": "No medics on duty",
+ "mobile_loading": "Loading...",
+ "mobile_tab_home": "Help",
+ "mobile_tab_health": "My Health",
+ "mobile_tab_outbreaks": "Outbreaks",
+ "mobile_tab_services": "Services",
+ "mobile_call_title": "Call an ambulance",New keys also cover the rest of the phone app (mobile_call_*, mobile_nearby_*, mobile_insurance_*, mobile_prescriptions_*, mobile_certifications_hint, mobile_application_*, mobile_outbreak_*), drowning labels, Self Check-In, dispatch leave, and insurance renew/lapse copy.
+ "drowning_mild": "Drowning - Mild",
+ "drowning_moderate": "Drowning - Water Aspiration",
+ "drowning_severe": "Drowning - Respiratory Failure", "dispatch_answered": "You have answered the dispatch call",
"dispatch_concluded": "You have concluded the dispatch call",
+ "dispatch_left": "You are no longer responding to the dispatch call",- "insurance_save_percent": "Save %s%",
"insurance_current_plan": "Current plan",
- "insurance_per_month": "/ month",
+ "insurance_per_days": "/ %s days",- "insurance_cancel_confirm": "Are you sure you want to cancel your %s plan?",
- "insurance_select_confirm": "Are you sure you want to select the %s plan?",
+ "insurance_cancel_confirm": "Are you sure you want to cancel your %s plan? The remaining days are not refunded.",
+ "insurance_select_confirm": "Subscribe to %s for %s? It renews automatically from your bank every %s days.",
"insurance_confirm_plan": "Confirm Plan",
+ "insurance_switch_note": "Your current plan will be replaced without a refund.",
+ "insurance_feature_free": "Free: %s",
+ "insurance_feature_discount": "%s%% off: %s",
+ "insurance_renewed": "Your %s insurance has been renewed",
+ "insurance_lapsed": "Your insurance expired: not enough bank balance to renew",- "creator_preview_on_ground": "Preview on ground: move with cursor, scroll to rotate, E to confirm"
+ "creator_preview_on_ground": "Preview on ground: move with cursor, scroll to rotate, E to confirm",
+ "self_check_in_title": "Self Check-In",
+ "self_check_in_description": "Get admitted to a bed when no medics are on duty",
+ "self_check_in_medics_online": "There are medics on duty. Please ask them for assistance.",
+ "self_check_in_no_beds": "There are no free beds at this hospital right now.",
+ "self_check_in_not_needed": "You don't need medical treatment.",
+ "self_check_in_unavailable": "You can't check in right now.",
+ "self_check_in_admitted": "You've been admitted to %s. Rest until you're fully healed.",
+ "self_check_in_discharged": "You're fully healed and have been discharged."Full list of files changed
| Change | File |
|---|---|
| Modified | bridge/server/player.lua |
| Modified | client/cl_main.lua |
| Modified | client/handlers/complaints.lua |
| Modified | client/handlers/dev_commands.lua |
| Added | client/handlers/mobile_app.lua |
| Modified | client/handlers/nui.lua |
| Modified | client/handlers/targets.lua |
| Added | client/modules/conditions/drowning.lua |
| Modified | client/modules/status.lua |
| Modified | client/modules/treatment/bandage.lua |
| Modified | client/modules/treatment/hand_tools/bandage.lua |
| Modified | client/modules/treatment/hospital_beds.lua |
| Modified | client/modules/treatment/patient_hotbar.lua |
| Modified | config/config.lua |
| Added | core/server.lua |
| Added | core/shared.lua |
| Added | core/version_check.lua |
| Modified | data/hospitals.json |
| Modified | fxmanifest.lua |
| Modified | locales/en.json |
| Modified | locales/es.json |
| Modified | locales/pt.json |
| Modified | server/features/damage.lua |
| Modified | server/features/dispatch.lua |
| Modified | server/features/insurance.lua |
| Added | server/features/mobile_app.lua |
| Modified | server/features/player_formation.lua |
| Modified | server/features/treatment.lua |
| Modified | server/modules/care.lua |
| Modified | server/modules/conditions.lua |
| Added | server/modules/drowning.lua |
| Modified | server/modules/job.lua |
| Modified | server/modules/mobility.lua |
| Modified | server/modules/statistics.lua |
| Modified | server/services/database.lua |
| Removed | server/services/version_check.lua |
| Modified | server/sv_main.lua |
| Removed | server/sv_utils.lua |
| Modified | shared/constants.lua |
| Removed | shared/init.lua |
| Modified | shared/phone_app.lua |
| Modified | web/ |