> For the complete documentation index, see [llms.txt](https://triforge-studio.gitbook.io/triforge-studio/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://triforge-studio.gitbook.io/triforge-studio/vorp/medic-job/configuration.md).

# ⚙️ Configuration

### Config:

```lua
Config = {}

Config.Locale = "en" -- Set language (ro or en)

-- Medic stations - you can add as many as you want
-- Each station has its own job (e.g. "valmedic" for Valentine, "sanmedic" for Saint Denis)
Config.MedicStations = {
   
    -- Rhodes station
    Rhodes = {
        name = "Rhodes",
        job = "rhodesmedic", -- Job required for this station
        allowedGrades = {0, 1}, -- Allowed grades
        bossMenu = {
            coords = vector3(1369.11, -1308.25, 77.94), -- Approximate coordinates, adjust as needed
            heading = 0.0
        },
        dutyLocation = vector3(1372.54, -1309.62, 77.95),
        healLocation = vector3(1371.02, -1309.04, 77.95),
        healDistance = 1.0,  -- smaller radius at Rhodes so the prompt does not activate too far away
        bedLocation = vector4(1373.41, -1303.63, 78.74, 148.42),
        cartSpawn = vector4(1373.15, -1318.32, 77.36, 223.12),
        stash = {
            id = "medic_stash_rhodes",
            name = "Stash Medic Saint Denis",
            limit = 50,
            acceptWeapons = true,
            shared = true,
            UsePermissions = false,
            UseBlackList = false
        },
        -- Shop: only players with this station's job + grade can access
        shop = {
            coords = vector3(1374.39, -1305.8, 77.95),
            distance = 2.0
        }
    },
    
    -- You can add more stations here
    -- Blackwater = { ... },
    -- Strawberry = { ... },
    -- etc.
}

-- Carts available for medics (labels are translated at runtime in client.lua)
Config.MedicCarts = {
    {
        model = "buggy02",
        label = "Caruta Medicala Mica" -- Translated at runtime
    },
    {
        model = "wagondoc01x",
        label = "Caruta Medicala Mare" -- Translated at runtime
    }
}

-- Cart park prompt config
-- Config.CartParkPromptLabel and Config.CartParkPromptGroupText are replaced by the localization system
Config.PromptKey = "G"
Config.CartParkPromptDistance = 3.0

-- On-duty prompt config
-- Config.DutyPromptGroupText, Config.DutyPromptLabelOn and Config.DutyPromptLabelOff are replaced by the localization system
Config.PromptDistance = 1.3

-- Heal prompt config
Config.HealPromptDistance = 2.5

-- Heal config
Config.HealTime = 5000 -- Time in ms the player stays in bed
Config.HealHealth = 100 -- Health after heal
Config.HealStamina = 100 -- Stamina after heal

-- Bandage config
Config.BandageItem = "bandaj" -- Item name in inventory
Config.BandageHealAmount = 75 -- How much health a bandage gives

-- Medkit config (manual revive) - different kits for different wound types
Config.MedkitItems = {
    -- General kit (for unknown or default wounds)
    default = "trusamedicala",
    -- Specific kits per wound type
    animal = "trusa_animal", -- For animal bites (bear, cougar, horse, crocodile)
    snake = "trusa_sarpe", -- For snake bites
    gunshot = "trusa_impuscatura", -- For gunshot wounds (all firearms)
    knife = "trusa_cutit" -- For cuts and stabs (knife, melee weapon)
}

-- Default item (for backward compatibility)
Config.MedkitItem = Config.MedkitItems.default

Config.MedkitRequiresDuty = true -- Must be on duty
Config.MedkitRange = 3.0 -- Max distance from patient
Config.MedkitReviveDelay = 4000 -- Time in ms until revive completes
Config.MedkitAnimation = {
    dict = "mech_revive@unapproved",
    anim = "revive",
    duration = 4000,
    flag = 1
}

-- Stethoscope config
Config.StethoscopeItem = "stetoscop"
Config.StethoscopeRange = 3.0
Config.StethoscopeRequiresDuty = true
-- Animation when patient is DEAD/unconscious (medic kneels)
Config.StethoscopeAnimation = {
    dict = "script_common@other@unapproved",
    anim = "medic_kneel_enter",
    duration = 4000,
    flag = 1
}
-- MEDIC animation when patient is ALIVE (medic checks watch / examines standing)
Config.StethoscopeAnimationAlive = {
    dict = "script_mp@emotes@check_pocket_watch@male@unarmed@upper",
    anim = "action",
    duration = 5000,
    flag = 1
}
-- Animation for PATIENT when alive (disabled – only medic plays animation; set dict/anim here if you want patient animation too)
Config.StethoscopePatientAnimationAlive = nil
-- When the game does not report cause (hash 0), text shown on report (full sentence, in English)
Config.DefaultCauseWhenUnknown = "The patient sustained blunt force trauma from repeated blows or impact with a contusion object."

-- Debug: print cause hash and zones to console (F8) when using stethoscope/medkit. Set false for production (reduces logs).
Config.DebugCauseHash = true

-- Respawn timer config (for death screen display)
Config.RespawnTime = 30000 -- Time in ms until respawn is allowed (5 min = 300000ms)
Config.HealthOnRespawn = 500 -- Health after respawn (max 500)

-- Hospital bed animation config (after respawn)
Config.HospitalBedAnimation = {
    dict = "amb_camp@world_camp_jack_es_sleep@male_a@base",
    anim = "base",
    duration = 8000, -- Duration in ms in bed (8 seconds)
    blendInSpeed = 8.0,
    blendOutSpeed = -8.0,
    flag = 1,
    playbackRate = 0.0
}

-- Year for medical report (day and month are filled automatically with current date)
Config.MedicalReportYear = 1889 -- Change year here (e.g. 1889, 1899, etc.)

-- Item for released medical report
Config.MedicalReportItem = "raport_medical" -- Item name in database

-- Shop: enable or disable shop at medic stations (true = use shop, false = no)
Config.UseShop = true

-- Items for sale in shop (shared by all stations; each station has its own shop point in MedicStations[].shop): item = DB name, label = display text, price = price in cash
Config.ShopItems = {
    { item = "bandaj",           label = "Bandaj",              price = 5 },
    { item = "stetoscop",        label = "Stetoscop",           price = 25 },
    { item = "trusamedicala",    label = "Trusa Medicala",      price = 50 },
    { item = "trusa_animal",     label = "Antirabic",           price = 30 },
    { item = "trusa_sarpe",      label = "Antivenin",           price = 30 },
    { item = "trusa_impuscatura", label = "Trusa Chirurgicala",  price = 45 },
    { item = "trusa_cutit",      label = "Trusa Sutura",        price = 40 },
    { item = "medic_arhive",     label = "Arhiva Medicala",     price = 10 },
}

-- Discord webhook for shop purchases (leave empty "" to disable)
Config.ShopWebhook = ""

-- ============================================
-- Medical archives (reports saved în DB)
-- ============================================
-- Searches: maximum number of results returned (prevents server overload)
Config.MaxArchivesSearchResults = 100
-- Retention (days after creation): delete reports older than X days. 0 = disabled (keep all)
Config.ArchiveRetentionDays = 0
```
