Configuration Reference

Every oxide-weed setting, file by file, with defaults — and how the database-backed settings editor works.

Every setting in oxide-weed, file by file. All config files live in shared/ and can be edited freely — they are never encrypted.

Settings Live In The Database

The config files below are factory defaults. The first time the resource starts, every setting is copied into your database (an oxide_settings table, created automatically). From then on, the database is the source of truth: admins change settings in game with /weed settings (see Admin), changes apply immediately without a restart, and they survive restarts.

What that means in practice:

  • Editing a config file after the first start does nothing for settings already in the database — change them in /weed settings instead, or use the menu's "reset to default" button to pull a file value back in.
  • New settings added by a resource update are picked up from the files automatically on the next start.
  • To start completely fresh from the files, delete this resource's rows from the oxide_settings table and restart.
  • Two exceptions: Config.UseHudAccent and Config.SceneAnims are never copied into the database, so they are always read from shared/config.lua.

This reference documents what each setting does — the same descriptions appear in the in-game editor.

Times are in seconds unless a setting name ends in ms or the description says otherwise.

Which File Does What

FileCovers
shared/config.luaGeneral settings, dirty money, plant care, floating labels, placement zones, item usage whitelist, animations
shared/config/plants.luaGrowth stages, timing, harvest yield
shared/config/strains.luaThe base strain list and their stats, and the seed packs the store sells
shared/config/genetics.luaTraits, breeding, mutation, quality scoring
shared/config/drying.luaWeed table drying and heaters
shared/config/dryingrack.luaThe standalone drying rack
shared/config/freezedryer.luaThe freeze dryer
shared/config/equipment.luaPlaceable equipment, bagging, packaging, brick press
shared/config/waterhose.luaThe water hose: length, spray patterns, and where each water tank's tap and hook are
shared/config/growtents.luaGrow tents: sizes, slots, light, carbon filter, smell and police seizure
shared/config/models.luaModel replacements for older game builds
shared/config/lamps.luaGrow lamps
shared/config/progression.luaXP rewards, level thresholds, level-up feedback, first-time XP, grower perks, strain mastery, daily and weekly goals, master ranks, signature strains, gang influence, and the Grower app
shared/config/smoking.luaRolling, smoking effects, and controls
shared/config/store.luaThe Germinator store NPC and its stock
shared/config/scientist.luaThe scientist NPC, lab reports, cloning prices
shared/config/wildplants.luaWild plant zones, yields, and respawn timing

General Settings

File: shared/config.lua

SettingDefaultWhat it does
Config.DebugfalseVerbose debug logging (routed through oxide-logger if installed)
Config.RequireOwnershiptrueOnly the player who placed something (plant, lamp, equipment, drying buds) can take it back
Config.SpawnDistance100.0How close a player must be before placed objects appear on their screen
Config.UseHudAccenttrueThe stage HUD (the panels drawn over the game while you plant, harvest, dry, press and so on, the key prompts, the level-up banner and the XP pop-ups) uses your server's accent colour from Oxide HUD, set in Oxide HUD's Config.Theme. false keeps oxide-weed's own green. Without Oxide HUD, or with no accent set there, nothing changes. Config file only: it is not in /weed settings, so change it in the file and restart
Config.SceneAnimsbase-game clipsThe working animation other players see on you at the brick press, drying rack, freeze dryer and crossbreeding station. Your view of those scenes is private, so without it you would stand frozen to everyone else. Set an entry (press, dryingrack, freezedryer, crossbreed) to false to turn that one off. Config file only: it is not in /weed settings, so change it in the file and restart

Dirty Money

Controls how the scientist charges players (the store always uses regular cash).

SettingDefaultWhat it does
Config.DirtyMoney.mode'account''account' charges a money account; 'item' takes a money item instead
Config.DirtyMoney.account'cash'Which account to charge in account mode (e.g. 'cash', 'black_money')
Config.DirtyMoney.item'black_money'Which item to take in item mode

Plant Care

SettingDefaultWhat it does
Config.PlantSettings.waterDecayRate0.2Water % a plant loses per minute
Config.PlantSettings.fertilizerDecayRate0.1Fertilizer % a plant loses per minute
Config.PlantSettings.updateInterval60000How often (in ms) the server updates all plants
Config.PlantSettings.maxLampsPerPlant4Most grow lamps that can help one plant
Config.PlantSettings.removeLampsOnPlantDeathfalsetrue deletes a dead plant's lamps; false leaves them standing

A plant dies if its water or fertilizer reaches zero. Hardy strains (high resilience) drain slower.

Ways to water a plant (Config.PlantSettings.water.sources), tried in order:

  • a watering_can — adds 25 water (fillAmount), uses 10 of the can's stored water (metaCost)
  • a water item — consumed, adds 25 water

The watering_can row is the can's only rule. Watering from the plant's menu and using the can item next to a plant both pour by it, so they cost and give the same. A can holding less than metaCost can't pour.

The prop tilted over the pot in the watering scene is Config.PlantSettings.water.model, a watering can (oxide_weed_watering_can, streamed with the resource). fxOffset is where its water leaves (the can's rose, in the prop's own space), rotateOffset is how far one scroll tilts it, pourAngle (default 40) is how far it must tilt before it pours, and headingOffset (default -90) turns it side-on to the camera with the spout to the right.

Fertilizing (Config.PlantSettings.fertilizer): consumes 1 fertilizer, adds 35.

Harvesting (Config.PlantSettings.harvest): returns the plant_pot by default.

Watering Can

SettingDefaultWhat it does
Config.WateringCan.capacity100How much water the can holds. Refilling from a tank fills it up to this

What a pour costs and gives is set on the watering_can row of the water sources above. The older WateringCan.waterCost and WateringCan.fillAmount settings are no longer used; saved values for them are ignored.

Pruning Yields

SettingDefault
Config.Processing.pruneYield2–5 pruned buds per dried bud
Config.Processing.leafYield1–3 cannabis leaves per prune

Floating Labels

Config.Labels controls the small info text that floats above plants and tables (view distance, text size, height offsets). The defaults look right for the shipped models — you only need these if you swap in custom models.

Placement Zones

Config.ZoneMode decides how map areas control where players may plant and place equipment:

ModeWhat it does
'off'Players can plant and place anywhere. Both zone lists are ignored, but neither is erased.
'blacklist' (default)Blocked inside the areas in Config.SafeZones. An empty list allows everywhere.
'whitelist'Blocked outside the areas in Config.AllowedZones — so those areas become the only legal spots.

