# Config

```lua
Config = {}

Config.Framework = 'esx' -- 'esx' | 'qb'
Config.NotificationType = 'ox' -- 'ox' | 'esx' | 'qb' | 'mythic'
Config.Locale = 'en' -- 'en' | 'fi'
Config.ImagePath = 'nui://ox_inventory/web/images' -- path for images used in UI (for QB: nui://qb-inventory/html/images) (for ox_inventory: nui://ox_inventory/web/images)

Config.Inventory = 'default' -- 'default' | 'ox'
Config.UseOxLib = false -- false | true, remember to add " shared_script '@ox_lib/init.lua' " to fxmanifest.lua if set to true
Config.UseOxTarget = false -- false | true

Config.Controls = {
    interact = 38, -- E
    remove = 246, -- Y
}

Config.PoliceJobs = {
    police = true,
    sheriff = true,
}

Config.Anims = {
    place = {
        dict = 'weapons@first_person@aim_rng@generic@projectile@sticky_bomb@',
        name = 'plant_floor',
        duration = 1000,
    },
    remove = {
        dict = 'weapons@first_person@aim_rng@generic@projectile@sticky_bomb@',
        name = 'plant_floor',
        duration = 1000,
    }
}

Config.EquipmentItems = {
    meth_oven = {
        item = 'meth_oven',
        equipmentType = 'oven',
        objects = {
            {
                model = `bkr_prop_meth_chiller_01a`,
                offset = vec3(0.0, 0.0, 0.0),
            },
            {
                model = `bkr_prop_weed_table_01b`,
                offset = vec3(0.0, -1.5, 0.0),
            }
        },
        cookTime = 10000,
        substanceModel = `prop_cs_script_bottle_01`,
        hammering = true,
        need = {name = 'liquid_meth', amount = 3},
        get = {name = 'meth', amount = 1},
    },
    coke_oven = {
        item = 'coke_oven',
        equipmentType = 'oven',
        objects = {
            {
                model = `tr_prop_meth_chiller_01a`,
                offset = vec3(0.0, 0.0, 0.0),
            },
            {
                model = `bkr_prop_weed_table_01b`,
                offset = vec3(0.0, -1.5, 0.0),
            }
        },
        cookTime = 10000,
        substanceModel = `bkr_prop_coke_powder_02`,
        need = {name = 'coke_base', amount = 3},
        get = {name = 'cocaine', amount = 1},
    },
    meth_cooking = {
        item = 'meth_cooking_table',
        equipmentType = 'meth_cooking',
        objects = {
            {
                model = `bkr_prop_weed_table_01b`,
                offset = vec3(0.0, 0.0, 0.0),
            }
        },
        need = {
            {name = 'pseudo', amount = 1, model = 'prop_cs_pills', interactType = 'move'},
            {name = 'phos', amount = 1, model = 'xm3_prop_xm3_bottle_pills_01a', interactType = 'rotate'},
            {name = 'acid', amount = 1, model = 'prop_cs_script_bottle_01', interactType = 'rotate'},
        },
        get = {
            {name = 'liquid_meth', amount = 1}
        },
    },
    mixer = {
        item = 'mixer',
        equipmentType = 'mixer',
        objects = {
            {
                model = `tr_prop_meth_bigbag_03a`,
                offset = vec3(0.0, 0.0, 0.82),
            },
            {
                model = `bkr_prop_weed_table_01b`,
                offset = vec3(0.0, 0.0, 0.0),
            }
        },
        recipes = {
            {
                items = {
                    {name = 'meth', amount = 1, model = `p_meth_bag_01_s`},
                    {name = 'gasoline', amount = 1, model = `prop_cs_petrol_can`},
                },
                result = {
                    item = 'explosive_meth',
                    amount = 1,
                }
            },
        }
    },
    bagging_table = {
        item = 'bagging_table',
        equipmentType = 'bagging',
        objects = {
            {
                model = `bkr_prop_weed_table_01b`,
                offset = vec3(0.0, 0.0, 0.0),
            }
        },
        recipes = {
            {
                items = {
                    {name = 'weed', amount = 1, model = `bkr_prop_weed_bud_01b`},
                    {name = 'baggy', amount = 1, model = `sf_prop_sf_bag_weed_open_01a`},
                },
                result = {
                    item = 'bagged_weed',
                    amount = 1,
                }
            },
            {
                items = {
                    {name = 'meth', amount = 1, model = `prop_cs_pebble`},
                    {name = 'baggy', amount = 1, model = `bkr_prop_meth_openbag_01a_frag_`},
                },
                result = {
                    item = 'bagged_meth',
                    amount = 1,
                }
            },
        }
    },
    cauldron = {
        item = 'cauldron',
        equipmentType = 'cauldron',
        objects = {
            {
                model = `prop_kitch_pot_huge`,
                offset = vec3(0.0, 0.0, 0.0),
            }
        },
        need = {
            {name = 'coca_leaf', amount = 3, model = 'bkr_prop_weed_leaf_01a'},
        },
        get = {
            {name = 'coke_base', amount = 1}
        },
    },
    press = {
        item = 'press',
        equipmentType = 'press',
        objects = {
            {
                model = `bkr_prop_coke_press_01aa`,
                offset = vec3(0.0, 0.0, 0.0),
            }
        },
        cokeBaseModel = `bkr_prop_coke_cut_02`,
        cokeBrickModel = `bkr_prop_coke_cutblock_01`,
        need = {
            {name = 'cocaine', amount = 10},
        },
        get = {
            {name = 'coke_brick', amount = 1}
        },
    },
}

-- Predefined locations for equipment
Config.EquipmentLocations = {
    --[[{
        coords = vec3(6.1368, -1810.5800, 25.3458),
        rotation = vec3(0.0, 0.0, 137.2),
        configIndex = 'meth_oven',
    },]]
}

Config.Selling = {
    interactionDistance = 2.5, -- Distance at which player can interact with NPCs to sell drugs
    minPolice = 1, -- Minimum number of police officers required to sell drugs
    policeChance = {
        success = 0,
        failure = 50,
    },
    items = {
        {
            name = 'bagged_weed',
            price = {min = 50, max = 150},
            maxAmount = 15,
            baseChance = 85,
        },
        {
            name = 'bagged_meth',
            price = {min = 30, max = 200},
            maxAmount = 15,
            baseChance = 85,
        },
        {
            name = 'coke_brick',
            price = {min = 100, max = 500},
            maxAmount = 5,
            baseChance = 85,
        },
        {
            name = 'cocaine',
            price = {min = 100, max = 500},
            maxAmount = 5,
            baseChance = 85,
        },
    },
    blip = {
        color = 1, -- https://docs.fivem.net/docs/game-references/blips/ (Scroll to the bottom)
        scale = 1.0, -- This needs to be a float (eg. 1.0, 1.2, 2.0)
        sprite = 140, -- https://docs.fivem.net/docs/game-references/blips/
        playSound = true -- Should there be a sound for the police when the blip shows up (true / false)
    }
}

-- RunningSpeedIncrease: Increases running speed.
-- InfiniteStamina: Grants infinite stamina.
-- HealthRegen: Gradually regenerates health.
-- ArmorBoost: Provides additional armor.
-- DrunkEffect: Simulates drunken behavior.
-- BlurredVision: Blurs the player's vision.
-- SuperJump: Allows the player to jump higher.
-- FocusEffect: Enhances focus with visual effects.
-- FogEffect: Adds a foggy visual effect.
-- ConfusionEffect: Causes disorientation.
-- CameraShake: Shakes the camera for a dramatic effect.
-- WhiteoutEffect: Simulates a whiteout visual effect.
-- IntenseEffect: Adds intense visual effects.
-- ExplosiveEffect: Creates an explosion at the player's location.

-- animation: 'pill' | 'blunt' | 'sniff'
Config.Drugs = {
    bagged_meth = {
        animation = 'pill',
        effects = {'RunningSpeedIncrease', 'InfiniteStamina', 'HealthRegen', 'ArmorBoost', 'CameraShake'}
    },
    explosive_meth = {
        animation = 'pill',
        effects = {'ExplosiveEffect'}
    },
    bagged_weed = {
        animation = 'blunt',
        effects = {'DrunkEffect', 'BlurredVision', 'FogEffect', 'WhiteoutEffect'}
    },
    cocaine = {
        animation = 'sniff',
        effects = {'SuperJump', 'FocusEffect', 'ConfusionEffect', 'IntenseEffect'}
    },
}

Config.EffectDurations = {
    RunningSpeedIncrease = 60000, -- 1 minute
    InfiniteStamina = 60000,
    HealthRegen = 60000,
    ArmorBoost = 60000,
    DrunkEffect = 60000,
    BlurredVision = 60000,
    SuperJump = 60000,
    FocusEffect = 60000,
    FogEffect = 60000,
    ConfusionEffect = 60000,
    CameraShake = 60000,
    WhiteoutEffect = 60000,
    IntenseEffect = 60000
}

Config.Shops = {
    {
        name = 'Chemical Store',
        coords = vec4(483.1584, -202.0399, 53.7879, 242.8231),
        ped = 's_m_y_robber_01',
        items = {
            {
                name = 'gasoline',
                price = 100,
                amount = 1,
            },
            {
                name = 'cannabis_seed',
                price = 100,
                amount = 1,
            },
            {
                name = 'coca_seed',
                price = 200,
                amount = 1,
            },
            {
                name = 'plant_pot',
                price = 10,
                amount = 1,
            },
            {
                name = 'fertilizer',
                price = 10,
                amount = 1,
            },
            {
                name = 'water_bottle',
                price = 10,
                amount = 1,
            },
        }
    },
    {
        name = 'Equipment Store',
        coords = vec4(-2019.6021, -357.7971, 48.1063, 57.4592),
        ped = 's_m_y_robber_01',
        items = {
            {
                name = 'meth_oven',
                price = 1000,
                amount = 1,
            },
            {
                name = 'coke_oven',
                price = 1000,
                amount = 1,
            },
            {
                name = 'mixer',
                price = 1000,
                amount = 1,
            },
            {
                name = 'bagging_table',
                price = 1000,
                amount = 1,
            },
            {
                name = 'cauldron',
                price = 1000,
                amount = 1,
            },
            {
                name = 'press',
                price = 1000,
                amount = 1,
            },
        }
    },
}

Config.Plants = {
    cannabis_seed = {
        item = 'cannabis_seed',
        potItem = 'plant_pot',
        stages = {
            {model = `bkr_prop_weed_01_small_01c`, time = 60 * 60, offset = vec3(0.0, 0.0, 1.0)},
            {model = `bkr_prop_weed_01_small_01a`, time = 60 * 60, offset = vec3(0.0, 0.0, 1.0)},
            {model = `bkr_prop_weed_med_01b`, time = 60 * 60, offset = vec3(0.0, 0.0, -1.5)},
            {model = `bkr_prop_weed_lrg_01b`, time = 60 * 500, offset = vec3(0.0, 0.0, -1.5)}, -- time for last stage will determine how long for plant to die 
        },
        yield = {-- chance is rolled for each item individually (so you can get multiple items)
            {item = 'weed', amount = {min = 3, max = 8}, chance = 100},
            {item = 'cannabis_seed', amount = {min = 0, max = 1}, chance = 50},
        }
    },
    coca_seed = {
        item = 'coca_seed',
        potItem = 'plant_pot',
        stages = {
            {model = `bkr_prop_weed_01_small_01c`, time = 60 * 60, offset = vec3(0.0, 0.0, 1.0)},
            {model = `bkr_prop_weed_01_small_01a`, time = 60 * 60, offset = vec3(0.0, 0.0, 1.0)},
            {model = `bkr_prop_weed_med_01b`, time = 60 * 60, offset = vec3(0.0, 0.0, -1.5)},
            {model = `bkr_prop_weed_lrg_01b`, time = 60 * 500, offset = vec3(0.0, 0.0, -1.5)},
        },
        yield = {-- chance is rolled for each item individually (so you can get multiple items)
            {item = 'coca_leaf', amount = {min = 3, max = 10}, chance = 100},
            {item = 'coca_seed', amount = {min = 0, max = 2}, chance = 50},
        }
    },
}

-- Plant management settings
Config.PlantSettings = {
    waterDecayRate = 0.2,    -- How much water decreases per minute (0-100 scale)
    fertilizerDecayRate = 0.1,  -- How much fertilizer decreases per minute (0-100 scale)
    updateInterval = 60000,   -- How often (in ms) to check and update plant resources
    waterItem = 'water_bottle',
    fertilizerItem = 'fertilizer',
}

Config.Lamps = {
    default_lamp = {
        item = 'default_lamp',
        model = `xm_prop_base_tripod_lampb`,
        growthMultiplier = 1.5, -- multiplier for growth speed
        offset = vec3(0.0, 0.0, 1.0), -- offset for lamp position
    },
}
```
