πŸ› οΈconfig_gangtypes.lua

--[[
IMPORTANT:
If you EDIT these attributes, you need to edit the gangselect.js file as well in the nui folder
Look for the loadGangSelectData function and add the new attributes to the array.
]]

Config.EnableGangTypes = true
Config.GangAttributes = {
    ["business-focus"] = {
        icon = "fas fa-chart-line",
        name = "Business Focus",
        effect = "+20% Income from Drug Sales",
        value = 20,
        isPositive = true,
    },
    networking = {
        icon = "fas fa-handshake",
        name = "Networking",
        effect = "+15% Loyalty when Completing Missions",
        value = 15,
        isPositive = true,
        attribute = function(increaseAmount)
            increaseAmount = increaseAmount * GetMultiplierPercentage(Config.GangAttributes.networking.value)
            return increaseAmount
       end,
    },
    ["limited-recruitment"] = {
        icon = "fas fa-users",
        name = "Limited Recruitment",
        effect = "Each new member costs $100,000",
        useCleanCash = true,
        value = 100000,
        isPositive = false,
    },
    professional = {
        icon = "fas fa-business-time",
        name = "Professional",
        effect = "Cannot Spray Graffiti",
        isPositive = false,
        attribute = function(src)
            TriggerClientEvent('cb-gangsystem:client:Notify', src, "Professional", "Your gang is too good for graffiti!", "error")
        end,
    },
    intimidation = {
        icon = "fas fa-fist-raised",
        name = "Intimidation",
        effect = "Turfs you control yield -100% loyalty from Drug Sales when no members are online",
        value = -100,
        isPositive = true,
        attribute = function(zoneController, increaseAmount)
            local onlineMembers = GetOnlineMembers(zoneController)
            if onlineMembers <= 0 then
                increaseAmount = increaseAmount * GetMultiplierPercentage(Config.GangAttributes["intimidation"].value)
            end
            return increaseAmount
        end,
    },
    ["family-ties"] = {
        icon = "fas fa-handshake",
        name = "Family Ties",
        effect = "+10% Income from Drug Sales when with other Mob Members",
        value = 10,
        isPositive = true,
        alwaysShow = false, -- If true, the attribute will always be shown in the UI
    },
    ["high-profile"] = {
        icon = "fas fa-exclamation-triangle",
        name = "High Profile",
        effect = "-100% Loyalty from Drug Sales in Turfs with no Online Members",
        value = -100,
        isPositive = false,
        attribute = function(src, gangID, zoneController, increaseAmount)
            if not zoneController or not gangID then return increaseAmount end
            if zoneController == gangID then return increaseAmount end
            local onlineMembers = GetOnlineMembers(zoneController)
            if onlineMembers > 0 then return increaseAmount end
            TriggerClientEvent('cb-gangsystem:client:Notify', src, "High Profile", "The locals here don't respect you!", "info")
            increaseAmount = increaseAmount * GetMultiplierPercentage(Config.GangAttributes['high-profile'].value)
            return increaseAmount
        end,
    },
    ["territory-control"] = {
        icon = "fas fa-map-marked-alt",
        name = "Territory Control",
        effect = "+15% Income from Drug Sales when selling in Rival Turfs",
        value = 15,
        isPositive = true,
    },
    relentless = {
        icon = "fas fa-fire",
        name = "Relentless",
        effect = "+50% Loyalty when Capturing Rival Gang Members",
        value = 50,
        isPositive = true,
        attribute = function(leaderCaptured, increaseAmount)
            local attributeValue = Config.GangAttributes["relentless"].value
            if not leaderCaptured then
                increaseAmount = math.ceil((Config.Loyalty.Increase.Captured * GetMultiplierPercentage(attributeValue)) - Config.Loyalty.Increase.Captured)
            else
                increaseAmount = math.ceil((Config.Loyalty.Increase.CapturedLeader * GetMultiplierPercentage(attributeValue)) - Config.Loyalty.Increase.CapturedLeader)
            end
            return increaseAmount
        end,
    },
    ruthless = {
        icon = "fas fa-skull",
        name = "Ruthless",
        effect = "-10% Income from Drug Sales",
        value = -10,
        isPositive = false,
    },
    brotherhood = {
        icon = "fas fa-heart",
        name = "Brotherhood",
        effect = "+15% Income from Drug Sales when with MC Members",
        value = 15,
        isPositive = true,
        alwaysShow = false, -- If true, the attribute will always be shown in the UI
    },
    mobility = {
        icon = "fas fa-road",
        name = "Mobility",
        effect = "+10% Loyalty when completing Missions",
        value = 10,
        isPositive = true,
        attribute = function(increaseAmount)
            increaseAmount = increaseAmount * GetMultiplierPercentage(Config.GangAttributes.mobility.value)
            return increaseAmount         
        end,
    },
    neighborhood = {
        icon = "fas fa-home",
        name = "Neighborhood",
        effect = "Home Turf yields 50% less loyalty for Rival Gangs",
        value = 50,
        isPositive = true,
        attribute = function(increaseAmount)
            increaseAmount = increaseAmount * GetMultiplierPercentage(Config.GangAttributes.neighborhood.value)
            return increaseAmount
        end,
    },
    ["quick-response"] = {
        icon = "fas fa-bolt",
        name = "Quick Response",
        effect = "Blueprints every 8 hours",
        value = 8,
        isPositive = true,
        attribute = function(src, lastBlueprint, cooldown)
            cooldown = Config.GangAttributes["quick-response"].value
            if os.time() - lastBlueprint < cooldown * 3600 then
                if not Config.Blueprints.useBoxZones then
                    TriggerClientEvent('cb-gangsystem:client:Notify', src, Translations.Error.blueprintCooldown, Translations.Error.blueprintCooldownDesc, "error")
                    return
                else
                    TriggerClientEvent('cb-gangsystem:client:Notify', src, Translations.Error.blueprintCooldownBoxZone, Translations.Error.blueprintCooldownBoxZoneDesc, "error")
                    return
                end
            end
        end,
    },
    graffiti = {
        icon = "fas fa-spray-can",
        name = "Graffiti",
        effect = "+10% Loyalty when Spraying Graffiti",
        value = 10,
        isPositive = true,
    },
    disorganized = {
        icon = "fas fa-exclamation-circle",
        name = "Disorganized",
        effect = "Cannot Create Alliances",
        isPositive = false,
        attribute = function(src)
            TriggerClientEvent('cb-gangsystem:client:Notify', src, "Disorganized", "You cannot create alliances!", "error")
        end,
    },
    active = {
        icon = "fas fa-person-running",
        name = "Active",
        effect = "Gang Members receive an extra Gang Mission each day",
        value = 1,
        isPositive = false,
        attribute = function(src, completedMissions, maxMissions)
            local amount = maxMissions + Config.GangAttributes["active"].value
            if completedMissions < amount  then
                maxMissions = maxMissions + Config.GangAttributes["active"].value
                TriggerClientEvent('cb-gangsystem:client:Notify', src, "Active", "You received an extra mission!", "info")     
            end
        end
    },
}