Config.SafeZones and Config.AllowedZones are separate lists and both are kept no matter which mode is active, so you can set up both and switch between them without redrawing anything. Each zone has a name, a list of points outlining the area, and a minZ/maxZ height band. A Legion Square example ships in SafeZones — replace or remove it as you like.

Careful: switching to 'whitelist' with no allowed areas drawn blocks planting and placement everywhere. The settings editor flags this while you're editing.

Item Usage Whitelist

Config.UsageWhitelist restricts who may use individual items. It ships empty, which means every item is usable by anyone. Each rule looks like this:

{ item = 'weed_table', jobs = { 'police' }, gangs = { 'ballas' }, minRank = 2, dutyOnly = false }
  • Items with no rule stay usable by everyone.
  • A rule passes if the job list matches or the gang list matches.
  • Leaving both lists empty allows any job or gang — minRank and dutyOnly are still checked.
  • minRank is the numeric grade level; 0 means any rank.
  • dutyOnly applies to jobs only. Gangs have no duty state, so it's ignored on the gang side.
  • Job and gang names are matched ignoring capitalisation.
  • A seed's rule and its strain's level are checked again when the plant goes in, loose pot or grow tent, so a player can't get around them by skipping the seed use.

Rules key on the literal item name, so if you rename an item elsewhere in the config its rule stops applying.

Police Alerts

Config.Dispatch makes growing carry a risk of being reported to police. It ships off (alert chance 0), so nothing changes until you turn it on.

When a player starts a stage the server rolls once. On a hit, a dispatch call goes out at the plant's or table's location — not the player's, so a suspect can't fake or move it.

SettingDefaultWhat it does
Alert chance0Chance of an alert each time a stage is started. 0 turns alerts off completely. 0.15 means roughly one in seven.
Per-stage chanceall -1Set a different chance for one stage. -1 means "use the alert chance above".
Site cooldown300 sHow long before that same plant or table can raise another alert. Other sites are unaffected, so a player can't be alerted on repeatedly at one grow.
Alert jobspoliceWhich jobs receive the alert. Capitalisation doesn't matter.
Call code, Title, Message10-15, "Suspected Grow Operation", …The text responders see. The default message deliberately doesn't say what's being grown — police get a location and a reason to look, not a confession.
Priority21 is highest.
Icon, Map blipThe Font Awesome icon and the blip drawn on the map. Search radius is the size of the circle around the site, so responders get an area to search rather than an exact door.

The four stages you can tune separately are Plant, Harvest, Dry and Brick press. Planting catches a grow as it's being set up; harvesting catches the payoff. A common setup is a low master chance with planting turned off, so only an established grow gets reported.

Wild plant harvesting never alerts — it's a public, outdoor activity and the plants aren't anybody's operation.

What "chance" means in practice. It's rolled per stage started, not per harvest finished. A player who starts, cancels, and restarts rolls twice — but the site cooldown means only one of them can actually alert. A rejected placement (blocked by a placement zone) never rolls at all.

What you need installed

Alerts go through whatever dispatch resource you run. Most are supported, including ps-dispatch, qs_dispatch, cd_dispatch, lb-tablet and the common MDTs. You don't strictly need one — with no dispatch resource installed, players with the alert job get a notification and a map blip instead.

If nobody with the alert job is online, the alert is discarded. That's intentional: there is no queue of stale calls waiting for the first officer to log in.

On ESX, every player with the job receives the alert whether or not they're clocked on — ESX has no on-duty concept for this.

Animations

Config.Anims sets the kneel-down animation played when placing and removing things (1 second by default).

Plants

File: shared/config/plants.lua

One plant type ships: cannabis_seed. It defines:

  • planting requires a plant_pot (consumed)
  • the plant models used at each growth stage
  • stage timing — stages 1, 2, and 3 each last 60 * 60 (1 hour) by default, so plants are harvest-ready after about 3 hours
  • harvest yield — 3–8 weed_bud

To slow down or speed up growing on your server, change the time value on stages 1–3.

SettingDefaultWhat it does
Config.MaxPlantsPerPlayer40The most plants one character can have at once, loose pots and grow tent slots together. 0 is no limit. Lowering it never removes plants already growing

The default leaves room for two full Large Grow Tents (16 plants, at the default of two tents per player) and 24 loose pots beside them. It's checked when a seed is used and again by the server when the plant goes in, so a player at the limit is told before the planting starts.

Loose pots by level

Config.LoosePlantCap is an optional second limit on loose pots only, which grows with the player's level. It ships off.

SettingDefaultWhat it does
enabledfalseTurns the cap on
byLevel6, 8, 10, 12, 14, 16, 18, 20, 22, 24Loose pots a character can have growing at each level, in order from level 1. Levels past the end of the list use the last entry. 0 is no cap at that level

Grow tent slots don't count toward it (tents have their own limit), and MaxPlantsPerPlayer still caps everything. Like the plant limit it's checked when a seed is used and again when the plant goes in, and lowering it never removes plants already growing. While it's on, the Grower Profile shows the player's loose pots against their cap, and each level that raises it appears in the unlock list. It's under Loose Pots in the Progression category of /weed settings.

Strains

File: shared/config/strains.lua

Thirteen base strains ship, from generic (the starter strain) up to durban_poison. Each defines:

  • label — the display name
  • baseQuality — starting quality score
  • requiredLevel — player level needed to plant it. Changing it in /weed settings moves the planting gate at once, also for seeds already in circulation
  • traits — the 10 stat values

The default ladder: level 1 → Generic. Level 2 → OG Kush, Purple Haze. Level 3 → Sour Diesel, Blue Dream. Level 4 → Northern Lights, White Widow. Level 5 → Girl Scout Cookies, Granddaddy Purple, Amnesia Haze. Level 7 → Gelato. Level 8 → Wedding Cake. Level 9 → Durban Poison.

The three premium strains each lead the catalogue on one trait: Gelato on flavor, Wedding Cake on density, Durban Poison on THC. They top out around Gas grade, so a well-bred cross can still beat them. They're marked noWild, so they never grow as wild plants; their seeds come from the store's seed packs, breeding and cloning. Tick Never grows wild on any strain in /weed settings to do the same.

Seed packs

Config.SeedPackets lists sealed packs of one strain's seeds. Using a pack opens it into that many ordinary seeds of the strain, which plant, crossbreed and clone like any other seed.

Pack itemStrainSeedsStore price
gelato_seed_packgelato3$2,500
wedding_cake_seed_packwedding_cake3$3,500
durban_poison_seed_packdurban_poison3$5,000

The store sells a pack from its strain's level, under a Seeds tab. A pack whose strain has been removed from the catalogue won't open. To sell a pack of another strain, add a row here and the item to the store list (and to your inventory).

