Files
wnsrc/gamemodes/ixhl2rp/plugins/weaponbalance/libs/sh_melee.lua
lifestorm ba1fc01b16 Upload
2024-08-04 23:12:27 +03:00

113 lines
2.9 KiB
Lua

--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
local ix = ix
ix.weapons = ix.weapons or {}
ix.weapons.meleeWeapons = ix.weapons.meleeWeapons or {}
ix.weapons.meleeCat = ix.weapons.meleeCat or {}
ix.weapons.bluntWeapons = ix.weapons.bluntWeapons or {}
function ix.weapons:RegisterMeleeWeapon(weapon, category)
ix.weapons.meleeWeapons[weapon] = category
end
function ix.weapons:IsMelee(weapon)
return ix.weapons.meleeWeapons[weapon]
end
function ix.weapons:RegisterMeleeCategory(uid, baseDamage, hitScale, critSkillScale, armorPen)
self.meleeCat[uid] = {
armorPen = armorPen,
baseDamage = baseDamage,
critSkillScale = critSkillScale,
hitScale = hitScale,
}
end
function ix.weapons:GetMeleeWeaponBaseHitChance(character, weaponClass)
if (self.weaponAimPenalty[weaponClass]) then
return self.weaponAimPenalty[weaponClass]
end
if (!self.meleeWeapons[weaponClass]) then
return 0.8
end
local weaponCat = self.meleeWeapons[weaponClass]
if (!self.meleeCat[weaponCat]) then
return 0.8
end
return character:GetSkillScale(self.meleeCat[weaponCat].critSkillScale) or 0.8
end
function ix.weapons:GetMeleeArmorPen(weaponClass)
if (self.weaponArmorPen[weaponClass]) then
return self.weaponArmorPen[weaponClass]
end
if (self.bluntWeapons[weaponClass]) then
return 1
end
local weaponCat = self.meleeWeapons[weaponClass]
if (!self.meleeCat[weaponCat]) then
return 1
end
return self.meleeCat[weaponCat].armorPen
end
function ix.weapons:GetMeleeWeaponBaseDamage(weaponClass, attackType)
local scale = 1
if (attackType == "heavy") then
scale = 2.5
elseif (attackType == "bash") then
scale = 0.7
end
if (self.weaponDamage[weaponClass]) then
return self.weaponDamage[weaponClass] * scale
end
if (!self.meleeWeapons[weaponClass]) then
return 16 * scale
end
local weaponCat = self.meleeWeapons[weaponClass]
if (!self.meleeCat[weaponCat]) then
return 16 * scale
end
return self.meleeCat[weaponCat].baseDamage * scale
end
function ix.weapons:GetMeleeWeaponHitAdjsut(weaponClass)
if (!self.meleeWeapons[weaponClass]) then
return 0.8
end
local weaponCat = self.meleeWeapons[weaponClass]
if (!self.meleeCat[weaponCat]) then
return 0.8
end
return self.meleeCat[weaponCat].hitScale
end
ix.weapons:RegisterMeleeCategory("light", 24, 0.8, "melee_light", 0.4)
ix.weapons:RegisterMeleeCategory("medium", 36, 0.5, "melee_medium", 0.6)
ix.weapons:RegisterMeleeCategory("heavy", 42, 0.4, "melee_heavy", 0.8)
ix.weapons:RegisterMeleeWeapon("ix_stunstick", "light")
--ix.weapons:RegisterMeleeWeapon("tfa_nmrih_kknife", "light")