# Configuration

### Moonshine Config

```lua
Config = {}

Config.framework = {
    name = 'auto',                          -- Only esx or qb or auto. If auto, it will detect the framework automatically.
    targetScript = 'ox_target',             -- Target script name (qb-target or ox_target)
    vehicleKeysScript = "qb-vehiclekeys",   -- Vehicle keys script name (cd_garage | qs-vehiclekeys | qb-vehiclekeys | okokGarage | wasabi_carlock)
    useOxNotify = true,                     -- Use ox_lib instead of ESX.ShowNotification or QBCore.Functions.Notify
    debug = false,                           -- Debug mode (only developers)
    imagePath = 'ox_inventory/web/images',  -- change this example for ox: 'ox_inventory/web/images' or qb: 'qb-inventory/html/images'
    imageFormat = 'png',                    -- Image format (png, jpg or webp)
    minigameScriptName = "rm_minigames",    -- for bridge/minigame folder
}

Config.moneyOptions = {
    blackMoney = false,
    blackMoneyName = "markedbills", -- if you are using esx this should be "black_money" or if you are using qb this should be "markedbills"
    blackMoneyIsItem = true, 
    useMetadataForBlackMoney = true,
    moneyName = "money",
    moneyIsItem = false,
}

Config.police = {
    dispatch = 'default',    -- cd_dispatch | qs-dispatch | ps-dispatch | rcore_dispatch | default
    dispatchJobs = { 'police', 'sheriff' },
    callChance = 10, -- chance to call the police
}

Config.general = {
    useGizmo = false, -- If true, this requires the object_gizmo script dependency (https://github.com/DemiAutomatic/object_gizmo)
}

Config.placementOptions = {
    placementMaxDistance = 3.0, -- max distance to place the object
    keybinds = { -- If you change the order it will not work properly.
        {
            icon = 'RiSlowDownFill',
            title = "Increase Speed",
            key = 'Arrow Up',
            keyCode = 172,
            order = 1,
        },
        {
            icon = 'RiSpeedUpFill',
            title = "Decrease Speed",
            key = 'Arrow Down',
            keyCode = 173,
            order = 2,
        },
        {
            icon = 'FaLongArrowAltUp',
            title = "Move Forward",
            key = 'Numpad 8',
            keyCode = 111,
            order = 3,
        },
        {
            icon = 'FaLongArrowAltDown',
            title = "Move Backward",
            key = 'Numpad 5',
            keyCode = 110,
            order = 4,
        },
        {
            icon = 'FaLongArrowAltLeft',
            title = "Move Left",
            key = 'Numpad 4',
            keyCode = 108,
            order = 5,
        },
        {
            icon = 'FaLongArrowAltRight',
            title = "Move Right",
            key = 'Numpad 6',
            keyCode = 107,
            order = 6,
        },
        {
            icon = 'MdMoveDown',
            title = "Move Down",
            key = 'Arrow Left',
            keyCode = 174,
            order = 7,
        },
        {
            icon = 'MdMoveUp',
            title = "Move Up",
            key = 'Arrow Right',
            keyCode = 175,
            order = 8,
        },
        {
            icon = 'FaArrowRotateLeft',
            title = "Rotate Left",
            key = 'Numpad 7',
            keyCode = 117,
            order = 9,
        },
        {
            icon = 'FaArrowRotateRight',
            title = "Rotate Right",
            key = 'Numpad 9',
            keyCode = 118,
            order = 10,
        },
        {
            icon = 'FaExpandArrowsAlt',
            title = "Place on Ground",
            key = 'Left Shift',
            keyCode = 21,
            order = 11,
        },
        {
            icon = 'FaCheck',
            title = "Confirm Placement",
            key = 'Enter',
            keyCode = 191,
            order = 12,
        },
        {
            icon = 'GiCancel',
            title = "Cancel Action",
            key = 'Backspace',
            keyCode = 194,
            order = 13,
        },
    }
}

Config.moonshine = {
    ------------------------
    ---- General Config ----
    ------------------------
    useItemQuality = true, -- If true, the quality of the item will be used to determine the quality of the plant. If false, the quality will be ignored.
    getItemByQuality = function(quality) ---- Function to get the plant item by quality (It is not recommended to change)
        if quality < 40 then
            return "low"
        elseif quality < 70 then
            return "med"
        else
            return "high"
        end
    end,

    blacklistZones = { -- If you want to blacklist a zone, add it here. vector4(x, y, z, radius)
        -- Example --    
        -- vector4(325.55, -209.97, 54.09, 30.0)
    },
    whitelistZones = { -- If you want to whitelist a zone, add it here. vector4(x, y, z, radius)
        -- Example --    
        -- vector4(325.55, -209.97, 54.09, 30.0)
    },
    consumptionItems = {
        water = {
            ["water_bottle_small"] = {
                amount = 1, -- Amount of water item to consume
                shouldRemove = true, -- If true, the item will be removed from the inventory when placed
                waterLevel = 25.0, -- Amount of water to consume
            },
            ["water_bottle_big"] = {
                amount = 1, 
                shouldRemove = true,
                waterLevel = 50.0,
            },
        },
        manure = {
            ["manure_can"] = {
                amount = 1, -- Amount of manure to consume
                shouldRemove = true, -- If true, the item will be removed from the inventory when placed
                manureLevel = 25.0, -- Amount of manure to consume
            },
        }
    },
    ---------------------------
    ----- Object Config ------
    ---------------------------
    placeOnlyInterior = false, -- If true, you can only place the object in the interior. If false, you can place it anywhere.
    lightProps = {
        ["light_1"] = {
            shouldRemove = true,
            objectModel = "prop_worklight_04c",
            lightLevel = 50.0,
            radius = 5.0,
        },
        ["light_2"] = {
            shouldRemove = true,
            objectModel = "prop_worklight_04d",
            lightLevel = 25.0,
            radius = 3.0,
        },
        ["light_3"] = {
            shouldRemove = true,
            objectModel = "prop_worklight_04b",
            lightLevel = 100.0,
            radius = 7.0,
        },
    },
    ---------------------------
    ------ Seed Config --------
    ---------------------------
    seeds = {
        ["corn_seed"] = {
            type = "corn",
            shouldRemove = true,
            objectModel = "qua_corn",
            rewardItem = "corn",
            amount = function()
                return math.random(4, 8)
            end,
            growth = {
                updateInterval = 1, -- min
                rate = 20.0, -- growth rate per minute
                manureBonus = 1.5, -- growth rate multiplier when manure is added
                lightBonus = 1.2, -- growth rate multiplier when light is nearby
                plantPerWilting = 1.0, 
                waterPerConsumption = 7.0,
                manurePerConsumption = 3.5,
            }
        },
        ["carrot_seed"] = {
            type = "carrot",
            shouldRemove = true,
            objectModel = "qua_carrot_combine",
            rewardItem = "carrot",
            amount = function()
                return math.random(4, 8)
            end,
            growth = {
                updateInterval = 0.1, -- min
                rate = 200.0, -- growth rate per minute
                manureBonus = 1.5, -- growth rate multiplier when manure is added
                lightBonus = 1.2, -- growth rate multiplier when light is nearby
                plantPerWilting = 1.0, 
                waterPerConsumption = 7.0,
                manurePerConsumption = 3.5,
            }
        },
        ["onion_seed"] = {
            type = "onion",
            shouldRemove = true,
            objectModel = "qua_onion",
            rewardItem = "onion",
            amount = function()
                return math.random(4, 8)
            end,
            growth = {
                updateInterval = 1, -- min
                rate = 20.0, -- growth rate per minute
                manureBonus = 1.5, -- growth rate multiplier when manure is added
                lightBonus = 1.2, -- growth rate multiplier when light is nearby
                plantPerWilting = 1.0, 
                waterPerConsumption = 7.0,
                manurePerConsumption = 3.5,
            }
        },
        ["tomato_seed"] = {
            type = "tomato",
            shouldRemove = true,
            objectModel = "qua_tomato",
            rewardItem = "tomato",
            amount = function()
                return math.random(4, 8)
            end,
            growth = {
                updateInterval = 1, -- min
                rate = 20.0, -- growth rate per minute
                manureBonus = 1.5, -- growth rate multiplier when manure is added
                lightBonus = 1.2, -- growth rate multiplier when light is nearby
                plantPerWilting = 1.0, 
                waterPerConsumption = 7.0,
                manurePerConsumption = 3.5,
            }
        }
    },
    ---------------------------
    ---- Planter Config -------
    ---------------------------
    planters = {
        ["planter_small"] = {
            label = "Small Planter",
            shouldRemove = true,
            objectModel = "qua_planter_small",
            seedOffsets = {
                vector3(0.0, 0.0, 0.0),
            }
        },
        ["planter_medium"] = {
            label = "Medium Planter",
            shouldRemove = true,
            objectModel = "qua_planter_medium",
            seedOffsets = {
                vector3(0.2, 0.3, 0.0),
                vector3(0.2, -0.3, 0.0),
            }
        },
        ["planter_large"] = {
            label = "Large Planter",
            shouldRemove = true,
            objectModel = "qua_planter_large",
            seedOffsets = {
                vector3(0.2, 0.3, 0.0),
                vector3(0.2, -0.3, 0.0),
                vector3(-0.1, 0.3, 0.0),
                vector3(-0.1, -0.3, 0.0),
            }
        },
    },
    ---------------------------
    ----- Drying Config ----
    ---------------------------
    drying = {
        objectModel = "qua_compost_crate",
        itemName = "drying_crate",
        shouldRemove = true,
        maxDryingItems = 5, -- max items that can be dried at the same time
        requiredItems = {
            ["tomato_low"] = {
                dryingDuration = 1, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_tomato_low"] = 3,
                },
            },
            ["tomato_med"] = {
                dryingDuration = 2, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_tomato_med"] = 3,
                },
            },
            ["tomato_high"] = {
                dryingDuration = 1, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_tomato_high"] = 3,
                },
            },
            ["corn_low"] = {
                dryingDuration = 1, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_corn_low"] = 3,
                },
            },
            ["corn_med"] = {
                dryingDuration = 1, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_corn_med"] = 3,
                },
            },
            ["corn_high"] = {
                dryingDuration = 1, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_corn_high"] = 3,
                },
            },
            ["carrot_low"] = {
                dryingDuration = 1, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_carrot_low"] = 3,
                },
            },
            ["carrot_med"] = {
                dryingDuration = 1, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_carrot_med"] = 3,
                },
            },
            ["carrot_high"] = {
                dryingDuration = 1, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_carrot_high"] = 3,
                },
            },
            ["onion_low"] = {
                dryingDuration = 1, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_onion_low"] = 3,
                },
            },
            ["onion_med"] = {
                dryingDuration = 1, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_onion_med"] = 3,
                },
            },
            ["onion_high"] = {
                dryingDuration = 1, -- minutes
                amount = 5,
                shouldRemove = true,
                rewardItems = {
                    ["dried_onion_high"] = 3,
                },
            },
        },
    },
    ---------------------------
    ------ Mixer Config -------
    ---------------------------
    mixer = {
        objectModel = "qua_mixer",
        itemName = "mixer",
        shouldRemove = true,
        mixingTypes = {
            basic = {
                mixingDuration = 1, -- minutes
                requiredItems = {
                    ["dried_tomato_low"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_corn_low"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_carrot_low"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_onion_low"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["sugar"] = {
                        amount = 1,
                        shouldRemove = true,
                    },
                    ["water_bottle_small"] = {
                        amount = 1,
                        shouldRemove = true,
                    },
                },
                rewardItem = "moonshine_mixture_low",
                rewardAmount = 1,
            },
            standard = {
                mixingDuration = 3, -- minutes
                requiredItems = {
                    ["dried_tomato_med"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_corn_med"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_carrot_med"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_onion_med"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["sugar"] = {
                        amount = 1,
                        shouldRemove = true,
                    },
                    ["water_bottle_small"] = {
                        amount = 1,
                        shouldRemove = true,
                    },
                },
                rewardItem = "moonshine_mixture_med",
                rewardAmount = 1,
            },
            premium = {
                mixingDuration = 3, -- minutes
                requiredItems = {
                    ["dried_tomato_high"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_corn_high"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_carrot_high"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_onion_high"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["sugar"] = {
                        amount = 1,
                        shouldRemove = true,
                    },
                    ["water_bottle_small"] = {
                        amount = 1,
                        shouldRemove = true,
                    },
                },
                rewardItem = "moonshine_mixture_high",
                rewardAmount = 1,
            },

            -- If you do not use the quality system, remove comment line below and add the options above to the comment line.
            --[[  
            standard = {
                mixingDuration = 3, -- minutes
                requiredItems = {
                    ["dried_tomato"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_corn"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_carrot"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["dried_onion"] = {
                        amount = 3,
                        shouldRemove = true,
                    },
                    ["sugar"] = {
                        amount = 2,
                        shouldRemove = true,
                    },
                    ["water_bottle_small"] = {
                        amount = 1,
                        shouldRemove = true,
                    },
                },
                rewardItem = "moonshine_mixture",
                rewardAmount = 1,
            },
            ]]
        },
    },
    ---------------------------
    ----- Fermenter Config ----
    ---------------------------
    fermenter = {
        objectModel = "qua_barrel_3",
        itemName = "fermenter",
        shouldRemove = true,
        requiredItems = {
            ["moonshine_mixture_low"] = {
                amount = 1,
                shouldRemove = true,
                fermentDuration = 1, -- minutes
                rewardItems = {
                    ["fermented_mash_low"] = 1,
                },
            },
            ["moonshine_mixture_med"] = {
                amount = 1,
                shouldRemove = true,
                fermentDuration = 2, -- minutes
                rewardItems = {
                    ["fermented_mash_med"] = 1,
                },
            },
            ["moonshine_mixture_high"] = {
                amount = 1,
                shouldRemove = true,
                fermentDuration = 3, -- minutes
                rewardItems = {
                    ["fermented_mash_high"] = 1,
                },
            },

            -- If you do not use the quality system, remove comment line below and add the options above to the comment line.
--[[             ["moonshine_mixture"] = {  
                amount = 1,
                shouldRemove = true,
                rewardItems = {
                    ["fermented_mash"] = 1,
                },
            }, ]]
        }
    },
    ---------------------------
    ----- Cooking Config ------
    ---------------------------
    cooking = {
        objectModel = "qua_moonshine",
        itemName = "moonshine_smelter",
        shouldRemove = true,
        temperatureMinigameOptions = {
            minigame = "default",
            targetMin = 60,
            targetMax = 70,
            holdTime = 3, -- seconds
        },
        distillingMinigameOptions = {
            minigame = "default",
            targetMin = 60,
            targetMax = 70,
            speed = 80,
        },
        requiredItems = {
            ["fermented_mash_low"] = {
                amount = 1,
                shouldRemove = true,
                cookingDuration = 1, -- minutes
                distillingDuration = 1, -- minutes
                rewardItem = "moonshine_low",
                rewardAmount = function()
                    return math.random(12, 18)
                end,
            },
            ["fermented_mash_med"] = {
                amount = 1,
                shouldRemove = true,
                cookingDuration = 2, -- minutes
                distillingDuration = 2, -- minutes
                rewardItem = "moonshine_med",
                rewardAmount = function()
                    return math.random(12, 18)
                end,
            },
            ["fermented_mash_high"] = {
                amount = 1,
                shouldRemove = true,
                cookingDuration = 3, -- minutes
                distillingDuration = 3, -- minutes
                rewardItem = "moonshine_high",
                rewardAmount = function()
                    return math.random(12, 18)
                end,
            },

            -- If you do not use the quality system, remove comment line below and add the options above to the comment line.
--[[             ["fermented_mash"] = {
                amount = 1,
                shouldRemove = true,
                cookingDuration = 2, -- minutes
                distillingDuration = 2, -- minutes
                rewardItem = "moonshine",
                rewardAmount = function()
                    return math.random(8, 12)
                end,
            }, ]]
        }
    },
    ---------------------------
    ----- Flavors Config ------
    ---------------------------
    flavors = {
        ["flavor_honey"] = {
            amount = 1,
            shouldRemove = true,
            description = "A sweet and viscous liquid produced by bees.",
            flavoringDuration = 1, -- minutes
        },
        ["flavor_ginseng"] = {
            amount = 1,
            shouldRemove = true,
            description = "A root known for its medicinal properties and energizing effects.",
            flavoringDuration = 1, -- minutes
        },
        ["flavor_lemon"] = {
            amount = 1,
            shouldRemove = true,
            description = "A citrus fruit known for its tart and refreshing flavor.",
            flavoringDuration = 1, -- minutes
        },
        ["flavor_apple"] = {
            amount = 1,
            shouldRemove = true,
            description = "A sweet and crisp fruit known for its refreshing taste.",
            flavoringDuration = 1, -- minutes
        },
    }
}


Strings = {
    -- Discord Logs --
    ["place_object_log"] = "Player Name: %s\nIdentifier: %s\nCoordinates: %s\nObject ID: %s\nPlaced Object: %s.",
    ["remove_object_log"] = "Player Name: %s\nIdentifier: %s\nCoordinates: %s\nObject ID: %s\nRemoved Object: %s.",
    ["add_item_log"] = "Player Name: %s\nIdentifier: %s\nItem Amount: %s\nItem Name: %s.",
    ["remove_item_log"] = "Player Name: %s\nIdentifier: %s\nItem Amount: %s\nItem Name: %s.",
    ["buy_item_log"] = "Player Name: %s\nIdentifier: %s\nItem Amount: %s\nItem Name: %s.\nTotal Price: %s.",
    ["delivery_log"] = "Player Name: %s\nIdentifier: %s\nDelivered Item Amount: %s\nDelivered Item Name: %s.\nEarnings: %s.",

    --- General ---
    ["police_alert"] = "Illegal drug activity detected! Check your GPS.",
    ["place_only_interior"] = "You can only place it inside the interior",
    ["cant_place_in_this_area"] = "Can't be place in this area",
    ["place_object_label"] = "Placing Object",
    ["remove_object_label"] = "Removing Object",
    ["you_need_this_item"] = "You need x%s %s",
    ["you_need_eighter_item"] = "You need one of these: %s",
    ["you_dont_have_money"] = "You don't have enough money. You need $%s",
    ["no_empty_seed_slots"] = "There are no empty seed slots available.",
    ["no_spawn_location"] = "No available spawn location for vehicle",

    -- Consuming --
    ["consuming_moonshine"] = "Consuming Moonshine",
    
    -- Tutorial Menu --
    ["tutorial_menu_title"] = "Scientist",
    ["tutorial_menu_description"] = "Learn how to make moonshine for $%s",

    -- Merchant --
    ["merchant_quantity_title"] = "Quantity",
    ["merchant_menu_title"] = "Merchant Menu",

    -- Object Target --
    ["object_remove"] = "Remove Object",

    -- Planter Target --
    ["planter_inspect"] = "Inspect Planter",
    ["planter_add_water"] = "Add Water",
    ["planter_add_manure"] = "Add Manure",
    
    -- Planter Menu --
    ["seed_capacity"] = "Seed Capacity",
    ["water_level"] = "Water Level",
    ["manure_level"] = "Manure Level",
    ["light_level"] = "Light Level",
    ["planted_seeds"] = "Planted Seeds",
    ["planted_seeds_description"] = "View planted seeds",
    ["remove_planter"] = "Remove Planter",
    ["remove_planter_description"] = "Remove the planter and get back some of the materials.",
    ["growth_level"] = "Growth Level",
    ["quality_level"] = "Quality Level",
    ["destroy_seed"] = "Destroy",
    ["harvest_planter"] = "Harvest",
    ["carrot"] = "Carrot",
    ["corn"] = "Corn",
    ["onion"] = "Onion",
    ["tomato"] = "Tomato",
    ["empty"] = "Empty",

    -- Seed Menu --
    ["seed_type"] = "Seed Type",
    ["seed_type_description"] = "%s Seed",
    ["seed_stage"] = "Seed Stage",
    ["seed_health"] = "Seed Health",
    ["seed_growth"] = "Seed Growth",
    ["seed_quality"] = "Seed Quality",
    ["seed_remove"] = "Destroy Seed",
    ["seed_remove_description"] = "Destroy the seed from the planter.",
    ["seed_harvest"] = "Harvest Seed",
    ["seed_harvest_description"] = "Harvest the seed if it is fully grown.",
    ["seed_slot_title"] = "Seed Slot %s",

    -- Planter Progressbar --
    ["planter_adding_water"] = "Adding Water",
    ["planter_adding_manure"] = "Adding Manure",
    ["planter_planting_seed"] = "Planting Seed",
    ["seed_remove_label"] = "Destroying Seed",
    ["seed_harvest_label"] = "Harvesting Seed",

    -- Mixer Menu --
    ["mixer_menu_action"] = "Mixer Menu",
    ["mixer_basic_mixing"] = "Basic Mixing",
    ["mixer_standard_mixing"] = "Standard Mixing",
    ["mixer_premium_mixing"] = "Premium Mixing",
    ["mixer_mixing_in_progress"] = "Mixing in Progress",
    ["mixer_mixing_in_progress_description"] = "The mixing process is currently underway. Please wait. (%s%% completed)",
    ["mixer_mixing_completed"] = "Mixing Completed",
    ["mixer_mixing_completed_description"] = "The mixing process has been completed. You can now collect your moonshine mash.",
    ["mixer_start_mixing_label"] = "Starting Mixing Process",
    ["mixer_collect_mixed_moonshine_label"] = "Collecting Mixed Moonshine Mash",

    -- Fermenter Menu --
    ["fermenter_menu_action"] = "Fermenter Menu",
    ["fermenter_start_fermentation"] = "Start Fermentation",
    ["fermenter_start_fermentation_description"] = "Start the fermentation process with the required items.",
    ["fermenter_fermentation_in_progress"] = "Fermentation in Progress",
    ["fermenter_products_to_obtain"] = "Products to be obtained: ",
    ["fermenter_fermentation_in_progress_description"] = "The fermentation process is currently underway. Please wait. (%s%% completed)",
    ["fermenter_fermentation_completed"] = "Fermentation Completed",
    ["fermenter_fermentation_completed_description"] = "The fermentation process has been completed. You can now collect your fermented mash.",
    ["fermenter_start_fermentation_label"] = "Starting Fermentation Process",
    ["fermenter_collect_fermented_mash_label"] = "Collecting Fermented Mash",


    -- Drying Menu --
    ["drying_menu_action"] = "Drying Menu",
    ["drying_add_item"] = "Add Item for Drying",
    ["drying_add_item_description"] = "Add items to the drying crate for processing.",
    ["drying_list"] = "Drying List",
    ["drying_list_description"] = "View the list of items currently being dried.\n(%s/%s slots used)",
    ["drying_products_to_obtain"] = "Products to be obtained: ",
    ["drying_in_progress_description"] = "The drying process is currently underway. Please wait. (%s%% completed)",
    ["drying_completed_description"] = "The drying process has been completed. You can now collect your dried items.",
    ["drying_add_item_label"] = "Adding Fruit",
    ["drying_collect_items_label"] = "Collecting Dried Fruits",


    -- Cooking Menu --
    ["cooking_menu_action"] = "Cooking Menu",
    ["cooking_start_cooking"] = "Start Cooking",
    ["cooking_start_cooking_description"] = "Start the cooking process to produce moonshine.",
    ["cooking_products_to_obtain"] = "Products to be obtained: %s",
    ["cooking_in_progress"] = "Cooking in Progress",
    ["cooking_in_progress_description"] = "The cooking process is currently underway. Please wait. (%s%% completed)",
    ["cooking_start_distilling"] = "Start Distilling",
    ["cooking_start_distilling_description"] = "Start the distilling process to refine your moonshine.",
    ["cooking_start_cooking_label"] = "Starting Cooking Process",
    ["cooking_start_distilling_label"] = "Starting Distilling Process",
    ["cooking_distilling_in_progress"] = "Distilling in Progress",
    ["cooking_distilling_in_progress_description"] = "The distilling process is currently underway. Please wait. (%s%% completed)",
    ["cooking_start_flavoring"] = "Start Flavoring",
    ["cooking_start_flavoring_description"] = "Add flavors to your moonshine to enhance its taste.",
    ["cooking_no_flavoring_option"] = "Classic (No Flavoring)",
    ["cooking_no_flavoring_option_description"] = "Produce classic moonshine without any additional flavors.",
    ["cooking_start_flavoring_label"] = "Starting Flavoring Process",
    ["cooking_cooking_completed"] = "Cooking Completed",
    ["cooking_cooking_completed_description"] = "The cooking process has been completed. You can now collect your moonshine.",
    ["cooking_minigame_failed"] = "You failed the cooking minigame. The cooking process has been canceled.",
    ["cooking_distilling_minigame_failed"] = "You failed the distilling minigame. The distilling process has been canceled.",


    -- Delivery --
    ["delivery_action"] = "Deliver Moonshine",
    ["delivery_price_per_unit"] = "Price per Unit: $%s",
    ["delivery_successful"] = "You have successfully delivered %s units of %s for $%s.",
    ["stop_delivery_action"] = "Stop Delivery",
    ["deliver_moonshine_action"] = "[E] - Deliver Moonshine",
    ["deliver_moonshine_label"] = "Delivering Moonshine",
    ["delivery_action_started"] = "You have started the delivery of moonshine. Follow the GPS to the destination.",
    ["delivery_action_completed"] = "You have completed the delivery of moonshine.",
    ["delivery_destination"] = "Moonshine Delivery Destination",
    ["delivery_van_run_started"] = "Moonshine Delivery Van Run Started. Get in the van marked on the map and start delivery",
    ["delivery_vehicle_name"] = "Delivery Vehicle",
    ["delivery_vehicle_missing"] = "Vehicle does not exist anymore. The delivery run has been cancelled.",
    ["delivery_van_run_driver_only"] = "You must be the driver to finish the delivery run.",
    ["delivery_boat_run_started"] = "Moonshine Delivery Boat Run Started. Get in the boat marked on the map and start delivery",
    ["delivery_boat_name"] = "Delivery Boat",
    ["delivery_boat_run_driver_only"] = "You must be the driver to finish the delivery run.",
    ["delivery_skydiving_run_started"] = "Moonshine Delivery Skydiving Run Started. Get in the plane marked on the map and start delivery",
    ["delivery_plane_name"] = "Delivery Plane",
    ["delivery_skydiving_run_driver_only"] = "You must be the pilot.",
    ["delivery_skydiving_go_to_finish"] = "Go to the marked location to finish the delivery",
    ["delivery_finish_location"] = "Delivery Finish Destination",
    ["delivery_skydiving_run_final_action"] = "[E] - Finish Delivery",
    ["delivery_raid_blip_name"] = "Moonshine Delivery",

}   

```