Hybrid strains created through crossbreeding are generated and saved automatically — you don't define those here.

Genetics

File: shared/config/genetics.lua

SettingDefaultWhat it does
breedingUnlockLevel3Level needed to crossbreed
mutationRate0.10Scales the random shift applied to every trait; it is not a mutation probability
mutationRange20Multiplied by mutationRate: up to ±2 points by default, before rounding to the nearest 5 and clamping to 0–100
maxGeneration0Breeding generation cap — 0 means unlimited
maleBias0.4Share of each trait inherited from the male parent (40% male, 60% female)
maleChance0.4Chance a plant grows male (40%)
genderCheckStage2Growth stage where gender can be checked
maleChance0.4Chance any planted seed grows male (40%)
pollenGatherTime3000Pollen gathering time in ms
pollenDestroysPlanttrueGathering pollen destroys the male plant
seedFromHarvestChance0.25Chance a harvest also gives a seed (25%)

namePool is the word list used to auto-name hybrid strains (40 prefixes × 40 suffixes — 1,600 possible names like "Crystal Diesel" or "Nuclear Gelato").

qualityWeights decides which traits matter for the quality score: potency 20%, THC 18%, density / frost / flavor / aroma 13% each, CBD 10%. Yield, resilience, and growth speed don't affect quality — they affect growing instead.

Weed Table Drying

File: shared/config/drying.lua

SettingDefaultWhat it does
Config.Drying.dryingTime180030 minutes per bud
Config.Drying.updateInterval30000How often (ms) the server checks drying progress
Config.Drying.maxSlots14Buds one table can dry at once
Config.Drying.items.input'weed_bud'What goes on the table
Config.Drying.items.output'dried_weed_bud'What comes off

Heaters

SettingDefaultWhat it does
heater.item'weed_heater'The heater inventory item
heater.model'oxide_weed_heater'The world model (a heater on a stand, streamed with the resource)
heater.maxPerRack3Heaters per table
heater.dryingMultiplier1.5Each heater adds 50% drying speed (3 heaters = 2.5x)
heater.snapOffsets3 positionsWhere heaters snap onto the table, each turned to face it

Each snapOffsets entry can be written two ways:

-- Position only (heater faces the same way as the table)
vec3(1.408, 0.0, -0.001),