Config.GangTypes = {
    -- DO NOT ADD MORE GANG TYPES! THE UI IS HARD CODED! DONT EDIT THESE IF YOU DONT KNOW WHAT YOU ARE DOING!
    [1] = {
        type = "syndicate",
        name = "Syndicate",
        description = "Professional criminal organization with corporate structure. Syndicates are known for their secrecy, discipline, and long-term planning. Their members operate with precision and a focus on maintaining influence over time.",
        image = "img/syndicate.jpg",
        attributes = {
            ["business-focus"] = true,
            ["networking"] = true,
            ["limited-recruitment"] = true,
            ["professional"] = true,
        },
        defaultRanks = {
            [1] = "Prospect",
            [2] = "Associate",
            [3] = "Operative",
            [4] = "Underboss",
            [5] = "Director",
            [6] = "Consigliere",
            [7] = "Chairman"
        }
    },
    [2] = {
        type = "mob",
        name = "Mob",
        description = "Traditional organized crime family with strong hierarchy. Mobs emphasize loyalty, tradition, and respect for the chain of command. Family ties and generational loyalty are often central to their identity.",
        image = "img/mob.jpg",
        attributes = {
            ["intimidation"] = true,
            ["family-ties"] = true,
            ["high-profile"] = true,
        },
        defaultRanks = {
            [1] = "Earner",
            [2] = "Associate",
            [3] = "Soldier",
            [4] = "Caporegime",
            [5] = "Consigliere",
            [6] = "Underboss",
            [7] = "Don"
        }
    },
    [3] = {
        type = "cartel",
        name = "Cartel",
        description = "Ruthless drug trafficking organization with territorial control. Cartels are structured around powerful leadership and fiercely protected networks. Their operations are built on fear, reputation, and rigid internal codes.",
        image = "img/cartel.jpg",
        attributes = {
            ["territory-control"] = true,
            ["relentless"] = true,
            ["ruthless"] = true,
            ["active"] = true,
        },
        defaultRanks = {
            [1] = "Lookout",
            [2] = "Courier",
            [3] = "Sicario",
            [4] = "Lieutenant",
            [5] = "Plaza Boss",
            [6] = "Jefe de Jefes",
            [7] = "Patron"
        }
    },
    [4] = {
        type = "motorcycle",
        name = "Motorcycle Club",
        description = "Brotherhood of riders with strong loyalty and camaraderie. Motorcycle clubs value freedom, brotherhood, and a rebellious spirit. Their image is shaped by honor among members and a devotion to their own laws.",
        image = "img/motorcycle-club.jpg",
        attributes = {
            ["brotherhood"] = true,
            ["mobility"] = true,
            ["ruthless"] = true,
        },
        defaultRanks = {
            [1] = "Hangaround",
            [2] = "Prospect",
            [3] = "Patch Member",
            [4] = "Road Captain",
            [5] = "Sergeant At Arms",
            [6] = "Vice President",
            [7] = "President"
        }
    },
    [5] = {
        type = "southside",
        name = "South Side",
        description = "Street gang with neighborhood roots and street smarts. South Side gangs are defined by their local identity, reputation, and close-knit community ties. Their strength comes from deep personal bonds and a shared sense of belonging.",
        image = "img/southside.jpg",
        attributes = {
            ["neighborhood"] = true,
            ["quick-response"] = true,
            ["disorganized"] = true,
            --["graffiti"] = true,
        },
        defaultRanks = {
            [1] = "Youngin",
            [2] = "Soldier",
            [3] = "Shot Caller",
            [4] = "Original Gangster",
            [5] = "Lieutenant",
            [6] = "General",
            [7] = "Kingpin"
        }
    }
}

Last updated