Skip to main content
The framework includes 4 default statuses that affect gameplay through damage, movement restrictions, and visual effects.

Default Statuses

Hunger

Starvation damage below 25%

Thirst

Sprint restriction below 25%

Stress

Screen blur above 40%

Drunk

Drunk walking and effects

PLAYER_HUNGER

The hunger status depletes passively over time. Low hunger causes escalating damage.
PropertyValue
Max Value100
Icondrumstick-bite
Color#ca5fe8
DirectionNormal (100 = full, 0 = starving)
ResetsYes

Thresholds

LevelEffect
25 or belowPlayer takes damage
10 or belowDamage escalates significantly
0Can kill the player

Passive Decay

Hunger decreases passively on a tick. The rate depends on activity level. Example — Restoring hunger:
-- Server-side: Feed the player
Status.Modify:Add(source, 'PLAYER_HUNGER', 30)

-- Consumable item handler
AddEventHandler('mythic-inventory:server:ItemUsed', function(source, characterId, itemName, slot, metadata)
    if itemName == 'sandwich' then
        Status.Modify:Add(source, 'PLAYER_HUNGER', 25)
        Inventory.Items:Remove(characterId, 1, 'sandwich', 1)

        Notification:Success(source, 'You ate a sandwich')
    elseif itemName == 'burger' then
        Status.Modify:Add(source, 'PLAYER_HUNGER', 40)
        Inventory.Items:Remove(characterId, 1, 'burger', 1)
    end
end)

PLAYER_THIRST

The thirst status depletes passively. Low thirst restricts movement and causes visual effects.
PropertyValue
Max Value100
Icondroplet
Color#07bdf0
DirectionNormal (100 = hydrated, 0 = dehydrated)
ResetsYes

Thresholds

LevelEffect
25 or belowCannot sprint, camera shake, possible ragdoll
0Player takes damage
Example — Restoring thirst:
AddEventHandler('mythic-inventory:server:ItemUsed', function(source, characterId, itemName, slot, metadata)
    if itemName == 'water' then
        Status.Modify:Add(source, 'PLAYER_THIRST', 35)
        Inventory.Items:Remove(characterId, 1, itemName, 1)
    elseif itemName == 'cola' then
        Status.Modify:Add(source, 'PLAYER_THIRST', 20)
        Status.Modify:Add(source, 'PLAYER_HUNGER', 5)  -- Cola gives slight hunger
        Inventory.Items:Remove(characterId, 1, itemName, 1)
    end
end)

PLAYER_STRESS

Stress is an inverted status — 0 means relaxed, 100 means maximum stress. It does not reset automatically and does not decay passively.
PropertyValue
Max Value100
Iconbrain
Color#de3333
DirectionInverted (0 = calm, 100 = stressed)
ResetsNo (noReset = true)
Tick Cooldown10,000ms minimum

Thresholds

LevelEffect
40 or aboveScreen blur effect begins
60 or aboveBlur intensifies
80 or aboveSevere blur, difficulty seeing

Stress Sources

Stress increases from various gameplay events. Common sources:
-- Getting shot at increases stress
AddEventHandler('mythic-damage:server:PlayerDamaged', function(source, damage)
    Status.Modify:Add(source, 'PLAYER_STRESS', 10)
end)

-- Car crash increases stress
AddEventHandler('mythic-vehicles:server:Crash', function(source, speed)
    local stressAmount = math.min(math.floor(speed / 10), 20)
    Status.Modify:Add(source, 'PLAYER_STRESS', stressAmount)
end)

Reducing Stress

-- Smoking reduces stress
AddEventHandler('mythic-inventory:server:ItemUsed', function(source, characterId, itemName, slot, metadata)
    if itemName == 'cigarette' then
        Status.Modify:Remove(source, 'PLAYER_STRESS', 15)
        Inventory.Items:Remove(characterId, 1, itemName, 1)
    end
end)

PLAYER_DRUNK

Drunk is an inverted status — 0 means sober, 100 means completely intoxicated. It decays passively over time.
PropertyValue
Max Value100
Iconchampagne-glasses
Color#9D4C0B
DirectionInverted (0 = sober, 100 = wasted)
ResetsNo (noReset = true)
Hidden at ZeroYes (hideZero = true)

Thresholds

LevelEffect
10 or aboveLocalPlayer.state.isDrunk set to true
25 or aboveDrunk walking animation
50 or aboveSevere impairment

Passive Decay

  • At 25 or above: Decays by 10 per tick
  • Below 25: Decays by 6 per tick

Getting Drunk

AddEventHandler('mythic-inventory:server:ItemUsed', function(source, characterId, itemName, slot, metadata)
    if itemName == 'beer' then
        Status.Modify:Add(source, 'PLAYER_DRUNK', 15)
        Inventory.Items:Remove(characterId, 1, itemName, 1)
    elseif itemName == 'whiskey' then
        Status.Modify:Add(source, 'PLAYER_DRUNK', 30)
        Inventory.Items:Remove(characterId, 1, itemName, 1)
    end
end)

Registration Summary

-- How the default statuses are registered (client-side):

-- Hunger
Status:Register('PLAYER_HUNGER', 100, 'drumstick-bite', '#ca5fe8', true, hungerModify, {
    id = 1, hideHigh = false, hideZero = false, inverted = false, noReset = false
})

-- Thirst
Status:Register('PLAYER_THIRST', 100, 'droplet', '#07bdf0', true, thirstModify, {
    id = 2, hideHigh = false, hideZero = false, inverted = false, noReset = false
})

-- Stress
Status:Register('PLAYER_STRESS', 100, 'brain', '#de3333', false, stressModify, {
    id = 3, hideHigh = false, hideZero = false, inverted = true, noReset = true
})

-- Drunk
Status:Register('PLAYER_DRUNK', 100, 'champagne-glasses', '#9D4C0B', false, drunkModify, {
    id = 4, hideHigh = false, hideZero = true, inverted = true, noReset = true
})

Creating Custom Statuses

You can register your own statuses following the same pattern:
-- Server-side registration
Status:Register('PLAYER_ENERGY', 100, 'bolt', function(source, value)
    -- Tick logic
end, function(source, change)
    -- Modify logic
end)

-- Client-side registration with HUD
Status:Register('PLAYER_ENERGY', 100, 'bolt', '#FFD700', true, function(change, force)
    -- Modify callback
end, {
    id = 5,
    hideHigh = true,    -- Hide when full
    hideZero = false,
    inverted = false,
    noReset = false
})

Next Steps

Status - Exports

Status API methods

HUD API

HUD display system

Inventory Events

Item usage for consumables