-- Position + rotation (degrees added on top of the table's rotation)
{ offset = vec3(1.408, 0.0, -0.001), rotation = vec3(0.0, 0.0, 90.0) },

The default snap points use the rotation form so each heater faces the table. A heater placed next to a table always turns to face it once it is set down. While a heater is locked to a snap point, scroll-wheel rotation does nothing — move it off the snap to rotate freely.

Drying Rack

File: shared/config/dryingrack.lua

SettingDefaultWhat it does
Config.DryingRack.dryingTime120020 minutes per bar
Config.DryingRack.updateInterval30000Progress check interval (ms)
Config.DryingRack.budsPerBar8Buds hanging from each bar, spread evenly along it
Config.DryingRack.barCount4Bars per rack (32 buds total)
Config.DryingRack.itemsweed_bud → dried_weed_budInput and output items

The rest of the file is the camera angle, the bowl and its buds on the rack's shelf, and the bar positions for the rack's 3D interface — only relevant if you change models. Buds hang from the bars by their stem end, worked out from the bud model's size, so a different bud model still hangs correctly.

Freeze Dryer

File: shared/config/freezedryer.lua

SettingDefaultWhat it does
Config.FreezeDryer.dryingTime60010 minutes per tray
Config.FreezeDryer.updateInterval30000Progress check interval (ms)
Config.FreezeDryer.itemsweed_bud → dried_weed_budInput and output items
Config.FreezeDryer.trays.budsPerTray8Buds per tray
Config.FreezeDryer.trays.stackCount9Trays stacked per column (2 columns)

The level needed to place and use a freeze dryer is its row under Equipment (requiredLevel, 7 by default).

With the defaults that works out to 18 trays and 144 buds total. The tray positions are computed automatically from the column layout at the bottom of the file.

The rest of the file is the look of the freezer's 3D interface — only relevant if you change models: the overview and tray cameras, how far a tray slides out, the two door models with their hinge points, how far and how fast the doors open, the lights inside, where each bud sits on a tray, and the bowl the player holds while loading. Buds rest on the tray by their own lowest point, worked out from the bud model's size, so a different bud model still sits correctly.

The stock tray's floor is at local z 0.00537109375 (measured from its GTA mesh), below its 0.028791 rim. budOffsets[].z uses that floor; the client adds the rotated bud model's rest lift. Saved spots still at the old default 0.029 move to the corrected height once. Spots owners fitted themselves and different models stay as saved.

Equipment

File: shared/config/equipment.lua

Each entry defines a placeable: its inventory item, world model(s), and any level requirement.

EquipmentLevel required
Weed table, storage tote, water containersnone
drying_rack3
freeze_dryer7
brick_press8

Weed table recipes

The weed table entry also holds the bagging and packaging recipes:

  • Bagging: 1 pruned_weed_bud + 1 baggy → 1 weed_1g
  • Packaging (4 seconds each, progressDuration):
    • 3 weed_1g → 1 weed_eighth
    • 2 weed_eighth → 1 weed_quarter
    • 2 weed_quarter → 1 weed_half
    • 2 weed_half → 1 weed_ounce

Storage tote

15 slots, max weight 50000 grams (50 kg). Legacy saved capacities in kilograms convert to grams once on startup.

Water containers

ModelCapacityWater added per water item
Smalloxide_weed_tank_small50075
Largeoxide_weed_tank_large100075

Both are water tanks streamed with the resource, with a tap on the front for the water hose and a sight gauge that shows the water level. The tap faces the player when the tank is placed.

A tank that is picked up keeps its water in the item's metadata (water_level, like the watering can) and gets it back when it's placed again. The server also records that water in weed_carried_tanks and hands it out once, so a copied item (a split stack, a duplicate) places empty. This needs an inventory that stores item metadata, such as ox_inventory or qb-inventory. On qb-inventory, set unique = true on the two tank items so a watered tank never shares a slot with another tank (see INSTALLATION). When the inventory can't keep the water, the tank is still picked up, the player is told how much water was poured out, and the server logs it.

Brick press

SettingDefault
Input10x dried_weed_bud (same strain and quality)
Output1x weed_brick
XP per brick60
Pressing animation9 seconds

The rest of the press entry is camera and prop positioning for the pressing scene.

Water Hose

File: shared/config/waterhose.lua — in /weed settings under Growing → Water Hose

SettingDefaultWhat it does
enabledtrueTurns the hose options on or off. Hoses already connected stay on their tanks
itemwater_hoseThe item that connects to a tank
requiredLevel0Weed level needed to connect a hose
length12.0Metres of hose. Pulled further, it reels back onto the tank
warnAt0.85Share of the length at which the HUD warns the hose is nearly out
plantWaterPerUnit2.5Water a plant gains per tank unit sprayed onto it. 2.5 matches the watering can
xpPerWater25A plant earns the watering XP each time it has received this much water from the hose
maxTargets4Most plants one spray waters at the same time
patternsjet, showerThe spray patterns scroll switches between (see below)
pressure.minRangeScale0.7Range left when the tank is nearly empty
pressure.sputterBelow0.05Fill level below which the stream sputters
pitch.min / pitch.max-35 / 20How far down and up the stream can aim, in degrees
pitch.offset5Added to the camera's angle, so a level camera sprays slightly up
splashcore / ent_sht_waterThe splash effect where the water lands
rope.type4The game's rope style used for the hose body. 4 is thin and dark like a garden hose
rope.slack0.3Metres of hose beyond the straight line between the tank and the nozzle. 0 is pulled tight
modelsoxide_weed_hose_*The nozzle, the coupling on the tap, the coiled hose and the gauge water
handbone 28422Where the nozzle sits in the hand
animcoffee-hold clipThe animation played while holding the hose
keys24, 241, 242, 194Controls: spray (LMB, held), next and previous pattern (scroll), put back (BACKSPACE)
renderDistance / fxDistance60 / 30How far away other players' hoses and their water are drawn, in metres
maxRopes6Most hoses one player's game draws at once
tickMs1000How often the server drains the tank while spraying
containerssmall, largeWhere the tap, hook, gauge, kneeling spot and camera are on each water container

Spray patterns:

PatternFlow (tank units a second)ReachSplash radius
jet57 m0.6 m
shower33.5 m1.2 m

Note: A water container with no entry under containers takes no hose. If you add your own container to the Equipment list, add its fittings under Tank fittings too. Offsets there are measured in metres from the container's floor centre, with -Y toward the player.

Grow Tents

File: shared/config/growtents.lua — in /weed settings under Growing → Grow Tents

SettingDefaultWhat it does
enabledtrueOff stops tents being placed or tended. Tents already placed stay
access'anyone'Who can open and tend a tent: 'anyone' or 'owner'. With 'owner', other players don't see the tend, open, close and fit-filter options
maxPerPlayer2Tents per character, every size together. 0 is no limit
reach3.0How far from the spot in front of the door a player can work a tent
footprintMargin0.25Clear space kept around a tent: other tents, loose pots and lamps stay this far away
maxGroundDelta0.12How much the ground under a tent may rise or fall, in metres
doorOpenTime / doorOpenAngle700 / 100How long hinged doors (the grow box) take to open (ms) and how far they swing (degrees)
flapfive models, 1100 msThe tents' roll-up flaps: the shut and rolled-up models, the parts shown while a flap rolls, the roll's size and how long it takes
sceneAnimwork loopWhat other players see while someone works in a tent
stageModelsstages 3 and 4The compact, trained models plants use in a tent for the stages that wouldn't fit a slot
budSpawnz 0.92–1.20Where harvest buds appear on a tent plant
lightpink, 2.2 mThe built-in light's colour, reach, brightness and spread, drawn while a door is open
filtercarbon_filter, level 5, 0.35The carbon filter's item, model, level and what it does to the police alert chance
smellon, 6 m, police 12 m, from stage 3, 300 sWhen players notice the smell of a tent with no filter
seizeon, police, on duty, 10000 msWho can seize a grow and how long it takes. A seizure also costs each signature strain growing in the tent some reputation (see Reputation)
tiersthree sizesEach size: its item, level, model, door style (hinge or roll), doors, size, plant slots, light, filter mount, door spot, cameras and what it does for the plants. A hinged door has a model, a hinge and a swing direction; a roll-up door has only its position, the centre of the opening at the floor

Each size's numbers:

SizeLevelSlotsGrowthCare bonusYieldWater and fertilizer usePolice alert chanceHarvest XP bonus
grow_box221.50.031.050.900.53
grow_tent441.60.051.100.850.75
grow_tent_large681.70.081.150.800.88

Note: Offsets in a size (slots, doors, light, filter mount, door spot, cameras) are measured in metres from the tent's floor centre, with -Y toward the door. The front and back cameras are measured from the slot they look at. A size that still has tents placed can't be removed, and a size can't drop a slot that a placed tent has a plant in.

The tents and the carbon filter are in the store's default stock. A server updating from an older version gets the four store rows added once, on the first start after the update.

Model Replacements

File: shared/config/models.lua — in /weed settings under Core → Compatibility

If a model this resource uses is missing on your game build, the resource skips it and warns once in the server console and to online admins, naming the model. Add a row with the model to replace (from) and one your game build has (to). Empty by default: the shipped models are used as they are.

Grow Lamps

File: shared/config/lamps.lua

The default lamp uses the grow_lamp item and makes nearby plants grow 1.5x faster (growthMultiplier). You can add more lamp types by copying the entry.

The default model, oxide_weed_lamp, is an LED grow light on a floor stand and is streamed with the resource. When you place one next to a plant it snaps to one of the plant's four sides and its light panel faces the plant. A lamp placed next to a plant always turns to face it.

Progression

File: shared/config/progression.lua

Everything here is in the Progression category of /weed settings, except gang influence (see Gang influence).

XP awarded per action (Config.Progression.xpRewards):

ActionXPActionXP
Plant a seed10Gather pollen20
Water a plant2Crossbreed75
Fertilize2Package8
Harvest30, by gradePress a brick60
Place a lamp0Hang buds on the rack (per bud)0
Place bud to dry (per bud)0Collect from the rack (per bud)13
Collect dried (per bud)7Check gender5
Prune5Bag5
  • Watering and fertilizing pay only when the plant needed it: below careXpBelow (90%) before the pour. The pour always works; a full plant just pays no XP. The water hose pays per water delivered instead (see Water Hose).
  • Harvest XP follows the grade: the harvest reward times harvestQuality for the harvest's grade (Dirt ×0.5, Poor ×0.75, Mid ×1, High ×1.25, Gas ×1.5). A harvest in a grow tent then adds the tent's harvest XP bonus (see Grow Tents).
  • Drying pays when the dried buds are collected, not when they're put down: buds can be taken back off, so XP for placing them (or for placing a lamp, which can be picked up) could be earned over and over. Keep those at 0.
  • Gathering pollen pays once per male plant.
  • Selling XP is set in oxide-drugselling, not here. It pays by weight: its weed xpPerUnit (10) for each gram, counted through each item's xpUnits in its shared/config/drugs.lua (a gram 1, an eighth 3, a quarter 6, a half 12, an ounce 24, a brick 35). So a gram pays 10 XP and an ounce 240, whatever size the weed is sold in. It's the biggest lever on how fast players level.

XP needed for each level (Config.Progression.levels):

Level2345678910
XP1003006501,2002,0003,2005,0007,50011,000

The curve must start at level 1 with 0 XP, and each level after must have a higher number and need more XP; the editor refuses a save that doesn't. A player moves onto an edited curve at their next XP. XP keeps counting past the last level, toward master ranks (see Master ranks).

Grower XP

Config.GrowerXp holds the player feedback and the XP that isn't a per-action reward:

SettingDefaultWhat it does
levelUpNotifytrueOn level-up, a message and a banner listing what the level unlocked. On a new master rank, a message and a banner with the rank's title
showXpGainstrue"+XP" pop-ups near the bottom of the screen as XP is earned
sellingLevel2Where the Grower Profile lists street selling. Match oxide-drugselling's weed level. The row only shows while oxide-drugselling runs
careXpBelow90Watering and fertilizing pay XP only below this (%)
harvestQualityDirt 0.5 … Gas 1.5Harvest XP multiplier per grade
smoke / roll5 / 3XP for smoking and for rolling a joint or blunt
firsts365 in allOne-time XP the first time a character does each action (below)
bestQualityXp25A harvest at least bestQualityStep above the player's best quality so far. Their first harvest sets the mark
bestQualityStep5How far above the best a harvest must be to count
bestGenerationXp50A harvest of a higher generation than the player has harvested before (from generation 2)
skillsMirror''A skill name in your server's skill system (pickle_xp, ot_skills, evolent_skills, or o-link's own skills). Every grower XP grant is also added to that skill, through o-link. Empty is off

