Config File
Config = {}
Config.Target = false -- if false, we will use Press E Point Interactions
Config.TestCommands = true -- if true, this will enable various debug commands - DO NOT LEAVE THIS ON IN YOUR LIVE SERVER!
Config.SelfTestMode = true
Config.DebugPrints = true -- if true, it will print debug messages F8 and Server Console
Config.AddictionsUICommand = 'addictions' -- the command to open the players personal addiction monitor
Config.Addictions = {
-- Envi-Prescriptions V3 Items --
['lean'] = { -- Need A Lean Script + Many More Prescription Items? Check Out Envi-Prescriptions V3 - https://envi-scripts.tebex.io/package/5604452
name = 'Lean',
icon = 'fas fa-prescription-bottle',
displayName = 'Codeine',
treatmentCost = 8500,
treatmentDuration = 16, -- minutes
colors = {
icon = {from = '#9b59b6', to = '#6c5ce7'},
progress = {from = '#9b59b6', to = '#6c5ce7'}
},
items = {
['lean'] = 1, -- item / amount added to addiction
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 1.3,
physiologicalEffects = {'Drowsiness', 'Euphoria', 'Slowed reflexes'},
cravings = {
every = 35, -- minutes
notify = {
message = 'You feel like sipping some lean',
title = 'Craving',
duration = 10000,
type = 'error',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 75, -- if 75% or over on the craving meter, you are considered "not satisfied"
message = 'You could really use some lean right now!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 10, -- minutes
anim = {}, -- no animation triggered, just notification
}
}
},
['Casual Sipper'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.6, -- Higher progression due to codeine
physiologicalEffects = {'Constipation', 'Mood swings', 'Sleep issues'},
cravings = {
every = 14, -- minutes
notify = {
message = 'You fancy some lean?',
title = 'Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = "amb@world_human_stand_impatient@male@no_sign@base",
anim = "base",
flags = 48,
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 70, -- if 70% or over on the craving meter, you are considered "not satisfied"
message = 'You need some lean!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 5, -- minutes
damage = 3, -- health damage
anim = {}, -- no animation triggered, just notification
}
}
},
['Regular Abuser'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 2.2, -- Higher multiplier = faster craving increase
physiologicalEffects = {'Respiratory depression', 'Addiction symptoms', 'Tolerance building'},
cravings = {
every = 11, -- minutes
notify = {
message = 'You need some lean!',
title = 'Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_a',
flags = 48,
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 65, -- if 65% or over on the craving meter, you are considered "not satisfied"
every = 4, -- minutes
message = 'You need lean right now!!',
title = 'Craving',
duration = 15000,
type = 'error',
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_a',
flags = 48,
}, -- animation plus notification
damage = 4, -- health damage
stress = 6, -- added stress
}
}
},
['Lean Addict'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 3.0, -- Much higher multiplier for severe addiction
physiologicalEffects = {'Severe respiratory issues', 'Codeine dependency', 'Organ damage'},
cravings = {
every = 9, -- minutes
notify = {
message = 'You need lean to function!',
title = 'Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = 'timetable@gardener@smoking_joint',
anim = 'idle_cough',
flags = 48,
},
visualEffects = {
blemishes = {
type = 5, -- Pallor/sickly appearance
severity = 0.6,
},
aging = {
type = 4, -- Sunken eyes
severity = 0.5,
},
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 50, -- if 50% or over on the craving meter, you are considered "not satisfied"
message = 'You need lean right now!!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 3, -- minutes
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_a',
flags = 48,
}, -- animation plus notification
damage = 5, -- health damage
stress = 8, -- added stress
}
}
},
['Drank Fiend'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 4.2, -- Very high multiplier for most severe addiction
physiologicalEffects = {'Respiratory failure risk', 'Severe codeine withdrawal', 'Life-threatening complications'},
cravings = {
every = 6, -- minutes
notify = {
message = 'You need lean to survive!',
title = 'Desperate Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = 'timetable@gardener@smoking_joint',
anim = 'idle_cough',
flags = 48,
},
visualEffects = {
blemishes = {
type = 5, -- Severe pallor/sickly appearance
severity = 0.9,
},
aging = {
type = 4, -- Severe sunken eyes
severity = 0.8,
},
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 35, -- if 35% or over on the craving meter, you are considered "not satisfied"
message = 'You could DIE without lean right now!!',
title = 'Life-Threatening Withdrawal',
duration = 15000,
type = 'error',
every = 2, -- minutes
damage = 7, -- health damage
stress = 12, -- added stress
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_a',
flags = 48,
}, -- animation plus notification
code = function()
-- Execute custom client code here
print('You could DIE without lean right now!!')
end -- also custom client code
}
}
},
}
},
['adrenaline'] = {
-- Need A Adrenaline Script + Many More Prescription Items? Check Out Envi-Prescriptions V3 - https://envi-scripts.tebex.io/package/5604452
name = 'Adrenaline',
icon = 'fas fa-heartbeat',
displayName = 'Adrenaline Rush',
treatmentCost = 6000,
treatmentDuration = 14, -- minutes
colors = {
icon = {from = '#ff0000', to = '#ff6b6b'},
progress = {from = '#ff0000', to = '#ff6b6b'}
},
items = {
['adrenaline'] = 1,
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 0.8,
physiologicalEffects = {'Mild excitement', 'Occasional rush seeking'},
cravings = {
every = 30,
notify = {
message = 'You feel like seeking some excitement',
title = 'Mild Craving',
duration = 10000,
type = 'info',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 80,
message = 'You feel a bit restless',
title = 'Craving',
duration = 15000,
type = 'info',
every = 10,
stress = 2,
anim = {}, -- no animation triggered, just notification
}
}
},
['Thrill Seeker'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.0,
physiologicalEffects = {'Increased heart rate', 'Heightened alertness', 'Energy boost'},
cravings = {
every = 25,
notify = {
message = 'You crave excitement and thrills',
title = 'Adrenaline Craving',
duration = 10000,
type = 'info',
},
anim = {
dict = "amb@world_human_stand_impatient@male@no_sign@base",
anim = "base",
flags = 48,
every = 45,
},
whenNotSatisfied = {
threshold = 75,
message = 'You feel sluggish without adrenaline',
title = 'Craving',
duration = 15000,
type = 'warning',
every = 8,
stress = 3,
anim = {}, -- no animation triggered, just notification
}
}
},
['Adrenaline Junkie'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 1.5,
physiologicalEffects = {'Anxiety when calm', 'Risk-taking behavior', 'Sleep issues'},
cravings = {
every = 18,
notify = {
message = 'You need an adrenaline rush',
title = 'Adrenaline Craving',
duration = 10000,
type = 'warning',
},
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_a',
flags = 48,
every = 30,
},
whenNotSatisfied = {
threshold = 65,
message = 'Your body craves dangerous excitement',
title = 'Strong Craving',
duration = 15000,
type = 'error',
every = 6,
stress = 5,
damage = 1,
anim = {}, -- no animation triggered, just notification
}
}
},
['Extreme Addict'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 2.2,
physiologicalEffects = {'Reckless behavior', 'Paranoia', 'Heart palpitations'},
cravings = {
every = 12,
notify = {
message = 'You desperately need danger and excitement',
title = 'Intense Craving',
duration = 12000,
type = 'error',
},
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
every = 20,
},
whenNotSatisfied = {
threshold = 50,
message = 'You might do something stupid for a rush',
title = 'Dangerous Craving',
duration = 15000,
type = 'error',
every = 4,
stress = 8,
damage = 3,
anim = {}, -- no animation triggered, just notification
}
}
},
['Rush Fiend'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 3.0,
physiologicalEffects = {'Heart problems', 'Suicidal behavior', 'Complete recklessness'},
cravings = {
every = 8,
notify = {
message = 'You need to risk your life for a rush',
title = 'Life-Threatening Craving',
duration = 15000,
type = 'error',
},
anim = {
dict = 'anim@mp_yacht@shower@male@',
anim = 'male_shower_idle_c',
flags = 48,
},
whenNotSatisfied = {
threshold = 40,
message = 'You would rather die than live without thrills',
title = 'Suicidal Craving',
duration = 20000,
type = 'error',
every = 2,
stress = 12,
damage = 6,
anim = {
dict = 'anim@mp_yacht@shower@male@',
anim = 'male_shower_idle_c',
flags = 48,
},
code = function()
print('Adrenaline addiction is making you suicidal!')
end
}
}
},
}
},
['steroids'] = {
-- Need A Steroids Script + Many More Prescription Items? Check Out Envi-Prescriptions V3 - https://envi-scripts.tebex.io/package/5604452
name = 'Steroids',
icon = 'fas fa-dumbbell',
displayName = 'Anabolic Steroids',
treatmentCost = 9000,
treatmentDuration = 18, -- minutes
colors = {
icon = {from = '#ff4757', to = '#ff3838'},
progress = {from = '#ff4757', to = '#ff3838'}
},
items = {
['steroids'] = 3,
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 0.7,
physiologicalEffects = {'Slight muscle gain', 'Confidence boost'},
cravings = {
every = 30,
notify = {
message = 'You wonder about using steroids again',
title = 'Mild Interest',
duration = 10000,
type = 'info',
},
whenNotSatisfied = {
threshold = 85,
message = 'You think about getting stronger',
title = 'Craving',
duration = 15000,
type = 'info',
every = 12,
stress = 1
}
}
},
['Gym Enthusiast'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 0.9,
physiologicalEffects = {'Increased muscle mass', 'Mild aggression', 'Acne'},
cravings = {
every = 22,
notify = {
message = 'You want to get swole with steroids',
title = 'Performance Craving',
duration = 10000,
type = 'info',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 80,
message = 'You feel weak without steroids',
title = 'Craving',
duration = 15000,
type = 'warning',
every = 7,
stress = 2,
anim = {}, -- no animation triggered, just notification
}
}
},
['Steroid User'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 1.4,
physiologicalEffects = {'Roid rage', 'Liver stress', 'Hormonal imbalance'},
cravings = {
every = 16,
notify = {
message = 'You need steroids to maintain your gains',
title = 'Steroid Craving',
duration = 10000,
type = 'warning',
},
anim = {}, -- no animation triggered, just notification
visualEffects = {
blemishes = {
type = 9, -- Acne/skin issues
severity = 0.4,
},
},
whenNotSatisfied = {
threshold = 70,
message = 'Your muscles are shrinking without steroids',
title = 'Strong Craving',
duration = 15000,
type = 'error',
every = 5,
stress = 4,
damage = 2,
anim = {
dict = 'amb@world_human_muscle_flex@arms_at_side@idle_a',
anim = 'idle_a',
flags = 48,
},
}
}
},
['Roid Rager'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 2.0,
physiologicalEffects = {'Extreme aggression', 'Heart problems', 'Severe acne'},
cravings = {
every = 12,
notify = {
message = 'You need steroids to feel powerful',
title = 'Intense Craving',
duration = 12000,
type = 'error',
},
anim = {
dict = 'amb@world_human_muscle_flex@arms_at_side@idle_a',
anim = 'idle_b',
flags = 48,
},
visualEffects = {
blemishes = {
type = 9, -- Severe acne
severity = 0.7,
},
},
whenNotSatisfied = {
threshold = 55,
message = 'You feel rage building without steroids',
title = 'Roid Rage',
duration = 15000,
type = 'error',
every = 3,
stress = 7,
damage = 4,
anim = {
dict = 'amb@world_human_muscle_flex@arms_at_side@idle_a',
anim = 'idle_a',
flags = 48,
},
}
}
},
['Steroid Freak'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 3.2,
physiologicalEffects = {'Organ damage', 'Psychosis', 'Violent tendencies'},
cravings = {
every = 8,
notify = {
message = 'You need steroids to avoid violent rage',
title = 'Critical Craving',
duration = 15000,
type = 'error',
},
anim = {
dict = 'amb@world_human_muscle_flex@arms_at_side@idle_a',
anim = 'idle_b',
flags = 48,
},
visualEffects = {
blemishes = {
type = 9, -- Extreme acne/skin damage
severity = 1.0,
},
},
whenNotSatisfied = {
threshold = 35,
message = 'You want to hurt people without steroids',
title = 'Violent Rage',
duration = 20000,
type = 'error',
every = 2,
stress = 15,
damage = 8,
anim = {
dict = 'amb@world_human_muscle_flex@arms_at_side@idle_a',
anim = 'idle_c',
flags = 48,
},
code = function()
print('Steroid rage is making you dangerous!')
end
}
}
},
}
},
['oxy'] = {
-- Need A OxyContin Script + Many More Prescription Items? Check Out Envi-Prescriptions V3 - https://envi-scripts.tebex.io/package/5604452
name = 'OxyContin',
icon = 'fas fa-pills',
displayName = 'OxyContin (Oxycodone)',
treatmentCost = 12000,
treatmentDuration = 22, -- minutes
colors = {
icon = {from = '#00a8ff', to = '#0078d4'},
progress = {from = '#00a8ff', to = '#0078d4'}
},
items = {
['oxy'] = 1,
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 1.2,
physiologicalEffects = {'Pain relief', 'Mild euphoria', 'Light drowsiness'},
cravings = {
every = 25,
notify = {
message = 'You remember how good oxy felt',
title = 'Mild Craving',
duration = 10000,
type = 'info',
},
whenNotSatisfied = {
threshold = 80,
message = 'You feel slight discomfort',
title = 'Craving',
duration = 15000,
type = 'info',
every = 8,
damage = 1
}
}
},
['First Prescription'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.5,
physiologicalEffects = {'Pain relief', 'Drowsiness', 'Constipation'},
cravings = {
every = 16,
notify = {
message = 'You need your pain medication',
title = 'Medication Craving',
duration = 10000,
type = 'info',
},
anim = {
dict = "amb@world_human_stand_impatient@male@no_sign@base",
anim = "base",
flags = 48,
},
whenNotSatisfied = {
threshold = 70,
message = 'The pain is coming back without oxy',
title = 'Withdrawal Pain',
duration = 15000,
type = 'warning',
every = 6,
damage = 2,
anim = {}, -- no animation triggered, just notification
}
}
},
['Dependent Patient'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 2.2,
physiologicalEffects = {'Physical dependence', 'Tolerance building', 'Mood swings'},
cravings = {
every = 12,
notify = {
message = 'You desperately need more oxy',
title = 'Opioid Craving',
duration = 10000,
type = 'warning',
},
anim = {
dict = 'mp_player_inteat@pnq',
anim = 'loop',
flags = 48,
},
whenNotSatisfied = {
threshold = 65,
message = 'Withdrawal symptoms are starting',
title = 'Opioid Withdrawal',
duration = 15000,
type = 'error',
every = 4,
damage = 4,
stress = 6,
anim = {}, -- no animation triggered, just notification
}
}
},
['Pill Popper'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 3.5,
physiologicalEffects = {'Severe addiction', 'Respiratory depression', 'Overdose risk'},
cravings = {
every = 8,
notify = {
message = 'You need oxy to function normally',
title = 'Severe Craving',
duration = 12000,
type = 'error',
},
anim = {
dict = 'timetable@gardener@smoking_joint',
anim = 'idle_cough',
flags = 48,
},
visualEffects = {
blemishes = {
type = 5, -- Pallor/sickly appearance
severity = 0.5,
},
},
whenNotSatisfied = {
threshold = 50,
message = 'Severe withdrawal is setting in',
title = 'Severe Withdrawal',
duration = 15000,
type = 'error',
every = 2,
damage = 6,
stress = 9,
anim = {}, -- no animation triggered, just notification
}
}
},
['Oxy Addict'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 5.0,
physiologicalEffects = {'Life-threatening addiction', 'Organ failure risk', 'Mental deterioration'},
cravings = {
every = 5,
notify = {
message = 'You will die without oxy',
title = 'Life-Threatening Withdrawal',
duration = 15000,
type = 'error',
},
anim = {
dict = 'timetable@gardener@smoking_joint',
anim = 'idle_cough',
flags = 48,
},
visualEffects = {
blemishes = {
type = 5, -- Severe sickly appearance
severity = 0.9,
},
aging = {
type = 4, -- Sunken features
severity = 0.7,
},
},
whenNotSatisfied = {
threshold = 30,
message = 'You could die from oxy withdrawal',
title = 'Fatal Withdrawal',
duration = 20000,
type = 'error',
every = 1,
damage = 10,
stress = 15,
anim = {}, -- no animation triggered, just notification
code = function()
print('OxyContin withdrawal could be fatal!')
end
}
}
},
}
},
['valium'] = {
-- Need A Valium Script + Many More Prescription Items? Check Out Envi-Prescriptions V3 - https://envi-scripts.tebex.io/package/5604452
name = 'Valium',
icon = 'fas fa-capsules',
displayName = 'Valium (Diazepam)',
treatmentCost = 7500,
treatmentDuration = 16, -- minutes
colors = {
icon = {from = '#00d2d3', to = '#54a0ff'},
progress = {from = '#00d2d3', to = '#54a0ff'}
},
items = {
['valium'] = 1,
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 0.9,
physiologicalEffects = {'Mild relaxation', 'Slight drowsiness'},
cravings = {
every = 35,
notify = {
message = 'You remember feeling calm with valium',
title = 'Mild Craving',
duration = 10000,
type = 'info',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 85,
message = 'You feel slightly on edge',
title = 'Craving',
duration = 15000,
type = 'info',
every = 10,
stress = 2,
anim = {}, -- no animation triggered, just notification
}
}
},
['Anxiety Relief'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.1,
physiologicalEffects = {'Reduced anxiety', 'Drowsiness', 'Muscle relaxation'},
cravings = {
every = 20,
notify = {
message = 'You feel anxious without valium',
title = 'Anxiety Return',
duration = 10000,
type = 'info',
},
anim = {
dict = "amb@world_human_stand_impatient@male@no_sign@base",
anim = "base",
flags = 48,
every = 50,
},
whenNotSatisfied = {
threshold = 75,
message = 'Panic is setting in without valium',
title = 'Anxiety Craving',
duration = 15000,
type = 'warning',
every = 8,
stress = 4,
damage = 1,
anim = {}, -- no animation triggered, just notification
}
}
},
['Dependent User'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 1.8,
physiologicalEffects = {'Memory problems', 'Confusion', 'Tolerance'},
cravings = {
every = 14,
notify = {
message = 'You need valium to stay calm',
title = 'Benzo Craving',
duration = 10000,
type = 'warning',
},
anim = {
dict = "amb@world_human_stand_impatient@male@no_sign@base",
anim = "base",
flags = 48,
},
whenNotSatisfied = {
threshold = 65,
message = 'Severe anxiety without valium',
title = 'Panic Attack',
duration = 15000,
type = 'error',
every = 5,
stress = 7,
damage = 2,
anim = {}, -- no animation triggered, just notification
}
}
},
['Benzo Dependent'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 2.5,
physiologicalEffects = {'Severe dependence', 'Cognitive impairment', 'Seizure risk'},
cravings = {
every = 10,
notify = {
message = 'You desperately need valium to avoid seizures',
title = 'Dangerous Withdrawal',
duration = 12000,
type = 'error',
},
anim = {
dict = 'timetable@gardener@smoking_joint',
anim = 'idle_cough',
flags = 48,
},
whenNotSatisfied = {
threshold = 50,
message = 'You might have a seizure without valium',
title = 'Dangerous Withdrawal',
duration = 15000,
type = 'error',
every = 3,
stress = 10,
damage = 5,
anim = {}, -- no animation triggered, just notification
}
}
},
['Valium Addict'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 4.0,
physiologicalEffects = {'Life-threatening withdrawal', 'Memory loss', 'Seizure disorder'},
cravings = {
every = 6,
notify = {
message = 'Valium withdrawal could kill you',
title = 'Life-Threatening Craving',
duration = 15000,
type = 'error',
},
anim = {
dict = 'timetable@gardener@smoking_joint',
anim = 'idle_cough',
flags = 48,
},
whenNotSatisfied = {
threshold = 35,
message = 'Grand mal seizure risk without valium',
title = 'Seizure Risk',
duration = 20000,
type = 'error',
every = 2,
stress = 15,
damage = 8,
anim = {}, -- no animation triggered, just notification
code = function()
print('Valium withdrawal seizure risk!')
end
}
}
},
}
},
['xanax'] = {
-- Need A Xanax Script + Many More Prescription Items? Check Out Envi-Prescriptions V3 - https://envi-scripts.tebex.io/package/5604452
name = 'Xanax',
icon = 'fas fa-pills',
displayName = 'Xanax (Alprazolam)',
treatmentCost = 8500,
treatmentDuration = 18, -- minutes
colors = {
icon = {from = '#5f27cd', to = '#a55eea'},
progress = {from = '#5f27cd', to = '#a55eea'}
},
items = {
['xanax'] = 1,
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 1.0,
physiologicalEffects = {'Mild relaxation', 'Reduced panic'},
cravings = {
every = 30,
notify = {
message = 'You remember the calm feeling from xanax',
title = 'Mild Craving',
duration = 10000,
type = 'info',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 80,
message = 'You feel slightly anxious',
title = 'Craving',
duration = 15000,
type = 'info',
every = 10,
stress = 3,
anim = {}, -- no animation triggered, just notification
}
}
},
['Panic Relief'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.3,
physiologicalEffects = {'Panic relief', 'Sedation', 'Memory gaps'},
cravings = {
every = 18,
notify = {
message = 'You feel panicked without xanax',
title = 'Panic Return',
duration = 10000,
type = 'warning',
},
anim = {
dict = "amb@world_human_stand_impatient@male@no_sign@base",
anim = "base",
flags = 48,
},
whenNotSatisfied = {
threshold = 70,
message = 'Extreme panic without xanax',
title = 'Panic Attack',
duration = 15000,
type = 'error',
every = 6,
stress = 5,
damage = 2,
anim = {}, -- no animation triggered, just notification
}
}
},
['Xanax Dependent'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 2.0,
physiologicalEffects = {'Blackouts', 'Emotional numbness', 'Coordination loss'},
cravings = {
every = 12,
notify = {
message = 'You need xanax to function',
title = 'Benzo Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = "amb@world_human_stand_impatient@male@no_sign@base",
anim = "base",
flags = 48,
every = 28,
},
whenNotSatisfied = {
threshold = 60,
message = 'Crippling anxiety without xanax',
title = 'Severe Anxiety',
duration = 15000,
type = 'error',
every = 4,
stress = 8,
damage = 3,
anim = {}, -- no animation triggered, just notification
}
}
},
['Bar Addict'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 3.2,
physiologicalEffects = {'Memory loss', 'Dangerous behavior', 'Seizure risk'},
cravings = {
every = 8,
notify = {
message = 'You desperately need xanax bars',
title = 'Desperate Craving',
duration = 12000,
type = 'error',
},
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_a',
flags = 48,
},
whenNotSatisfied = {
threshold = 45,
message = 'You might seize without xanax',
title = 'Seizure Warning',
duration = 15000,
type = 'error',
every = 2,
stress = 12,
damage = 6,
anim = {}, -- no animation triggered, just notification
}
}
},
['Xanax Zombie'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 4.5,
physiologicalEffects = {'Complete memory loss', 'Personality change', 'Life-threatening withdrawal'},
cravings = {
every = 5,
notify = {
message = 'Xanax withdrawal could be fatal',
title = 'Fatal Withdrawal Risk',
duration = 15000,
type = 'error',
},
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
},
whenNotSatisfied = {
threshold = 30,
message = 'Life-threatening seizures without xanax',
title = 'Fatal Seizure Risk',
duration = 20000,
type = 'error',
every = 1,
stress = 20,
damage = 10,
anim = {}, -- no animation triggered, just notification
code = function()
print('Xanax withdrawal could cause fatal seizures!')
end
}
}
},
}
},
-- End of Envi-Prescriptions V3 Items
['cigarettes'] = {
name = 'Cigarettes',
icon = 'fas fa-smoking',
displayName = 'Cigarettes',
treatmentCost = 2500,
treatmentDuration = 8, -- minutes
colors = {
icon = {from = '#ff9a56', to = '#ff6b35'},
progress = {from = '#ff9a56', to = '#ff6b35'}
},
items = {
['cigarette'] = 1,
['redwoods'] = 1,
['cigar'] = 1,
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 0.8, -- Lower multiplier = slower craving increase
physiologicalEffects = {'Mild throat irritation', 'Occasional coughing'},
cravings = {
every = 20, -- minutes
notify = {
message = 'You feel like you need a cigarette',
title = 'Craving',
duration = 10000,
type = 'error',
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 80, -- if 80% or over on the craving meter, you are considered "not satisfied"
message = 'You could really use a cigarette!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 5, -- minutes
damage = 1, -- health damage
}
}
},
['Casual Smoker'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.0, -- Base multiplier
physiologicalEffects = {'Regular coughing', 'Reduced lung capacity'},
cravings = {
every = 13, -- minutes
notify = {
message = 'You fancy a cigarette?',
title = 'Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = 'timetable@gardener@smoking_joint',
anim = 'idle_cough',
flags = 48,
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 80, -- if 80% or over on the craving meter, you are considered "not satisfied"
message = 'You need a cigarette!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 4, -- minutes
damage = 2, -- health damage
anim = {}, -- no animation triggered, just notification
}
}
},
['Smoker'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 1.5, -- Higher multiplier = faster craving increase
physiologicalEffects = {'Persistent cough', 'Shortness of breath', 'Stained teeth'},
cravings = {
every = 10, -- minutes
notify = {
message = 'You need a cigarette!',
title = 'Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = 'timetable@gardener@smoking_joint',
anim = 'idle_cough',
flags = 48,
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 60, -- if 60% or over on the craving meter, you are considered "not satisfied"
message = 'You need a cigarette right now!!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 3, -- minutes
damage = 3, -- health damage
stress = 5, -- added stress
anim = {}, -- no animation triggered, just notification
}
}
},
['Avid Smoker'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 2.0, -- Much higher multiplier for severe addiction
physiologicalEffects = {'Chronic bronchitis risk', 'Severe breathing issues'},
cravings = {
every = 8, -- minutes
notify = {
message = 'You need a cigarette!',
title = 'Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = 'timetable@gardener@smoking_joint',
anim = 'idle_cough',
flags = 48,
},
visualEffects = {
blemishes = {
type = 1, -- Yellowing/staining
severity = 0.7,
},
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 40, -- if 40% or over on the craving meter, you are considered "not satisfied"
message = 'You need a cigarette right now!!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 2, -- minutes
damage = 4, -- health damage
stress = 7, -- added stress
anim = {}, -- no animation triggered, just notification
}
}
},
['Addicted'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 3.0, -- Highest multiplier for most severe addiction
physiologicalEffects = {'High cancer risk', 'Cardiovascular damage', 'Severe withdrawal symptoms'},
cravings = {
every = 15, -- minutes
notify = {
message = 'You need a cigarette to feed your addiction!',
title = 'Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = 'timetable@gardener@smoking_joint',
anim = 'idle_cough',
flags = 48,
},
visualEffects = {
blemishes = {
type = 3, -- Heavy yellowing/staining
severity = 0.8,
},
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 30, -- if 40% or over on the craving meter, you are considered "not satisfied"
message = 'You could KILL for a cigarette right now!!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 1, -- minutes
damage = 5, -- health damage
stress = 10, -- added stress
anim = {}, -- no animation triggered, just notification
code = function()
-- Execute custom client code here
print('You could KILL for a cigarette right now!!')
end
}
}
},
}
},
['alcohol'] = {
name = 'Alcohol',
icon = 'fas fa-wine-bottle',
displayName = 'Alcohol',
treatmentCost = 4000,
treatmentDuration = 12, -- minutes
colors = {
icon = {from = '#f093fb', to = '#f5576c'},
progress = {from = '#f093fb', to = '#f5576c'}
},
items = {
['beer'] = 1,
['vodka'] = 10,
['whiskey'] = 2,
['tequila'] = 2,
['rum'] = 2,
['wine'] = 1,
['champagne'] = 1
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 0.8, -- Lower multiplier = slower craving increase
physiologicalEffects = {'Mild dehydration', 'Occasional dizziness'},
cravings = {
every = 20, -- minutes
notify = {
message = 'You feel like you need a drink of alcohol',
title = 'Craving',
duration = 10000,
type = 'error',
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 80, -- if 80% or over on the craving meter, you are considered "not satisfied"
message = 'You could really use a drink of alcohol!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 5, -- minutes
damage = 1, -- health damage
}
}
},
['Casual Drinker'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.0, -- Base multiplier
physiologicalEffects = {'Tolerance building', 'Sleep disruption'},
cravings = {
every = 13, -- minutes
notify = {
message = 'You fancy a drink of alcohol?',
title = 'Craving',
duration = 10000,
type = 'error',
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 80, -- if 80% or over on the craving meter, you are considered "not satisfied"
message = 'You need a drink of alcohol!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 4, -- minutes
damage = 2, -- health damage
}
}
},
['Drinker'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 1.5, -- Higher multiplier = faster craving increase
physiologicalEffects = {'Liver stress', 'Memory issues', 'Mood swings'},
cravings = {
every = 10, -- minutes
notify = {
message = 'You need a drink of alcohol!',
title = 'Craving',
duration = 10000,
type = 'error',
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 75, -- if 75% or over on the craving meter, you are considered "not satisfied"
message = 'You need a drink of alcohol right now!!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 3, -- minutes
damage = 3, -- health damage
stress = 5, -- added stress
}
}
},
['Alcoholic'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 2.5, -- Much higher multiplier for severe addiction
physiologicalEffects = {'Liver damage risk', 'Cognitive impairment'},
cravings = {
every = 8, -- minutes
notify = {
message = 'You need a drink of alcohol!',
title = 'Craving',
duration = 10000,
type = 'error',
},
visualEffects = {
blemishes = {
type = 7, -- Redness/rosacea
severity = 0.4,
},
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 50, -- if 50% or over on the craving meter, you are considered "not satisfied"
message = 'You need a drink of alcohol right now!!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 2, -- minutes
damage = 4, -- health damage
stress = 7, -- added stress
}
}
},
['Chronic Alcoholic'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 3.5, -- Highest multiplier for most severe addiction (alcohol is very addictive)
physiologicalEffects = {'Severe organ damage', 'Dangerous withdrawal', 'Life-threatening complications'},
cravings = {
every = 15, -- minutes
notify = {
message = 'You need a drink of alcohol to feed your addiction!',
title = 'Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = 'timetable@gardener@smoking_joint',
anim = 'idle_cough',
flags = 48,
},
visualEffects = {
blemishes = {
type = 7, -- Severe facial redness
severity = 1.0,
},
aging = {
type = 11, -- Severe bloating/liver damage appearance
severity = 0.5,
},
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 40, -- if 40% or over on the craving meter, you are considered "not satisfied"
message = 'You could KILL for a drink of alcohol right now!!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 5, -- minutes
damage = 5, -- health damage
stress = 10, -- added stress
anim = {}, -- no animation triggered, just notification
code = function()
-- Execute custom client code here
print('You could KILL for a drink of alcohol right now!!')
end
}
}
},
}
},
['meth'] = {
name = 'Methamphetamine',
icon = 'fas fa-flask',
displayName = 'Methamphetamine',
treatmentCost = 15000,
treatmentDuration = 25, -- minutes
colors = {
icon = {from = '#4facfe', to = '#00f2fe'},
progress = {from = '#4facfe', to = '#00f2fe'}
},
items = {
['meth'] = 2, -- item / amount added to addiction
['meth_baggy'] = 1,
['meth_bag'] = 1,
['meth_pooch'] = 1,
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 1.0, -- Base multiplier (meth is immediately more addictive)
physiologicalEffects = {'Increased alertness', 'Appetite suppression'},
cravings = {
every = 30, -- minutes
notify = {
message = 'You feel like you need some meth',
title = 'Craving',
duration = 10000,
type = 'error',
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 80, -- if 80% or over on the craving meter, you are considered "not satisfied"
message = 'You could really use some meth!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 5, -- minutes
damage = 1, -- health damage
}
}
},
['Casual Junkie'] = {
threshold = 15,
riskLevel = 'medium',
cravingMultiplier = 1.8, -- Higher than normal due to meth's addictive nature
physiologicalEffects = {'Sleep disruption', 'Anxiety spikes'},
cravings = {
every = 13, -- minutes
notify = {
message = 'You fancy some meth?',
title = 'Craving',
duration = 10000,
type = 'error',
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 75, -- if 75% or over on the craving meter, you are considered "not satisfied"
message = 'You need some meth!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 4, -- minutes
damage = 2, -- health damage
anim = {}, -- no animation triggered, just notification
}
}
},
['Junkie'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 2.5, -- Much higher multiplier
physiologicalEffects = {'Paranoia', 'Dental problems', 'Weight loss'},
cravings = {
every = 10, -- minutes
notify = {
message = 'You need some meth!',
title = 'Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = 'switch@trevor@trev_smoking_meth',
anim = 'trev_smoking_meth_loop',
flags = 48,
},
visualEffects = {
blemishes = {
type = 15, -- index of the blemish type
severity = 0.3, -- between 0.1 and 1.0 (opacity)
},
aging = {
type = 13, -- Addict Face
severity = 0.6,
},
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 60, -- if 60% or over on the craving meter, you are considered "not satisfied"
message = 'You need some meth right now!!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 3, -- minutes
damage = 3, -- health damage
stress = 5, -- added stress
anim = {
dict = "amb@world_human_bum_standing@twitchy@idle_a",
anim = "idle_a",
flags = 48,
},
}
}
},
['Meth Addict'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 4.0, -- Very high multiplier for severe meth addiction
physiologicalEffects = {'Severe psychological issues', 'Physical deterioration'},
cravings = {
every = 8, -- minutes
notify = {
message = 'You need meth!',
title = 'Craving',
duration = 10000,
type = 'error',
anim = {}, -- no animation triggered, just notification
},
visualEffects = {
blemishes = {
type = 15, -- Severe acne/sores
severity = 0.6,
},
aging = {
type = 13, -- Addict Face
severity = 0.8,
},
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 50, -- if 50% or over on the craving meter, you are considered "not satisfied"
message = 'You need meth right now!!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 2, -- minutes
damage = 4, -- health damage
stress = 7, -- added stress
anim = {
dict = "amb@world_human_bum_standing@twitchy@idle_a",
anim = "idle_a",
flags = 48,
},
}
}
},
['Tweaker'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 6.0, -- Extreme multiplier for tweaker level addiction
physiologicalEffects = {'Psychosis risk', 'Extreme paranoia', 'Life-threatening behavior'},
cravings = {
every = 1, -- minutes
notify = {
message = 'You are thinking about meth...',
title = 'Intrusive Thoughts',
duration = 10000,
type = 'error',
anim = {
dict = "amb@world_human_bum_standing@twitchy@idle_a",
anim = "idle_a",
flags = 48,
},
},
visualEffects = {
blemishes = {
type = 15, -- Severe acne/sores
severity = 1.0, -- Maximum severity
},
aging = {
type = 13, -- Addict Face
severity = 1.0,
},
},
whenNotSatisfied = { -- after ignoring the first craving notification
threshold = 40, -- if 50% or over on the craving meter, you are considered "not satisfied"
message = 'You could KILL for meth right now!!',
title = 'Craving',
duration = 15000,
type = 'error',
every = 1, -- minutes
damage = 50, -- health damage
stress = 10, -- added stress
code = function()
-- Execute custom client code here
print('You could KILL for meth right now!!')
end,
anim = {
dict = "anim@mp_yacht@shower@male@",
anim = "male_shower_idle_c",
flags = 48,
},
}
}
},
}
},
['cocaine'] = {
name = 'Cocaine',
icon = 'fas fa-wind',
displayName = 'Cocaine',
treatmentCost = 12000,
treatmentDuration = 20, -- minutes
colors = {
icon = {from = '#ff3366', to = '#ff6b9d'},
progress = {from = '#ff3366', to = '#ff6b9d'}
},
items = {
['cocaine'] = 1,
['cocaine_baggy'] = 1,
['cocaine_bag'] = 1,
['cocaine_pooch'] = 1,
['coke'] = 1,
['coke_baggy'] = 1,
['coke_bag'] = 1,
['coke_pooch'] = 1,
['crack'] = 3,
['crack_baggy'] = 3,
['crack_bag'] = 3,
['crack_pooch'] = 3,
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 1.2, -- Higher than normal starting multiplier (cocaine is very addictive)
physiologicalEffects = {'Euphoria', 'Increased energy'},
cravings = {
every = 15,
notify = {
message = 'You could use a hit...',
title = 'Craving',
duration = 10000,
type = 'error',
},
whenNotSatisfied = {
threshold = 70,
message = 'The craving is getting stronger',
title = 'Craving',
duration = 15000,
type = 'error',
every = 5,
damage = 2,
stress = 3
}
}
},
['Regular User'] = {
threshold = 15,
riskLevel = 'medium',
cravingMultiplier = 2.0, -- Higher multiplier = faster craving increase
physiologicalEffects = {'Anxiety', 'Sleep problems'},
cravings = {
every = 10,
notify = {
message = 'You need a fix soon...',
title = 'Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = 'switch@trevor@trev_smoking_meth',
anim = 'trev_smoking_meth_loop',
flags = 48,
},
whenNotSatisfied = {
threshold = 60,
message = 'Your body is craving cocaine',
title = 'Intense Craving',
duration = 15000,
type = 'error',
every = 4,
damage = 3,
stress = 5,
anim = {
dict = "amb@world_human_bum_standing@twitchy@idle_a",
anim = "idle_a",
flags = 48,
},
}
}
},
['Heavy User'] = {
threshold = 25,
riskLevel = 'high',
cravingMultiplier = 3.0, -- Much higher multiplier for heavy use
physiologicalEffects = {'Heart issues', 'Paranoia'},
cravings = {
every = 8,
notify = {
message = 'You desperately need cocaine',
title = 'Strong Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = 'switch@trevor@trev_smoking_meth',
anim = 'trev_smoking_meth_loop',
flags = 48,
},
visualEffects = {
blemishes = {
type = 8, -- Nose damage/irritation
severity = 0.4,
},
aging = {
type = 2, -- Stress lines
severity = 0.3,
}
},
whenNotSatisfied = {
threshold = 50,
message = 'Your entire body is screaming for cocaine',
title = 'Severe Craving',
duration = 15000,
type = 'error',
every = 3,
damage = 4,
stress = 7,
anim = {
dict = "amb@world_human_bum_standing@twitchy@idle_a",
anim = "idle_a",
flags = 48,
},
}
}
},
['Cocaine Addict'] = {
threshold = 35,
riskLevel = 'critical',
cravingMultiplier = 4.5, -- Very high multiplier for severe addiction
physiologicalEffects = {'Severe cardiovascular problems', 'Mental instability'},
cravings = {
every = 5,
notify = {
message = 'You need cocaine NOW',
title = 'Critical Craving',
duration = 10000,
type = 'error',
anim = {
dict = 'switch@trevor@trev_smoking_meth',
anim = 'trev_smoking_meth_loop',
flags = 48,
},
},
visualEffects = {
blemishes = {
type = 8, -- Severe nose damage
severity = 0.7,
},
aging = {
type = 2, -- Heavy stress lines
severity = 0.6,
},
},
whenNotSatisfied = {
threshold = 40,
message = 'Withdrawal is setting in hard',
title = 'Withdrawal',
duration = 15000,
type = 'error',
every = 2,
damage = 5,
stress = 8,
anim = {
dict = "amb@world_human_bum_standing@twitchy@idle_a",
anim = "idle_a",
flags = 48,
},
}
}
},
['Crack Fiend'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 6.5, -- Extreme multiplier for crack addiction (highest)
physiologicalEffects = {'Heart attack risk', 'Psychosis', 'Organ failure'},
cravings = {
every = 15,
notify = {
message = 'Your life depends on cocaine',
title = 'Severe Withdrawal',
duration = 10000,
type = 'error',
anim = {
dict = 'switch@trevor@trev_smoking_meth',
anim = 'trev_smoking_meth_loop',
flags = 48,
},
},
visualEffects = {
blemishes = {
type = 8, -- Destroyed nasal area
severity = 1.0,
},
aging = {
type = 2, -- Extreme premature aging
severity = 0.9,
},
},
whenNotSatisfied = {
threshold = 30,
message = 'You feel like you might die without cocaine',
title = 'Life-Threatening Withdrawal',
duration = 15000,
type = 'error',
every = 1,
damage = 6,
stress = 10,
code = function()
print('Cocaine withdrawal is killing you!')
end,
anim = {
dict = "amb@world_human_bum_standing@twitchy@idle_a",
anim = "idle_a",
flags = 48,
},
}
}
}
}
},
['weed'] = {
name = 'Cannabis',
icon = 'fas fa-cannabis',
displayName = 'Marijuana',
treatmentCost = 1500,
treatmentDuration = 6, -- minutes
colors = {
icon = {from = '#32dd32', to = '#00b894'},
progress = {from = '#32dd32', to = '#00b894'}
},
items = {
['joint'] = 1,
['weed_joint'] = 1,
['weed'] = 1,
['weed_baggy'] = 1,
['weed_bag'] = 1,
['weed_pooch'] = 1,
['hash'] = 1,
['hash_baggy'] = 1,
['hash_bag'] = 1,
['hash_pooch'] = 1,
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 0.5, -- Lower multiplier (weed is less physically addictive)
physiologicalEffects = {'Mild euphoria', 'Increased appetite', 'Clumsiness'},
cravings = {
every = 30,
notify = {
message = 'You could go for a smoke',
title = 'Mild Craving',
duration = 10000,
type = 'info',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 90,
message = 'A joint would be nice right now',
title = 'Craving',
duration = 15000,
type = 'info',
every = 10,
stress = 2,
anim = {}, -- no animation triggered, just notification
}
}
},
['Regular User'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 0.8, -- Still relatively low
physiologicalEffects = {'Memory issues', 'Reduced motivation'},
cravings = {
every = 25,
notify = {
message = 'Time for a 420 smoke break?',
title = 'Craving',
duration = 10000,
type = 'info',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 80,
message = 'You really want to smoke a joint right now',
title = 'Strong Craving',
duration = 15000,
type = 'info',
every = 8,
stress = 3,
anim = {}, -- no animation triggered, just notification
}
}
},
['Heavy User'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 1.2, -- Moderate multiplier
physiologicalEffects = {'Dependency', 'Cognitive issues'},
cravings = {
every = 20,
notify = {
message = 'You need to smoke a joint soon',
title = 'Strong Craving',
duration = 10000,
type = 'error',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 70,
message = 'Your mind keeps drifting to smoking',
title = 'Intense Craving',
duration = 15000,
type = 'error',
every = 6,
stress = 4,
anim = {
dict = "timetable@gardener@smoking_joint",
anim = "idle_cough",
flags = 48,
}
}
}
},
['Pothead'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 1.8, -- Higher but still reasonable for weed
physiologicalEffects = {'Psychological addiction', 'Severe lethargy'},
cravings = {
every = 15,
notify = {
message = 'You really need to smoke a joint right now',
title = 'Severe Craving',
duration = 10000,
type = 'error',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 60,
message = 'Your anxiety is rising without weed',
title = 'Withdrawal',
duration = 15000,
type = 'error',
every = 4,
stress = 6,
anim = {
dict = "timetable@gardener@smoking_joint",
anim = "idle_cough",
flags = 48,
}
}
}
},
['Chronic Stoner'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 2.5, -- Highest for weed but still lower than hard drugs
physiologicalEffects = {'Memory loss', 'Anxiety when sober', 'Depression'},
cravings = {
every = 15,
notify = {
message = 'You need to smoke a joint right now',
title = 'Severe Craving',
duration = 10000,
type = 'error',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 40,
message = 'You feel like you might die without weed',
title = 'Life-Threatening Withdrawal',
duration = 15000,
type = 'error',
every = 1,
damage = 50,
stress = 10,
code = function()
print('You feel like you might die without weed')
end,
anim = {
dict = "timetable@gardener@smoking_joint",
anim = "idle_cough",
flags = 48,
}
}
}
}
}
},
['gambling'] = {
name = 'Gambling',
icon = 'fas fa-dice',
displayName = 'Gambling Addiction',
treatmentCost = 8000,
treatmentDuration = 18, -- minutes
colors = {
icon = {from = '#ffd700', to = '#ff8c00'},
progress = {from = '#ffd700', to = '#ff8c00'}
},
-- No items array - this addiction is triggered only via exports
levels = {
['Occasional Gambler'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 0.9, -- Slightly higher than normal starting point
physiologicalEffects = {'Mild excitement when gambling', 'Occasional thoughts about winning'},
cravings = {
every = 25, -- minutes
notify = {
message = 'You feel like placing a small bet',
title = 'Gambling Urge',
duration = 10000,
type = 'info',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 85,
message = 'Maybe just one quick game...',
title = 'Gambling Craving',
duration = 12000,
type = 'info',
every = 8,
stress = 2,
anim = {}, -- no animation triggered, just notification
}
}
},
['Regular Gambler'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.3, -- Higher than most substances at this level
physiologicalEffects = {'Increased anxiety', 'Difficulty concentrating on other activities'},
cravings = {
every = 18,
notify = {
message = 'You want to place a bet',
title = 'Gambling Urge',
duration = 10000,
type = 'warning',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 75,
message = 'Your hands are getting restless without gambling',
title = 'Strong Urge',
duration = 12000,
type = 'warning',
every = 6,
stress = 4,
anim = {}, -- no animation triggered, just notification
}
}
},
['Problem Gambler'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 2.0, -- High multiplier for behavioral addiction
physiologicalEffects = {'Financial stress', 'Mood swings', 'Lying about gambling'},
cravings = {
every = 12,
notify = {
message = 'You need to gamble to feel normal',
title = 'Gambling Craving',
duration = 10000,
type = 'error',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 65,
message = 'Your mind is racing with gambling thoughts',
title = 'Intense Craving',
duration = 15000,
type = 'error',
every = 4,
stress = 6,
anim = {}, -- no animation triggered, just notification
}
}
},
['Compulsive Gambler'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 3.2, -- Very high for severe addiction
physiologicalEffects = {'Severe financial problems', 'Relationship damage', 'Depression'},
cravings = {
every = 8,
notify = {
message = 'You NEED to gamble right now',
title = 'Gambling Desperation',
duration = 12000,
type = 'error',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 50,
message = 'You would do anything to get money to gamble',
title = 'Desperate Craving',
duration = 15000,
type = 'error',
every = 3,
stress = 8,
damage = 2, -- Stress-related health issues?
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
},
}
}
},
['Pathological Gambler'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 4.5, -- Extreme multiplier for pathological gambling
physiologicalEffects = {'Complete financial ruin', 'Suicidal thoughts', 'Complete life destruction'},
cravings = {
every = 5,
notify = {
message = 'Gambling is the only thing that matters',
title = 'Pathological Craving',
duration = 15000,
type = 'error',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 35,
message = 'You would steal, lie, or hurt people to get gambling money',
title = 'Dangerous Desperation',
duration = 20000,
type = 'error',
every = 2,
stress = 12,
damage = 5, -- Severe stress-related health damage
code = function()
-- Execute custom client code here
print('Pathological gambling is destroying your life!')
end,
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
},
}
}
},
}
},
['crime'] = {
name = 'Crime',
icon = 'fas fa-mask',
displayName = 'Criminal Behavior',
treatmentCost = 10000,
treatmentDuration = 22, -- minutes
colors = {
icon = {from = '#8b0000', to = '#ff4500'},
progress = {from = '#8b0000', to = '#ff4500'}
},
-- No items array - this addiction is triggered only via exports from crime scripts
levels = {
['First Timer'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 1.1, -- Slightly higher than normal (crime can be immediately addictive)
physiologicalEffects = {'Adrenaline rush', 'Heightened awareness', 'Mild paranoia'},
cravings = {
every = 30, -- minutes
notify = {
message = 'You feel like pulling off something small',
title = 'Criminal Urge',
duration = 10000,
type = 'warning',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 80,
message = 'Maybe just one quick job...',
title = 'Criminal Craving',
duration = 12000,
type = 'warning',
every = 10,
stress = 3,
anim = {}, -- no animation triggered, just notification
}
}
},
['Repeat Offender'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.6, -- Higher progression due to psychological nature
physiologicalEffects = {'Increased risk tolerance', 'Social disconnection', 'Authority defiance'},
cravings = {
every = 20,
notify = {
message = 'You want to commit a crime',
title = 'Criminal Urge',
duration = 10000,
type = 'error',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 70,
message = 'Your hands are itching for some action',
title = 'Strong Urge',
duration = 12000,
type = 'error',
every = 7,
stress = 5,
anim = {}, -- no animation triggered, just notification
}
}
},
['Habitual Criminal'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 2.2, -- High multiplier for behavioral addiction
physiologicalEffects = {'Chronic paranoia', 'Sleep disturbances', 'Relationship breakdown'},
cravings = {
every = 15,
notify = {
message = 'You need to commit a crime to feel alive',
title = 'Criminal Craving',
duration = 10000,
type = 'error',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 60,
message = 'Crime is the only thing that makes sense anymore',
title = 'Intense Craving',
duration = 15000,
type = 'error',
every = 5,
stress = 7,
damage = 1, -- Stress-related health issues
anim = {}, -- no animation triggered, just notification
}
}
},
['Career Criminal'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 3.5, -- Very high for severe criminal addiction
physiologicalEffects = {'Antisocial personality traits', 'Extreme paranoia', 'Violence tendency'},
cravings = {
every = 10,
notify = {
message = 'You NEED to commit a crime right now',
title = 'Criminal Desperation',
duration = 12000,
type = 'error',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 45,
message = 'Violence is becoming the only solution to everything',
title = 'Dangerous Craving',
duration = 15000,
type = 'error',
every = 3,
stress = 10,
damage = 3, -- Significant stress damage
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
},
}
}
},
['Psychopathic Criminal'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 5.0, -- Extreme multiplier for psychopathic criminal behavior
physiologicalEffects = {'Complete lack of empathy', 'Extreme violence', 'Society destruction'},
cravings = {
every = 8,
notify = {
message = 'Crime is your only reason for existing',
title = 'Psychopathic Craving',
duration = 15000,
type = 'error',
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_a',
flags = 48,
},
},
whenNotSatisfied = {
threshold = 30,
message = 'You would kill anyone who gets in your way',
title = 'Homicidal Rage',
duration = 20000,
type = 'error',
every = 2,
stress = 15,
damage = 8, -- Severe stress and health damage
code = function()
-- Execute custom client code here
print('Psychopathic criminal behavior is destroying everything!')
end,
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
},
}
}
},
}
},
-- Wasabi Ambulance Items - Download it here: https://wasabiscripts.com/package/5306547
['percocet'] = {
name = 'Percocet',
icon = 'fas fa-pills',
displayName = 'Percocet (Acetaminophen)',
treatmentCost = 11000,
treatmentDuration = 20, -- minutes
colors = {
icon = {from = '#ff6b35', to = '#f7931e'},
progress = {from = '#ff6b35', to = '#f7931e'}
},
items = { -- wasabi ambulance items
['perc30'] = 3,
['perc10'] = 2,
['perc5'] = 1
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 1.1,
physiologicalEffects = {'Mild pain relief', 'Light drowsiness', 'Nausea'},
cravings = {
every = 22,
notify = {
message = 'You remember the relief percocet provided',
title = 'Mild Craving',
duration = 10000,
type = 'info',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 85,
message = 'You feel slight discomfort returning',
title = 'Craving',
duration = 15000,
type = 'info',
every = 9,
damage = 1,
anim = {}, -- no animation triggered, just notification
}
}
},
['Pain Management'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.4,
physiologicalEffects = {'Tolerance building', 'Constipation', 'Mood changes'},
cravings = {
every = 14,
notify = {
message = 'You need your pain medication',
title = 'Medication Craving',
duration = 10000,
type = 'warning',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 75,
message = 'Pain is returning without percocet',
title = 'Withdrawal Pain',
duration = 15000,
type = 'warning',
every = 6,
damage = 2,
stress = 3,
anim = {}, -- no animation triggered, just notification
}
}
},
['Dependent User'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 2.1,
physiologicalEffects = {'Physical dependence', 'Respiratory depression', 'Liver stress'},
cravings = {
every = 10,
notify = {
message = 'You desperately need percocet',
title = 'Opioid Craving',
duration = 10000,
type = 'error',
anim = {}, -- no animation triggered, just notification
},
whenNotSatisfied = {
threshold = 65,
message = 'Withdrawal symptoms are starting',
title = 'Opioid Withdrawal',
duration = 15000,
type = 'error',
every = 4,
damage = 4,
stress = 6,
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
},
}
}
},
['Pill Addict'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 3.2,
physiologicalEffects = {'Severe addiction', 'Overdose risk', 'Organ damage'},
cravings = {
every = 7,
notify = {
message = 'You need percocet to function',
title = 'Severe Craving',
duration = 12000,
type = 'error',
},
anim = {}, -- no animation triggered, just notification
visualEffects = {
blemishes = {
type = 5, -- Pallor/sickly appearance
severity = 0.4,
},
},
whenNotSatisfied = {
threshold = 50,
message = 'Severe withdrawal is setting in',
title = 'Severe Withdrawal',
duration = 15000,
type = 'error',
every = 2,
damage = 6,
stress = 8,
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_a',
flags = 48,
},
}
}
},
['Percocet Addict'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 4.5,
physiologicalEffects = {'Life-threatening addiction', 'Respiratory failure risk', 'Complete dependency'},
cravings = {
every = 4,
notify = {
message = 'You will die without percocet',
title = 'Life-Threatening Withdrawal',
duration = 15000,
type = 'error',
},
anim = {}, -- no animation triggered, just notification
visualEffects = {
blemishes = {
type = 5, -- Severe sickly appearance
severity = 0.8,
},
aging = {
type = 4, -- Sunken features
severity = 0.6,
},
},
whenNotSatisfied = {
threshold = 35,
message = 'Percocet withdrawal could be fatal',
title = 'Fatal Withdrawal',
duration = 20000,
type = 'error',
every = 1,
damage = 9,
stress = 12,
code = function()
print('Percocet withdrawal could be fatal!')
end,
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
},
}
}
},
}
},
['morphine'] = {
name = 'Morphine',
icon = 'fas fa-syringe',
displayName = 'Morphine',
treatmentCost = 14000,
treatmentDuration = 25, -- minutes
colors = {
icon = {from = '#8b5cf6', to = '#6366f1'},
progress = {from = '#8b5cf6', to = '#6366f1'}
},
items = { -- wasabi ambulance items
['morphine30'] = 2,
['morphine15'] = 1
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 1.3,
physiologicalEffects = {'Euphoria', 'Pain relief', 'Drowsiness'},
cravings = {
every = 20,
notify = {
message = 'You remember the peace morphine brought',
title = 'Mild Craving',
duration = 10000,
type = 'info',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 80,
message = 'You feel restless without morphine',
title = 'Craving',
duration = 15000,
type = 'info',
every = 8,
damage = 2
}
}
},
['Medical User'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.6,
physiologicalEffects = {'Physical dependence', 'Tolerance', 'Respiratory depression'},
cravings = {
every = 12,
notify = {
message = 'You need your morphine dose',
title = 'Medical Craving',
duration = 10000,
type = 'warning',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 70,
message = 'Severe pain returning without morphine',
title = 'Withdrawal Pain',
duration = 15000,
type = 'warning',
every = 5,
damage = 3,
stress = 4,
anim = {}, -- no animation triggered, just notification
}
}
},
['Morphine Dependent'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 2.4,
physiologicalEffects = {'Severe dependence', 'Injection site problems', 'Immune suppression'},
cravings = {
every = 8,
notify = {
message = 'You desperately need morphine',
title = 'Opioid Craving',
duration = 10000,
type = 'error',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 60,
message = 'Morphine withdrawal is setting in',
title = 'Opioid Withdrawal',
duration = 15000,
type = 'error',
every = 3,
damage = 5,
stress = 7,
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_a',
flags = 48,
},
}
}
},
['Morphine Addict'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 3.8,
physiologicalEffects = {'Severe addiction', 'Collapsed veins', 'Organ failure risk'},
cravings = {
every = 6,
notify = {
message = 'You need morphine to survive',
title = 'Desperate Craving',
duration = 12000,
type = 'error',
},
anim = {}, -- no animation triggered, just notification
visualEffects = {
blemishes = {
type = 5, -- Severe pallor
severity = 0.6,
},
aging = {
type = 4, -- Sunken appearance
severity = 0.4,
},
},
whenNotSatisfied = {
threshold = 45,
message = 'Severe morphine withdrawal',
title = 'Severe Withdrawal',
duration = 15000,
type = 'error',
every = 2,
damage = 7,
stress = 9,
anim = {}, -- no animation triggered, just notification
}
}
},
['Morphine Fiend'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 5.2,
physiologicalEffects = {'Life-threatening addiction', 'Multiple organ failure', 'Respiratory arrest risk'},
cravings = {
every = 3,
notify = {
message = 'Morphine is your only reason to live',
title = 'Fatal Withdrawal Risk',
duration = 15000,
type = 'error',
},
anim = {}, -- no animation triggered, just notification
visualEffects = {
blemishes = {
type = 5, -- Extreme sickly appearance
severity = 1.0,
},
aging = {
type = 4, -- Severe deterioration
severity = 0.9,
},
},
whenNotSatisfied = {
threshold = 25,
message = 'Morphine withdrawal could kill you',
title = 'Fatal Withdrawal',
duration = 20000,
type = 'error',
every = 1,
damage = 12,
stress = 15,
code = function()
print('Morphine withdrawal could be fatal!')
end,
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
},
}
}
},
}
},
['vicodin'] = {
name = 'Vicodin',
icon = 'fas fa-pills',
displayName = 'Vicodin (Hydrocodone/Acetaminophen)',
treatmentCost = 9500,
treatmentDuration = 18, -- minutes
colors = {
icon = {from = '#10ac84', to = '#1dd1a1'},
progress = {from = '#10ac84', to = '#1dd1a1'}
},
items = { -- wasabi ambulance items
['vic10'] = 2,
['vic5'] = 1
},
levels = {
['Just Started'] = {
threshold = 5,
riskLevel = 'low',
cravingMultiplier = 1.0,
physiologicalEffects = {'Pain relief', 'Mild euphoria', 'Drowsiness'},
cravings = {
every = 28,
notify = {
message = 'You think about taking vicodin again',
title = 'Mild Craving',
duration = 10000,
type = 'info',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 85,
message = 'You feel some discomfort',
title = 'Craving',
duration = 15000,
type = 'info',
every = 10,
damage = 1,
anim = {}, -- no animation triggered, just notification
}
}
},
['Regular User'] = {
threshold = 15,
riskLevel = 'low',
cravingMultiplier = 1.3,
physiologicalEffects = {'Tolerance building', 'Constipation', 'Nausea'},
cravings = {
every = 18,
notify = {
message = 'You need your vicodin prescription',
title = 'Medication Craving',
duration = 10000,
type = 'warning',
},
anim = {}, -- no animation triggered, just notification
whenNotSatisfied = {
threshold = 75,
message = 'Pain is coming back without vicodin',
title = 'Withdrawal Pain',
duration = 15000,
type = 'warning',
every = 7,
damage = 2,
stress = 3,
anim = {}, -- no animation triggered, just notification
}
}
},
['Vicodin Dependent'] = {
threshold = 25,
riskLevel = 'medium',
cravingMultiplier = 1.9,
physiologicalEffects = {'Physical dependence', 'Liver damage risk', 'Mood swings'},
cravings = {
every = 11,
notify = {
message = 'You desperately need vicodin',
title = 'Opioid Craving',
duration = 10000,
type = 'error',
},
anim = {
dict = "amb@world_human_stand_impatient@male@no_sign@base",
anim = "base",
flags = 48,
},
whenNotSatisfied = {
threshold = 65,
message = 'Withdrawal symptoms are starting',
title = 'Opioid Withdrawal',
duration = 15000,
type = 'error',
every = 4,
damage = 4,
stress = 5,
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
}
}
}
},
['Pill Popper'] = {
threshold = 35,
riskLevel = 'high',
cravingMultiplier = 2.8,
physiologicalEffects = {'Severe addiction', 'Respiratory depression', 'Overdose risk'},
cravings = {
every = 8,
notify = {
message = 'You need vicodin to function normally',
title = 'Severe Craving',
duration = 12000,
type = 'error',
},
anim = {
dict = "amb@world_human_stand_impatient@male@no_sign@base",
anim = "base",
flags = 48,
},
visualEffects = {
blemishes = {
type = 5, -- Pallor/sickly appearance
severity = 0.5,
},
},
whenNotSatisfied = {
threshold = 50,
message = 'Severe withdrawal is setting in',
title = 'Severe Withdrawal',
duration = 15000,
type = 'error',
every = 3,
damage = 5,
stress = 7,
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
}
}
}
},
['Vicodin Addict'] = {
threshold = 50,
riskLevel = 'critical',
cravingMultiplier = 4.0,
physiologicalEffects = {'Life-threatening addiction', 'Liver failure risk', 'Complete dependency'},
cravings = {
every = 5,
notify = {
message = 'You will die without vicodin',
title = 'Life-Threatening Withdrawal',
duration = 15000,
type = 'error',
},
anim = {}, -- no animation triggered, just notification
visualEffects = {
blemishes = {
type = 5, -- Severe sickly appearance
severity = 0.8,
},
aging = {
type = 4, -- Sunken features
severity = 0.5,
},
},
whenNotSatisfied = {
threshold = 35,
message = 'Vicodin withdrawal could be fatal',
title = 'Fatal Withdrawal',
duration = 20000,
type = 'error',
every = 1,
damage = 8,
stress = 11,
code = function()
print('Vicodin withdrawal could be fatal!')
end,
anim = {
dict = 'amb@world_human_bum_standing@twitchy@idle_a',
anim = 'idle_c',
flags = 48,
}
}
}
},
}
},
}
Config.RehabZones = {
[1]= {
name = 'Parsons Rehabilitation Center', -- Native GTA Rehab Center, Move it elsewhere if you have a giant mansion here lol
enterance = vector4(-1501.3473, 856.9818, 181.5947, 174.1103),
height = 50.0,
debug = false,
points = {
vector3(-1623.7449, 726.4937, 170.0), -- if changing, make sure all the Z coords match (170.0 in this case)
vector3(-1621.5912, 854.8314, 170.0), -- if changing, make sure all the Z coords match (170.0 in this case)
vector3(-1504.1873, 925.9734, 170.0), -- if changing, make sure all the Z coords match (170.0 in this case)
vector3(-1471.7681, 890.0535, 170.0), -- if changing, make sure all the Z coords match (170.0 in this case)
vector3(-1452.3112, 812.7595, 170.0), -- if changing, make sure all the Z coords match (170.0 in this case)
},
blip = {
sprite = 398,
color = 2,
scale = 0.8,
label = 'Parsons Rehabilitation Center',
display = 2,
}
},
}
Config.RehabSettings = {
detoxCost = 30000,
timeForDetox = 30, -- minutes -- time players must stay in Rehab Zone to receive a complete detox treatment
-- Individual substance treatment costs and durations are now configured per-substance in Config.Addictions
}
Config.BloodTestPoints = {
[1] = {
coords = vector3(461.3392, -991.3412, 24.9154), -- Inside the Police Station
radius = 2.0,
label = 'Blood Testing Laboratory',
icon = 'fas fa-vial',
debug = false, -- This will enable / disable DEBUG ZONE (Red Circles)
},
[2] = {
coords = vector3(3536.8450, 3662.5977, 28.1219), -- Humane Labs
radius = 2.0,
label = 'Blood Testing Laboratory',
icon = 'fas fa-vial',
debug = false, -- This will enable / disable DEBUG ZONE (Red Circles)
},
}
-- Job Configuration for Addiction Checks and Forceable Rehab
Config.AuthorizedJobs = {
['police'] = true,
['ems'] = true,
['doctor'] = true,
['sheriff'] = true,
['deputy'] = true,
['paramedic'] = true,
['ambulance'] = true,
-- Add more jobs as needed
}
--------------------
-- REHAB SETTINGS --
--------------------
Config.InvoluntaryRehab = {
severeAddictionThreshold = 'high', -- Minimum risk level required for involuntary commitment ('high' or 'critical')
checkDistance = 5.0, -- Distance in meters to check for nearby players
onPlayerLeaveRehab = 'teleport', -- 'dispatch' or 'teleport' -- if set to 'dispatch' then edit the client_open/ server_open accordingly
teleportLocation = vector4(-1501.3473, 856.9818, 181.5947, 174.1103), -- Where to teleport back (rehab entrance)
duration = 2, -- minutes
timeReduction = {
Yoga = {
enabled = true,
command = 'yoga',
stopCommand = 'stopYoga',
},
Swimming = {
enabled = true,
},
}
}
---------------------------------------
-- OVERDOSES & STOMACH PUMP SETTINGS --
---------------------------------------
Config.OverDoses = {
['codeine'] = {
minTakenToTrigger = 5,
chance = 10,
maxTakenToTrigger = 10,
drugCooldown = 5,
goodMeds = 'cleanair',
badMeds = 'focuspatch',
},
['adrenaline'] = {
minTakenToTrigger = 5,
chance = 10,
maxTakenToTrigger = 10,
drugCooldown = 5,
goodMeds = 'cardioclamp',
badMeds = 'zendose',
},
['meth'] = {
minTakenToTrigger = 5,
chance = 10,
maxTakenToTrigger = 10,
drugCooldown = 5,
goodMeds = 'antipsychotix',
badMeds = 'opionix',
},
['xanax'] = {
minTakenToTrigger = 5,
chance = 10,
maxTakenToTrigger = 10,
drugCooldown = 5,
goodMeds = 'neurolift',
badMeds = 'pulsedown',
},
['alcohol'] = {
minTakenToTrigger = 5,
chance = 10,
maxTakenToTrigger = 10,
drugCooldown = 5,
goodMeds = 'gutflush',
badMeds = 'antipsychotix',
},
['steroids'] = {
minTakenToTrigger = 5,
chance = 10,
maxTakenToTrigger = 10,
drugCooldown = 5,
goodMeds = 'zendose',
badMeds = 'gutflush',
},
['valium'] = {
minTakenToTrigger = 5,
chance = 10,
maxTakenToTrigger = 10,
drugCooldown = 5,
goodMeds = 'focuspatch',
badMeds = 'cleanair',
},
['oxy'] = {
minTakenToTrigger = 5,
chance = 10,
maxTakenToTrigger = 10,
drugCooldown = 5,
goodMeds = 'opionix',
badMeds = 'neurolift',
},
['cocaine'] = {
minTakenToTrigger = 5,
chance = 10,
maxTakenToTrigger = 10,
drugCooldown = 5,
goodMeds = 'pulsedown',
badMeds = 'cardioclamp',
},
-- Wasabi Ambulance Items
['percocet'] = {
minTakenToTrigger = 4,
chance = 12,
maxTakenToTrigger = 8,
drugCooldown = 5,
goodMeds = 'opionix',
badMeds = 'neurolift',
},
['morphine'] = {
minTakenToTrigger = 3,
chance = 15,
maxTakenToTrigger = 6,
drugCooldown = 5,
goodMeds = 'cleanair',
badMeds = 'pulsedown',
},
['vicodin'] = {
minTakenToTrigger = 4,
chance = 11,
maxTakenToTrigger = 9,
drugCooldown = 5,
goodMeds = 'gutflush',
badMeds = 'antipsychotix',
},
}
Config.OverdoseStomachPumpLocations = { -- other than giving individual items, autorised jobs can also hook up an overdosing player to a stomach pump and stop all overdoses
[1] = {
stationCoords = vector3(-255.19, 6314.83, 32.42),
patientLayDownCoords = vector3(-256.01, 6315.60, 33.34),
patientLayDownHeading = 226.96,
}
}
Config.OverdoseMaxCameraShake = 6.0 -- max camera shake amount when overdosing (gets more intense over time)
-----------------------------
-- CRAVING SYSTEM SETTINGS --
-----------------------------
Config.CravingSystem = {
uiUpdateInterval = 30000, -- How often to update UI in ms (30 seconds)
maxCravingPoints = 100, -- Maximum craving points (100%)
cravingPoints = {
onAddictionEffect = 2, -- Points added when PlayAddictionEffect is triggered
onCravingNotification = 8, -- Points added when HandleCraving (normal) is triggered
onCravingPenalty = 15, -- Points added when HandleCraving (escalated/penalty) is triggered
}
}
-----------------------
-- DATABASE SETTINGS --
-----------------------
Config.DatabaseRecords = {
bloodTests = {
maxHistory = 50,
}
}
-------------------------
--- LANGUAGE SETTINGS ---
-------------------------
Config.Lang = {
-- Overdose
overdose = 'Overdose',
overdoseMessage = 'You dont feel too good!',
overdoseMessage2 = 'You have severly overdosing.. Seek medical attention immediately!',
medicationTitle = 'Medication',
medicationTooFarAway = 'Patient is too far away',
medicationPatientImproving = 'The patient looks to be improving',
medicationIncorrectMedication = 'You administed the incorrect medication, the patient seems to be getting worse',
medicationBeingAdministered = 'You are being administered overdose medication',
medicationConditionImproving = 'You can feel your condition improving',
medicationGettingWorse = 'Whatever they gave you is making you feel worse!',
-- Detox and Treatments
detoxRequest = 'Detox Request',
detoxRehabCenterRequired = 'Please head to your nearest Rehab Center to request a detox treatment',
detoxAlreadyInRehab = 'You are already in rehab. Please wait for your current treatment to end',
detoxRequestSubmitted = 'Detox request has been submitted to medical staff',
treatmentRequest = 'Treatment Request',
treatmentRehabCenterRequired = 'Please head to your nearest Rehab Center to request a treatment',
treatmentAlreadyInRehab = 'You are already in rehab. Please wait for your current treatment to end',
treatmentRequestSubmitted = 'Treatment request for %s submitted',
-- History
historyTitle = 'History',
historyComingSoon = 'Usage history for %s feature coming soon',
-- Stomach Pump
stomachPumpTitle = 'Stomach Pump',
stomachPumpNotAuthorized = 'You are not authorized to access the stomach pump station',
stomachPumpProcedureInitiated = 'Emergency stomach pump procedure initiated for %s',
stomachPumpNotNearStation = 'You must be near a stomach pump station to perform this procedure',
stomachPumpPatientNotFound = 'Patient not found or not in range',
stomachPumpTooFarAway = 'You are too far away from the stomach pump',
stomachPumpComplete = 'You have completed the stomach pump procedure',
stomachPumpPatientNotOverdosing = 'Patient is not currently overdosing',
stomachPumpProcedureCompleted = 'Emergency procedure completed successfully',
-- Blood Testing
bloodTestingTitle = 'Blood Testing',
bloodTestingNotAuthorized = 'You are not authorized to access the blood testing laboratory',
bloodDrawTitle = 'Blood Draw',
bloodDrawNobodyNearby = 'Nobody nearby to draw blood from',
bloodDrawInProgress = 'Drawing blood sample...',
bloodDrawComplete = 'Blood sample collected successfully',
bloodDrawnFrom = 'Your blood was drawn by %s for medical testing',
bloodSampleTitle = 'Blood Sample',
bloodSampleCollected = 'Blood vial for %s has been collected',
-- Involuntary Commitment and Rehab
involuntaryCommitmentTitle = 'Involuntary Commitment',
involuntaryCommitmentSuccess = 'Patient has been committed to involuntary rehab',
involuntaryCommitmentTeleport = 'You have been brought to the rehabilitation facility',
involuntaryRehabTitle = 'Involuntary Rehab',
involuntaryRehabStarted = 'You are now in involuntary rehabilitation. Do not leave the facility.',
involuntaryRehabRemaining = 'You are still in involuntary rehabilitation. Time remaining: %d minutes',
involuntaryRehabCommitted = 'You have been committed to involuntary rehabilitation by Dr. %s',
-- Treatment and Commitment Process
commitmentProcessTitle = 'Commitment Process',
commitmentProcessSearching = 'Searching for patient nearby...',
commitmentProcessCommitting = 'Committing %s to involuntary rehabilitation...',
commitmentCancelled = 'Patient has been removed from the commitment list',
commitmentSuccessful = 'Successfully committed %s to involuntary rehabilitation',
commitmentDenied = 'Patient %s does not meet the criteria for involuntary commitment',
treatmentEndedTitle = 'Treatment Ended',
treatmentEndedMessage = 'Involuntary rehab treatment has been ended',
treatmentCompleteTitle = 'Treatment Complete',
treatmentCompleteMessage = 'Your involuntary rehabilitation is complete. You are free to leave.',
treatmentCompleteMessageServer = 'Your involuntary rehabilitation period is complete. You are free to leave.',
treatmentAuthorizationTitle = 'Treatment Authorization',
treatmentAuthorizationSuccess = 'Treatment has been authorized for the patient',
-- Rehab General
rehabStartedTitle = 'Rehab Started',
rehabStartedMessage = 'You are now in rehab',
rehabEndedTitle = 'Rehab Ended',
rehabEndedMessage = 'Treatment ended! You are no longer in rehab',
-- Patient and Medical
patientNotFoundTitle = 'Patient Not Found',
patientNotFoundMessage = 'Patient "%s" not found within 5 units of your location',
patientNotFoundOnline = 'Patient %s is not online or not found',
patientNotFoundTarget = 'Target player not found or not online',
patientReleasedTitle = 'Patient Released',
patientReleasedMessage = 'Released %s %s from involuntary rehabilitation',
healthImpactTitle = 'Health Impact',
healthImpactMessage = 'Your addiction is effecting your health',
emergencyTreatmentTitle = 'Emergency Treatment',
emergencyTreatmentMessage = 'You are receiving emergency stomach pump treatment',
-- Interactions
emergencyStomachPumpPrompt = '[E] - Emergency Stomach Pump',
checkBloodSamplesPrompt = '[E] - Check Blood Samples',
emergencyStomachPumpLabel = 'Emergency Stomach Pump',
openAddictionMonitorKeyMapping = 'Open Addiction Monitor',
toggleNuiFocusKeyMapping = 'Toggle NUI Focus',
stopYogaKeyMapping = 'Stop Yoga',
-- Addiction System
addictionEffectTitle = 'Addiction Effect',
cravingTitle = 'Craving',
addictionLevelChangeTitle = 'Addiction Level Change',
addictionLevelChangeMessage = 'Your %s addiction level is now: %s',
addictionRemovedTitle = 'Addiction Removed',
addictionRemovedMessage = 'Your %s addiction has been completely removed',
addictionSetTitle = 'Addiction Set',
addictionSetMessage = 'Set %s addiction to %d points',
maximumAddictionTitle = 'Maximum Addiction',
maximumAddictionMessage = 'Your %s addiction has been set to maximum level: %s',
-- Detox
detoxErrorTitle = 'Detox Error',
detoxActiveSession = 'You already have an active detox session',
detoxStartedTitle = 'Detox Started',
detoxStartedMessage = 'Detox treatment started. Stay in the rehab area for %d minutes.',
detoxCompleteTitle = 'Detox Complete',
detoxCompleteMessage = 'Detox treatment completed successfully',
detoxCancelledTitle = 'Treatment Cancelled',
detoxCancelledMessage = 'You left the Rehab Center. Detox treatment has been cancelled',
-- Treatment
invalidTreatmentTitle = 'Invalid Treatment',
invalidTreatmentMessage = 'Invalid treatment type requested',
treatmentActiveTitle = 'Treatment Active',
treatmentActiveMessage = 'You already have an active treatment for %s',
noAddictionTitle = 'No Addiction',
noAddictionMessage = 'You do not have an active %s addiction to treat',
noAddictionFoundTitle = 'No Addiction Found',
noAddictionFoundMessage = 'No active %s addiction found to treat',
freetreatmentTitle = 'Free Treatment',
freetreatmentMessage = 'Free %s treatment authorized by Dr. %s - Treatment starting now',
treatmentStartedTitle = 'Treatment Started',
treatmentStartedMessage = 'Paid $%d for %s treatment - Treatment starting now',
treatmentProgressTitle = 'Treatment Progress',
treatmentProgressMessage = 'Treatment for %s addiction started. Stay in the rehab area for %d minutes.',
treatmentsCancelledTitle = 'Treatments Cancelled',
treatmentsCancelledMessage = 'You left the Rehab Center. All treatments have been cancelled',
treatmentCompleteAuth = 'Treatment for %s addiction completed successfully (Authorized by Dr. %s)',
treatmentCompleteRegular = 'Treatment for %s addiction completed successfully',
-- Money
insufficientFundsTitle = 'Insufficient Funds',
insufficientFundsDetox = 'Detox treatment costs $%d. Insufficient funds.',
insufficientFundsTreatment = 'Treatment costs $%d. Insufficient funds.',
-- Authorization
authorizationErrorTitle = 'Authorization Error',
authorizationErrorTreatment = 'You are not authorized to authorize treatments',
authorizationErrorCommitment = 'You are not authorized to commit patients to involuntary rehab',
invalidSubstanceTitle = 'Invalid Substance',
invalidSubstanceMessage = 'Invalid substance type specified',
authorizationDeniedTitle = 'Authorization Denied',
authorizationDeniedMessage = 'Patient %s does not meet the criteria for treatment authorization. Only high/critical risk addictions qualify for free treatment.',
alreadyAuthorizedTitle = 'Already Authorized',
alreadyAuthorizedMessage = 'Patient %s already has an active authorization for %s treatment',
authorizationSuccessfulTitle = 'Authorization Successful',
authorizationSuccessfulMessage = 'Treatment authorized for %s - Patient can receive free %s treatment at any rehab facility within 24 hours',
freetreatmentAuthorizedTitle = 'Free Treatment Authorized',
freetreatmentAuthorizedMessage = 'Dr. %s has authorized free %s treatment for you. Visit any rehab facility within 24 hours to claim this treatment.',
-- Distance and Location
distanceErrorTitle = 'Distance Error',
distanceErrorTooFar = 'Patient %s is too far away (%.1fm). Must be within 3m',
distanceErrorTreatment = 'Patient is too far away (%.1fm). Must be within 3m to authorize treatment',
distanceErrorCommitment = 'Patient is too far away (%.1fm). Must be within 3m to commit to involuntary rehab',
-- Rehab Security and Control
returnToRehabTitle = 'Return to Rehab',
returnToRehabMessage = 'You cannot leave the rehabilitation facility. You have been returned.',
securityAlertTitle = 'Security Alert',
securityAlertMessage = 'Security has been alerted of your escape attempt',
earlyReleaseTitle = 'Early Release',
earlyReleaseMessage = 'You have been released from involuntary rehabilitation',
-- Time Reduction
timeReductionTitle = 'Time Reduction',
timeReductionGoodBehavior = 'Good behavior! Time reduced by %d minute(s). Remaining: %d minutes',
timeReductionCannotReduce = 'Cannot reduce time further - treatment almost complete',
timeReductionDetox = 'Good behavior! Detox time reduced by %d minute(s). Remaining: %d minutes',
timeReductionDetoxAlmostComplete = 'Cannot reduce time further - detox almost complete',
timeReductionMultipleTreatments = 'Good behavior! Treatment time reduced by %d minute(s) for %d substance(s)',
timeReductionTreatmentsAlmostComplete = 'Cannot reduce time further - treatments almost complete',
timeReductionNoActiveRehab = 'No active rehabilitation to reduce time for',
-- Blood Testing
noBloodVialsTitle = 'No Blood Vials',
noBloodVialsMessage = 'No blood vials found',
analysisCompleteTitle = 'Analysis Complete',
analysisCompleteMessage = 'Blood analysis for %s completed and stored in database',
disposalFailedTitle = 'Disposal Failed',
disposalFailedMessage = 'Failed to dispose of blood vial',
vialNotFoundTitle = 'Vial Not Found',
vialNotFoundMessage = 'Could not find the specified blood vial',
-- Test Commands
addictionsAddedTitle = 'Addictions Added',
addictionsAddedMessage = 'All addictions given with random levels',
-- Database
databaseErrorTitle = 'Database Error',
databaseErrorTreatment = 'Failed to authorize treatment - database error',
databaseErrorRehab = 'Failed to access patient rehab records',
databaseErrorCommitment = 'Failed to commit patient - database error',
-- Blood Testing Metadata
patientName = 'Patient Name',
patientId = 'Patient ID',
collectedBy = 'Collected By',
collectionTime = 'Collected At',
}
Last updated