280 lines
12 KiB
Lua
280 lines
12 KiB
Lua
---@enum WeaponClass
|
|
local weaponClasses = { -- Define gta weapon classe numbers
|
|
SMALL_CALIBER = 1,
|
|
MEDIUM_CALIBER = 2,
|
|
HIGH_CALIBER = 3,
|
|
SHOTGUN = 4,
|
|
CUTTING = 5,
|
|
LIGHT_IMPACT = 6,
|
|
HEAVY_IMPACT = 7,
|
|
EXPLOSIVE = 8,
|
|
FIRE = 9,
|
|
SUFFOCATING = 10,
|
|
OTHER = 11,
|
|
WILDLIFE = 12,
|
|
NONE = 13,
|
|
}
|
|
|
|
return {
|
|
weaponClasses = weaponClasses,
|
|
fadeOutTimer = 2, -- How many bleed ticks occur before fadeout happens
|
|
blackoutTimer = 10, -- How many bleed ticks occur before blacking out
|
|
bleedDamageTimer = 8, -- The base damage that is multiplied by bleed level everytime a bleed tick occurs
|
|
advanceBleedTimer = 10, -- How many bleed ticks occur before bleed level increases
|
|
bleedTickRate = 30, -- How much time, in seconds, between bleed ticks
|
|
bleedMovementTick = 10, -- How many seconds is taken away from the bleed tick rate if the player is walking, jogging, or sprinting
|
|
bleedMovementAdvance = 3, -- How much time moving while bleeding adds
|
|
armorDamage = 5, -- Minumum damage done to armor before checking for injuries
|
|
messageTimer = 12, -- How long it will take to display limb/bleed message
|
|
alertShowInfo = 2, -- How many injuries a player must have before being alerted about them
|
|
headInjuryTimer = 30, -- How much time, in seconds, do head injury effects chance occur
|
|
armInjuryTimer = 30, -- How much time, in seconds, do arm injury effects chance occur
|
|
legInjuryTimer = 15, -- How much time, in seconds, do leg injury effects chance occur
|
|
headInjuryChance = 25, -- The chance, in percent, that head injury side-effects get applied
|
|
legInjuryChance = { -- The chance, in percent, that leg injury side-effects get applied
|
|
running = 50,
|
|
walking = 15,
|
|
},
|
|
laststandReviveInterval = 360,
|
|
deathTime = 300,
|
|
|
|
forceInjury = 35, -- Maximum amount of damage a player can take before limb damage & effects are forced to occur
|
|
healthDamage = 5, -- Minimum damage done to health before checking for injuries
|
|
maxInjuryChanceMulti = 3, -- Maximum chance of an injury from damage above healthDamage
|
|
forceInjuryWeapons = { -- Define which weapons will always cause injuries
|
|
[weaponClasses.HIGH_CALIBER] = true,
|
|
[weaponClasses.HEAVY_IMPACT] = true,
|
|
[weaponClasses.EXPLOSIVE] = true,
|
|
},
|
|
|
|
criticalAreas = { -- Define body areas that will always cause bleeding if wearing armor or not
|
|
UPPER_BODY = { armored = false },
|
|
LOWER_BODY = { armored = true },
|
|
SPINE = { armored = true },
|
|
},
|
|
|
|
---@class StaggerArea Defined body areas that will always cause staggering if wearing armor or not
|
|
---@field armored boolean
|
|
---@field major number
|
|
---@field minor number
|
|
|
|
---@type table<BodyPartKey, StaggerArea>
|
|
staggerAreas = {
|
|
SPINE = { armored = true, major = 60, minor = 30 },
|
|
UPPER_BODY = { armored = false, major = 60, minor = 30 },
|
|
LLEG = { armored = true, major = 100, minor = 85 },
|
|
RLEG = { armored = true, major = 100, minor = 85 },
|
|
LFOOT = { armored = true, major = 100, minor = 100 },
|
|
RFOOT = { armored = true, major = 100, minor = 100 },
|
|
},
|
|
|
|
majorArmoredBleedChance = 45, -- The chance, in percent, that a player will get a bleed effect when taking heavy damage while wearing armor
|
|
minorInjurWeapons = { -- Define which weapons cause small injuries
|
|
[weaponClasses.SMALL_CALIBER] = true,
|
|
[weaponClasses.MEDIUM_CALIBER] = true,
|
|
[weaponClasses.CUTTING] = true,
|
|
[weaponClasses.WILDLIFE] = true,
|
|
[weaponClasses.OTHER] = true,
|
|
[weaponClasses.LIGHT_IMPACT] = true,
|
|
},
|
|
|
|
majorInjurWeapons = { -- Define which weapons cause large injuries
|
|
[weaponClasses.HIGH_CALIBER] = true,
|
|
[weaponClasses.HEAVY_IMPACT] = true,
|
|
[weaponClasses.SHOTGUN] = true,
|
|
[weaponClasses.EXPLOSIVE] = true,
|
|
},
|
|
|
|
damageMinorToMajor = 35, -- How much damage would have to be applied for a minor weapon to be considered a major damage event. Put this at 100 if you want to disable it
|
|
alwaysBleedChanceWeapons = { -- Define which weapons will always cause bleedign
|
|
[weaponClasses.SMALL_CALIBER] = true,
|
|
[weaponClasses.MEDIUM_CALIBER] = true,
|
|
[weaponClasses.CUTTING] = true,
|
|
[weaponClasses.WILDLIFE] = false,
|
|
},
|
|
|
|
alwaysBleedChance = 70, -- Set the chance out of 100 that if a player is hit with a weapon, that also has a random chance, it will cause bleeding
|
|
|
|
---@type table<number, string>
|
|
bones = { -- Correspond bone hash numbers to their label
|
|
[0] = 'NONE',
|
|
[31085] = 'HEAD',
|
|
[31086] = 'HEAD',
|
|
[39317] = 'NECK',
|
|
[57597] = 'SPINE',
|
|
[23553] = 'SPINE',
|
|
[24816] = 'SPINE',
|
|
[24817] = 'SPINE',
|
|
[24818] = 'SPINE',
|
|
[10706] = 'UPPER_BODY',
|
|
[64729] = 'UPPER_BODY',
|
|
[11816] = 'LOWER_BODY',
|
|
[45509] = 'LARM',
|
|
[61163] = 'LARM',
|
|
[18905] = 'LHAND',
|
|
[4089] = 'LFINGER',
|
|
[4090] = 'LFINGER',
|
|
[4137] = 'LFINGER',
|
|
[4138] = 'LFINGER',
|
|
[4153] = 'LFINGER',
|
|
[4154] = 'LFINGER',
|
|
[4169] = 'LFINGER',
|
|
[4170] = 'LFINGER',
|
|
[4185] = 'LFINGER',
|
|
[4186] = 'LFINGER',
|
|
[26610] = 'LFINGER',
|
|
[26611] = 'LFINGER',
|
|
[26612] = 'LFINGER',
|
|
[26613] = 'LFINGER',
|
|
[26614] = 'LFINGER',
|
|
[58271] = 'LLEG',
|
|
[63931] = 'LLEG',
|
|
[2108] = 'LFOOT',
|
|
[14201] = 'LFOOT',
|
|
[40269] = 'RARM',
|
|
[28252] = 'RARM',
|
|
[57005] = 'RHAND',
|
|
[58866] = 'RFINGER',
|
|
[58867] = 'RFINGER',
|
|
[58868] = 'RFINGER',
|
|
[58869] = 'RFINGER',
|
|
[58870] = 'RFINGER',
|
|
[64016] = 'RFINGER',
|
|
[64017] = 'RFINGER',
|
|
[64064] = 'RFINGER',
|
|
[64065] = 'RFINGER',
|
|
[64080] = 'RFINGER',
|
|
[64081] = 'RFINGER',
|
|
[64096] = 'RFINGER',
|
|
[64097] = 'RFINGER',
|
|
[64112] = 'RFINGER',
|
|
[64113] = 'RFINGER',
|
|
[36864] = 'RLEG',
|
|
[51826] = 'RLEG',
|
|
[20781] = 'RFOOT',
|
|
[52301] = 'RFOOT',
|
|
},
|
|
|
|
weapons = { -- Correspond weapon names to their class number
|
|
[`WEAPON_STUNGUN`] = weaponClasses.NONE,
|
|
[`WEAPON_STUNGUN_MP`] = weaponClasses.NONE,
|
|
--[[ Small Caliber ]] --
|
|
[`WEAPON_PISTOL`] = weaponClasses.SMALL_CALIBER,
|
|
[`WEAPON_COMBATPISTOL`] = weaponClasses.SMALL_CALIBER,
|
|
[`WEAPON_APPISTOL`] = weaponClasses.SMALL_CALIBER,
|
|
[`WEAPON_COMBATPDW`] = weaponClasses.SMALL_CALIBER,
|
|
[`WEAPON_MACHINEPISTOL`] = weaponClasses.SMALL_CALIBER,
|
|
[`WEAPON_MICROSMG`] = weaponClasses.SMALL_CALIBER,
|
|
[`WEAPON_MINISMG`] = weaponClasses.SMALL_CALIBER,
|
|
[`WEAPON_PISTOL_MK2`] = weaponClasses.SMALL_CALIBER,
|
|
[`WEAPON_SNSPISTOL`] = weaponClasses.SMALL_CALIBER,
|
|
[`WEAPON_SNSPISTOL_MK2`] = weaponClasses.SMALL_CALIBER,
|
|
[`WEAPON_VINTAGEPISTOL`] = weaponClasses.SMALL_CALIBER,
|
|
|
|
--[[ Medium Caliber ]] --
|
|
[`WEAPON_ADVANCEDRIFLE`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_ASSAULTSMG`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_BULLPUPRIFLE`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_BULLPUPRIFLE_MK2`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_CARBINERIFLE`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_CARBINERIFLE_MK2`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_COMPACTRIFLE`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_DOUBLEACTION`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_GUSENBERG`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_HEAVYPISTOL`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_MARKSMANPISTOL`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_PISTOL50`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_REVOLVER`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_REVOLVER_MK2`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_SMG`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_SMG_MK2`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_SPECIALCARBINE`] = weaponClasses.MEDIUM_CALIBER,
|
|
[`WEAPON_SPECIALCARBINE_MK2`] = weaponClasses.MEDIUM_CALIBER,
|
|
|
|
--[[ High Caliber ]] --
|
|
[`WEAPON_ASSAULTRIFLE`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_ASSAULTRIFLE_MK2`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_COMBATMG`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_COMBATMG_MK2`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_HEAVYSNIPER`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_HEAVYSNIPER_MK2`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_MARKSMANRIFLE`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_MARKSMANRIFLE_MK2`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_MG`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_MINIGUN`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_MUSKET`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_RAILGUN`] = weaponClasses.HIGH_CALIBER,
|
|
[`WEAPON_HEAVYRIFLE`] = weaponClasses.HIGH_CALIBER,
|
|
|
|
--[[ Shotguns ]] --
|
|
[`WEAPON_ASSAULTSHOTGUN`] = weaponClasses.SHOTGUN,
|
|
[`WEAPON_BULLUPSHOTGUN`] = weaponClasses.SHOTGUN,
|
|
[`WEAPON_DBSHOTGUN`] = weaponClasses.SHOTGUN,
|
|
[`WEAPON_HEAVYSHOTGUN`] = weaponClasses.SHOTGUN,
|
|
[`WEAPON_PUMPSHOTGUN`] = weaponClasses.SHOTGUN,
|
|
[`WEAPON_PUMPSHOTGUN_MK2`] = weaponClasses.SHOTGUN,
|
|
[`WEAPON_SAWNOFFSHOTGUN`] = weaponClasses.SHOTGUN,
|
|
[`WEAPON_SWEEPERSHOTGUN`] = weaponClasses.SHOTGUN,
|
|
|
|
--[[ Animals ]] --
|
|
[`WEAPON_ANIMAL`] = weaponClasses.WILDLIFE, -- Animal
|
|
[`WEAPON_COUGAR`] = weaponClasses.WILDLIFE, -- Cougar
|
|
[`WEAPON_BARBED_WIRE`] = weaponClasses.WILDLIFE, -- Barbed Wire
|
|
|
|
--[[ Cutting Weapons ]] --
|
|
[`WEAPON_BATTLEAXE`] = weaponClasses.CUTTING,
|
|
[`WEAPON_BOTTLE`] = weaponClasses.CUTTING,
|
|
[`WEAPON_DAGGER`] = weaponClasses.CUTTING,
|
|
[`WEAPON_HATCHET`] = weaponClasses.CUTTING,
|
|
[`WEAPON_KNIFE`] = weaponClasses.CUTTING,
|
|
[`WEAPON_MACHETE`] = weaponClasses.CUTTING,
|
|
[`WEAPON_SWITCHBLADE`] = weaponClasses.CUTTING,
|
|
|
|
--[[ Light Impact ]] --
|
|
[`WEAPON_KNUCKLE`] = weaponClasses.LIGHT_IMPACT,
|
|
|
|
--[[ Heavy Impact ]] --
|
|
[`WEAPON_BAT`] = weaponClasses.HEAVY_IMPACT,
|
|
[`WEAPON_CROWBAR`] = weaponClasses.HEAVY_IMPACT,
|
|
[`WEAPON_FIREEXTINGUISHER`] = weaponClasses.HEAVY_IMPACT,
|
|
[`WEAPON_FIRWORK`] = weaponClasses.HEAVY_IMPACT,
|
|
[`WEAPON_GOLFLCUB`] = weaponClasses.HEAVY_IMPACT,
|
|
[`WEAPON_HAMMER`] = weaponClasses.HEAVY_IMPACT,
|
|
[`WEAPON_PETROLCAN`] = weaponClasses.HEAVY_IMPACT,
|
|
[`WEAPON_POOLCUE`] = weaponClasses.HEAVY_IMPACT,
|
|
[`WEAPON_WRENCH`] = weaponClasses.HEAVY_IMPACT,
|
|
[`WEAPON_RAMMED_BY_CAR`] = weaponClasses.HEAVY_IMPACT,
|
|
[`WEAPON_RUN_OVER_BY_CAR`] = weaponClasses.HEAVY_IMPACT,
|
|
|
|
--[[ Explosives ]] --
|
|
[`WEAPON_EXPLOSION`] = weaponClasses.EXPLOSIVE,
|
|
[`WEAPON_GRENADE`] = weaponClasses.EXPLOSIVE,
|
|
[`WEAPON_COMPACTLAUNCHER`] = weaponClasses.EXPLOSIVE,
|
|
[`WEAPON_HOMINGLAUNCHER`] = weaponClasses.EXPLOSIVE,
|
|
[`WEAPON_PIPEBOMB`] = weaponClasses.EXPLOSIVE,
|
|
[`WEAPON_PROXMINE`] = weaponClasses.EXPLOSIVE,
|
|
[`WEAPON_RPG`] = weaponClasses.EXPLOSIVE,
|
|
[`WEAPON_STICKYBOMB`] = weaponClasses.EXPLOSIVE,
|
|
[`WEAPON_HELI_CRASH`] = weaponClasses.EXPLOSIVE,
|
|
[`WEAPON_EMPLAUNCHER`] = weaponClasses.EXPLOSIVE,
|
|
|
|
--[[ Other ]] --
|
|
[`WEAPON_FALL`] = weaponClasses.OTHER, -- Fall
|
|
[`WEAPON_HIT_BY_WATER_CANNON`] = weaponClasses.OTHER, -- Water Cannon
|
|
|
|
--[[ Fire ]] --
|
|
[`WEAPON_ELECTRIC_FENCE`] = weaponClasses.FIRE,
|
|
[`WEAPON_FIRE`] = weaponClasses.FIRE,
|
|
[`WEAPON_MOLOTOV`] = weaponClasses.FIRE,
|
|
[`WEAPON_FLARE`] = weaponClasses.FIRE,
|
|
[`WEAPON_FLAREGUN`] = weaponClasses.FIRE,
|
|
|
|
--[[ Suffocate ]] --
|
|
[`WEAPON_DROWNING`] = weaponClasses.SUFFOCATING, -- Drowning
|
|
[`WEAPON_DROWNING_IN_VEHICLE`] = weaponClasses.SUFFOCATING, -- Drowning Veh
|
|
[`WEAPON_EXHAUSTION`] = weaponClasses.SUFFOCATING, -- Exhaust
|
|
[`WEAPON_BZGAS`] = weaponClasses.SUFFOCATING,
|
|
[`WEAPON_SMOKEGRENADE`] = weaponClasses.SUFFOCATING,
|
|
},
|
|
}
|