First-time XP, paid once per character on top of the usual XP:

PlantWaterFertilizeHarvestHarvest from a tentHarvest a wild plantCollect dried budsTrimBagCrossbreedPress a brick
5020205025252525255050

Planting, watering and fertilizing a first plant reaches level 2 in the first session. Watering and fertilizing count only when they pay. Set an entry to 0 to turn it off. Players who grew before the update get each first-time bonus the next time they do that action.

Grower perks

Config.GrowerPerks gives the top levels something to change about the work. Every row at or below a player's level applies:

LevelPerkTypeValueEffect
6Green ThumbcareDecay0.9Plants the player plants lose water and fertilizer 10% slower
7Clean TrimpruneMin1A trim gives at least one more bud (2–5 becomes 3–5)
8Seed SaverseedChance0.1+10% chance of a seed at harvest
9Gentle CollectionkeepMale1Gathering pollen keeps the male plant; it has pollen again after Genetics.pollenRegrowTime (1 hour)
9ExpansionextraTents1One more grow tent (nothing when the tent limit is 0, no limit)
10Master GrowercareBonus0.03A little more care on plants the player plants (quality still tops out at 100)
10Master GrowercloneDiscount0.2Seed cloning 20% cheaper

Four more perk types ship unused here. They're what the master rank perks use (see Master ranks), and you can give any of them to a level too:

TypeNameEffectExample
dryTimeQuick CureBuds the player puts on a weed table, drying rack or freeze dryer dry in this share of the time. They count as put down earlier by the time saved, so they show part dried at once and finish sooner0.85 = 15% faster
harvestBudsHeavy HarvestWhole buds added to every plant the player harvests, in a pot or a tent (not wild plants)1 = one more bud
mutationRangeWild GenesThe player's crossbreeds mutate over this times the Genetics mutation range3.0 = threefold range
labDiscountLab AccessOff the scientist's lab report price1 = free

Rows can be moved, removed or repeated. Rows of one type combine: careDecay, dryTime and mutationRange multiply, keepMale switches on, the rest add, and each type stops at its limit (careDecay 0.1–2, careBonus 0–0.3, pruneMin 0–10, seedChance 0–1, extraTents 0–10, cloneDiscount 0–0.9, dryTime 0.1–2, harvestBuds 0–10, mutationRange 0.5–3, labDiscount 0–1). pruneMin, extraTents and harvestBuds take whole numbers. The editor refuses a value outside its type's limits. A row's optional label replaces the perk's name on the Grower Profile and the level-up banner.

careDecay and careBonus belong to the player who plants: they're copied onto the plant when it goes in, so they hold while the planter is away, a helper's level never changes someone else's plant, and later edits don't change plants already in the ground. The other perks belong to whoever does the action.

Strain mastery

Config.StrainMastery counts each character's harvests of each strain, catalogue strains and their own crossbreeds alike, and rewards them by tier. It's under Strain Mastery in /weed settings.

SettingDefaultWhat it does
enabledtrueOff stops harvests and sales counting, and the tier rewards. What players counted so far is kept
countCrossbreedstrueCrossbred strains count as well as the catalogue strains
firstHarvestXp50XP only for the first-ever harvest of each strain, never again on a later day
firstHarvestPerDay3How many first harvests pay that XP in one day. 0 = no limit
tiersFamiliar, Skilled, MasterThe tiers, below
TierharvestsyieldBonuscareBonusxprevealTraitsbadge
Familiar5000onoff
Skilled150.0500offoff
Master4000.03250offon
  • harvests: a tier is reached at this many harvests of one strain. No two tiers can share a number.
  • yieldBonus: more buds when this player harvests the strain (0.05 = 5%). The part of a bud left over is a chance of one more, so small harvests still gain on average.
  • careBonus: added to the care of the strain's plants this player plants, 0 to 0.3. Like the Master Grower perk, it's copied onto the plant when it goes in, and the two together stop at 0.3.
  • xp: paid once, when the tier is reached.
  • revealTraits: the strain's traits show on the profile, with no lab report.
  • badge: the profile shows a <strain> <tier> badge.
  • label (optional) replaces the tier's name. Without one, the first three are Familiar, Skilled and Master, and any after are "Tier 4" and so on.

Every tier reached keeps its rewards, and they add up. Tier XP is paid once per strain: moving a tier after a player was paid never pays it again, and a tier moved below a player's harvests pays its XP at their next harvest of the strain.

While oxide-drugselling runs, its street sales add to each strain's units sold on the profile (an ounce or a gram is one unit, as drugselling counts them). This is for show only. Nothing needs oxide-drugselling.

Registering a signature strain needs one of these tiers on a crossbreed (Master, by default), so it needs Enabled and Count crossbreeds on here. See Signature strains.