### Delivery Config

```lua
Config.delivery = {
    npcs = {
        {
            pedModel = "s_m_m_ammucountry",
            pedCoords = vector4(2436.16, 4966.6, 42.35, 110.71),
        }
    },
    menu = {
        {
            title = "Merchant Deal",
            description = "Sell moonshine safely to a local merchant. \n\nBusted Chance: ",
            icon = "fa-solid fa-user-secret",
            type = "merchant_deal",
            policeAlertChance = 0,
            allowedItems = {
                ["classic_moonshine_low"] = {
                    pricePerUnit = 50,
                    minRequiredAmount = 1,
                },
                ["apple_moonshine_low"] = {
                    pricePerUnit = 60,
                    minRequiredAmount = 1,
                },
                ["ginseng_moonshine_low"] = {
                    pricePerUnit = 70,
                    minRequiredAmount = 1,
                },
                ["lemon_moonshine_low"] = {
                    pricePerUnit = 65,
                    minRequiredAmount = 1,
                },
                ["honey_moonshine_low"] = {
                    pricePerUnit = 75,
                    minRequiredAmount = 1,
                },
                -- If you do not use the quality system, remove comment line below and add the options above to the comment line.
                --[[
                ["classic_moonshine"] = {
                    pricePerUnit = 50,
                    minRequiredAmount = 1,
                },
                ["apple_moonshine"] = {
                    pricePerUnit = 60,
                    minRequiredAmount = 1,
                },
                ["ginseng_moonshine"] = {
                    pricePerUnit = 70,
                    minRequiredAmount = 1,
                },
                ["lemon_moonshine"] = {
                    pricePerUnit = 65,
                    minRequiredAmount = 1,
                },
                ["honey_moonshine"] = {
                    pricePerUnit = 75,
                    minRequiredAmount = 1,
                }, 
                ]]
            }
        },
        {
            title = "House Delivery",
            description = "Sell moonshine safely with home delivery, though there's still a small chance of getting caught. \n\nBusted Chance: ",
            icon = "fa-solid fa-house",
            type = "house_delivery",
            policeAlertChance = 25,
            allowedItems = {
                ["classic_moonshine_low"] = {
                    pricePerUnit = 70,
                    minRequiredAmount = 6,
                },
                ["apple_moonshine_low"] = {
                    pricePerUnit = 80,
                    minRequiredAmount = 6,
                },
                ["ginseng_moonshine_low"] = {
                    pricePerUnit = 90,
                    minRequiredAmount = 6,
                },
                ["lemon_moonshine_low"] = {
                    pricePerUnit = 85,
                    minRequiredAmount = 6,
                },
                ["honey_moonshine_low"] = {
                    pricePerUnit = 95,
                    minRequiredAmount = 6,
                },

                -- If you do not use the quality system, remove comment line below and add the options above to the comment line.
                --[[
                ["classic_moonshine"] = {
                    pricePerUnit = 70,
                    minRequiredAmount = 6,
                },
                ["apple_moonshine"] = {
                    pricePerUnit = 80,
                    minRequiredAmount = 6,
                },
                ["ginseng_moonshine"] = {
                    pricePerUnit = 90,
                    minRequiredAmount = 6,
                },
                ["lemon_moonshine"] = {
                    pricePerUnit = 85,
                    minRequiredAmount = 6,
                },
                ["honey_moonshine"] = {
                    pricePerUnit = 95,
                    minRequiredAmount = 6,
                }, 
                ]]
            }
        },
        {
            title = "Smuggler Van Run",
            description = "Sell moonshine through medium-risk channels for a balance of profit and risk. \n\nBusted Chance: ",
            icon = "fa-solid fa-truck-front",
            type = "van_run",
            policeAlertChance = 50,
            allowedItems = {
                ["classic_moonshine_med"] = {
                    pricePerUnit = 90,
                    minRequiredAmount = 20,
                },
                ["apple_moonshine_med"] = {
                    pricePerUnit = 100,
                    minRequiredAmount = 20,
                },
                ["ginseng_moonshine_med"] = {
                    pricePerUnit = 110,
                    minRequiredAmount = 20,
                },
                ["lemon_moonshine_med"] = {
                    pricePerUnit = 105,
                    minRequiredAmount = 20,
                },
                ["honey_moonshine_med"] = {
                    pricePerUnit = 115,
                    minRequiredAmount = 20,
                },

                -- If you do not use the quality system, remove comment line below and add the options above to the comment line.
                --[[
                ["classic_moonshine"] = {
                    pricePerUnit = 90,  
                    minRequiredAmount = 20,
                },
                ["apple_moonshine"] = {
                    pricePerUnit = 100,
                    minRequiredAmount = 20,
                },
                ["ginseng_moonshine"] = {
                    pricePerUnit = 110,
                    minRequiredAmount = 20,
                },
                ["lemon_moonshine"] = {
                    pricePerUnit = 105,
                    minRequiredAmount = 20,
                },
                ["honey_moonshine"] = {
                    pricePerUnit = 115,
                    minRequiredAmount = 20,
                }, 
                ]]
            }
        },
        {
            title = "Harbor Smuggling",
            description = "Sell moonshine through high-risk channels for maximum profit, but with a significant chance of getting caught. \n\nBusted Chance: ",
            icon = "fa-solid fa-ship",
            type = "harbor_smuggling",
            policeAlertChance = 80,
            allowedItems = {
                ["classic_moonshine_high"] = {
                    pricePerUnit = 110,
                    minRequiredAmount = 100,
                },
                ["apple_moonshine_high"] = {
                    pricePerUnit = 120,
                    minRequiredAmount = 100,
                },
                ["ginseng_moonshine_high"] = {
                    pricePerUnit = 130,
                    minRequiredAmount = 100,
                },
                ["lemon_moonshine_high"] = {
                    pricePerUnit = 125,
                    minRequiredAmount = 100,
                },
                ["honey_moonshine_high"] = {
                    pricePerUnit = 135,
                    minRequiredAmount = 100,
                },

                -- If you do not use the quality system, remove comment line below and add the options above to the comment line.
                --[[
                ["classic_moonshine"] = {
                    pricePerUnit = 110,  
                    minRequiredAmount = 100,
                },
                ["apple_moonshine"] = {
                    pricePerUnit = 120,
                    minRequiredAmount = 100,
                },
                ["ginseng_moonshine"] = {
                    pricePerUnit = 130,
                    minRequiredAmount = 100,
                },
                ["lemon_moonshine"] = {
                    pricePerUnit = 125,
                    minRequiredAmount = 100,
                },
                ["honey_moonshine"] = {
                    pricePerUnit = 135,
                    minRequiredAmount = 100,
                }, 
                ]]
            }
        },
        {
            title = "Sky Shipment",
            description = "Sell moonshine through high-risk channels for maximum profit, but with a significant chance of getting caught. \n\nBusted Chance: ",
            icon = "fa-solid fa-plane-arrival",
            type = "air_drop_run",
            policeAlertChance = 100,
            allowedItems = {
                ["classic_moonshine_high"] = {
                    pricePerUnit = 170,
                    minRequiredAmount = 300,
                },
                ["apple_moonshine_high"] = {
                    pricePerUnit = 180,
                    minRequiredAmount = 300,
                },
                ["ginseng_moonshine_high"] = {
                    pricePerUnit = 220,
                    minRequiredAmount = 300,
                },
                ["lemon_moonshine_high"] = {
                    pricePerUnit = 180,
                    minRequiredAmount = 300,
                },
                ["honey_moonshine_high"] = {
                    pricePerUnit = 260,
                    minRequiredAmount = 300,
                },

                -- If you do not use the quality system, remove comment line below and add the options above to the comment line.
                --[[
                ["classic_moonshine"] = {
                    pricePerUnit = 170,  
                    minRequiredAmount = 300,
                },
                ["apple_moonshine"] = {
                    pricePerUnit = 180,
                    minRequiredAmount = 300,
                },
                ["ginseng_moonshine"] = {
                    pricePerUnit = 220,
                    minRequiredAmount = 300,
                },
                ["lemon_moonshine"] = {
                    pricePerUnit = 180,
                    minRequiredAmount = 300,
                },
                ["honey_moonshine"] = {
                    pricePerUnit = 260,
                    minRequiredAmount = 300,
                }, 
                ]]
            }
        }
    },
    houseDeliveryOptions = {
        locations = {
            vector3(161.88, 6636.4, 31.56),
            vector3(119.48, 6626.4, 31.96),
            vector3(56.64, 6646.4, 32.28),
            vector3(35.44, 6663.16, 32.2),
            vector3(1.64, 6612.48, 32.08),
            vector3(-9.6, 6654.2, 31.72),
            vector3(-41.68, 6637.32, 31.08),
            vector3(-26.48, 6597.16, 31.88),
            vector3(-44.36, 6581.96, 32.16),
            vector3(-130.76, 6551.88, 29.88),
            vector3(-105.68, 6528.48, 30.16),
            vector3(-229.6, 6445.64, 31.2),
            vector3(-238.32, 6423.68, 31.48),
            vector3(-213.68, 6396.08, 33.08),
            vector3(-227.16, 6377.44, 31.76),
            vector3(-272.56, 6401.0, 31.52),
            vector3(-247.76, 6369.96, 31.84),
            vector3(-280.44, 6350.68, 32.6),
            vector3(-302.12, 6326.96, 32.88),
            vector3(-407.36, 6314.2, 28.96),
            vector3(-371.08, 6266.76, 31.88),
            vector3(-380.04, 6252.8, 31.84),
            vector3(-442.8, 6197.76, 29.56),
            vector3(31.16, 6596.8, 32.84),
            vector3(11.52, 6578.4, 33.08),
            vector3(-15.36, 6557.4, 33.24),
            vector3(7.76, 6523.64, 31.88),
            vector3(-11.0, 6499.2, 31.52),
            vector3(-20.8, 6490.36, 31.52),
            vector3(-30.48, 6480.4, 31.52),
            vector3(-39.44, 6471.36, 31.52),
            vector3(-50.88, 6459.56, 31.52),
            vector3(-59.52, 6449.76, 31.68),
            vector3(-149.92, 6422.84, 31.92),
            vector3(-149.96, 6416.08, 31.92),
            vector3(-157.04, 6409.16, 31.92),
            vector3(-159.84, 6432.64, 31.92),
            vector3(-166.8, 6439.68, 31.92),
            vector3(-122.52, 6389.52, 32.16),
            vector3(-163.88, 6391.2, 31.48),
            vector3(-167.4, 6387.56, 32.04),
            vector3(-172.76, 6381.32, 31.48),
            vector3(-201.52, 6354.4, 31.48),
            vector3(-227.88, 6333.92, 32.44),
            vector3(-262.64, 6291.16, 31.48),
            vector3(-270.04, 6283.76, 31.48),
            vector3(-266.52, 6249.2, 31.48),
            vector3(-276.24, 6239.08, 31.48),
            vector3(-300.76, 6256.6, 31.48),
            vector3(-302.48, 6211.32, 31.44),
            vector3(-347.4, 6225.44, 31.88),
            vector3(-315.52, 6194.08, 31.56),
            vector3(-356.84, 6207.64, 31.84),
            vector3(-374.6, 6190.96, 31.72),
        }
    },
    vanRunOptions = {
        blipOptions = {
            sprite = 67,
            color = 3,
            scale = 0.8,
        },
        vehicleModel = "burrito3",
        isRaidable = true,
        raidBlip = {
            enabled = true,
            sprite = 68,
            color = 1,
            scale = 1.0,
            updateInterval = 10, -- seconds
            allowedJobs = {
--[[            ["ballas"] = true,
                ["vagos"] = true, ]]
            }
        },
        spawnLocations = {
            vector4(2451.937, 4997.882, 45.846, 90.023),
            vector4(2431.055, 4983.031, 45.716, 134.767),
            vector4(2420.597, 4961.915, 45.900, 45.524),
        },
        deliveryPoints = {
            vector3(475.915, -3352.267, 6.069),
            vector3(499.897, -1972.352, 24.699),
            vector3(878.122, -1527.016, 30.006),
            vector3(-89.543, -2217.808, 7.628)
        },
    },
    harborSmugglingOptions = {
        blipOptions = {
            sprite = 455,
            color = 3,
            scale = 0.8,
        },
        boatModel = "tug",
        isRaidable = true,
        raidBlip = {
            enabled = true,
            sprite = 68,
            color = 1,
            scale = 1.0,
            updateInterval = 10, -- seconds
            allowedJobs = {
--[[            ["ballas"] = true,
                ["vagos"] = true, ]]
            }
        },
        spawnLocations = {
            vector4(-1603.26, 5275.61, 1.20, 22.45),
            vector4(-303.68, 6664.94, 0.27, 140.83)
        },
        deliveryPoints = {
            vector3(-124.14, -2737.64, 0.95),
            vector3(-28.96, -2767.11, 1.45),
            vector3(527.91, -3178.76, 1.10),
            vector3(1309.26, -3177.16, 1.35)
        }
    },
    skyShipmentOptions = {
        blipOptions = {
            sprite = 307,
            color = 3,
            scale = 0.8,
        },
        planeModel = "velum2",
        deliveryAmount = 2,
        spawnLocations = {
            vector4(2133.09, 4783.82, 40.94, 26.14),
        },
        deliveryPoints = {
            vector3(-1856.48, 2100.16, 300.0),
            vector3(69.38, -1909.43, 300.0),
            vector3(1527.61, -2116.86, 300.0),
            vector3(568.78, -1962.48, 300.0),
            vector3(1458.32, 1091.85, 300.0)
        },
        finishCoords = {
            vector3(2137.84, 4812.11, 41.10),
            vector3(1740.32, 3261.36, 41.25),
        }
    }
}
```

