Fishing
Configuration

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 stats

Restart 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.

KeyDefaultPurpose
castCooldown3Seconds between casts
baseBiteTimeMin / baseBiteTimeMax8 / 25Bite-wait window
biteTimeReductionPerBaitTier2Seconds shaved per bait quality tier
locationRadius100.0Max distance to register a fishing spot
tensionEnabledtrueToggle the line-tension subsystem
tensionBuildRate / tensionDecayRate0.15 / 0.08Tension while reeling vs. idle
tensionSnapThreshold1.0Tension level that snaps the line
baseFightDuration / fightDurationPerPound / maxFightDuration5 / 0.5 / 45Fight length scaling
baseCatchChance0.85Success chance after the minigame
failedMinigamePenalty0.5Multiplier 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.

KeyDefaultPurpose
maxLevel50Hard cap before prestige is required
skillPointsPerLevel1Skill points awarded per level
xpPerLeveltable[1–50]XP to reach each level (~34,500 total per cycle)
prestige.enabledtrueMaster toggle
prestige.maxPrestige10Prestige tier cap
prestige.bonusPerPrestige0.10+10% XP and rare-fish chance per prestige
prestige.skillPointsPerPrestige5Bonus starting skill points per prestige
respecCost / respecCostPerLevel5000 / 100Skill 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.

KeyDefaultPurpose
priceDepreciationRate0.03Price drop per fish sold
priceMinMultiplier0.25Floor — prices cannot fall below 25% of base
priceRecoveryRate0.02Recovery applied per interval
priceRecoveryInterval120Recovery cadence in minutes
bulkBonusestableStep bonuses at 10 / 25 / 50 / 100 fish
weightPriceMultipliertrueHeavier fish sell for more
globalSellMultiplier2.0Flat 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.

BoatRentalDepositMin LevelAccess
Dinghy$100$5001Shallow
Speeder$250$1,50015Deep
Marquis Yacht$500$5,00030Abyss

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.

KeyDefaultPurpose
Config.Equipment.baseDurabilityLoss2Loss per successful catch
Config.Equipment.durabilityLossByRaritytable1.0× common → 3.0× legendary
Config.Equipment.repairCostPerPoint5Per-durability-point repair cost
Config.Equipment.startingDurability100Default for new equipment
Config.Durability.lureDurabilityLossPerUse5Lures wear faster than rods
Config.Durability.repairCostPercent0.30Vendor 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'] = 40

Config.Inventory

tackleBoxCapacity        = { basic = 10, standard = 20, large = 30, professional = 50 }
maxFishWithoutTackleBox  = 5

Config.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.