Grower goals

Config.GrowerGoals gives each character a few daily and weekly goals, drawn from a pool for their level. Goals pay XP only. It's under Grower Goals in /weed settings.

SettingDefaultWhat it does
enabledtrueOff stops goals counting and hides the Goals tab. Goals already drawn are kept
notifytrueA message when a goal is done. The "+XP" pop-up shows it either way while XP pop-ups is on
dailyCount3Goals drawn each day (0 to 6)
weeklyCount2Goals drawn each week (0 to 6)
resetHour0The hour (0 to 23) when daily goals reset, on the server's clock
resetDaymondayThe day weekly goals reset, at resetHour
rerolls1How many unfinished daily goals a player can swap for another each day. A swap loses the goal's progress. Weekly goals can't be swapped
levelScale0.1Targets and XP grow by this much for each level above 1, so a level 10 player's goals are 1.9 times as big and pay 1.9 times the XP. Master ranks count as extra levels here (goalLevels under Master ranks)
pool23 rowsThe goals that can be drawn, below

Each pool row:

FieldWhat it does
idA short unique name. Players' goals are saved by it
perioddaily or weekly
typeWhat counts (below)
target, xpHow many, and the XP paid once when it's done, both at level 1
weightHow often the row is drawn against the others. 0 = never
minLevelThe lowest level it's drawn for. A strain's own level also applies
minGradeHarvest goals only: the lowest grade that counts
minGenerationHarvest and crossbreed goals only: the lowest generation that counts
strainHarvest and sale goals only: one strain id from Strains, such as blue_dream. Empty means any strain
typeCounts
plantSeeds planted
water / fertilizeWaterings and feedings that paid XP, so only plants that needed it. Each 25 water from the hose counts as one watering
harvestPlants harvested
wildHarvestWild plants harvested
dryDried buds collected from a weed table, a drying rack or a freeze dryer
dryRackDried buds collected from a drying rack
pruneBuds trimmed
bagGrams bagged
packagePackages made
brickBricks pressed
crossbreedSeeds crossbred
pollenPollen gathered
sellUnits sold on the street through oxide-drugselling (a gram or an ounce is one unit, as drugselling counts them)

How goals are drawn and counted:

  • Drawn when first needed each day and week: the first time a player's action could count, or when they open their profile. Targets and XP are set then, from the player's level at that moment.
  • Only rows that fit: a row is left out while its action pays no XP (its reward is 0 under Progression), for players below its level or its strain's level, and, for crossbreed and pollen, below the crossbreeding level. Sale rows are drawn only while oxide-drugselling runs, and a sale goal is hidden while it isn't. A draw picks goals of different kinds first.
  • Only actions that paid XP count, so watering a full plant or putting buds down to dry counts for nothing. Sales are the exception: oxide-drugselling pays their XP itself.
  • Fewer goals are drawn when fewer rows fit the player.
  • Edits apply to goals drawn after them. A goal already drawn keeps its target, XP and filters until it resets. Moving resetHour or resetDay earlier can start a new day or week at once; moving them later keeps the current goals until the day or week after, so nobody gets the same day twice.

The shipped pool:

PeriodGoalTargetXPFrom level
DailyPlant seeds4401
DailyWater thirsty plants8301
DailyFeed hungry plants4301
DailyHarvest plants3751
DailyHarvest plants of High grade or better21003
DailyDry buds10501
DailyTrim buds8501
DailyBag grams20501
DailyHarvest wild plants2401
DailyGather pollen1403
DailySell units on the street15602
WeeklyPlant seeds152501
WeeklyHarvest plants153001
WeeklyTrim buds402501
WeeklyBag grams1002501
WeeklyHarvest plants of Gas grade54005
WeeklyHarvest Blue Dream43003
WeeklyCrossbreed seeds33003
WeeklyCrossbreed a seed of generation 3 or later13504
WeeklyDry buds on a rack403003
WeeklyMake packages52502
WeeklyPress bricks23508
WeeklySell units on the street1004002

At level 1 with the defaults, three daily goals pay about 140 XP, a little less than growing and processing one plant (about 175), and the two weekly goals about 500.

Master ranks

Config.MasterRanks gives growers something to work toward after the last level. XP keeps counting: every xpPerRank past the XP of the last level on the level curve is a rank, up to maxRanks. Nothing resets. The rank is worked out from the player's XP, so it follows any change to their XP. It's under Master Ranks in /weed settings.

SettingDefaultWhat it does
enabledtrueOff hides the Ranks tab and turns rank perks off. Picks are kept
xpPerRank4000XP from one rank to the next, counted from the last level's XP
maxRanks5How many ranks there are. 0 turns ranks off. Lowering it keeps picks for the ranks above, but they give nothing
respecPrice25000Dirty money the scientist charges to clear every pick so they can be chosen again. 0 = free
goalLevels1Each rank counts as this many levels when daily and weekly goals are scaled. 0 = ranks don't change goals
titlesemptyOptional, one title per rank, in order. Empty uses "Master Grower I", "Master Grower II" and so on
perks5 rowsThe perks players pick from (below)

With the default level curve (level 10 at 11,000 XP):

RankTitleXP
1Master Grower I15,000
2Master Grower II19,000
3Master Grower III23,000
4Master Grower IV27,000
5Master Grower V31,000

The shipped perk pool:

idNametypevalueEffect
expansionAnnexextraTents1+1 to the player's grow tent limit
quick_dryQuick CuredryTime0.85Buds they dry finish 15% sooner
heavy_harvestHeavy HarvestharvestBuds1+1 bud at every harvest
wild_genesWild GenesmutationRange3.0Triples the range: ±6 points at default Genetics, before rounding to visible five-point steps
lab_accessLab AccesslabDiscount1.0Free lab reports

Each pool row:

FieldWhat it does
idA short unique name. Players' picks are saved by it, so changing a row's id counts as removing that perk. The editor refuses two rows with the same id
typeAny Grower perks type, including the four above (see Grower perks)
valueAs in Grower perks, within the same limits
labelOptional. Replaces the perk's name

