Configuration
All tuning lives under medit8z_fishing/config/. Every file in that folder is listed in escrow_ignore — they remain plain-text editable post-purchase.
config/
config.lua -- global toggles, fishing mechanics, progression, economy
fish.lua -- 35 species (rarity, weight, water type, depth, price, XP)
equipment.lua -- rods / reels / lines / baits / lures / tackle boxes
locations.lua -- fishing spots, water types, level requirements
skills.lua -- skill tree definitions
achievements.lua -- achievement definitions and rewards
challenges.lua -- daily/weekly challenge templates
boats.lua -- boat rental points and statsRestart the resource (ensure medit8z_fishing) after editing config files. None of the files are hot-reloaded.
Config.Items
Item names used by the resource. Change these only if you renamed the corresponding entries in items.lua.
Config.Items = {
fishingJournal = 'fishing_journal',
tackleBox = 'tackle_box',
fishingRod = 'fishing_rod',
}Config.TackleBoxWhitelist
Array of item names that tackle box stashes will accept. The whitelist is enforced via an Ox Inventory hook in server/smain.lua — any item not in this list is rejected on insert.
Add custom bait or lure items here if you extend the catalog.
Config.Fishing
Core mechanics. Tune these to balance the cast loop.
| Key | Default | Purpose |
|---|---|---|
castCooldown | 3 | Seconds between casts |
baseBiteTimeMin / baseBiteTimeMax | 8 / 25 | Bite-wait window |
biteTimeReductionPerBaitTier | 2 | Seconds shaved per bait quality tier |
locationRadius | 100.0 | Max distance to register a fishing spot |
tensionEnabled | true | Toggle the line-tension subsystem |
tensionBuildRate / tensionDecayRate | 0.15 / 0.08 | Tension while reeling vs. idle |
tensionSnapThreshold | 1.0 | Tension level that snaps the line |
baseFightDuration / fightDurationPerPound / maxFightDuration | 5 / 0.5 / 45 | Fight length scaling |
baseCatchChance | 0.85 | Success chance after the minigame |
failedMinigamePenalty | 0.5 | Multiplier on minigame fail |
Config.Minigames
Per-rarity tuning for all four minigame variants: timing bar, QTE sequence, circle shrink, and balance bar. Each block exposes roundsByRarity, speed/size/key-count tables keyed by common/uncommon/rare/epic/legendary.
Config.Minigames.timingBar.greenZoneSize = {
common = 0.25, uncommon = 0.20, rare = 0.15, epic = 0.12, legendary = 0.08,
}Smaller zones / higher speeds = harder minigames. Lower roundsByRarity for an easier loop.
Config.Progression
Levels, the XP curve, prestige, and respec costs.
| Key | Default | Purpose |
|---|---|---|
maxLevel | 50 | Hard cap before prestige is required |
skillPointsPerLevel | 1 | Skill points awarded per level |
xpPerLevel | table[1–50] | XP to reach each level (~34,500 total per cycle) |
prestige.enabled | true | Master toggle |
prestige.maxPrestige | 10 | Prestige tier cap |
prestige.bonusPerPrestige | 0.10 | +10% XP and rare-fish chance per prestige |
prestige.skillPointsPerPrestige | 5 | Bonus starting skill points per prestige |
respecCost / respecCostPerLevel | 5000 / 100 | Skill respec pricing |
The XP curve targets ~34,500 XP per 1–50 cycle and ~21 hours of play to P10 at 4 fish/min. Each prestige tier also unlocks a permanent perk (Veteran Fisher, Master Baiter, Legendary Master, etc.) — see Config.Progression.prestige.perks for the full list.
Config.XPRewards
catchByRarity = { common = 15, uncommon = 35, rare = 75, epic = 150, legendary = 400 }
newSpeciesBonus = 100
dailyChallengeBase = 300
weeklyChallengeBase = 1500
weeklyLeaderboard = { first = 2000, second = 1000, third = 500 }Config.Economy
Server-wide dynamic pricing and bulk-sale bonuses.
| Key | Default | Purpose |
|---|---|---|
priceDepreciationRate | 0.03 | Price drop per fish sold |
priceMinMultiplier | 0.25 | Floor — prices cannot fall below 25% of base |
priceRecoveryRate | 0.02 | Recovery applied per interval |
priceRecoveryInterval | 120 | Recovery cadence in minutes |
bulkBonuses | table | Step bonuses at 10 / 25 / 50 / 100 fish |
weightPriceMultiplier | true | Heavier fish sell for more |
globalSellMultiplier | 2.0 | Flat multiplier across all sales |
Target earnings on default values are ~$5,000/hr at active play.
Config.Challenges
dailyCount = 3
weeklyCount = 2
dailyResetHour = 0 -- midnight server time
weeklyResetDay = 1 -- Monday
levelScaling = { enabled = true, difficultyPerLevel = 0.02, rewardPerLevel = 0.03 }Config.Leaderboards
displayCount = 20
weeklyReset = { enabled = true, resetDay = 1, resetHour = 0 }
categories = { 'totalXP', 'biggestCatch', 'mostFish', 'legendaryCount', 'totalEarnings', 'weeklyXP' }
rewards = {
[1] = { xpBonus = 2000, title = 'Master Angler' },
[2] = { xpBonus = 1000, title = 'Expert Angler' },
[3] = { xpBonus = 500, title = 'Skilled Angler' },
}Config.Vendors
A mainHub vendor with full services (buy, sell, repair, upgrades) and any number of areaVendors with reduced services. Each vendor entry takes coords, a ped model, a label, and an optional blip.
Config.Boats
Rental points and boats. Each rental has a ped, a vehicle spawn point, and a blip. Each boat entry has a model, rentalPrice, depositPrice, requiredLevel, and optional deepWaterAccess / abyssAccess flags.
| Boat | Rental | Deposit | Min Level | Access |
|---|---|---|---|---|
| Dinghy | $100 | $500 | 1 | Shallow |
| Speeder | $250 | $1,500 | 15 | Deep |
| Marquis Yacht | $500 | $5,000 | 30 | Abyss |
The anchor system (Config.Boats.anchor) requires anchoring before deep-water fishing.
Config.TimeOfDay
Four periods (dawn, day, dusk, night) with activity multipliers. Dawn and dusk are the most active windows on default values.
Config.Durability and Config.Equipment
Two related tables governing wear-and-tear.
| Key | Default | Purpose |
|---|---|---|
Config.Equipment.baseDurabilityLoss | 2 | Loss per successful catch |
Config.Equipment.durabilityLossByRarity | table | 1.0× common → 3.0× legendary |
Config.Equipment.repairCostPerPoint | 5 | Per-durability-point repair cost |
Config.Equipment.startingDurability | 100 | Default for new equipment |
Config.Durability.lureDurabilityLossPerUse | 5 | Lures wear faster than rods |
Config.Durability.repairCostPercent | 0.30 | Vendor repair cost as % of purchase |
Config.SkillTierRequirements
Minimum level to unlock each skill tier. Note the string keys — Lua numeric keys would convert to a 0-indexed array on the JS UI side.
['1'] = 1, ['2'] = 10, ['3'] = 25, ['4'] = 40Config.Inventory
tackleBoxCapacity = { basic = 10, standard = 20, large = 30, professional = 50 }
maxFishWithoutTackleBox = 5Config.Animations and Config.Props
Animation dictionaries for casting / fishing / reeling, plus the rod prop, attachment bone (18905 left hand by default), and offsets/rotation. Adjust if you swap the rod model.