From a456fe161213afc88301afd2ae0f7ecd6abefacc Mon Sep 17 00:00:00 2001 From: nikita <59087849+mrcreepysos@users.noreply.github.com> Date: Mon, 22 Jul 2024 23:14:38 +0300 Subject: [PATCH] Sniper Rifle & DMR rework & T4 Marksman rework reclassify semi-auto sniper rifles into 200 damage class, give them higher rof to compensate stat tweaks for all snipers and their exclusive mods give dmrs armor and enemy penetration make enemy penetration reduce bullet's damage by 30% deadeye rework into bullseye (welcome back lol) basic version: same but removes the 30% damage reduction on piercing enemies aced version: headshotting an enemy with a sniper rifle gives you 50 armor on a 3 second cooldown --- loc/en.txt | 6 +- lua/playermanager.lua | 28 ++-- lua/raycastweaponbase.lua | 3 + lua/skilltreetweakdata.lua | 3 +- lua/upgradestweakdata.lua | 12 +- lua/weaponfactorytweakdata.lua | 228 +++++++++++++++++++++------------ lua/weapontweakdata.lua | 107 ++++++++++------ 7 files changed, 251 insertions(+), 136 deletions(-) diff --git a/loc/en.txt b/loc/en.txt index 7e93c32..3332f1d 100644 --- a/loc/en.txt +++ b/loc/en.txt @@ -6,6 +6,8 @@ "bm_wp_upg_a_dragons_breath_desc": "Special type of Incendiary-effect rounds.\nOne shell contains 16 magnesium pellets.\nThis ammo type is harder to find.\nThe stronger the shotgun type, the more effective the burn and the range are.", "bm_wp_upg_mk2_rare_desc": "This fuel is easier to find.", "bm_wp_upg_mk2_welldone_desc": "This fuel is harder to find.", + "bm_w_dmr_penetration_desc": "PENETRATES BODY ARMOR AND ENEMIES.", + "bm_wp_dmr_kit_penetration_desc": "Armor and enemy piercing.", "bm_w_hajk": "CR 805B Rifle", "bm_menu_pickup": "Ammo Pickup", @@ -48,8 +50,8 @@ "menu_rifleman_beta_desc": "BASIC: ##$basic##\nYou snap to zoom ##$multibasic## faster.\n\nACE: ##$pro##\nYou swap your weapons ##$multipro## faster.", "menu_sharpshooter_beta_desc": "BASIC: ##$basic##\nYour weapons are ##$multibasic## more stable when you are aiming down sights.\n\nACE: ##$pro##\nYou gain ##$multipro## weapon accuracy while standing still.", "menu_speedy_reload_beta_desc": "BASIC: ##$basic##\nYou reload your Sniper and Assault Rifles ##$multibasic## faster.\n\nACE: ##$pro##\nAny killing headshot will increase your reload speed by ##$multipro## for ##$multipro2## seconds. Can only be triggered by SMGs, Assault Rifles and Sniper Rifles fired in single shot fire mode.", - "menu_sniper_graze_damage": "Deadeye", - "menu_sniper_graze_damage_desc": "BASIC: ##$basic##\nYour piercing bullets no longer receive a ##$multibasic## damage penalty when going through walls and shields.\n\nACE: ##$pro##\nYour bullets now have the ability to magnetize to enemies' heads when passing near them.", + "menu_sniper_graze_damage": "Bullseye", + "menu_sniper_graze_damage_desc": "BASIC: ##$basic##\nYour piercing bullets no longer receive a ##$multibasic## damage penalty when passing through walls and shields or a ##$multibasic2## damage penalty when passing through enemies.\n\nACE: ##$pro##\nYou regenerate ##$multipro## armor for each succesful headshot with a Sniper Rifle. This can not occur more than once every ##$multipro2## seconds.", "menu_from_the_hip_desc": "BASIC: ##$basic##\nYou deal ##$multibasic## more damage with Shotguns.\n\nACE: ##$pro##\nThe time it takes to draw and holster Shotguns is decreased by ##$multipro##.", diff --git a/lua/playermanager.lua b/lua/playermanager.lua index 7253baf..4c2ccfe 100644 --- a/lua/playermanager.lua +++ b/lua/playermanager.lua @@ -47,6 +47,10 @@ function PlayerManager:on_headshot_dealt() local player_unit = self:player_unit() local damage_ext = player_unit:character_damage() local has_hitman_ammo_refund = managers.player:has_enabled_cooldown_upgrade("cooldown", "hitman_ammo_refund") + local weapon_unit = self:equipped_weapon_unit() + local weapon = weapon_unit:base() + local regen_armor_bonus = managers.player:upgrade_value("player", "headshot_regen_armor_bonus", 0) + local meets_bullseye_conditions = weapon and weapon:is_category("snp") and regen_armor_bonus > 0 if not player_unit then return @@ -60,20 +64,20 @@ function PlayerManager:on_headshot_dealt() managers.player:disable_cooldown_upgrade("cooldown", "hitman_ammo_refund") end - -- make headshot regen check for maxed out armor - if damage_ext and damage_ext:armor_ratio() == 1 then - self._on_headshot_dealt_t = 0 - else - if self._on_headshot_dealt_t and t < self._on_headshot_dealt_t then - return + -- make bullseye only work with sniper rifles, also make it work with non max armor + if meets_bullseye_conditions then + if damage_ext and damage_ext:armor_ratio() == 1 then + self._on_headshot_dealt_t = 0 + else + if self._on_headshot_dealt_t and t < self._on_headshot_dealt_t then + return + end + self._on_headshot_dealt_t = t + (tweak_data.upgrades.on_headshot_dealt_cooldown or 0) end - self._on_headshot_dealt_t = t + (tweak_data.upgrades.on_headshot_dealt_cooldown or 0) - end - local regen_armor_bonus = managers.player:upgrade_value("player", "headshot_regen_armor_bonus", 0) - - if damage_ext and regen_armor_bonus > 0 then - damage_ext:restore_armor(regen_armor_bonus) + if damage_ext then + damage_ext:restore_armor(regen_armor_bonus) + end end end diff --git a/lua/raycastweaponbase.lua b/lua/raycastweaponbase.lua index 38f424f..7b33015 100644 --- a/lua/raycastweaponbase.lua +++ b/lua/raycastweaponbase.lua @@ -114,6 +114,9 @@ function RaycastWeaponBase:_fire_raycast(user_unit, from_pos, direction, dmg_mul elseif hit.unit:in_slot(managers.slot:get_mask("enemy_shield_check")) then hit_through_shield = hit_through_shield or alive(hit.unit:parent()) damage = damage * (managers.player:has_category_upgrade("weapon", "no_pen_damage_penalty") and 1 or 0.4) + elseif hit.unit:in_slot(managers.slot:get_mask("enemies")) then + hit_through_shield = hit_through_shield or alive(hit.unit:parent()) + damage = damage * (managers.player:has_category_upgrade("weapon", "no_pen_damage_penalty") and 1 or 0.7) end if dmg > 0 then diff --git a/lua/skilltreetweakdata.lua b/lua/skilltreetweakdata.lua index 2d9dcb8..6a1f290 100644 --- a/lua/skilltreetweakdata.lua +++ b/lua/skilltreetweakdata.lua @@ -91,7 +91,8 @@ function SkillTreeTweakData:init(tweak_data) -- Deadeye self.skills.single_shot_ammo_return[1].upgrades = { "weapon_no_pen_damage_penalty" } - self.skills.single_shot_ammo_return[2].upgrades = { "weapon_magnetizing_bullets" } + self.skills.single_shot_ammo_return[2].upgrades = { "player_headshot_regen_armor_bonus_1" } + self.skills.single_shot_ammo_return.icon_xy = { 6, 11 } -- ENFORCER -- diff --git a/lua/upgradestweakdata.lua b/lua/upgradestweakdata.lua index 6239dca..95d7de7 100644 --- a/lua/upgradestweakdata.lua +++ b/lua/upgradestweakdata.lua @@ -72,9 +72,6 @@ function UpgradesTweakData:_init_pd2_values(tweak_data) -- ictv nerf self.values.player.body_armor.armor[7] = 18 - -- bullseye nerf - self.on_headshot_dealt_cooldown = 5 - -- make sna less cancer self.values.player.shield_knock_bullet.chance = 0.7 @@ -301,10 +298,13 @@ function UpgradesTweakData:init(tweak_data) category = "weapon", }, } + + self.values.player.headshot_regen_armor_bonus[1] = 5 + self.on_headshot_dealt_cooldown = 3 self.skill_descs.single_shot_ammo_return.multibasic = "60%" - self.skill_descs.single_shot_ammo_return.multibasic2 = "2m" - self.skill_descs.single_shot_ammo_return.multipro = "3m" - self.skill_descs.single_shot_ammo_return.multipro2 = "100%" + self.skill_descs.single_shot_ammo_return.multibasic2 = "30%" + self.skill_descs.single_shot_ammo_return.multipro = "50" + self.skill_descs.single_shot_ammo_return.multipro2 = "3" -- Enforcer -- diff --git a/lua/weaponfactorytweakdata.lua b/lua/weaponfactorytweakdata.lua index ecca84f..f3ee458 100644 --- a/lua/weaponfactorytweakdata.lua +++ b/lua/weaponfactorytweakdata.lua @@ -359,6 +359,155 @@ Hooks:PostHook(WeaponFactoryTweakData, "init", "eclipse__init", function(self) wpn_fps_upg_a_dragons_breath = shotgun_ammo_type_overrides.dragons_breath.very_heavy, } + + -- SNIPERS -- + local sniper_silencer_stats_weak = { damage = -4, recoil = 1, spread = 1, concealment = -2, suppression = 12 } + local sniper_silencer_stats_mid = { damage = -8, recoil = 1, spread = 1, concealment = -2, suppression = 12 } + local sniper_silencer_stats_strong = { damage = -12, recoil = 1, spread = 1, concealment = -2, suppression = 12 } + + -- Contractor + self.parts.wpn_fps_snp_tti_ns_hex.stats = sniper_silencer_stats_weak + + -- Grom + self.parts.wpn_fps_snp_siltstone_ns_variation_b.stats = { recoil = 1, spread = 1, concealment = -1 } + self.parts.wpn_fps_snp_siltstone_b_silenced.stats = sniper_silencer_stats_weak + + -- Lebensauger + self.parts.wpn_fps_snp_wa2000_b_long.stats.concealment = -1 + self.parts.wpn_fps_snp_wa2000_b_suppressed.stats = sniper_silencer_stats_weak + + -- Rattlesnake + self.parts.wpn_fps_snp_msr_b_long.stats = { recoil = 2, concealment = -2 } + self.parts.wpn_fps_snp_msr_ns_suppressor.stats = sniper_silencer_stats_mid + + -- R700 + self.parts.wpn_fps_snp_r700_s_military.stats = { total_ammo_mod = 3, concealment = -1 } + self.parts.wpn_fps_snp_r700_s_tactical.stats = { recoil = 1, concealment = -1 } + self.parts.wpn_fps_snp_r700_b_medium.stats = sniper_silencer_stats_mid + + -- Repeater + self.parts.wpn_fps_snp_winchester_b_long.stats.concealment = -1 + self.parts.wpn_fps_snp_winchester_b_suppressed.stats = sniper_silencer_stats_mid + + -- Desert Fox + self.parts.wpn_fps_snp_desertfox_b_long.stats.concealment = -2 + self.parts.wpn_fps_snp_desertfox_b_silencer.stats = sniper_silencer_stats_strong + + -- Nagant + self.parts.wpn_fps_snp_mosin_body_black.stats = {} -- it's just a recolor, why give it stats + self.parts.wpn_fps_snp_mosin_b_short.stats = { recoil = -1, spread = -1, concealment = 2 } + self.parts.wpn_fps_snp_mosin_b_standard.stats = { recoil = 1, spread = 1, concealment = -2 } + self.parts.wpn_fps_snp_mosin_b_sniper.stats = sniper_silencer_stats_strong + self.parts.wpn_fps_snp_mosin_ns_bayonet.stats = { + min_damage = 24, + concealment = -2, + min_damage_effect = 1.75, + max_damage_effect = 1.75, + value = 1, + max_damage = 24, + } + + -- R93 + self.parts.wpn_fps_snp_r93_body_wood.stats = {} -- tbh similar deal + self.parts.wpn_fps_snp_r93_b_short.stats = { recoil = -1, spread = -1, concealment = 2 } + self.parts.wpn_fps_snp_r93_b_suppressed.stats = sniper_silencer_stats_strong + + -- Platypus + self.parts.wpn_fps_snp_model70_ns_suppressor.stats = sniper_silencer_stats_strong + self.parts.wpn_fps_snp_model70_s_legend.stats = {} + + -- AWP + self.parts.wpn_fps_snp_awp_conversion_dragonlore.stats = {} + self.parts.wpn_fps_snp_awp_conversion_dragonlore.custom_stats = {} + self.parts.wpn_fps_snp_awp_conversion_wildlands.stats = {} + + -- Thanatos + self.parts.wpn_fps_snp_m95_barrel_short.stats = { recoil = -4, spread = -1, concealment = 3 } + self.parts.wpn_fps_snp_m95_barrel_long.stats = { recoil = 4, spread = 2, concealment = -4 } + self.parts.wpn_fps_snp_m95_barrel_suppressed.stats = sniper_silencer_stats_strong + + -- Rangehitter + self.parts.wpn_fps_snp_sbl_b_long.stats.recoil = 0 + self.parts.wpn_fps_snp_sbl_b_short.stats = sniper_silencer_stats_weak + self.parts.wpn_fps_snp_sbl_s_saddle.stats.total_ammo_mod = 3 + + -- Scout + self.parts.wpn_fps_snp_scout_ns_suppressor.stats = sniper_silencer_stats_mid + self.parts.wpn_fps_snp_scout_bolt_speed.stats = { fire_rate = 2, spread = -1, concealment = -1 } + self.parts.wpn_fps_snp_scout_s_pads_none.stats = { recoil = -2, concealment = 2 } + self.parts.wpn_fps_snp_scout_conversion.stats = {} + + -- North Star + self.parts.wpn_fps_snp_victor_ns_omega.stats = sniper_silencer_stats_weak + self.parts.wpn_fps_snp_victor_g_mod3.stats.concealment = -1 + self.parts.wpn_fps_m4_uupg_s_zulu.stats = { concealment = 2, recoil = -2 } + self.parts.wpn_fps_snp_victor_sbr_kit.stats = { recoil = -1, spread = -2, concealment = 3 } + + -- Aran + self.parts.wpn_fps_snp_contender_barrel_long.stats = { recoil = 1, spread = 1, concealment = -1 } + self.parts.wpn_fps_snp_contender_barrel_short.stats = { recoil = -2, spread = -1, concealment = 2 } + self.parts.wpn_fps_snp_contender_frontgrip_long.stats = { recoil = 2, concealment = -1 } + self.parts.wpn_fps_upg_m4_g_contender.stats = { spread = 2, recoil = 1, concealment = -2 } + self.parts.wpn_fps_snp_contender_conversion.stats = { recoil = -4, spread = 1, damage = 500, concealment = -8, total_ammo_mod = -10 } + self.parts.wpn_fps_snp_contender_conversion.custom_stats = { ammo_pickup_max_mul = 0.65 } + + + -- DMRs (& Kits) -- + -- ak family + self.parts.wpn_fps_upg_ass_ak_b_zastava.custom_stats = { can_shoot_through_enemy = true, armor_piercing_add = 1, ammo_pickup_min_mul = 0.5, ammo_pickup_max_mul = 0.375 } + self.parts.wpn_fps_upg_ass_ak_b_zastava.stats.total_ammo_mod = -7 + self.parts.wpn_fps_upg_ass_ak_b_zastava.stats.concealment = -6 + self.parts.wpn_fps_upg_ass_ak_b_zastava.stats.recoil = -8 + self.parts.wpn_fps_upg_ass_ak_b_zastava.stats.damage = 87 + self.parts.wpn_fps_upg_ass_ak_b_zastava.stats.damage = 87 + self.parts.wpn_fps_upg_ass_ak_b_zastava.has_description = true + self.parts.wpn_fps_upg_ass_ak_b_zastava.desc_id = "bm_wp_dmr_kit_penetration_desc" + self.wpn_fps_ass_74.override.wpn_fps_upg_ass_ak_b_zastava.custom_stats = { can_shoot_through_enemy = true, armor_piercing_add = 1, ammo_pickup_min_mul = 0.5, ammo_pickup_max_mul = 0.25 } + self.wpn_fps_ass_74.override.wpn_fps_upg_ass_ak_b_zastava.stats.total_ammo_mod = -10 + self.wpn_fps_ass_74.override.wpn_fps_upg_ass_ak_b_zastava.stats.concealment = -7 + self.wpn_fps_ass_74.override.wpn_fps_upg_ass_ak_b_zastava.stats.recoil = -11 + self.wpn_fps_ass_74.override.wpn_fps_upg_ass_ak_b_zastava.stats.damage = 105 + -- car family + self.parts.wpn_fps_upg_ass_m4_b_beowulf.custom_stats = { can_shoot_through_enemy = true, armor_piercing_add = 1, ammo_pickup_min_mul = 0.5, ammo_pickup_max_mul = 0.1875 } + self.parts.wpn_fps_upg_ass_m4_b_beowulf.stats.total_ammo_mod = -12 + self.parts.wpn_fps_upg_ass_m4_b_beowulf.stats.concealment = -7 + self.parts.wpn_fps_upg_ass_m4_b_beowulf.stats.recoil = -11 + self.parts.wpn_fps_upg_ass_m4_b_beowulf.stats.damage = 117 + self.parts.wpn_fps_upg_ass_m4_b_beowulf.has_description = true + self.parts.wpn_fps_upg_ass_m4_b_beowulf.desc_id = "bm_wp_dmr_kit_penetration_desc" + self.wpn_fps_ass_m16.override.wpn_fps_upg_ass_m4_b_beowulf.custom_stats = { can_shoot_through_enemy = true, armor_piercing_add = 1, ammo_pickup_min_mul = 0.5, ammo_pickup_max_mul = 0.375 } + self.wpn_fps_ass_m16.override.wpn_fps_upg_ass_m4_b_beowulf.stats.total_ammo_mod = -7 + self.wpn_fps_ass_m16.override.wpn_fps_upg_ass_m4_b_beowulf.stats.concealment = -6 + self.wpn_fps_ass_m16.override.wpn_fps_upg_ass_m4_b_beowulf.stats.recoil = -8 + self.wpn_fps_ass_m16.override.wpn_fps_upg_ass_m4_b_beowulf.stats.damage = 87 + -- m308 b-stock + self.parts.wpn_fps_ass_m14_body_ruger.stats.concealment = 8 + -- gewehr + self.parts.wpn_fps_ass_g3_b_sniper.custom_stats = { can_shoot_through_enemy = true, armor_piercing_add = 1, ammo_pickup_min_mul = 1.25, ammo_pickup_max_mul = 0.5 } + self.parts.wpn_fps_ass_g3_b_sniper.stats.total_ammo_mod = -8 + self.parts.wpn_fps_ass_g3_b_sniper.stats.concealment = -5 + self.parts.wpn_fps_ass_g3_b_sniper.stats.recoil = -11 + self.parts.wpn_fps_ass_g3_b_sniper.stats.damage = 85 + self.parts.wpn_fps_ass_g3_b_short.stats.total_ammo_mod = 11 + self.parts.wpn_fps_ass_g3_b_short.custom_stats = { ammo_pickup_max_mul = 2 } + self.parts.wpn_fps_ass_g3_b_short.has_description = true + self.parts.wpn_fps_ass_g3_b_short.desc_id = "bm_wp_dmr_kit_penetration_desc" + -- broomstick + self.parts.wpn_fps_pis_c96_b_long.custom_stats = { can_shoot_through_enemy = true, armor_piercing_add = 1, ammo_pickup_min_mul = 0.33, ammo_pickup_max_mul = 0.5 } + self.parts.wpn_fps_pis_c96_b_long.has_description = true + self.parts.wpn_fps_pis_c96_b_long.desc_id = "bm_wp_dmr_kit_penetration_desc" + -- ks12 + self.parts.wpn_fps_ass_shak12_body_vks.stats.damage = 64 + self.parts.wpn_fps_ass_shak12_body_vks.stats.concealment = -6 + self.parts.wpn_fps_ass_shak12_body_vks.stats.recoil = -8 + self.parts.wpn_fps_ass_shak12_body_vks.stats.total_ammo_mod = -10 + self.parts.wpn_fps_ass_shak12_body_vks.stats.fire_rate = -3 + self.parts.wpn_fps_ass_shak12_body_vks.custom_stats = { can_shoot_through_enemy = true, armor_piercing_add = 1, ammo_pickup_min_mul = 0.5, ammo_pickup_max_mul = 1 / 3 } + self.parts.wpn_fps_ass_shak12_body_vks.custom_stats.fire_rate_multiplier = 0.7 + self.parts.wpn_fps_ass_shak12_body_vks.has_description = true + self.parts.wpn_fps_ass_shak12_body_vks.desc_id = "bm_wp_dmr_kit_penetration_desc" + + -- STILL NEED TO ORGANIZE EVERYTHING BELOW CAUSE HOLY IT IS BAD -- -- Secondary Sights @@ -396,15 +545,6 @@ Hooks:PostHook(WeaponFactoryTweakData, "init", "eclipse__init", function(self) self.parts.wpn_fps_lmg_kacchainsaw_b_short.stats = { spread = -1, recoil = 1 } self.parts.wpn_fps_lmg_kacchainsaw_conversionkit.stats = { damage = 40, recoil = -2, spread = 2 } self.parts.wpn_fps_lmg_kacchainsaw_conversionkit.custom_stats = { fire_rate_multiplier = 0.6, ammo_pickup_max_mul = 0.83 } - -- mosin nagant bayonet - self.parts.wpn_fps_snp_mosin_ns_bayonet.stats = { - min_damage = 24, - concealment = -2, - min_damage_effect = 1.75, - max_damage_effect = 1.75, - value = 1, - max_damage = 24, - } -- Weapon Magazines @@ -455,55 +595,9 @@ Hooks:PostHook(WeaponFactoryTweakData, "init", "eclipse__init", function(self) self.wpn_fps_pis_x_czech.override.wpn_fps_pis_czech_m_extended.stats.reload = -1 -- Conversion kits - -- ak family - self.parts.wpn_fps_upg_ass_ak_b_zastava.custom_stats = { ammo_pickup_min_mul = 0.5, ammo_pickup_max_mul = 0.375 } - self.parts.wpn_fps_upg_ass_ak_b_zastava.stats.total_ammo_mod = -7 - self.parts.wpn_fps_upg_ass_ak_b_zastava.stats.concealment = -6 - self.parts.wpn_fps_upg_ass_ak_b_zastava.stats.recoil = -8 - self.parts.wpn_fps_upg_ass_ak_b_zastava.stats.damage = 87 - self.wpn_fps_ass_74.override.wpn_fps_upg_ass_ak_b_zastava.custom_stats = { ammo_pickup_min_mul = 0.5, ammo_pickup_max_mul = 0.25 } - self.wpn_fps_ass_74.override.wpn_fps_upg_ass_ak_b_zastava.stats.total_ammo_mod = -10 - self.wpn_fps_ass_74.override.wpn_fps_upg_ass_ak_b_zastava.stats.concealment = -7 - self.wpn_fps_ass_74.override.wpn_fps_upg_ass_ak_b_zastava.stats.recoil = -11 - self.wpn_fps_ass_74.override.wpn_fps_upg_ass_ak_b_zastava.stats.damage = 105 - -- car family - self.parts.wpn_fps_upg_ass_m4_b_beowulf.custom_stats = { ammo_pickup_min_mul = 0.5, ammo_pickup_max_mul = 0.1875 } - self.parts.wpn_fps_upg_ass_m4_b_beowulf.stats.total_ammo_mod = -12 - self.parts.wpn_fps_upg_ass_m4_b_beowulf.stats.concealment = -7 - self.parts.wpn_fps_upg_ass_m4_b_beowulf.stats.recoil = -11 - self.parts.wpn_fps_upg_ass_m4_b_beowulf.stats.damage = 117 - self.wpn_fps_ass_m16.override.wpn_fps_upg_ass_m4_b_beowulf.custom_stats = { ammo_pickup_min_mul = 0.5, ammo_pickup_max_mul = 0.375 } - self.wpn_fps_ass_m16.override.wpn_fps_upg_ass_m4_b_beowulf.stats.total_ammo_mod = -7 - self.wpn_fps_ass_m16.override.wpn_fps_upg_ass_m4_b_beowulf.stats.concealment = -6 - self.wpn_fps_ass_m16.override.wpn_fps_upg_ass_m4_b_beowulf.stats.recoil = -8 - self.wpn_fps_ass_m16.override.wpn_fps_upg_ass_m4_b_beowulf.stats.damage = 87 - -- m308 b-stock - self.parts.wpn_fps_ass_m14_body_ruger.stats.concealment = 8 - -- gewehr - self.parts.wpn_fps_ass_g3_b_sniper.custom_stats = { ammo_pickup_min_mul = 1.25, ammo_pickup_max_mul = 0.5 } - self.parts.wpn_fps_ass_g3_b_sniper.stats.total_ammo_mod = -8 - self.parts.wpn_fps_ass_g3_b_sniper.stats.concealment = -5 - self.parts.wpn_fps_ass_g3_b_sniper.stats.recoil = -11 - self.parts.wpn_fps_ass_g3_b_sniper.stats.damage = 85 - self.parts.wpn_fps_ass_g3_b_short.stats.total_ammo_mod = 11 - self.parts.wpn_fps_ass_g3_b_short.custom_stats = { ammo_pickup_max_mul = 2 } - -- broomstick - self.parts.wpn_fps_pis_c96_b_long.custom_stats = { ammo_pickup_min_mul = 0.33, ammo_pickup_max_mul = 0.5 } - -- ks12 - self.parts.wpn_fps_ass_shak12_body_vks.stats.damage = 64 - self.parts.wpn_fps_ass_shak12_body_vks.stats.concealment = -6 - self.parts.wpn_fps_ass_shak12_body_vks.stats.recoil = -8 - self.parts.wpn_fps_ass_shak12_body_vks.stats.total_ammo_mod = -10 - self.parts.wpn_fps_ass_shak12_body_vks.stats.fire_rate = -3 - self.parts.wpn_fps_ass_shak12_body_vks.custom_stats = { ammo_pickup_min_mul = 0.5, ammo_pickup_max_mul = 1 / 3 } - self.parts.wpn_fps_ass_shak12_body_vks.custom_stats.fire_rate_multiplier = 0.7 -- wasp exclusive kit self.parts.wpn_fps_smg_fmg9_conversion.stats.recoil = 1 self.parts.wpn_fps_smg_fmg9_conversion.stats.spread = 1 - -- awp exclusive kits - self.parts.wpn_fps_snp_awp_conversion_dragonlore.stats = {} - self.parts.wpn_fps_snp_awp_conversion_dragonlore.custom_stats = {} - self.parts.wpn_fps_snp_awp_conversion_wildlands.stats = {} -- mcshay pack self.parts.wpn_fps_upg_ak_body_upperreceiver_zenitco.stats = { value = 3, concealment = -1, damage = 3, spread = -2 } @@ -578,30 +672,6 @@ Hooks:PostHook(WeaponFactoryTweakData, "init", "eclipse__init", function(self) self.parts.wpn_fps_ass_vhs_b_silenced.stats.damage = -2 -- Stealth Barrel (car-4) self.parts.wpn_fps_m4_uupg_b_sd.stats.damage = -3 - -- Sniper Suppressor (rattlesnake) - self.parts.wpn_fps_snp_msr_ns_suppressor.stats.damage = -5 - -- Medium Barrel (r700 supp) - self.parts.wpn_fps_snp_r700_b_medium.stats.damage = -5 - -- Wind Whistler Barrel (rangehitter) - self.parts.wpn_fps_snp_sbl_b_short.stats.damage = -3 - -- Beak Suppressor (platypus) - self.parts.wpn_fps_snp_model70_ns_suppressor.stats.damage = -3 - -- Gedämpfter Barrel (lebensauger) - self.parts.wpn_fps_snp_wa2000_b_suppressed.stats.damage = -3 - -- Silenced Barrel (desert fox) - self.parts.wpn_fps_snp_desertfox_b_silencer.stats.damage = -3 - -- Contractor Silencer - self.parts.wpn_fps_snp_tti_ns_hex.stats.damage = -3 - -- Compensated Suppressor (r93) - self.parts.wpn_fps_snp_r93_b_suppressed.stats.damage = -3 - -- Outlaw's Silened Barrel (repeater) - self.parts.wpn_fps_snp_winchester_b_suppressed.stats.damage = -5 - -- Tikho Barrel (grom) - self.parts.wpn_fps_snp_siltstone_b_silenced.stats.damage = -5 - -- Silenced Barrel (nagant) - self.parts.wpn_fps_snp_mosin_b_sniper.stats.damage = -3 - -- Suppressed Barrel (thanatos) - self.parts.wpn_fps_snp_m95_barrel_suppressed.stats.damage = -10 -- Roctec self.parts.wpn_fps_upg_ns_pis_medium_gem.stats.damage = -2 -- Champion's diff --git a/lua/weapontweakdata.lua b/lua/weapontweakdata.lua index 2340c08..50a900c 100644 --- a/lua/weapontweakdata.lua +++ b/lua/weapontweakdata.lua @@ -437,86 +437,96 @@ local recovery_tables = { -- Contractor -self.tti.AMMO_MAX = total_ammo_tables.sniper -self.tti.CLIP_AMMO_MAX = 15 -self.tti.stats.concealment = 13 -self.tti.stats.damage = 145 -self.tti.stats_modifiers = {damage = 2} +self.tti.stats.concealment = 12 +self.tti.stats.damage = 200 +self.tti.stats.spread = 21 +self.tti.stats.recoil = 7 +self.tti.fire_mode_data.fire_rate = 60 / 200 self.tti.AMMO_PICKUP = pickup_tables.sniper_high self.tti.kick = kick_tables.sniper_auto -self.tti.categories = {"snp", "ng"} -- Grom self.siltstone.AMMO_MAX = total_ammo_tables.sniper -self.siltstone.stats.damage = 145 -self.siltstone.stats_modifiers = {damage = 2} self.siltstone.stats.concealment = 20 +self.siltstone.stats.damage = 200 +self.siltstone.stats.spread = 20 +self.siltstone.stats.recoil = 4 +self.siltstone.fire_mode_data.fire_rate = 60 / 200 self.siltstone.AMMO_PICKUP = pickup_tables.sniper_high self.siltstone.kick = kick_tables.sniper_auto -self.siltstone.categories = {"snp", "ng"} -- Kang Arms self.qbu88.AMMO_MAX = total_ammo_tables.sniper +self.qbu88.stats.concealment = 13 self.qbu88.stats.recoil = 7 -self.qbu88.stats.damage = 145 -self.qbu88.stats_modifiers = {damage = 2} +self.qbu88.stats.damage = 200 +self.qbu88.fire_mode_data.fire_rate = 60 / 200 self.qbu88.AMMO_PICKUP = pickup_tables.sniper_high self.qbu88.kick = kick_tables.sniper_auto -self.qbu88.categories = {"snp", "ng"} -- Lebensauger -self.wa2000.AMMO_MAX = 40 -- make an exception for you +self.wa2000.AMMO_MAX = 40 self.wa2000.CLIP_AMMO_MAX = 20 +self.wa2000.stats.concealment = 10 +self.wa2000.stats.recoil = 9 self.wa2000.stats.reload = 13 -self.wa2000.stats.damage = 145 -self.wa2000.stats_modifiers = {damage = 2} +self.wa2000.stats.damage = 200 +self.wa2000.fire_mode_data.fire_rate = 60 / 200 self.wa2000.AMMO_PICKUP = pickup_tables.sniper_high self.wa2000.kick = kick_tables.sniper_auto -self.wa2000.categories = {"snp", "ng"} -- Repeater -self.winchester1874.stats.damage = 155 -self.winchester1874.stats_modifiers = {damage = 2} +self.winchester1874.stats.damage = 310 +self.winchester1874.stats_modifiers = { } self.winchester1874.fire_mode_data.fire_rate = 60 / 75 self.winchester1874.AMMO_PICKUP = pickup_tables.sniper_mid self.winchester1874.AMMO_MAX = total_ammo_tables.sniper self.winchester1874.kick = kick_tables.sniper_low -- Rattlesnake -self.msr.stats.damage = 155 -self.msr.stats_modifiers = {damage = 2} +self.msr.stats.damage = 310 +self.msr.stats_modifiers = { } self.msr.AMMO_PICKUP = pickup_tables.sniper_mid self.msr.AMMO_MAX = total_ammo_tables.sniper self.msr.kick = kick_tables.sniper_low -- R700 -self.r700.stats.damage = 155 -self.r700.stats_modifiers = {damage = 2} -self.r700.AMMO_PICKUP = pickup_tables.sniper_mid +self.r700.stats.damage = 310 +self.r700.stats_modifiers = { } self.r700.fire_mode_data.fire_rate = 60 / 60 +self.r700.AMMO_PICKUP = pickup_tables.sniper_mid self.r700.AMMO_MAX = total_ammo_tables.sniper self.r700.kick = kick_tables.sniper_low -- Desert Fox +self.desertfox.stats.damage = 480 +self.desertfox.stats_modifiers = { } +self.desertfox.stats.spread = 22 +self.desertfox.fire_mode_data.fire_rate = 60 / 50 self.desertfox.AMMO_MAX = total_ammo_tables.sniper self.desertfox.AMMO_PICKUP = pickup_tables.sniper_low -self.desertfox.fire_mode_data.fire_rate = 60 / 50 self.desertfox.kick = kick_tables.sniper_mid -- Nagant -self.mosin.AMMO_MAX = 30 +self.mosin.stats.damage = 480 +self.mosin.stats_modifiers = { } +self.mosin.stats.concealment = 12 self.mosin.fire_mode_data.fire_rate = 60 / 70 self.mosin.AMMO_PICKUP = pickup_tables.sniper_low self.mosin.AMMO_MAX = total_ammo_tables.sniper self.mosin.kick = kick_tables.sniper_mid -- R93 +self.r93.stats.damage = 480 +self.r93.stats_modifiers = { } self.r93.fire_mode_data.fire_rate = 60 / 55 self.r93.AMMO_PICKUP = pickup_tables.sniper_low self.r93.AMMO_MAX = total_ammo_tables.sniper self.r93.kick = kick_tables.sniper_mid -- Platypus +self.model70.stats.damage = 480 +self.model70.stats_modifiers = { } self.model70.CLIP_AMMO_MAX = 6 self.model70.AMMO_MAX = total_ammo_tables.sniper self.model70.AMMO_PICKUP = pickup_tables.sniper_low @@ -524,7 +534,8 @@ self.model70.kick = kick_tables.sniper_mid -- Thanatos self.m95.stats.damage = 150 -self.m95.stats_modifiers = {damage = 10} +self.m95.stats.concealment = 9 +self.m95.stats_modifiers = { damage = 10 } self.m95.AMMO_PICKUP = pickup_tables.amr self.m95.AMMO_MAX = total_ammo_tables.secondary_sniper self.m95.fire_mode_data.fire_rate = 1.5 @@ -552,32 +563,40 @@ self.awp.kick.steelsight = self.m95.kick.standing -- Rangehitter self.sbl.use_data.selection_index = SELECTION.SECONDARY -self.sbl.AMMO_MAX = total_ammo_tables.secondary_sniper self.sbl.CLIP_AMMO_MAX = 10 -self.sbl.stats.damage = 145 +self.sbl.stats.damage = 200 +self.sbl.stats.spread = 20 +self.sbl.stats_modifiers = {} +self.sbl.AMMO_MAX = total_ammo_tables.secondary_sniper self.sbl.AMMO_PICKUP = pickup_tables.secondary_sniper -self.sbl.fire_mode_data.fire_rate = 60 / 150 -self.sbl.kick = kick_tables.sniper_auto -self.sbl.categories = {"snp", "ng"} +self.sbl.kick = kick_tables.sniper_low -- Scout -self.scout.stats.damage = 155 +self.scout.stats.damage = 310 +self.scout.stats.spread = 21 +self.scout.stats_modifiers = {} self.scout.AMMO_MAX = total_ammo_tables.secondary_sniper self.scout.AMMO_PICKUP = pickup_tables.secondary_sniper self.scout.kick = kick_tables.sniper_low -- North Star +self.victor.stats.damage = 200 +self.victor.stats.spread = 20 +self.victor.stats.recoil = 6 +self.victor.stats.concealment = 9 +self.victor.fire_mode_data.fire_rate = 60 / 200 self.victor.AMMO_MAX = total_ammo_tables.secondary_sniper -self.victor.stats.damage = 145 -self.victor.stats_modifiers = {damage = 2} self.victor.AMMO_PICKUP = pickup_tables.secondary_sniper self.victor.kick = kick_tables.sniper_auto -self.victor.categories = {"snp", "ng"} -- Aran -self.contender.AMMO_MAX = total_ammo_tables.secondary_sniper +self.contender.stats.spread = 21 +self.contender.stats.recoil = 6 +self.contender.stats.damage = 480 +self.contender.stats_modifiers = {} self.contender.ignore_damage_upgrades = false self.contender.fire_mode_data.fire_rate = 60 / 70 +self.contender.AMMO_MAX = total_ammo_tables.secondary_sniper self.contender.AMMO_PICKUP = pickup_tables.secondary_sniper self.contender.kick = kick_tables.sniper_mid @@ -1138,32 +1157,48 @@ self.shak12.kick = kick_tables.ks12 -- DMRs -- Little Friend +self.contraband.can_shoot_through_enemy = true +self.contraband.armor_piercing_chance = 1 self.contraband.AMMO_MAX = total_ammo_tables.dmr_low self.contraband.AMMO_PICKUP = pickup_tables.dmr_low self.contraband.stats.damage = 182 self.contraband.kick = kick_tables.dmr_high +self.contraband.has_description = true +self.contraband.desc_id = "bm_w_dmr_penetration_desc" -- M308 +self.new_m14.can_shoot_through_enemy = true +self.new_m14.armor_piercing_chance = 1 self.new_m14.AMMO_MAX = total_ammo_tables.dmr self.new_m14.AMMO_PICKUP = pickup_tables.dmr self.new_m14.stats.damage = 182 self.new_m14.stats.concealment = 5 self.new_m14.kick = kick_tables.dmr_high +self.new_m14.has_description = true +self.new_m14.desc_id = "bm_w_dmr_penetration_desc" -- Cavity +self.sub2000.can_shoot_through_enemy = true +self.sub2000.armor_piercing_chance = 1 self.sub2000.CLIP_AMMO_MAX = 20 self.sub2000.AMMO_MAX = total_ammo_tables.dmr self.sub2000.AMMO_PICKUP = pickup_tables.dmr self.sub2000.stats.damage = 182 self.sub2000.stats.concealment = 18 self.sub2000.kick = kick_tables.dmr_low +self.sub2000.has_description = true +self.sub2000.desc_id = "bm_w_dmr_penetration_desc" -- Galant +self.ching.can_shoot_through_enemy = true +self.ching.armor_piercing_chance = 1 self.ching.AMMO_MAX = total_ammo_tables.dmr self.ching.AMMO_PICKUP = pickup_tables.dmr self.ching.stats.damage = 182 self.ching.stats.concealment = 10 self.ching.kick = kick_tables.dmr_low +self.ching.has_description = true +self.ching.desc_id = "bm_w_dmr_penetration_desc" -- SMGs