### Consumption Config

```lua
Config.consumption = {
    ["classic_moonshine_low"] = {
        walkStyle = "move_m@drunk@slightlydrunk",
        screenEffect = false,
        duration = 60, -- seconds
        drunkDriving = {
            enabled = true,
            steeringBias = 1.5,
            speedVariation = 0.4,
            brakeProbability = 0.1,
            blur = true,
            randomHorn = true
        },
    },
    ["classic_moonshine_med"] = {
        walkStyle = "move_m@drunk@moderatedrunk",
        screenEffect = {
            effectName = "DrugsMichaelAliensFight"
        },
        duration = 60, -- seconds
        drunkDriving = {
            enabled = true,
            steeringBias = 2.0,
            speedVariation = 0.5,
            brakeProbability = 0.12,
            blur = true,
            randomHorn = true
        },
    },
    ["classic_moonshine_high"] = {
        walkStyle = "move_m@drunk@verydrunk",
        screenEffect = {
            effectName = "Dont_tazeme_bro"
        },
        duration = 60, -- seconds
        drunkDriving = {
            enabled = true,
            steeringBias = 2.5,
            speedVariation = 0.6,
            brakeProbability = 0.15,
            blur = true,
            randomHorn = true
        },
    },
}

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.rainmad.com/resources/moonshine-bootleg-empire/configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