How ranks and picks work:

  • One pick per rank. Players pick in the Ranks tab of /weed stats. Each perk can be picked once, so with the defaults a player at rank 5 ends up with all five.
  • Picks add to the level perks the same way two Grower perks rows of one type combine. Annex and the level 9 Expansion perk together give two more tents.
  • Picks are kept. The scientist's Reset Master Perks clears every pick for respecPrice, and the player picks again. The reset is refused while the player has more grow tents than their level allows without picks (an extra tent from a pick), until they pack the extra tents up.
  • A pick above the player's rank gives nothing. That happens when their XP is lowered, or xpPerRank goes up, or maxRanks goes down. The pick is kept and works again once they reach that rank.
  • Removing a perk from the pool turns it off for everyone who picked it, and that rank can be picked again.
  • Rows that would change nothing are left out of the pool: a value that changes nothing, extraTents while grow tents are off or have no limit (Tents per player 0), and keepMale while gathering pollen doesn't destroy the plant.
  • Rank-ups show a message and a banner with the rank's title while Level-up message (Grower XP) is on. The banner says when a pick is waiting.
  • Goals: with goalLevels at 1 and the default levelScale, a level 10 player at rank 5 gets goals scaled as for level 15, 2.4 times the level 1 targets and XP. Ranks don't change which goals can be drawn.

Picks are saved per character in the weed_grower_ranks table.

The saved Wild Genes row moves from the old factory value 1.25 to 3.0 on update. Other values, labels and perk rows stay as saved. Tune it under Master Ranks → Perks in /weed settings.

Signature strains

Config.SignatureStrains lets a top grower register a crossbreed they've mastered under a name of their own. The name goes on the strain itself, server-wide, and the strain builds a reputation from street sales. It's under Signature Strains in /weed settings.

SettingDefaultWhat it does
enabledtrueOff stops new registrations, reputation and the price bonus, and hides the scientist's option. Names already registered stay
requiredLevel10The grower level needed to register a strain
requiredTier3The Strain Mastery tier needed on the crossbreed, counted from 1. 3 is Master (40 harvests) by default. A number past the last tier means the last tier
registerPrice50000Configurable $50,000 default, a late-game sink above the $25,000 master-perk respec. 0 = free
maxPerPlayer2How many signature strains one character can hold. 0 = no limit
nameMin / nameMax3 / 24The shortest and longest name, in characters. The editor refuses a shortest that's longer than the longest
blocklist23 wordsWords no name may contain (below)
allowlistscunthorpe, ashkenazi, shitake, sniggerExact innocent words exempt from the blocklist; other words in the name are still checked
reputationHow reputation builds and what it pays (below)

Who can register. A character at requiredLevel who holds fewer than maxPerPlayer signature strains and has reached requiredTier of Strain Mastery on a crossbred strain. Catalogue strains (the ones under Strains) can't be registered, and each crossbreed can be registered once, by one player. Strain Mastery must be Enabled with Count crossbreeds on, or no crossbreed ever reaches a tier.

Name rules.

Allowed words in /weed settings exempts exact words before checking the blocklist, using the same case and look-alike handling. It permits “Scunthorpe”, “Ashkenazi Kush”, “Shitake” and “Snigger”. It does not exempt a whole name: “Shitake Fuck” and “Shitakefuck” are still refused. An empty saved allowlist stays empty.

  • Between nameMin and nameMax characters: letters, digits, spaces, hyphens and apostrophes, starting and ending with a letter or a digit. Letters are plain A to Z; accented letters are refused. Extra spaces are trimmed.

  • Unique in any capitalisation, against every strain name: the catalogue strains, every strain crossbred on your server so far, and every name crossbreeding could give a strain from the Genetics name pool (such as "Crystal Diesel").

  • No word from blocklist. Names and words are compared in any capitalisation, with digits and the letter l read as the letters they look like (0 as o, 1 and l as i, 2 as z, 3 as e, 4 as a, 5 as s, 6 and 9 as g, 7 as t, 8 as b), and with hyphens and apostrophes ignored. A run of one-letter words counts as one word ("G A T O R" reads as "gator").

    • Every word on the list is refused as a whole word of a name, or as the whole name. With rape on the list, "Rape", "R-ape" and "R-ape Kush" are refused but "Grape Ape" isn't. Use a plain word for words that are also part of ordinary words.
    • A word starting with * is also refused inside any one word of a name. With *gator on the list, "Gatorade" and "Swamp Gat0rs" are refused too, but "Hog Atoro" isn't: a word is never pieced together across a space. A * entry of several words (*white power) is refused anywhere in the name with its spaces taken out.
    • Entries hold only what a name can: letters, digits, spaces, hyphens and apostrophes, after an optional *.

    The shipped list uses both kinds. Take a name that got through away with /weed unregister (see Admin).

What carries the name. From the registration on, the strain's harvests, its seeds (from harvests and the scientist's cloning) and the plants planted from then on carry the name. A seed made before the registration grows into a plant with the name. Items made from other items keep the name they were made with, so dried, trimmed, bagged, packaged and pressed weed from buds harvested earlier keeps the old name, as do buds already harvested. Reputation and the price bonus follow the strain, not the name printed on an item, so weed of the strain made before the registration builds and earns the same.

Registrations are saved on the strain's row in the drug_strains table.

Reputation

SettingDefaultWhat it does
perUnit0.5Reputation for each unit a street sale counts for XP, which for weed is each gram
byGradeDirt 0.25, Poor 0.5, Mid 0.75, High 1.0, Gas 1.25Multiplies a sale's reputation by the weed's grade
seizurePenalty25Lost by each signature strain growing in a grow tent the police seize (not when the officer owns the tent)
max1000The most reputation a strain can have
maxPriceBonus0.15How much more a strain at max reputation sells for (0.15 = 15%). Paid only once you add the price row to oxide-drugselling (below)
tiers5 tiersThe reputation each tier starts at (below). No two tiers can start at the same number
TierReputation from
Unknown0
Known50
Respected200
Renowned450
Legendary800

A tier's optional label replaces its name. Without one, tiers after the fifth are called "Tier 6" and so on.

How reputation moves:

  • Street sales build it. Every street sale of a signature strain through oxide-drugselling adds perUnit for each gram sold, times byGrade for its grade, whoever sells it. With the defaults, an ounce of High grade (24 grams) adds 12 and an ounce of Gas adds 15. Without oxide-drugselling, nothing builds reputation.
  • Police seizures cost it. When the police seize a grow tent, each signature strain growing in it loses seizurePenalty once, however many of its plants were there. An officer seizing their own tent costs nothing.
  • It never decays, and stays between 0 and max.

The price bonus grows evenly with reputation, from nothing at 0 to maxPriceBonus at max: with the defaults, 7.5% at 500 and 15% at 1,000. It multiplies the street price oxide-drugselling works out for the weed.

Paying the price bonus

