Sales, police and wars
Everything on this page is in config/config_labs.lua.
Sale missions
Started from the laptop inside a production lab. The product is loaded into a van that appears at the lab’s vehicle point, and has to be driven to a buyer.
Config.SaleMissions = {
Cooldown = 600,
MinUnits = 20,
Vehicles = { -- the vehicle depends on the amount sold
{ upTo = 80, model = 'burrito3' },
{ upTo = 200, model = 'speedo4' },
{ upTo = 9999, model = 'mule3' },
},
Destinations = { ... }, -- one is picked at random
BlipDelay = 30, -- seconds before rivals see the van
PayTo = 'treasury', -- 'treasury' (organization) or 'player' (the driver)
PayCurrency = 'dirty',
PoliceAlertChance = 35, -- %
HeatPerMission = 6,
Thieves = {
Enabled = true,
RewardPercent = 0.5, -- of the cargo value, in dirty money
DropPoints = { ... },
},
}
The value of the cargo is units × random(sale.min, sale.max) × quality multiplier.
Thieves: anyone who is not in the organization and not police can steal the van and drive it to a thief drop point, getting part of its value.
/empirecancel cancels the player’s current mission.
Street sales
Config.StreetSales = {
Enabled = true,
Currency = 'dirty',
Items = {
weed_bag = { min = 140, max = 190, maxPerDeal = 5 },
meth_bag = { min = 330, max = 420, maxPerDeal = 4 },
coke_bag = { min = 420, max = 520, maxPerDeal = 4 },
acid_tab = { min = 210, max = 280, maxPerDeal = 6 },
},
Zones = {
{ label = 'Grove Street', coords = vector3(105.50, -1940.60, 20.80), radius = 120.0, priceMult = 1.0 },
-- ...
},
ApproachEvery = { 25, 50 }, -- seconds between buyers in a zone
ApproachByDefault = true,
ToggleCommand = 'streetsell',
OfferKey = 74, -- H: offer to a pedestrian when no target is used
ZonePoliceChance = 5, -- % chance a deal in a zone alerts the police
Anywhere = {
Enabled = true,
AcceptChance = 45, -- %
PoliceChance = 20, -- % when they refuse
PedCooldown = 600, -- the same ped can't be offered again
},
HotSpots = { ... }, -- near police stations the police chance is much higher
MinPolice = 0, -- on-duty police required to sell on the street
}
- In a zone, NPCs walk up to the player and ask to buy, while
/streetsellis on. - Outside the zones, players can offer to any pedestrian (target option, or the
Hkey). The pedestrian may refuse and call the police.
Street saturation
Config.StreetSaturation = {
Enabled = true,
PerSale = 0.03, -- the price drops 3% per sale
MinMultiplier = 0.55,
RecoverPerMinute = 0.01,
}
Every sale lowers the price in that zone (or in that area of the map, outside zones). It recovers over time, so players have to move around.
Heat and raids
Config.Heat = {
Max = 100,
DecayPerHour = 4,
RaidThreshold = 80, -- a raid can start from this heat
RaidChancePerHour = 35, -- % chance per hour while above the threshold
MinPolice = 2, -- police on duty needed for a raid
RaidWindow = 900, -- seconds the lab can be breached
RaidCooldown = 7200, -- seconds between raids on the same lab
SeizeProduct = 0.75, -- part of the stored product seized
SeizeSupplies = 0.5,
HeatAfterRaid = 20,
RaidReward = 15000, -- paid to each officer inside when seizing (0 = none)
RaidRewardCurrency = 'bank',
}
- Production, sale missions and laundering raise the lab’s heat. The security upgrade reduces it.
- Above
RaidThreshold, every hour there is aRaidChancePerHourchance of a raid, if enough police are on duty. - Police get an alert through the configured dispatch, with the lab’s location.
- An officer with a
police_rambreaches the entrance (Config.Police.BreachTime). The lab stays open forRaidWindowseconds. - Inside, police seize the storage. The organization loses part of its product and supplies; each officer inside is paid
RaidReward.
Admins can also start and stop a raid from the admin panel.
Lending
Config.Lending = {
Enabled = true,
Durations = { 1, 3, 7, 14 }, -- days available in the panel
MaxPercent = 60,
}
| Payment | How it works |
|---|---|
| Fixed | The borrower pays a fixed amount, which goes to the owner’s treasury |
| Percentage | The owner keeps a share of everything the borrower produces, collected from the lab |
| Free | Nothing |
The owner sends an offer from Lending, the other boss accepts it, and the borrower’s members can enter and produce until it expires or the owner cancels it.
Wars
Config.Wars = {
Enabled = true,
DeclarePrice = 250000, -- paid from the treasury
Duration = 6, -- hours
MinLevel = 3, -- organization level needed to declare
Cooldown = 24, -- hours before the same two organizations can fight again
BreachItem = 'breach_kit',
ConsumeBreachItem = true,
BreachTime = 20, -- seconds
LootTime = 15, -- seconds looting the storage
LootPercent = 0.35, -- part of the stored product taken per assault
AssaultWindow = 600, -- seconds the lab stays open after a breach
LabCooldown = 2, -- hours before the same lab can be assaulted again
MinDefendersOnline = 2, -- defending members online needed to assault
Hours = { from = 18, to = 2 }, -- server time; empty = any time
WinXP = 3000,
LoseXP = 500,
}
- A member with
war_declaredeclares war from the Wars tab. - The enemy’s labs appear on the map for every member. Members with
war_assaultcan force them. - At the entrance, with a
breach_kit, they force the door (BreachTime). The lab stays open forAssaultWindowseconds. - Inside, they loot the storage (
LootTime) and takeLootPercentof the product, or of the money in a laundering lab. - When the war ends, the side that looted the most value wins
WinXP; the other getsLoseXP.
Headquarters cannot be assaulted.
Daily contracts
Config.Contracts = {
Enabled = true,
PerDay = 3,
ResetHour = 6, -- hour (server time) when contracts change
Types = {
{ kind = 'produce', label = 'produce', min = 60, max = 160, reward = { money = 60000, xp = 400 } },
{ kind = 'street', label = 'street', min = 10, max = 25, reward = { money = 45000, xp = 350 } },
{ kind = 'supply', label = 'supply', min = 2, max = 4, reward = { money = 70000, xp = 450 } },
{ kind = 'deliver', label = 'deliver', min = 20, max = 60, reward = { money = 90000, xp = 600 } },
},
DeliverItems = { 'meth_bag', 'coke_bag', 'weed_bag', 'counterfeit_cash', 'fake_id', 'acid_tab' },
DeliverPoints = { ... },
}
| Kind | Goal |
|---|---|
produce | Produce X units in any lab |
street | Make X street sales |
supply | Complete X supply missions |
deliver | Bring X units of an item to a drop point shown on the map |
Rewards are paid to the treasury.