RE:CORD
REC_Minigames

Stracture

Installation, configuration, and usage for REC_Minigames.
Added
Updated

The following configuration files and manifest are taken from the current source.

config/sh_config.lua

---@class REC_Minigames.Shared.Config
local config = {}

---[[
---    Debug Mode
---]]
---@type boolean
config.debugMode = false

---[[
---     Default settings for each minigame
---     Only the keys passed via opts on the exports call are overridden
---]]
config.defaults = {

    ---@class REC_Minigames.Opts.BeamHack
    beamhack = {
        rounds = 2,       -- boards to complete
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- allowed mistakes across the whole run
        duration = 180,   -- total time limit (seconds)
    },
    ---@class REC_Minigames.Opts.Snake
    snake = {
        rounds = 2,       -- boards to complete
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- allowed mistakes across the whole run
        duration = 120,   -- total time limit (seconds)
    },
    ---@class REC_Minigames.Opts.PowerRoute
    powerroute = {
        rounds = 2,       -- boards to complete
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- allowed mistakes across the whole run
        duration = 180,   -- total time limit (seconds)
    },


    ---@class REC_Minigames.Opts.Lockpick
    lockpick = {
        pins     = 3,      -- number of successful pins
        speed    = 1.0,    -- needle rotation speed multiplier
        zoneSize = 40,     -- hit zone size (degrees)
        lives    = 3,      -- allowed failures
    },

    ---@class REC_Minigames.Opts.Memory
    memory = {
        grid     = 3,      -- grid width (3 => 3x3)
        rounds   = 4,      -- cells to memorise by the end
        showTime = 600,    -- cell lit time (ms)
    },

    ---@class REC_Minigames.Opts.WordHack
    wordhack = {
        words    = 5,      -- words to type
        duration = 20,     -- time limit (seconds)
        length   = 6,      -- word length
    },

    ---@class REC_Minigames.Opts.SkillBar
    skillbar = {
        rounds   = 3,      -- rounds to clear (speeds up each time)
        speed    = 1.0,    -- cursor speed multiplier
        zoneSize = 15,     -- hit zone width (%)
    },

    ---@class REC_Minigames.Opts.Wires
    wires = {
        count    = 4,      -- number of wires (max 6)
        duration = 15,     -- time limit (seconds)
    },

    ---[[
    ---     The following recreate the vanilla GTA5 minigames
    ---]]

    ---@class REC_Minigames.Opts.Fingerprint
    fingerprint = {                -- Casino Heist: fingerprint clone
        pieces   = 8,      -- number of fragments
        correct  = 4,      -- number of correct fragments
        rounds   = 2,      -- matching rounds
        lives    = 3,      -- allowed failures
        duration = 60,     -- time limit (seconds)
    },

    ---@class REC_Minigames.Opts.BruteForce
    bruteforce = {                 -- Fleeca Heist: BruteForce.exe
        columns  = 5,      -- columns in the IP list
        rounds   = 3,      -- matches to find
        lives    = 3,      -- allowed failures
        speed    = 1.0,    -- scroll speed multiplier
        duration = 45,     -- time limit (seconds)
    },

    ---@class REC_Minigames.Opts.Scramble
    scramble = {                   -- Cayo Perico: vault lock
        rows     = 3,      -- number of rows
        numbers  = 8,      -- numbers per row
        rowTime  = 8,      -- time limit per row (seconds)
    },

    ---@class REC_Minigames.Opts.DataCrack
    datacrack = {                  -- Doomsday: data crack
        bars      = 5,     -- number of bars (later ones are faster)
        speed     = 1.0,   -- marker speed multiplier
        tolerance = 14,    -- hit window (px)
        lives     = 3,     -- allowed failures
        duration  = 40,    -- time limit (seconds)
    },

    ---@class REC_Minigames.Opts.SafeCrack
    safecrack = {                  -- Safe dial
        locks     = 3,     -- locks to open
        speed     = 1.0,   -- dial top speed multiplier
        tolerance = 10,    -- hit window (degrees)
        lives     = 3,     -- allowed failures
        duration  = 45,    -- time limit (seconds)
    },

    ---@class REC_Minigames.Opts.Hotwire
    hotwire = {                    -- Hotwire (key press QTE)
        length   = 6,      -- keys per round
        rounds   = 2,      -- number of rounds
        lives    = 3,      -- allowed failures
        duration = 20,     -- time limit (seconds)
    },

    ---@class REC_Minigames.Opts.Mash
    mash = {                       -- Mash gauge
        duration = 8,      -- time limit (seconds)
        decay    = 20,     -- gauge decay (%/sec)
        gain     = 7,      -- gain per press (%)
    },
    ---@class REC_Minigames.Opts.Binary
    binary = {
        rounds = 3,       -- puzzles to solve
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- failed submissions across the whole run
        duration = 60,    -- total time limit (seconds)
    },

    ---@class REC_Minigames.Opts.HexDecode
    hexdecode = {
        rounds = 3,       -- puzzles to solve
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- failed submissions across the whole run
        duration = 75,    -- total time limit (seconds)
    },

    ---@class REC_Minigames.Opts.Cipher
    cipher = {
        rounds = 3,       -- puzzles to solve
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- failed submissions across the whole run
        duration = 90,    -- total time limit (seconds)
    },

    ---@class REC_Minigames.Opts.Pulse
    pulse = {
        rounds = 3,       -- rounds to complete
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- allowed misses across the whole run
        duration = 60,    -- total time limit (seconds)
    },

    ---@class REC_Minigames.Opts.Tracking
    tracking = {
        rounds = 3,       -- rounds to complete
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- allowed misses across the whole run
        duration = 60,    -- total time limit (seconds)
    },

    ---@class REC_Minigames.Opts.Checksum
    checksum = {
        rounds = 3,       -- puzzles to solve
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- failed submissions across the whole run
        duration = 75,    -- total time limit (seconds)
    },

    ---@class REC_Minigames.Opts.Trace
    trace = {
        rounds = 3,       -- rounds to complete
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- allowed misses across the whole run
        duration = 75,    -- total time limit (seconds)
    },

    ---@class REC_Minigames.Opts.Circuit
    circuit = {
        rounds = 3,       -- puzzles to solve
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- failed submissions across the whole run
        duration = 120,    -- total time limit (seconds)
    },

    ---@class REC_Minigames.Opts.Network
    network = {
        rounds = 3,       -- puzzles to solve
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 3,        -- failed submissions across the whole run
        duration = 90,    -- total time limit (seconds)
    },

    ---@class REC_Minigames.Opts.CodeBreak
    codebreak = {
        rounds = 1,       -- puzzles to solve
        difficulty = 1,   -- 1: easy, 2: medium, 3: hard
        lives = 8,        -- failed submissions across the whole run
        duration = 120,    -- total time limit (seconds)
    },

}

return config
©2026 RE:CORD Development Group. All rights reserved.