oxide-drugselling pays the bonus only after you add one pricing row to its weed settings. Until then, reputation shows on the Grower Profile but doesn't change any price.

  1. Open oxide-drugselling/shared/config/drugs.lua in a text editor.

  2. Find the weed section, which starts with Config.Drugs.weed = {, and inside it the modifiers = { list.

  3. Add this line as the last entry of that list, just before the list's closing },. Copy it exactly; the names are case-sensitive:

    { type = 'export_multiplier', category = 'multiplier', exportResource = 'oxide-weed', exportName = 'PriceFor' },

    With the shipped file, the end of the weed modifiers list then looks like this:

            {
                type       = 'metadata_bonus',
                category   = 'bonus',
                field      = 'generation',
                startValue = 2,
                bonusPerStep = 0.05,
                maxBonus   = 0.25,
                display    = { label = 'Crossbred', color = 'text-cyan-400' },
            },
            { type = 'export_multiplier', category = 'multiplier', exportResource = 'oxide-weed', exportName = 'PriceFor' },
        },
    }
  4. Save the file and restart the server. oxide-drugselling reads drugs.lua only when it starts; it isn't in its settings menu.

Once the row is in, a signature strain's bonus shows on the sell panel as a Signature line with its reputation tier, and in the strain's card on the Grower Profile. The profile shows it only after oxide-drugselling has priced some weed since the server started, for example when a player offers weed to a buyer. Strains that aren't registered sell at their usual price.

Gang influence

Config.GangActivity lets growing weed count toward gang influence, through o-link's gang system. It ships off. It's under Gang Activity in the Core category of /weed settings, on the Advanced tab.

SettingDefaultWhat it does
enabledfalseTurns the reports on
harvest2.0Influence each plant harvest reports (pots and tents; wild plants don't count)
brick5.0Influence each brick press reports

Each report is made where the harvest or pressing happens, for the gang of the player who does it. oxide-gangs takes these reports and applies its own hourly cap; players in no gang add nothing. With another gang system, or none, nothing is reported and nothing breaks.

Grower app

Config.GrowerApp puts the Grower Profile on oxide-phone and oxide-tablet as an app called Grower, with two home-screen widgets (see Features). It's under Grower App in the Progression category of /weed settings. Changes apply at once.

SettingDefaultWhat it does
enabledtrueOff removes the app and its widgets from every device
phonetrueOffers the app on oxide-phone
tablettrueOffers the app on oxide-tablet
widgettrueAdds the Grower level and Grower goals widgets to each device's widget gallery

The app shows up only where the device runs; nothing needs to be installed for oxide-weed to work without it. Players install it from the device's app store. To put it on every device instead, add the app id grower to the device's preinstalled apps: Config.Store.preinstalled in oxide-phone (Home & Apps → Store in /phone settings) or in oxide-tablet. The widgets' ids are grower_level and grower_goals.

The app is only offered on oxide-phone, not on other phones o-link supports; on those, players use /weed stats.

Smoking

File: shared/config/smoking.lua

SettingDefaultWhat it does
cooldown60Seconds between smoking sessions
bluntDurationMultiplier1.25Blunts last 25% longer than joints
bluntIntensityBonus0.1Blunts hit a little harder

Rolling recipes (items): rolling_papers → joint, cigarillo_wraps → blunt. Both also need a weed_1g and a lighter (the lighter isn't consumed).

Controls: E (38) to take a hit, H (74) to stop early.

Effect toggles

Turn individual effects on or off under needsEffects:

ToggleDefaultWhat it does
stressRelieftrueCBD reduces stress
hungerCosttrueTHC makes the player hungrier (the munchies)
healingtrueCBD slowly restores health during the effect

Effect strength

The effects block tunes how hard each trait hits — potencyScale, thcHungerScale, cbdStressScale, cbdHealScale, and so on. Two you're most likely to touch:

  • densityDurationMin / densityDurationMax (300 / 600) — effect duration range in seconds; the strain's density decides where in the range it lands
  • qualityFloor (0.4) — even Dirt-grade product delivers at least 40% effect

screenEffects sets the visual high — screen filter, camera sway, and the wobbly walk. The defaults are tuned; change them only if you want a different feel.

Store

File: shared/config/store.lua

The Germinator supply store. Set enabled = false to remove the NPC, blip, and store entirely.

SettingDefault
coords / headingNear the Vespucci canals (-1275.97, -1139.92, 6.79)
models_m_m_linecook
blip.enabledtrue (sprite 628, green)

The blip and NPC names come from your locale file (store_blip — "The Germinator" in English).

Each stock entry is one line: the item, its display label, the cash price, and which section of the shop list it appears under. Edit prices freely.

The store won't sell an item to a player below the level the item needs to be placed or used (the freeze dryer needs level 7, for example; a seed pack needs its strain's level). The row shows the level it needs, and the purchase is refused. Give a row its own requiredLevel to ask for a higher level than that; it can't lower it.

Add your own products under customItems — they appear alongside the defaults. This is also where to add the drying rack, brick press, growing manual, or rolling supplies if you want them purchasable (they are not stocked by default).

Scientist

File: shared/config/scientist.lua

SettingDefault
coords / headingNear the Grapeseed area (3610.36, 3653.20, 31.26)
models_m_m_scientist_01
blip.enabledfalse (hidden — players find it through play)

Services:

  • Lab report — price = 500, requiredLevel = 2. A labDiscount perk takes its share off, and the Lab Access master rank perk makes it free. The scientist shows each player their own price
  • Cloning — requiredLevel = 4; quantity/price pairs: 5 for $2,500, 10 for $4,000, 25 for $7,500. The Master Grower perk takes its discount off these prices
  • Register a Signature Strain — shown while Signature Strains is enabled. Its price and rules are under Signature strains
  • Reset Master Perks — shown while Master Ranks is enabled. Its price is respecPrice under Master ranks

The scientist charges using the Config.DirtyMoney rules in shared/config.lua.

Wild Plants

File: shared/config/wildplants.lua

Set enabled = false to turn the whole system off.

SettingDefaultWhat it does
seedChance0.40Chance a wild harvest includes seeds (40%)
seedAmount1–2Seeds found when the chance hits
yield1–4 weed_budBuds per wild plant
respawnTime1800–3600Plants regrow 30–60 minutes after harvest
harvestXP15XP per wild harvest
spawnDistance100.0How close players must be before wild plants appear

Two example zones ship: buen_vino_rd (10 plants) and route_68 (20 plants), both in the hills west of Route 68.

To add a zone, open the Wild Plants section of /weed settings, add a spawn zone entry, give it a name and a plant count, and press the shape button to draw the outline directly in the world — a fly-around editor lets you place, nudge, and preview the points. Plants pick random spots inside the outline. Each zone stores a minZ/maxZ height band (older configs with a thickness value are converted automatically). Placement zones (blocked areas and allowed areas) are drawn the same way from their own section.

Next Steps